From b6f5e7263859b42c41e2b9a7a81f6855e73625b1 Mon Sep 17 00:00:00 2001 From: Atle Johansen Date: Fri, 1 May 2020 15:22:39 +0200 Subject: [PATCH] merge with 1..3.0 and implementation of comments --- src/AmsConfiguration.cpp | 143 +++++++-------------------------------- src/AmsToMqttBridge.h | 2 +- src/AmsToMqttBridge.ino | 22 +++--- src/web/AmsWebServer.cpp | 4 +- web/index.js | 2 +- 5 files changed, 39 insertions(+), 134 deletions(-) diff --git a/src/AmsConfiguration.cpp b/src/AmsConfiguration.cpp index 42794a83..99677483 100644 --- a/src/AmsConfiguration.cpp +++ b/src/AmsConfiguration.cpp @@ -683,126 +683,6 @@ bool AmsConfiguration::loadConfig81(int address) { address += readInt(address, &i); setDebugLevel(i); - bool domo = false; - address += readBool(address, &domo); - - ackWifiChange(); - - return true; -} -// -// -// -bool AmsConfiguration::loadConfig82(int address) { - char* temp; - - address += readString(address, &temp); - setWifiSsid(temp); - address += readString(address, &temp); - setWifiPassword(temp); - - bool staticIp = false; - address += readBool(address, &staticIp); - if(staticIp) { - address += readString(address, &temp); - setWifiIp(temp); - address += readString(address, &temp); - setWifiGw(temp); - address += readString(address, &temp); - setWifiSubnet(temp); - address += readString(address, &temp); - setWifiDns1(temp); - address += readString(address, &temp); - setWifiDns2(temp); - } - address += readString(address, &temp); - setWifiHostname(temp); - bool mqtt = false; - address += readBool(address, &mqtt); - if(mqtt) { - address += readString(address, &temp); - setMqttHost(temp); - int port; - address += readInt(address, &port); - setMqttPort(port); - address += readString(address, &temp); - setMqttClientId(temp); - address += readString(address, &temp); - setMqttPublishTopic(temp); - address += readString(address, &temp); - setMqttSubscribeTopic(temp); - - bool secure = false; - address += readBool(address, &secure); - if (secure) - { - address += readString(address, &temp); - setMqttUser(temp); - address += readString(address, &temp); - setMqttPassword(temp); - } else { - setMqttUser(""); - setMqttPassword(""); - } - int payloadFormat; - address += readInt(address, &payloadFormat); - setMqttPayloadFormat(payloadFormat); - } else { - clearMqtt(); - } - - address += readByte(address, &authSecurity); - if (authSecurity > 0) { - address += readString(address, &temp); - setAuthUser(temp); - address += readString(address, &temp); - setAuthPassword(temp); - } else { - clearAuth(); - } - - int i; - address += readInt(address, &i); - setMeterType(i); - address += readInt(address, &i); - setDistributionSystem(i); - address += readInt(address, &i); - setMainFuse(i); - address += readInt(address, &i); - setProductionCapacity(i); - - bool debugTelnet = false; - address += readBool(address, &debugTelnet); - setDebugTelnet(debugTelnet); - bool debugSerial = false; - address += readBool(address, &debugSerial); - setDebugSerial(debugSerial); - address += readInt(address, &i); - setDebugLevel(i); - - bool domo = false; - address += readBool(address, &domo); - if(domo) { - int domoELIDX; - address += readInt(address, &domoELIDX); - setDomoELIDX(domoELIDX); - int domoVL1IDX; - address += readInt(address, &domoVL1IDX); - setDomoVL1IDX(domoVL1IDX); - int domoVL2IDX; - address += readInt(address, &domoVL2IDX); - setDomoVL2IDX(domoVL2IDX); - int domoVL3IDX; - address += readInt(address, &domoVL3IDX); - setDomoVL3IDX(domoVL3IDX); - int domoCL1IDX; - address += readInt(address, &domoCL1IDX); - setDomoCL1IDX(domoCL1IDX); - - } else { - clearDomo(); - } - ackWifiChange(); return true; @@ -898,6 +778,29 @@ bool AmsConfiguration::loadConfig82(int address) { address += readInt(address, &i); setDebugLevel(i); + bool domo = false; + address += readBool(address, &domo); + if(domo) { + int domoELIDX; + address += readInt(address, &domoELIDX); + setDomoELIDX(domoELIDX); + int domoVL1IDX; + address += readInt(address, &domoVL1IDX); + setDomoVL1IDX(domoVL1IDX); + int domoVL2IDX; + address += readInt(address, &domoVL2IDX); + setDomoVL2IDX(domoVL2IDX); + int domoVL3IDX; + address += readInt(address, &domoVL3IDX); + setDomoVL3IDX(domoVL3IDX); + int domoCL1IDX; + address += readInt(address, &domoCL1IDX); + setDomoCL1IDX(domoCL1IDX); + + } else { + clearDomo(); + } + ackWifiChange(); return true; diff --git a/src/AmsToMqttBridge.h b/src/AmsToMqttBridge.h index 73f11674..330c3809 100644 --- a/src/AmsToMqttBridge.h +++ b/src/AmsToMqttBridge.h @@ -59,7 +59,7 @@ HardwareSerial *hanSerial = &Serial2; // Build settings for AZ-Delivery ESP-32 DevKitC V4 and DOIT DevKit V1 #elif defined(ARDUINO_ESP32_DEV) -#define LED_PIN 2 // external 2 for V4 , 2 for doit v1 +#define LED_PIN 4 // external 2 for V4 , 2 for doit v1 #define LED_ACTIVE_HIGH 1 #define AP_BUTTON_PIN 0 diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino index 0bda9b1e..a0e03f7d 100644 --- a/src/AmsToMqttBridge.ino +++ b/src/AmsToMqttBridge.ino @@ -475,6 +475,9 @@ void readHanPort() { // Start DOMOTICZ // } else if(config.getMqttPayloadFormat() == 3) { + // + // This part is also publishing standard json message for now. May be removed. + // StaticJsonDocument<512> json; hanToJson(json, data, hw, temperature); if (Debug.isActive(RemoteDebug::INFO)) { @@ -485,7 +488,7 @@ void readHanPort() { } String msg; serializeJson(json, msg); - mqtt.publish(config.getMqttPublishTopic(), msg.c_str()); // keep for now... + mqtt.publish(config.getMqttPublishTopic(), msg.c_str()); // keep for now, this is identical to option 0. // // Special MQTT messages for DOMOTIZ (https://www.domoticz.com/wiki/MQTT) // -All messages should be published to topic "domoticz/in" @@ -510,16 +513,15 @@ void readHanPort() { // int idx1 = config.getDomoELIDX(); - // TODO, this should be configurable.... if (idx1 > 0) { String PowerEnergy; int p; // double energy = config.getDomoEnergy(); double tmp_energy; StaticJsonDocument<200> json_PE; - p = json["data"]["P"].as(); + p = data.getActiveImportPower(); // cumulative energy is given only once pr hour. check if value is different from 0 and store last valid value on global variable. - tmp_energy = json["data"]["tPI"].as(); + tmp_energy = data.getActiveImportCounter(); if (tmp_energy > 1.0) energy = tmp_energy; // power_unit: watt, energy_unit: watt*h. Stored as kwh, need watth PowerEnergy = String((double) p/1.0) + ";" + String((double) energy*1000.0) ; @@ -540,7 +542,7 @@ void readHanPort() { // // prepare message msg_u1 for virtual Voltage meter" // - u1 = json["data"]["U1"].as(); + u1 = data.getL1Voltage(); if (u1 > 0.1){ json_u1["command"] = "udevice"; json_u1["idx"] = idxu1; @@ -560,7 +562,7 @@ void readHanPort() { // // prepare message msg_u2 for virtual Voltage meter" // - u2 = json["data"]["U2"].as(); + u2 = data.getL2Voltage(); if (u2 > 0.1){ json_u2["command"] = "udevice"; json_u2["idx"] = idxu2; @@ -580,7 +582,7 @@ void readHanPort() { // // prepare message msg_u3 for virtual Voltage meter" // - u3 = json["data"]["U3"].as(); + u3 = data.getL3Voltage(); if (u3 > 0.1){ json_u3["command"] = "udevice"; json_u3["idx"] = idxu3; @@ -602,9 +604,9 @@ void readHanPort() { // // prepare message msg_i1 for virtual Current/Ampere 3phase mater" // - i1 = json["data"]["I1"].as(); - i2 = json["data"]["I2"].as(); - i3 = json["data"]["I3"].as(); + i1 = data.getL1Current(); + i2 = data.getL2Current(); + i3 = data.getL2Current(); Ampere3 = String(i1) + ";" + String(i2) + ";" + String(i3) ; json_i1["command"] = "udevice"; json_i1["idx"] = idxi1; diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp index f30e9fb8..d8c69f24 100644 --- a/src/web/AmsWebServer.cpp +++ b/src/web/AmsWebServer.cpp @@ -276,7 +276,7 @@ void AmsWebServer::configMqttHtml() { html.replace("${config.mqttUser}", config->getMqttUser()); html.replace("${config.mqttPassword}", config->getMqttPassword()); html.replace("${config.mqttPayloadFormat}", String(config->getMqttPayloadFormat())); - for(int i = 0; i<3; i++) { + for(int i = 0; i<4; i++) { html.replace("${config.mqttPayloadFormat" + String(i) + "}", config->getMqttPayloadFormat() == i ? "selected" : ""); } @@ -520,7 +520,7 @@ void AmsWebServer::dataJson() { String domoStatus; if(String(config->getDomoELIDX()).isEmpty()) { domoStatus = "secondary"; - } else if(mqtt->connected() && config->getMqttPayloadFormat() == 2 && config->getDomoELIDX() > 0) { + } else if(mqtt->connected() && config->getMqttPayloadFormat() == 3 && config->getDomoELIDX() > 0) { domoStatus = "success"; } else if(mqtt->lastError() == 0) { domoStatus = "warning"; diff --git a/web/index.js b/web/index.js index b4e51c59..f9ab30f0 100644 --- a/web/index.js +++ b/web/index.js @@ -149,7 +149,7 @@ var fetch = function() { text: "-", append: "W" }); - + setStatus("domo", "secondary"); setStatus("mqtt", "secondary"); setStatus("wifi", "secondary"); setStatus("han", "secondary");