mdzio / ccu-historian

Der CCU-Historian erfasst die Betriebsdaten des Hausautomations-Systems HomeMatic der Firma eQ-3.
http://www.ccu-historian.de
GNU General Public License v3.0
121 stars 14 forks source link

MQTT-Schnittstelle #25

Open mdzio opened 7 years ago

mdzio commented 7 years ago

Der CCU-Historian ist MQTT-Client und archiviert alle Benachrichtigungen.

Offene Punkte:

hobbyquaker commented 3 years ago

My 2 Cent: Wäre sinnvoll (bzw. besser gesagt: notwendig, insofern man sich extern vorgelagerte Payload-Transformationen sparen will) wenn es je subscribed Topic konfigurierbar wäre ob "raw" payload oder ob JSON und welche Property (über simple Dot-Notation oder noch besser per JSONata Expression).

In sehr heterogenen MQTT basierten System sind die Payloads leider nicht einheitlich strukturiert und die verschiedenen Publisher machen es halt alle irgendwie anders ;-)

Paar Beispiele:

# Raw String
zigbee/SensorGarten/voltage 2895
zigbee/SensorGarten/battery 41
zigbee/SensorGarten/temperature -1.17
zigbee/SensorGarten/humidity 84.28
zigbee/SensorGarten/pressure 972

# Irgendein JSON
octoPrint/temperature/tool0 {"actual": 106.94, "target": 0.0, "ts": 1614782341}
octoPrint/temperature/bed {"actual": 55.92, "target": 0.0, "ts": 1614782337}

# MQTT-Smarthome ähnlich
hm/status/Ender:0/ACTUAL_TEMPERATURE {"val":27,"ts":1615148877804,"lc":1615148877804,"hm":{"ccu":"localhost","iface":"HmIP-RF","device":"0001D7098D9F3C","deviceName":"Ender","deviceType":"HMIP-PSM","channel":"0001D7098D9F3C:0","channelName":"Ender:0","channelType":"MAINTENANCE","channelIndex":0,"datapoint":"ACTUAL_TEMPERATURE","datapointName":"HmIP-RF.0001D7098D9F3C:0.ACTUAL_TEMPERATURE","datapointType":"FLOAT","datapointMin":-3276.8,"datapointMax":3276.7,"datapointDefault":0,"datapointControl":"MAINTENANCE.ACTUAL_TEMPERATURE","valuePrevious":25,"valueStable":27,"rooms":[],"functions":[],"ts":1615148877804,"tsPrevious":1615142495530,"lc":1615148877804,"change":true,"cache":false,"uncertain":false,"stable":true}}

Weitere weit verbreitete Payload Konventionen wären auch https://homieiot.github.io/specification/ oder die im Home Assistant Umfeld (WLED, ESPHome, Tasmota, ...) üblichen Payloads.

mdzio commented 3 years ago

Vielen Dank für die Übersicht der Payload-Formate. Es muss tatsächlich generisch konfigurierbar sein, wie der Wert (oder auch mehrere Werte) aus der Payload extrahiert werden.