Digital Thermostat X2 - MQTT Nachrichten Aufbau

Nach Eingabe der Zugangsdaten zum MQTT Broker und erfolgreichem Verbindungsaufbau findet folgender Nachrichtenaustausch zwischen dem Thermostat und dem MQTT Broker im JSON Format statt. Die Nachrichten werden hierbei in folgende 3 Kategorien unterteilt.

  1. MQTT Autodiscovery
  2. Status Nachrichten
  3. Command Nachrichten

1. MQTT Autodiscovery

Mit Hilfe der MQTT Discovery Funktion erfolgt der Austausch der Informationen zwischen dem Thermostat und dem MQTT Broker. Hierbei teilt das Thermostat mit welche Informationen in welchen Nachrichten (Topics) hinterlegt sind. Der Austausch erfolgt jedes Mal, wenn sich das Thermostat mit dem MQTT Broker verbindet.

1.1 Geräte Konfiguration

Topic: homeassistant/climate/%hostname%/config

{
  "name": "Thermostat",
  "unique_id": "alm-x2-flur",
  "~": "alm-x2-flur",
  "qos": 1,
  "device": {
    "identifiers": [
      "20:10:56:ca:4c:40"
    ],
    "name": "ALM-X2-FLUR",
    "model": "X2",
    "sw_version": "X2-V1.00a",
    "manufacturer": "ALM Controls"
  },
  "availability_topic": "~/tele/LWT",
  "payload_available": "Online",
  "payload_not_available": "Offline",
  "action_topic": "~/stat/thermostat/properties",
  "action_template": "{{value_json.action}}",
  "mode_command_topic": "~/cmnd/thermostat/config",
  "mode_command_template": "{"heatcoolmode":"{{ value }}"}",
  "mode_state_topic": "~/stat/thermostat/config",
  "mode_state_template": "{{value_json.heatcoolmode}}",
  "temperature_command_topic": "~/cmnd/thermostat/properties",
  "temperature_command_template": "{"targetTemperature":{{ value }}}",
  "temperature_state_topic": "~/stat/thermostat/properties",
  "temperature_state_template": "{{value_json.targetTemperature}}",
  "current_temperature_topic": "~/stat/thermostat/properties",
  "current_temperature_template": "{{value_json.temperature}}",
  "preset_mode_command_topic": "~/cmnd/thermostat/properties",
  "preset_mode_command_template": "{"schedulesMode":"{{ value }}"}",
  "preset_mode_state_topic": "~/stat/thermostat/properties",
  "preset_mode_value_template": "{{value_json.schedulesMode}}",
  "preset_modes": [
    "comfort",
    "home",
    "boost"
  ],
  "min_temp": 10,
  "max_temp": 40,
  "temp_step": 0.1,
  "modes": [
    "heat",
    "cool",
    "off"
  ]
}

1.2 Sensordaten

Topic für Temperatur: homeassistant/sensor/%hostname%_temperature/config

{
  "name": "Thermostat Temperature",
  "unique_id": "alm-x2-flur_temperature",
  "device_class": "temperature",
  "~": "alm-x2-flur",
  "qos": 1,
  "device": {
    "identifiers": [
      "20:10:56:ca:4c:40"
    ]
  },
  "state_topic": "~/stat/thermostat/properties",
  "value_template": "{{value_json.temperature}}",
  "unit_of_measurement": "°C"
}

Topic für Signalstärke RSSI: homeassistant/sensor/%hostname%_rssi/config

{
  "name": "Thermostat WiFi RSSI",
  "unique_id": "alm-x2-flur_rssi",
  "device_class": "signal_strength",
  "~": "alm-x2-flur",
  "qos": 1,
  "device": {
    "identifiers": [
      "20:10:56:ca:4c:40"
    ]
  },
  "state_topic": "~/stat/network/properties",
  "value_template": "{{value_json.rssi}}",
  "unit_of_measurement": "dBm"
}

1.3 Aktordaten

Topic für Relais Zustand: homeassistant/binary_sensor/%hostname%_relay1/config

{
  "name": "Thermostat Relay1 State",
  "unique_id": "alm-x2-flur_state_relay1",
  "~": "alm-x2-flur",
  "qos": 1,
  "device": {
    "identifiers": [
      "20:10:56:ca:4c:40"
    ]
  },
  "state_topic": "~/stat/thermostat/properties",
  "value_template": "{{value_json.relay1}}",
  "payload_on": "on",
  "payload_off": "off"
}

