include supply volt and temp

This commit is contained in:
Daniel Ekman
2021-12-23 17:34:28 +01:00
parent 18bc6753db
commit 586c0cba25
2 changed files with 47 additions and 33 deletions

View File

@@ -210,31 +210,32 @@ bool HomeAssistantMqttHandler::publishSystem(HwTools* hw) {
} }
if(sequence % 60 == 1 && listType > 1){ // every 60 ams message, publish mqtt discovery if(sequence % 60 == 1 && listType > 1){ // every 60 ams message, publish mqtt discovery
char json[512]; char json[512];
String haTopic = "homeassistant/sensor/"; String haTopic = "homeassistant/sensor/"; // home-assistant discovery topic
String haUID = "ams-3a08"; String haUID = "ams-3a08"; // unit identity (wifi hostname)
String param = "status";
snprintf_P(json, sizeof(json), HADISCOVER1_JSON,
"AMS reader status",
(topic + "/state").c_str(),
(topic + "/state").c_str(),
(haUID + "_" + param).c_str(),
(haUID + "_" + param).c_str(),
"dB",
"rssi",
haUID.c_str(),
"AMS reader",
"ESP32",
"2.0.0",
"AmsToMqttBridge"
);
mqtt->publish(haTopic + haUID + "_" + param + "/config", json);
String names[14] = {"Active import", "Reactive import", "Active export", "Reactive export", "L1 current", "L2 current", "L3 current", "L1 voltage", "L2 voltage", "L3 voltage", String names[17] = {"Status", "Active import", "Reactive import", "Active export", "Reactive export", "L1 current", "L2 current", "L3 current", "L1 voltage", "L2 voltage", "L3 voltage",
"Accumulated active import", "Accumulated active export", "Accumulated reactive import", "Accumulated reactive export"}; "Accumulated active import", "Accumulated active export", "Accumulated reactive import", "Accumulated reactive export", "Supply volt", "Temperature"};
String params[14] = {"P", "Q", "PO", "QO", "I1", "I2", "I3", "U1", "U2", "U3", "tPI", "tPO", "tQI", "tQO"}; String params[17] = {"rssi", "P", "Q", "PO", "QO", "I1", "I2", "I3", "U1", "U2", "U3", "tPI", "tPO", "tQI", "tQO", "vcc", "temp"};
String uom[14] = {"W", "W", "W", "W", "A", "A", "A", "V", "V", "V", "kWh", "kWh", "kWh", "kWh"}; String uom[17] = {"dB", "W", "W", "W", "W", "A", "A", "A", "V", "V", "V", "kWh", "kWh", "kWh", "kWh", "V", "C"};
String devcl[14] = {"power", "power", "power", "power", "current", "current", "current", "voltage", "voltage", "voltage", "energy", "energy", "energy", "energy"}; String devcl[17] = {"", "power", "power", "power", "power", "current", "current", "current", "voltage", "voltage", "voltage", "energy", "energy", "energy", "energy", "voltage", "temperature"};
for(int i=0;i<4;i++){
snprintf_P(json, sizeof(json), HADISCOVER1_JSON,
names[0].c_str(), // name
(topic + "/state").c_str(), // state_topic
(haUID + "_" + params[0]).c_str(), // unique_id
(haUID + "_" + params[0]).c_str(), // object_id
uom[0].c_str(), // unit_of_measurement
params[0].c_str(), // value_template
haUID.c_str(), // ids
"AMS reader", // name
"ESP32", // model
"2.0.0", // fw version
"AmsToMqttBridge", // manufacturer
("http://" + haUID + ".local/").c_str() // configuration_url
);
mqtt->publish(haTopic + haUID + "_" + params[0] + "/config", json);
for(int i=1;i<5;i++){
snprintf_P(json, sizeof(json), HADISCOVER2_JSON, snprintf_P(json, sizeof(json), HADISCOVER2_JSON,
names[i].c_str(), // name names[i].c_str(), // name
(topic + "/power").c_str(), // state_topic (topic + "/power").c_str(), // state_topic
@@ -249,24 +250,24 @@ bool HomeAssistantMqttHandler::publishSystem(HwTools* hw) {
mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json); mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json);
} }
for(int i=4;i<10;i++){ for(int i=5;i<11;i++){
snprintf_P(json, sizeof(json), HADISCOVER3_JSON, snprintf_P(json, sizeof(json), HADISCOVER3_JSON,
names[i].c_str(), // name names[i].c_str(), // name
(topic + "/power").c_str(), // state_topic (topic + "/power").c_str(), // state_topic
(haUID + "_" + params[i]).c_str(), // unique_id (haUID + "_" + params[i]).c_str(), // unique_id
(haUID + "_" + params[i]).c_str(), // object_id (haUID + "_" + params[i]).c_str(), // object_id
uom[i].c_str(), // unit_of_measurement uom[i].c_str(), // unit_of_measurement
params[i].c_str(), // value_template params[i].c_str(), // value_template
devcl[i].c_str(), // device_class devcl[i].c_str(), // device_class
haUID.c_str() // dev ids haUID.c_str() // dev ids
); );
mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json); mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json);
} }
for(int i=10;i<14;i++){ for(int i=11;i<15;i++){
snprintf_P(json, sizeof(json), HADISCOVER2_JSON, snprintf_P(json, sizeof(json), HADISCOVER2_JSON,
names[i].c_str(), // name names[i].c_str(), // name
(topic + "/energy").c_str(), // state_topic (topic + "/energy").c_str(), // state_topic
(haUID + "_" + params[i]).c_str(), // unique_id (haUID + "_" + params[i]).c_str(), // unique_id
(haUID + "_" + params[i]).c_str(), // object_id (haUID + "_" + params[i]).c_str(), // object_id
uom[i].c_str(), // unit_of_measurement uom[i].c_str(), // unit_of_measurement
@@ -277,6 +278,20 @@ bool HomeAssistantMqttHandler::publishSystem(HwTools* hw) {
); );
mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json); mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json);
} }
for(int i=15;i<17;i++){
snprintf_P(json, sizeof(json), HADISCOVER3_JSON,
names[i].c_str(), // name
(topic + "/state").c_str(), // state_topic
(haUID + "_" + params[i]).c_str(), // unique_id
(haUID + "_" + params[i]).c_str(), // object_id
uom[i].c_str(), // unit_of_measurement
params[i].c_str(), // value_template
devcl[i].c_str(), // device_class
haUID.c_str() // dev ids
);
mqtt->publish(haTopic + haUID + "_" + params[i] + "/config", json);
}
} }
if(listType>0) sequence++; if(listType>0) sequence++;
return true; return true;

View File

@@ -1,17 +1,16 @@
{ {
"name" : "%s", "name" : "%s",
"stat_t" : "%s", "stat_t" : "%s",
"json_attr_t" : "%s",
"uniq_id" : "%s", "uniq_id" : "%s",
"obj_id" : "%s", "obj_id" : "%s",
"unit_of_meas" : "%s", "unit_of_meas" : "%s",
"val_tpl" : "{{value_json['%s']}}", "val_tpl" : "{{value_json['%s']}}",
"json_attr_tpl" : "{{ value_json }}",
"dev" : { "dev" : {
"ids" : [ "%s" ], "ids" : [ "%s" ],
"name" : "%s", "name" : "%s",
"mdl" : "%s", "mdl" : "%s",
"sw" : "%s", "sw" : "%s",
"mf" : "%s" "mf" : "%s",
"cu" : "%s"
} }
} }