Bei der MQTT-Kommunikation unterscheidet der Smart Appliance Enabler zwischen:
- Nachrichten
- Ereignissen
Der Smart Appliance Enabler sendet die folgenden MQTT-Nachrichten entweder einmalig (mit dem Flag Retained
) oder periodisch.
Eine ApplianceInfoMessage
wird einmalig während der Initialisierung gesendet.
/sae/<appliance_id>/ApplianceInfoMessage
Beispiel
/sae/F-12345678-000000000001-00/ApplianceInfoMessage
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
applianceInfo | ApplianceInfo | siehe unten | Informationen zum Appliance |
time | String | 2022-12-27T19:11:25.952152 | Erzeugungszeitpunkt |
type | String | MeterMessage | Art der Nachricht |
Die Struktur von ApplianceInfo
sieht wie folgt aus:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
currentPowerMethod | String | Measurement | Art der Leistungsermittlung |
id | String | F-12345678-000000000001-00 | Appliance-Konfiguration: ID |
interruptionsAllowed | Boolean | false | Appliance-Konfiguration: Unterbrechnung erlaubt |
maxOffTime | Integer | 0 | Appliance-Konfiguration: Max. Ausschaltdauer |
maxOnTime | Integer | 0 | Appliance-Konfiguration: Max. Einschaltdauer |
maxPowerConsumption | Integer | 4000 | Appliance-Konfiguration: Max. Leistungsaufnahme |
minOffTime | Integer | 0 | Appliance-Konfiguration: Min. Ausschaltdauer |
minOnTime | Integer | 0 | Appliance-Konfiguration: Min. Einschaltdauer |
minPowerConsumption | Integer | null | Appliance-Konfiguration: Min. Leistungsaufnahme |
name | String | Vitocal 300 | Appliance-Konfiguration: Bezeichnung |
notificationSenderId | String | null | Appliance-Konfiguration: Absender-ID für Benachrichtigungen |
serial | String | SE12345 | Appliance-Konfiguration: Seriennummer |
type | String | DishWasher | Appliance-Konfiguration: Typ |
vendor | String | Viessmann | Appliance-Konfiguration: Hersteller |
Eine ControlMessage
wird jedes Mal gesendet, wenn der Status des Schalters ermittelt wurde.
Auch zum Schalten wird sie verwendet.
/sae/<appliance_id>/Control
Beispiel
/sae/F-12345678-000000000001-00/Control
/sae/<appliance_id>/Control/set
Beispiel
/sae/F-12345678-000000000001-00/Control/set
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
on | Boolean | true | Eingeschaltet/Einschalten = true; Ausgeschaltet/Ausschalten = false |
time | String | 2022-12-27T19:11:25.952152 | Erzeugungszeitpunkt |
type | String | MeterMessage | Art der Nachricht |
Eine MeterMessage
wird jedes Mal gesendet, wenn neue Werte für „Leistung“ oder „Energie“ verfügbar sind.
/sae/<appliance_id>/Meter
Beispiel
/sae/F-12345678-000000000001-00/Meter
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
energy | Float | 2.56783 | Energie in kWh |
power | Integer | 131 | Leistung in W |
time | String | 2022-12-27T19:11:25.952152 | Erzeugungszeitpunkt |
type | String | MeterMessage | Art der Nachricht |
Eine StartingCurrentSwitchMessage
ist eine erweiterte ControlMessage
und wird jedes Mal gesendet, wenn der Status eines Schalters mit Anlaufstromerkennung ermittelt wurde.
/sae/<appliance_id>/Control
Beispiel
/sae/F-12345678-000000000001-00/Control
Zusätzlich zu den Feldern der ControlMessage
sind folgende Felder enthalten:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
powerThreshold | Integer | 15 | Leistungsschaltgrenze in W |
startingCurrentDetectionDuration | Integer | 30 | Überschreitungsdauer beim Einschalten in s |
finishedCurrentDetectionDuration | Integer | 300 | Unterschreitungsdauer beim Ausschalten in s |
Eine SwitchOptionMessage
ist eine erweiterte ControlMessage
und wird jedes Mal gesendet, wenn der Status eines Schalters mit Einschaltoption ermittelt wurde.
/sae/<appliance_id>/Control
Beispiel
/sae/F-12345678-000000000001-00/Control
Zusätzlich zu den Feldern der ControlMessage
sind folgende Felder enthalten:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
powerThreshold | Integer | 15 | Leistungsschaltgrenze in W |
switchOnDetectionDuration | Integer | 30 | Dauer der Einschalterkennung in s |
switchOffDetectionDuration | Integer | 300 | Dauer der Ausschalterkennung in s |
Eine TimeframeIntervalQueueMessage
wird nur dann gesendet, wenn die Queue gefüllt oder geändert wird (mit dem Flag Retained
).
/sae/<appliance_id>/TimeframeIntervalQueueMessage
Beispiel
/sae/F-12345678-000000000001-00/TimeframeIntervalQueueMessage
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
entries | TimeframeIntervalQueueEntry[] | siehe unten | Liste der Zeitfenster in der Queue |
time | String | 2022-12-27T19:11:25.952152 | Erzeugungszeitpunkt |
type | String | MeterMessage | Art der Nachricht |
Die Struktur eines TimeframeIntervalQueueEntry
sieht dabei wie folgt aus:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
state | String | ACTIVE | Status des Zeitfensters |
start | String | 2022-12-27T10:00:00 | Beginn des Zeitfensters |
end | String | 2022-12-27T18:00:00 | Ende des Zeitfensters |
type | String | RuntimeRequest | Art des Requests |
min | Integer | null | min. Laufzeit/Energie |
max | Integer | 10800 | max. Laufzeit/Energie |
enabled | Boolean | true | Anforderung aktiviert = true; Anforderung deaktiviert = false |
Eine VariablePowerConsumerMessage
ist eine erweiterte ControlMessage
und wird jedes Mal gesendet, wenn der Status eines Schalters für ein Gerät mit variabler Leistungsaufnahme ermittelt wurde.
Auch zum Schalten wird sie verwendet.
/sae/<appliance_id>/Control
Beispiel
/sae/F-12345678-000000000001-00/Control
/sae/<appliance_id>/Control/set
Beispiel
/sae/F-12345678-000000000001-00/Control/set
Zusätzlich zu den Feldern der ControlMessage
sind folgende Felder enthalten:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
power | Integer | 1200 | aktuelle/geforderte Leistungsaufnahme |
useOptionalEnergy | Boolean | false | Überschussenergie wird verwendet = true; keine Überschussenergie wird verwendet = false |
Ereignisse sind ebenfalls MQTT-Nachrichten, enthalten nach der Appliance-ID im Topic jedoch auch noch die Gruppierungsebende Event
:
/sae/<appliance_id>/Event/...
Der Smart Appliance Enabler sendet Ereignisse nur, wenn sie auftreten.
Standardmäßig haben alle Ereignisse folgenden Inhalt:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
time | String | 2022-12-27T19:11:25.952152 | Erzeugungszeitpunkt |
type | String | MqttMesage | Art der Nachricht |
Wenn EnableRuntimeRequest
empfangen wird, wird die Anforderung des ersten Zeitfensters auf enabled
gesetzt.
Anforderungen sind jedoch standardmäßig aktiviert, außer sie sind mit „externe Aktivierung“ gekennzeichnet.
/sae/<appliance_id>/Event/EnableRuntimeRequest
Beispiel
/sae/F-12345678-000000000001-00/Event/EnableRuntimeRequest
Wenn DisableRuntimeRequest
empfangen wird, wird die Anforderung des ersten Zeitfensters auf disabled
gesetzt.
/sae/<appliance_id>/Event/DisableRuntimeRequest
Example
/sae/F-12345678-000000000001-00/Event/DisableRuntimeRequest
Wenn sich der berechnete oder vom SOC-Script gelieferte SOC ändert, wird dieses Event gesendet.
/sae/<appliance_id>/Event/EVChargerSocChangedEvent
Example
/sae/F-12345678-000000000001-00/Event/EVChargerSocChangedEvent
Zusätzlich zu den gemeinsamen Feldern jedes Ereignisses sind die folgenden Felder enthalten:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
chargeLoss | Float | 11.123 | aktuelle Ladeverluste in Prozent |
socValues | SocValues | siehe unten | SOC zu verschiedenen Zeitpunkten |
socInitialTime | String | 2022-12-27T19:11:25.952152 | Zeitpunkt für den initialen SOC |
socRetrievedTime | String | 2022-12-27T19:11:25.952152 | Zeitpunkt des vom SOC-Script gelieferten SOC |
Die Struktur von SocValues
sieht wie folgt aus:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
batteryCapacity | Integer | 36000 | Fahrzeug-Konfiguration: Batteriekapazität |
current | Integer | 52 | aktueller, berechneter SOC |
initial | Integer | 19 | SOC beim Verbinden mit der Wallbox |
retrieved | Integer | 40 | SOC geliefert von der letzten Ausführung des SOC-Scripts |
Wenn sich der Status der Wallbox ändert, wird dieses Event gesendet.
/sae/<appliance_id>/Event/EVChargerStateChangedEvent
Example
/sae/F-12345678-000000000001-00/Event/EVChargerStateChangedEvent
Zusätzlich zu den gemeinsamen Feldern jedes Ereignisses sind die folgenden Felder enthalten:
Feld | Typ | Beipiel-Wert | Beschreibung |
---|---|---|---|
evId | Integer | 1 | ID des verbundenen Fahrzeugs |
newState | String | VEHICLE_CONNECTED | neuer Status |
previousState | String | VEHICLE_NOT_CONNECTED | bisheriger Status |
Dieses Event wird gesendet, wenn der Sunny Home Manager alle Daten vom Smart Appliance Enabler abholt.
/sae/<appliance_id>/Event/SempDevice2EM
Example
/sae/F-12345678-000000000001-00/Event/SempDevice2EM
Dieses Event wird gesendet, wenn der Sunny Home Manager einen Schaltbefehl an den Smart Appliance Enabler sendet.
/sae/<appliance_id>/Event/SempEM2Device
Example
/sae/F-12345678-000000000001-00/Event/SempEM2Device
Dieses Event wird gesendet, wenn der Sunny Home Manager lediglich die Geräte-Information vom Smart Appliance Enabler abholt.
/sae/<appliance_id>/Event/SempGetDeviceInfo
Example
/sae/F-12345678-000000000001-00/Event/SempGetDeviceInfo
Dieses Event wird gesendet, wenn der Sunny Home Manager lediglich den Geräte-Status vom Smart Appliance Enabler abholt.
/sae/<appliance_id>/Event/SempGetDeviceStatus
Example
/sae/F-12345678-000000000001-00/Event/SempGetDeviceStatus
Dieses Event wird gesendet, wenn sich der reale Schaltzustand eines Gerätes mit Anlaufstromerkennung oder Einschaltoption ändert.
/sae/<appliance_id>/Event/WrappedControlSwitchOffDetected
Example
/sae/F-12345678-000000000001-00/Event/WrappedControlSwitchOffDetected
TBD: https://www.home-assistant.io/integrations/mqtt/#rest-api