2. Status Nachrichten

2.1 Online Status

Topic: %hostname%/tele/LWT

Über den Topic Online Status erfolgt die Erkennung, ob das Gerät Online ist. Sollte nach vorgegebenen Timeout keine Aktualisierung dieses Topics erfolgen, so wird das Gerät als Offline deklariert.

2.2 Thermostat Status

Topic: %hostname%/stat/thermostat/properties

{
  "temperature": 23,
  "targetTemperature": 18,
  "deviceOn": true,
  "schedulesMode": "comfort",
  "locked": false,
  "action": "idle",
  "relay1": "off"
}

2.3 Wochenprogramm

Bei der Aufschlüsselung des Wochenprogramms wird die in der Tabelle dargestellte Logik herangezogen.

Wochenprogramm Wert
Stunden 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  
Werktage 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0  
Binär 00000011 00000000 11111110  
HEX 03 00 FE 0300FE
   
Wochenende 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0  
Binär 00000000 11111111 11111111  
HEX 00 FF FF 00FFFF

Nach der oben dargestellten Logik wird das Wochenprogramm für jeden Wochentag in einer Hexadezimalen Zahl abgespeichert. Die 0-Werte in Binär repräsentieren den ECO-Modus und die 1-Werte den Komfort Modus.

Topic: %hostname%/stat/thermostat/schedules

{
  "Monday": "000300FE",
  "Monday_Target_Temp": 22,
  "Tuesday": "000300FE",
  "Tuesday_Target_Temp": 22,
  "Wednesday": "000300FE",
  "Wednesday_Target_Temp": 22,
  "Thursday": "000300FE",
  "Thursday_Target_Temp": 22,
  "Friday": "000300FE",
  "Friday_Target_Temp": 22,
  "Saturday": "0000FFFF",
  "Saturday_Target_Temp": 22,
  "Sunday": "0000FFFF",
  "Sunday_Target_Temp": 22
}

2.4 Einstellungen

Topic: %hostname%/stat/thermostat/config

{
  "firmware": "X2-V1.00a",
  "heatcoolmode": "heat",
  "EcoTemperature": 18,
  "Tdifference": 0.4,
  "Tadjust": -0.4,
  "RegulationMode": "normalClose",
  "PI_Period": 10,
  "PI_Prop_Kp": 20,
  "PI_Integral_Ki": 5,
  "SwitchControl": "relay1"
}

2.5 Netzwerk

Topic: %hostname%/stat/network/properties

{
  "idx": "alm-x2-flur",
  "ip": "192.168.178.124",
  "rssi": -37
}

2.6 Uhrzeit

Topic: %hostname%/stat/clock/properties

{
  "ntpServer": "pool.ntp.org",
  "timeZone": 60,
  "validTime": true
}

3. Command Nachrichten

3.1 Änderung Temperatur Sollwert

Bei einer Änderung des Sollwertes ist das Verhalten des Thermostats genau so, als wenn die Temperatur am Gerät selbst geändert wird. Dabei repräsentiert der manuelle Modus am Gerät den Modus Home, das Wochenprogramm am Gerät den Modus Comfort und temporäre Änderung des Wochenprogramms den Modus Boost im HomeAssistant.

Topic: %hostname%/cmnd/thermostat/properties

{
  "targetTemperature": 22
}

3.2 Änderung Wochenprogramm und manuelle Regelung

Topic: %hostname%/cmnd/thermostat/properties

{
  "schedulesMode": "comfort"
}

Mögliche Vorgaben: comfort für Wochenprogramm und home für manuelle Regelung

3.3 Änderung Heiz-, Kühlmodus, Ein/Aus

Topic: %hostname%/cmnd/thermostat/config

{
  "heatcoolmode": "heat"
}

Mögliche Vorgaben: heat, cool, off

Die zuvor dargestellten Command Nachrichten, sind Nachrichten, die von Homeassistant direkt unterstützt werden. Es besteht natürlich die Möglichkeit alle Parameter (außer Temperatur Istwert und Firmware), die unter Status Nachrichten dargestellt sind, ebenfalls zu ändern. Hierfür bedarf es einer eigenständiger Implementierung je nach verwendetem Smart Home System.

Menü

Settings