Implement OpenHAB autodiscovery (#612)

This commit is contained in:
Florian authored and GitHub committed 2020-05-12 15:05:37 -05:00
1 parent a82bbe684a
commit 489ce99659
5 files changed
+127 -66

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+13
View File
@@ -1,5 +1,18 @@
# Integrate OPENHAB2
## Auto discovery through home assistant convention
OpenMQTTGateway support autodiscovery of things for OpenHAB 2.4, so as to do that it rely on home assistant auto discovery convention.
So as to use the autodiscovery function you need to have:
* The Jinga transformation addon installed
* The Json transformation addon installed
You need to set `OpenHABAutoDiscovery` to true into `config_mqttDiscovery.h`
`#define OpenHABDiscovery true`
The things will appear in the inbox of the paperUI, add them and links the channels. You should see them into the control panel for further usage.
![](../img/OpenMQTTgateway_OpenHAB_Control.png)
## MQTT 2 manual setup >=Openhab2.4
You should have a mqtt broker installed (either mosquitto or the OpenHAB2 embedded one)
+26 -26
View File
@@ -149,10 +149,10 @@ void MiFloraDiscovery(char *mac)
#define MiFloraparametersCount 4
Log.trace(F("MiFloraDiscovery" CR));
char *MiFlorasensor[MiFloraparametersCount][8] = {
{"sensor", "MiFlora-lux", mac, "illuminance", "{{ value_json.lux | is_defined }}", "", "", "lu"},
{"sensor", "MiFlora-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "MiFlora-fer", mac, "", "{{ value_json.fer | is_defined }}", "", "", "µS/cm"},
{"sensor", "MiFlora-moi", mac, "", "{{ value_json.moi | is_defined }}", "", "", "%"}
{"sensor", "MiFlora-lux", mac, "illuminance", jsonLux, "", "", "lu"},
{"sensor", "MiFlora-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "MiFlora-fer", mac, "", jsonFer, "", "", "µS/cm"},
{"sensor", "MiFlora-moi", mac, "", jsonMoi, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -165,10 +165,10 @@ void VegTrugDiscovery(char *mac)
#define VegTrugparametersCount 4
Log.trace(F("VegTrugDiscovery" CR));
char *VegTrugsensor[VegTrugparametersCount][8] = {
{"sensor", "VegTrug-lux", mac, "illuminance", "{{ value_json.lux | is_defined }}", "", "", "lu"},
{"sensor", "VegTrug-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "VegTrug-fer", mac, "", "{{ value_json.fer | is_defined }}", "", "", "µS/cm"},
{"sensor", "VegTrug-moi", mac, "", "{{ value_json.moi | is_defined }}", "", "", "%"}
{"sensor", "VegTrug-lux", mac, "illuminance", jsonLux, "", "", "lu"},
{"sensor", "VegTrug-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "VegTrug-fer", mac, "", jsonFer, "", "", "µS/cm"},
{"sensor", "VegTrug-moi", mac, "", jsonMoi, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -181,9 +181,9 @@ void MiJiaDiscovery(char *mac)
#define MiJiaparametersCount 3
Log.trace(F("MiJiaDiscovery" CR));
char *MiJiasensor[MiJiaparametersCount][8] = {
{"sensor", "MiJia-batt", mac, "battery", "{{ value_json.batt | is_defined }}", "", "", "%"},
{"sensor", "MiJia-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "MiJia-hum", mac, "humidity", "{{ value_json.hum | is_defined }}", "", "", "%"}
{"sensor", "MiJia-batt", mac, "battery", jsonBatt, "", "", "%"},
{"sensor", "MiJia-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "MiJia-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -196,9 +196,9 @@ void LYWSD02Discovery(char *mac)
#define LYWSD02parametersCount 3
Log.trace(F("LYWSD02Discovery" CR));
char *LYWSD02sensor[LYWSD02parametersCount][8] = {
{"sensor", "LYWSD02-batt", mac, "battery", "{{ value_json.batt | is_defined }}", "", "", "V"},
{"sensor", "LYWSD02-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "LYWSD02-hum", mac, "humidity", "{{ value_json.hum | is_defined }}", "", "", "%"}
{"sensor", "LYWSD02-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "LYWSD02-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "LYWSD02-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -211,9 +211,9 @@ void CLEARGRASSTRHDiscovery(char *mac)
#define CLEARGRASSTRHparametersCount 3
Log.trace(F("CLEARGRASSTRHDiscovery" CR));
char *CLEARGRASSTRHsensor[CLEARGRASSTRHparametersCount][8] = {
{"sensor", "CLEARGRASSTRH-batt", mac, "battery", "{{ value_json.batt | is_defined }}", "", "", "V"},
{"sensor", "CLEARGRASSTRH-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "CLEARGRASSTRH-hum", mac, "humidity", "{{ value_json.hum | is_defined }}", "", "", "%"}
{"sensor", "CLEARGRASSTRH-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "CLEARGRASSTRH-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "CLEARGRASSTRH-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -226,9 +226,9 @@ void CLEARGRASSCGD1Discovery(char *mac)
#define CLEARGRASSCGD1parametersCount 3
Log.trace(F("CLEARGRASSCGD1Discovery" CR));
char *CLEARGRASSCGD1sensor[CLEARGRASSCGD1parametersCount][8] = {
{"sensor", "CLEARGRASSCGD1-batt", mac, "battery", "{{ value_json.batt | is_defined }}", "", "", "V"},
{"sensor", "CLEARGRASSCGD1-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "CLEARGRASSCGD1-hum", mac, "humidity", "{{ value_json.hum | is_defined }}", "", "", "%"}
{"sensor", "CLEARGRASSCGD1-batt", mac, "battery", jsonBatt, "", "", "V"},
{"sensor", "CLEARGRASSCGD1-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "CLEARGRASSCGD1-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -241,9 +241,9 @@ void CLEARGRASSTRHKPADiscovery(char *mac)
#define CLEARGRASSTRHKPAparametersCount 3
Log.trace(F("CLEARGRASSTRHKPADiscovery" CR));
char *CLEARGRASSTRHKPAsensor[CLEARGRASSTRHKPAparametersCount][8] = {
{"sensor", "CLEARGRASSTRHKPA-pres", mac, "pressure", "{{ value_json.pres | is_defined }}", "", "", "kPa"},
{"sensor", "CLEARGRASSTRHKPA-tem", mac, "temperature", "{{ value_json.tem | is_defined }}", "", "", "°C"},
{"sensor", "CLEARGRASSTRHKPA-hum", mac, "humidity", "{{ value_json.hum | is_defined }}", "", "", "%"}
{"sensor", "CLEARGRASSTRHKPA-pres", mac, "pressure", jsonPres, "", "", "kPa"},
{"sensor", "CLEARGRASSTRHKPA-tem", mac, "temperature", jsonTemp, "", "", "°C"},
{"sensor", "CLEARGRASSTRHKPA-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -256,7 +256,7 @@ void MiScaleDiscovery(char *mac)
#define MiScaleparametersCount 1
Log.trace(F("MiScaleDiscovery" CR));
char *MiScalesensor[MiScaleparametersCount][8] = {
{"sensor", "MiScale-weight", mac, "", "{{ value_json.weight | is_defined }}", "", "", "kg"},
{"sensor", "MiScale-weight", mac, "", jsonWeight, "", "", "kg"},
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -269,7 +269,7 @@ void MiLampDiscovery(char *mac)
#define MiLampparametersCount 1
Log.trace(F("MiLampDiscovery" CR));
char *MiLampsensor[MiLampparametersCount][8] = {
{"sensor", "MiLamp-presence", mac, "", "{{ value_json.presence}}", "", "", "d"},
{"sensor", "MiLamp-presence", mac, "", jsonPresence, "", "", "d"},
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -282,7 +282,7 @@ void MiBandDiscovery(char *mac)
#define MiBandparametersCount 1
Log.trace(F("MiBandDiscovery" CR));
char *MiBandsensor[MiBandparametersCount][8] = {
{"sensor", "MiBand-steps", mac, "", "{{ value_json.steps | is_defined }}", "", "", "nb"},
{"sensor", "MiBand-steps", mac, "", jsonStep, "", "", "nb"},
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
+32 -40
View File
@@ -109,14 +109,6 @@ void createDiscovery(char *sensor_type,
sensor.set("cmd_t", command_topic); //command_topic
}
/*if (strcmp(s_name, Gateway_Name) == 0){
JsonArray &json_attributes = sensor.createNestedArray("json_attributes");
json_attributes.add("uptime");
json_attributes.add("freemem");
json_attributes.add("rssi");
json_attributes.add("SSID");
}*/
if (child_device)
{
StaticJsonBuffer<JSON_MSG_BUFFER> jsonDeviceBuffer;
@@ -161,12 +153,12 @@ void pubMqttDiscovery()
#define BMEparametersCount 6
Log.trace(F("bme280Discovery" CR));
char *BMEsensor[BMEparametersCount][8] = {
{"sensor", "tempc", "bme", "temperature", "{{ value_json.tempc }}", "", "", "°C"},
{"sensor", "tempf", "bme", "temperature", "{{ value_json.tempf }}", "", "", "°F"},
{"sensor", "pa", "bme", "", "{{ float(value_json.pa) * 0.01 }}", "", "", "hPa"},
{"sensor", "hum", "bme", "humidity", "{{ value_json.hum }}", "", "", "%"},
{"sensor", "altim", "bme", "", "{{ value_json.altim }}", "", "", "m"},
{"sensor", "altift", "bme", "", "{{ value_json.altift }}", "", "", "ft"}
{"sensor", "tempc", "bme", "temperature", jsonTemp, "", "", "°C"},
{"sensor", "tempf", "bme", "temperature", jsonTempf, "", "", "°F"},
{"sensor", "pa", "bme", "", jsonPa, "", "", "hPa"},
{"sensor", "hum", "bme", "humidity", jsonHum, "", "", "%"},
{"sensor", "altim", "bme", "", jsonAltim, "", "", "m"},
{"sensor", "altift", "bme", "", jsonAltif, "", "", "ft"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -186,9 +178,9 @@ void pubMqttDiscovery()
#define HTUparametersCount 3
Log.trace(F("htu21Discovery" CR));
char *HTUsensor[HTUparametersCount][8] = {
{"sensor", "tempc", "htu", "temperature", "{{ value_json.tempc }}", "", "", "°C"},
{"sensor", "tempf", "htu", "temperature", "{{ value_json.tempf }}", "", "", "°F"},
{"sensor", "hum", "htu", "humidity", "{{ value_json.hum }}", "", "", "%"}
{"sensor", "tempc", "htu", "temperature", jsonTemp, "", "", "°C"},
{"sensor", "tempf", "htu", "temperature", jsonTempf, "", "", "°F"},
{"sensor", "hum", "htu", "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -208,8 +200,8 @@ void pubMqttDiscovery()
#define DHTparametersCount 2
Log.trace(F("DHTDiscovery" CR));
char *DHTsensor[DHTparametersCount][8] = {
{"sensor", "tempc", "dht", "temperature", "{{ value_json.temp }}", "", "", "°C"},
{"sensor", "hum", "dht", "humidity", "{{ value_json.hum }}", "", "", "%"}};
{"sensor", "tempc", "dht", "temperature", jsonTemp, "", "", "°C"},
{"sensor", "hum", "dht", "humidity", jsonHum, "", "", "%"}};
for (int i = 0; i < DHTparametersCount; i++)
{
@@ -225,7 +217,7 @@ void pubMqttDiscovery()
#ifdef ZsensorADC
Log.trace(F("ADCDiscovery" CR));
char *ADCsensor[8] = {"sensor", "adc", "", "", "{{ value_json.adc }}", "", "", ""};
char *ADCsensor[8] = {"sensor", "adc", "", "", jsonAdc, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -241,9 +233,9 @@ void pubMqttDiscovery()
#define BH1750parametersCount 3
Log.trace(F("BH1750Discovery" CR));
char *BH1750sensor[BH1750parametersCount][8] = {
{"sensor", "lux", "BH1750", "illuminance", "{{ value_json.lux }}", "", "", "lu"},
{"sensor", "ftCd", "BH1750", "", "{{ value_json.ftCd }}", "", "", ""},
{"sensor", "wattsm2", "BH1750", "", "{{ value_json.wattsm2 }}", "", "", "wm²"}
{"sensor", "lux", "BH1750", "illuminance", jsonLux, "", "", "lu"},
{"sensor", "ftCd", "BH1750", "", jsonFtcd, "", "", ""},
{"sensor", "wattsm2", "BH1750", "", jsonWm2, "", "", "wm²"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -263,9 +255,9 @@ void pubMqttDiscovery()
#define TSL2561parametersCount 3
Log.trace(F("TSL2561Discovery" CR));
char *TSL2561sensor[TSL2561parametersCount][8] = {
{"sensor", "lux", "TSL2561", "illuminance", "{{ value_json.lux }}", "", "", "lu"},
{"sensor", "ftcd", "TSL2561", "", "{{ value_json.ftcd }}", "", "", ""},
{"sensor", "wattsm2", "TSL2561", "", "{{ value_json.wattsm2 }}", "", "", "wm²"}
{"sensor", "lux", "TSL2561", "illuminance", jsonLux, "", "", "lu"},
{"sensor", "ftcd", "TSL2561", "", jsonFtcd, "", "", ""},
{"sensor", "wattsm2", "TSL2561", "", jsonWm2, "", "", "wm²"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -283,7 +275,7 @@ void pubMqttDiscovery()
#ifdef ZsensorHCSR501
Log.trace(F("HCSR501Discovery" CR));
char *HCSR501sensor[8] = {"binary_sensor", "hcsr501", "", "", "{{value_json.hcsr501}}", "true", "false", ""};
char *HCSR501sensor[8] = {"binary_sensor", "hcsr501", "", "", jsonPresence, "true", "false", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -297,7 +289,7 @@ void pubMqttDiscovery()
#ifdef ZsensorGPIOInput
Log.trace(F("GPIOInputDiscovery" CR));
char *GPIOInputsensor[8] = {"binary_sensor", "GPIOInput", "", "", "{{value_json.gpio}}", "HIGH", "LOW", ""};
char *GPIOInputsensor[8] = {"binary_sensor", "GPIOInput", "", "", jsonGpio, "HIGH", "LOW", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -313,9 +305,9 @@ void pubMqttDiscovery()
#define INA226parametersCount 3
Log.trace(F("INA226Discovery" CR));
char *INA226sensor[INA226parametersCount][8] = {
{"sensor", "volt", "INA226", "", "{{ value_json.volt }}", "", "", "V"},
{"sensor", "current", "INA226", "", "{{ value_json.current }}", "", "", "A"},
{"sensor", "power", "INA226", "", "{{ value_json.power }}", "", "", "W"}
{"sensor", "volt", "INA226", "", jsonVolt, "", "", "V"},
{"sensor", "current", "INA226", "", jsonCurrent, "", "", "A"},
{"sensor", "power", "INA226", "", jsonPower, "", "", "W"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
@@ -348,7 +340,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayRF
// Sensor to display RF received value
Log.trace(F("gatewayRFDiscovery" CR));
char *gatewayRF[8] = {"sensor", "gatewayRF", "", "", "{{ value_json.value }}", "", "", ""};
char *gatewayRF[8] = {"sensor", "gatewayRF", "", "", jsonVal, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -363,7 +355,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayRF2
// Sensor to display RF received value
Log.trace(F("gatewayRF2Discovery" CR));
char *gatewayRF2[8] = {"sensor", "gatewayRF2", "", "", "{{ value_json.value }}", "", "", ""};
char *gatewayRF2[8] = {"sensor", "gatewayRF2", "", "", jsonVal, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -378,7 +370,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayRFM69
// Sensor to display RF received value
Log.trace(F("gatewayRFM69Discovery" CR));
char *gatewayRFM69[8] = {"sensor", "gatewayRFM69", "", "", "{{ value_json.value }}", "", "", ""};
char *gatewayRFM69[8] = {"sensor", "gatewayRFM69", "", "", jsonVal, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -393,7 +385,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayLORA
// Sensor to display RF received value
Log.trace(F("gatewayLORADiscovery" CR));
char *gatewayLORA[8] = {"sensor", "gatewayLORA", "", "", "{{ value_json.message }}", "", "", ""};
char *gatewayLORA[8] = {"sensor", "gatewayLORA", "", "", jsonMsg, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -408,7 +400,7 @@ void pubMqttDiscovery()
#ifdef ZgatewaySRFB
// Sensor to display RF received value
Log.trace(F("gatewaySRFBDiscovery" CR));
char *gatewaySRFB[8] = {"sensor", "gatewaySRFB", "", "", "{{ value_json.value }}", "", "", ""};
char *gatewaySRFB[8] = {"sensor", "gatewaySRFB", "", "", jsonVal, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -423,7 +415,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayPilight
// Sensor to display RF received value
Log.trace(F("gatewayPilightDiscovery" CR));
char *gatewayPilight[8] = {"sensor", "gatewayPilight", "", "", "{{ value_json.message }}", "", "", ""};
char *gatewayPilight[8] = {"sensor", "gatewayPilight", "", "", jsonMsg, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -438,7 +430,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayIR
// Sensor to display IR received value
Log.trace(F("gatewayIRDiscovery" CR));
char *gatewayIR[8] = {"sensor", "gatewayIR", "", "", "{{ value_json.value }}", "", "", ""};
char *gatewayIR[8] = {"sensor", "gatewayIR", "", "", jsonVal, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -453,7 +445,7 @@ void pubMqttDiscovery()
#ifdef Zgateway2G
// Sensor to display 2G received value
Log.trace(F("gateway2GDiscovery" CR));
char *gateway2G[8] = {"sensor", "gateway2G", "", "", "{{ value_json.message }}", "", "", ""};
char *gateway2G[8] = {"sensor", "gateway2G", "", "", jsonMsg, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
@@ -468,7 +460,7 @@ void pubMqttDiscovery()
#ifdef ZgatewayBT
// Sensor to display BT received value
Log.trace(F("gatewayBTDiscovery" CR));
char *gatewayBT[8] = {"sensor", "gatewayBT", "", "", "{{ value_json.id }}", "", "", ""};
char *gatewayBT[8] = {"sensor", "gatewayBT", "", "", jsonId, "", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
Log.trace(F("CreateDiscoverySensor" CR));
+56
View File
@@ -41,4 +41,60 @@ extern void createDiscovery(char * sensor_type,
#define DEVICEMANUFACTURER "OMG_community"
/*-------------- Auto discovery macros-----------------*/
// Set the line below to true so as to have autodiscovery working with OpenHAB
#define OpenHABDiscovery false
#if OpenHABDiscovery // OpenHAB autodiscovery value key definition (is defined command is not supported by OpenHAB)
#define jsonBatt "{{ value_json.batt }}"
#define jsonLux "{{ value_json.lux }}"
#define jsonPres "{{ value_json.pres }}"
#define jsonFer "{{ value_json.fer }}"
#define jsonMoi "{{ value_json.moi }}"
#define jsonHum "{{ value_json.hum }}"
#define jsonTemp "{{ value_json.tem }}"
#define jsonStep "{{ value_json.steps }}"
#define jsonWeight "{{ value_json.weight }}"
#define jsonPresence "{{ value_json.presence }}"
#define jsonAltim "{{ value_json.altim }}"
#define jsonAltif "{{ value_json.altift }}"
#define jsonTempf "{{ value_json.tempf }}"
#define jsonMsg "{{ value_json.message }}"
#define jsonVal "{{ value_json.value }}"
#define jsonVolt "{{ value_json.volt }}"
#define jsonCurrent "{{ value_json.current }}"
#define jsonPower "{{ value_json.power }}"
#define jsonGpio "{{ value_json.gpio }}"
#define jsonFtcd "{{ value_json.ftcd }}"
#define jsonWm2 "{{ value_json.wattsm2 }}"
#define jsonAdc "{{ value_json.adc }}"
#define jsonPa "{{ float(value_json.pa) * 0.01 }}"
#define jsonId "{{ value_json.id }}"
#else // Home assistant autodiscovery value key definition
#define jsonBatt "{{ value_json.batt | is_defined }}"
#define jsonLux "{{ value_json.lux | is_defined }}"
#define jsonPres "{{ value_json.pres | is_defined }}"
#define jsonFer "{{ value_json.fer | is_defined }}"
#define jsonMoi "{{ value_json.moi | is_defined }}"
#define jsonHum "{{ value_json.hum | is_defined }}"
#define jsonTemp "{{ value_json.tem | is_defined }}"
#define jsonStep "{{ value_json.steps | is_defined }}"
#define jsonWeight "{{ value_json.weight | is_defined }}"
#define jsonPresence "{{ value_json.presence | is_defined }}"
#define jsonAltim "{{ value_json.altim | is_defined }}"
#define jsonAltif "{{ value_json.altift | is_defined }}"
#define jsonTempf "{{ value_json.tempf | is_defined }}"
#define jsonMsg "{{ value_json.message | is_defined }}"
#define jsonVal "{{ value_json.value | is_defined }}"
#define jsonVolt "{{ value_json.volt | is_defined }}"
#define jsonCurrent "{{ value_json.current | is_defined }}"
#define jsonPower "{{ value_json.power | is_defined }}"
#define jsonGpio "{{ value_json.gpio | is_defined }}"
#define jsonFtcd "{{ value_json.ftcd | is_defined }}"
#define jsonWm2 "{{ value_json.wattsm2 | is_defined }}"
#define jsonAdc "{{ value_json.adc | is_defined }}"
#define jsonPa "{{ float(value_json.pa) * 0.01 | is_defined }}"
#define jsonId "{{ value_json.id | is_defined }}"
#endif
#endif