JSONs.h 10.6 KB
#pragma once

// EASYOPENTHERM_MQTT_DISCOVERY_MSG_CLIMATE
// Home Assistant Climate MQTT Discovery Message
// https://www.home-assistant.io/integrations/climate.mqtt/
// 
// This JSON is sent to topic "homeassistant/climate/112233445566/climate/config" to automatically configurate a thermostat in Home Assistant
// Before sending this JSON all "112233445566" are replaced by the hexadecimal chip ID, i.e. the same as the MAC address in reverse 
// order. Also all 11:22:33:44:55:66 are replaced by the MAC address and #### by the hex value of the least significant 4 bytes of the
// chip ID. Because this is done in place, the exact space in the character array is already reserved.
// All topics MAY begin with "~/". If so "~" must be defined by a key-value pair in this JSON. This is NOT CHECKED by the code.
// The following topics MUST be present. Again this is NOT CHECKED by the code:
// - "current_temperature_topic"
// - "temperature_command_topic"
// - "mode_command_topic"
// - "preset_mode_command_topic"
// - "outside_temperature_command_topic"
// Templates are used to pick out the right value. For the climate entity "current_temperature_topic" is the state topic, associated with the
// template "current_temperature_template".
// A subset of "modes":["auto","off","cool","heat"] is added to the ArduinoJson document depending on the capabilities of the boiler.
// If the boiler is for heating only, ["off","heat"] is added. If the boiler can also cool, the full set is added.
// If topic "mode_state_topic":"~/mode/state" or topic "temperature_state_topic":"~/setpoint/state" is defined the Home Assistant
// Thermostat is not properly updated, because of 'optimistic mode'
// For readability 'pretty' format is used, for saving a few bytes of memory it may also be minified.

char EASYOPENTHERM_MQTT_DISCOVERY_MSG_CLIMATE[] = R"DISCMQTTCLIMATE(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Thermostat",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-thermostat",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "precision":0.1,
  "temp_step":0.5,
  "min_temp":10.0,
  "max_temp": 30.0,
  "initial":12,
  "preset_modes":["eco","away","boost","comfort","home","sleep","activity"],
  "preset_mode_command_topic":"~/preset_mode/set",
  "current_temperature_topic":"~/climate/state",
  "current_temperature_template":"{{value_json.temperature}}",
  "temperature_command_topic":"~/setpoint/set",
  "temperature_high_state_topic":"~/high_temperature/state",
  "temperature_high_command_topic":"~/high_temperature/set",
  "temperature_low_state_topic":"~/low_temperature/state",
  "temperature_low_command_topic":"~/low_temperature/set",
  "modes":[],  
  "mode_command_topic":"~/mode/set",
  "availability_topic":"~/sensors/state",
  "availability_template":"{{value_json.climate_available}}",
  "payload_available":"ONLINE",
  "payload_not_available":"OFFLINE",
  "retain":false
}
)DISCMQTTCLIMATE";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_SETPOINT_SENSOR
// Discovery message for the central heating boiler temperature setpoint sensor. Since the setpoint is computed by the thermostat, this
// sensor is always present in Home Assistant
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_SETPOINT_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Setpoint",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_ch_setpoint",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "device_class":"temperature",
  "state_topic":"~/ch_setpoint/state",
  "unit_of_measurement":"°C",
  "value_template":"{{value_json.ch_setpoint}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_FLOW_TEMPERATURE_SENSOR
// Discovery message for the boiler flow temperature sensor. The flow temperature is the temperature of
// the water leaving the boiler.
// This sensor is only added to Home Assistant if it can be read using the OpenTherm interface
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_FLOW_TEMPERATURE_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Flow Temperature",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_flow_temperature",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "device_class":"temperature",
  "state_topic":"~/flow_temperature/state",
  "unit_of_measurement":"°C",
  "value_template":"{{value_json.flow_temperature}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_RETURN_TEMPERATURE_SENSOR
// Discovery message for the boiler return temperature sensor. The return temperature is the temperature of
// the water returning to the boiler.
// This sensor is only added to Home Assistant if it can be read using the OpenTherm interface
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_RETURN_TEMPERATURE_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Return Temperature",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_return_temperature",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "device_class":"temperature",
  "state_topic":"~/return_temperature/state",
  "unit_of_measurement":"°C",
  "value_template":"{{value_json.return_temperature}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_WATER_PRESSURE_SENSOR
// Discovery message for the boiler water pressure sensor.
// This sensor is only added to Home Assistant if it can be read using the OpenTherm interface
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_WATER_PRESSURE_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Water Pressure",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_water_pressure",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "device_class":"pressure",
  "state_topic":"~/water_pressure/state",
  "unit_of_measurement":"bar",
  "value_template":"{{value_json.water_pressure}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_RELATIVE_MODULATION_SENSOR
// Discovery message for the boiler relative modulation sensor.
// This sensor is only added to Home Assistant if it can be read using the OpenTherm interface
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_RELATIVE_MODULATION_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Relative Modulation",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_relative_modulation",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "icon":"mdi:percent-outline",
  "state_topic":"~/relative_modulation/state",
  "unit_of_measurement":"%",
  "value_template":"{{value_json.relative_modulation}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_RSSI_SENSOR
// Discovery message for the RSSI signal strength sensor.
// This sensor is always added to Home Assistant
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_RSSI_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Thermostat RSSI",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-thermostat_rssi",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "device_class":"signal_strength",
  "state_topic":"~/RSSI/state",
  "unit_of_measurement":"dBm",
  "value_template":"{{value_json.RSSI}}",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_FLAME_BINARY_SENSOR
// Discovery message for the boiler flame on / off binary sensor.
// This sensor is always added to Home Assistant
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_FLAME_BINARY_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Flame",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_flame",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "icon":"mdi:fire",
  "state_topic":"~/flame/state",
  "value_template":"{{value_json.flame}}",
  "payload_on":"ON",
  "payload_off":"OFF",
  "retain":false
}
)DISCMQTTSENSOR";


// EASYOPENTHERM_MQTT_DISCOVERY_MSG_DHW_BINARY_SENSOR
// Discovery message for the boiler Domestic Hot Water on / off binary sensor.
// This sensor is 'on' if the boiler is running for Domestoc Hot Wtaer and 'off' if
// the boiler is running for Central Heating or is not running. 
// This sensor is only added to Home Assistant if the boiler supports DHW
char EASYOPENTHERM_MQTT_DISCOVERY_MSG_DHW_BINARY_SENSOR[] = R"DISCMQTTSENSOR(
{
  "~":"Metriot/EasyOpenTherm/112233445566",
  "name":"EasyOpenTherm #### Boiler Domestic Hot Water",
  "unique_id":"Metriot-EasyOpenTherm-112233445566-boiler_DHW",
  "device":
  {
    "identifiers":["112233445566"],
    "connections":[["mac","11:22:33:44:55:66"]],
    "name":"EasyOpenTherm:boiler ####",
    "suggested_area":"Living Room",
    "manufacturer":"Metriot",
    "model":"EasyOpenTherm:boiler",
    "sw_version":"1.0"
  },
  "icon":"mdi:shower",
  "state_topic":"~/dhw/state",
  "payload_on":"ON",
  "payload_off":"OFF",
  "value_template":"{{value_json.dhw}}",
  "retain":false
}
)DISCMQTTSENSOR";