15min prices WIP

This commit is contained in:
Gunnar Skjold
2025-03-15 07:27:26 +01:00
parent a7324d828a
commit 0588bfd418
5 changed files with 140 additions and 142 deletions

View File

@@ -15,28 +15,23 @@
#define DOCPOS_MEASUREMENTUNIT 2
#define DOCPOS_POSITION 3
#define DOCPOS_AMOUNT 4
#define DOCPOS_RESOLUTION 5
class EntsoeA44Parser: public Stream {
public:
EntsoeA44Parser();
EntsoeA44Parser(PricesContainer *container);
virtual ~EntsoeA44Parser();
char* getCurrency();
char* getMeasurementUnit();
float getPoint(uint8_t position);
int available();
int read();
int peek();
void flush();
size_t write(const uint8_t *buffer, size_t size);
size_t write(uint8_t);
void get(PricesContainer*);
private:
char currency[4];
char measurementUnit[4];
float points[25];
PricesContainer *container;
float multiplier = 1.0;
char buf[64];
uint8_t pos = 0;

View File

@@ -57,10 +57,12 @@ struct PriceConfig {
uint8_t end_dayofmonth;
};
struct PricePart {
char name[32];
char description[32];
uint32_t value;
struct AmsPriceV2Header {
char source[4];
char currency[4];
uint8_t resolutionInMinutes;
uint8_t hours;
uint8_t numberOfPoints;
};
class PriceService {
@@ -86,8 +88,6 @@ public:
void setPriceConfig(uint8_t index, PriceConfig &priceConfig);
void cropPriceConfig(uint8_t size);
PricePart getPricePart(uint8_t index);
int16_t getLastError();
bool load();

View File

@@ -9,10 +9,31 @@
#define PRICE_NO_VALUE -127
struct PricesContainer {
char currency[4];
char measurementUnit[4];
int32_t points[25];
class PricesContainer {
public:
PricesContainer(char* source);
void setup(uint8_t resolutionInMinutes, uint8_t hoursThisDay);
char* getSource();
void setCurrency(char* currency);
char* getCurrency();
uint8_t getResolutionInMinutes();
uint8_t getHours();
uint8_t getNumberOfPoints();
void setPrice(uint8_t point, int32_t value);
void setPrice(uint8_t point, float value);
bool hasPrice(uint8_t point);
float getPrice(uint8_t point); // int32_t / 10_000
private:
char source[4];
char currency[4];
uint8_t resolutionInMinutes;
uint8_t hours;
uint8_t numberOfPoints;
int32_t *points;
};
#endif