Initial changes for v2.3

This commit is contained in:
Gunnar Skjold
2023-11-16 18:21:56 +01:00
parent 8cada69aaf
commit ae82914795
121 changed files with 6175 additions and 3080 deletions

View File

@@ -1,31 +1,54 @@
/**
* @copyright Utilitech AS 2023
* License: Fair Source
*
*/
#ifndef _AMSCONFIGURATION_h
#define _AMSCONFIGURATION_h
#include <EEPROM.h>
#include "Arduino.h"
#define EEPROM_SIZE 1024*3
#define EEPROM_CHECK_SUM 103 // Used to check if config is stored. Change if structure changes
#define EEPROM_CHECK_SUM 104 // Used to check if config is stored. Change if structure changes
#define EEPROM_CLEARED_INDICATOR 0xFC
#define EEPROM_CONFIG_ADDRESS 0
#define EEPROM_TEMP_CONFIG_ADDRESS 2048
#define CONFIG_SYSTEM_START 8
#define CONFIG_METER_START 32
#define CONFIG_UPGRADE_INFO_START 216
#define CONFIG_UI_START 248
#define CONFIG_GPIO_START 266
#define CONFIG_ENTSOE_START 290
#define CONFIG_WIFI_START 360
#define CONFIG_ENERGYACCOUNTING_START 576
#define CONFIG_WEB_START 648
#define CONFIG_DEBUG_START 824
#define CONFIG_DOMOTICZ_START 856
#define CONFIG_NTP_START 872
#define CONFIG_MQTT_START 1004
#define CONFIG_HA_START 1680
#define CONFIG_UPGRADE_INFO_START 16
#define CONFIG_NETWORK_START 40
#define CONFIG_METER_START 296
#define CONFIG_GPIO_START 368
#define CONFIG_ENTSOE_START 400
#define CONFIG_ENERGYACCOUNTING_START 464
#define CONFIG_WEB_START 488
#define CONFIG_DEBUG_START 624
#define CONFIG_NTP_START 632
#define CONFIG_MQTT_START 760
#define CONFIG_DOMOTICZ_START 1528
#define CONFIG_HA_START 1544
#define CONFIG_UI_START 1712
#define CONFIG_CLOUD_START 1728
#define CONFIG_METER_START_93 224
#define CONFIG_METER_START_103 32
#define CONFIG_UPGRADE_INFO_START_103 216
#define CONFIG_UI_START_103 248
#define CONFIG_GPIO_START_103 266
#define CONFIG_ENTSOE_START_103 290
#define CONFIG_WIFI_START_103 360
#define CONFIG_ENERGYACCOUNTING_START_103 576
#define CONFIG_WEB_START_103 648
#define CONFIG_DEBUG_START_103 824
#define CONFIG_DOMOTICZ_START_103 856
#define CONFIG_NTP_START_103 872
#define CONFIG_MQTT_START_103 1004
#define CONFIG_HA_START_103 1680
#define LED_BEHAVIOUR_DEFAULT 0
#define LED_BEHAVIOUR_BOOT 1
#define LED_BEHAVIOUR_ERROR_ONLY 3
#define LED_BEHAVIOUR_OFF 9
struct SystemConfig {
uint8_t boardType;
@@ -33,9 +56,10 @@ struct SystemConfig {
bool userConfigured;
uint8_t dataCollectionConsent; // 0 = unknown, 1 = accepted, 2 = declined
char country[3];
}; // 7
uint8_t energyspeedometer;
}; // 8
struct WiFiConfig {
struct NetworkConfig {
char ssid[32];
char psk[64];
char ip[16];
@@ -49,7 +73,8 @@ struct WiFiConfig {
uint8_t sleep;
uint8_t use11b;
bool autoreboot;
}; // 213
uint8_t mode;
}; // 214
struct MqttConfig {
char host[128];
@@ -85,41 +110,10 @@ struct MeterConfig {
uint8_t source;
uint8_t parser;
uint8_t bufferSize;
}; // 62
struct MeterConfig100 {
uint32_t baud;
uint8_t parity;
bool invert;
uint8_t distributionSystem;
uint8_t mainFuse;
uint8_t productionCapacity;
uint8_t encryptionKey[16];
uint8_t authenticationKey[16];
uint32_t wattageMultiplier;
uint32_t voltageMultiplier;
uint32_t amperageMultiplier;
uint32_t accumulatedMultiplier;
uint8_t source;
uint8_t parser;
}; // 59
struct MeterConfig95 {
uint32_t baud;
uint8_t parity;
bool invert;
uint8_t distributionSystem;
uint8_t mainFuse;
uint8_t productionCapacity;
uint8_t encryptionKey[16];
uint8_t authenticationKey[16];
uint16_t wattageMultiplier;
uint16_t voltageMultiplier;
uint16_t amperageMultiplier;
uint16_t accumulatedMultiplier;
uint8_t source;
uint8_t parser;
}; // 50
uint8_t rxPin;
bool rxPinPullup;
uint8_t txPin;
}; // 65
struct DebugConfig {
bool telnet;
@@ -128,6 +122,26 @@ struct DebugConfig {
}; // 3
struct GpioConfig {
uint8_t apPin;
uint8_t ledPin;
bool ledInverted;
uint8_t ledPinRed;
uint8_t ledPinGreen;
uint8_t ledPinBlue;
bool ledRgbInverted;
uint8_t tempSensorPin;
uint8_t tempAnalogSensorPin;
uint8_t vccPin;
int16_t vccOffset;
uint16_t vccMultiplier;
uint8_t vccBootLimit;
uint16_t vccResistorGnd;
uint16_t vccResistorVcc;
uint8_t ledDisablePin;
uint8_t ledBehaviour;
}; // 21
struct GpioConfig103 {
uint8_t hanPin;
uint8_t apPin;
uint8_t ledPin;
@@ -145,7 +159,9 @@ struct GpioConfig {
uint16_t vccResistorGnd;
uint16_t vccResistorVcc;
bool hanPinPullup;
}; // 21
uint8_t ledDisablePin;
uint8_t ledBehaviour;
}; // 23
struct DomoticzConfig {
uint16_t elidx;
@@ -168,14 +184,6 @@ struct NtpConfig {
char timezone[32];
}; // 98
struct NtpConfig96 {
bool enable;
bool dhcp;
int16_t offset;
int16_t summerOffset;
char server[64];
}; // 70
struct EntsoeConfig {
char token[37];
char area[17];
@@ -207,7 +215,9 @@ struct UiConfig {
uint8_t showDayPlot;
uint8_t showMonthPlot;
uint8_t showTemperaturePlot;
}; // 11
uint8_t showRealtimePlot;
uint8_t darkMode;
}; // 12
struct TempSensorConfig {
uint8_t address[8];
@@ -222,6 +232,15 @@ struct UpgradeInformation {
int16_t errorCode;
}; // 20
struct CloudConfig {
bool enabled;
uint8_t interval;
char hostname[64];
uint16_t port;
char clientId[17];
char clientSecret[17];
};
class AmsConfiguration {
public:
bool hasConfig();
@@ -231,13 +250,15 @@ public:
bool getSystemConfig(SystemConfig&);
bool setSystemConfig(SystemConfig&);
bool isSystemConfigChanged();
void ackSystemConfigChanged();
bool getWiFiConfig(WiFiConfig&);
bool setWiFiConfig(WiFiConfig&);
void clearWifi(WiFiConfig&);
void clearWifiIp(WiFiConfig&);
bool isWifiChanged();
void ackWifiChange();
bool getNetworkConfig(NetworkConfig&);
bool setNetworkConfig(NetworkConfig&);
void clearNetworkConfig(NetworkConfig&);
void clearNetworkConfigIp(NetworkConfig&);
bool isNetworkConfigChanged();
void ackNetworkConfigChange();
bool getMqttConfig(MqttConfig&);
bool setMqttConfig(MqttConfig&);
@@ -299,18 +320,16 @@ public:
bool setUiConfig(UiConfig&);
void clearUiConfig(UiConfig&);
void loadTempSensors();
void saveTempSensors();
uint8_t getTempSensorCount();
TempSensorConfig* getTempSensorConfig(uint8_t address[8]);
void updateTempSensorConfig(uint8_t address[8], const char name[32], bool common);
bool isSensorAddressEqual(uint8_t a[8], uint8_t b[8]);
bool getUpgradeInformation(UpgradeInformation&);
bool setUpgradeInformation(int16_t exitCode, int16_t errorCode, const char* currentVersion, const char* nextVersion);
void clearUpgradeInformation(UpgradeInformation&);
bool getCloudConfig(CloudConfig&);
bool setCloudConfig(CloudConfig&);
void clearCloudConfig(CloudConfig&);
bool isCloudChanged();
void ackCloudConfig();
void clear();
protected:
@@ -318,18 +337,11 @@ protected:
private:
uint8_t configVersion = 0;
bool wifiChanged, mqttChanged, meterChanged = true, ntpChanged = true, entsoeChanged = false, energyAccountingChanged = true;
bool sysChanged = false, networkChanged, mqttChanged, meterChanged = true, ntpChanged = true, entsoeChanged = false, energyAccountingChanged = true, cloudChanged = true;
uint8_t tempSensorCount = 0;
TempSensorConfig** tempSensors = NULL;
bool relocateConfig93(); // 2.1.0
bool relocateConfig94(); // 2.1.0
bool relocateConfig95(); // 2.1.4
bool relocateConfig96(); // 2.1.14
bool relocateConfig100(); // 2.2-dev
bool relocateConfig101(); // 2.2.0 through 2.2.8
bool relocateConfig102(); // 2.2.9 through 2.2.11
bool relocateConfig103(); // 2.2.12 onward
void saveToFs();
bool loadFromFs(uint8_t version);

View File

@@ -1,3 +1,9 @@
/**
* @copyright Utilitech AS 2023
* License: Fair Source
*
*/
#ifndef _AMSSTORAGE_H
#define _AMSSTORAGE_H

View File

@@ -1,3 +1,9 @@
/**
* @copyright Utilitech AS 2023
* License: Fair Source
*
*/
#include <Timezone.h>
#define JULY1970 15634800

View File

@@ -1,3 +1,9 @@
/**
* @copyright Utilitech AS 2023
* License: Fair Source
*
*/
#ifndef _HEXUTILS_H
#define _HEXUTILS_H