MQTT-Neuling braucht Hilfe (p4d - Fröling S1 Turbo Holzscheitkessel mit S-3200)

Begonnen von hoppel118, 19 April 2020, 23:12:06

Vorheriges Thema - Nächstes Thema

hoppel118

Hallo,

habe gerade mal schnell das Update eingespielt und alle vorhandenen Devices gelöscht. Anschließend einmal FHEM neugestartet, um autocreate auszulösen.

Folgendes Device wurde automatisch angelegt:

Internals:
   CFGFN     
   CID        p4d_publisher
   DEF        p4d_publisher
   DEVICETOPIC MQTT2_p4d_publisher
   FUUID      5e9ebcf7-f33f-5dcf-bb63-70d0d03d50048c29
   IODev      mqtt2server
   LASTInputDev mqtt2server
   MSGCNT     8138
   NAME       MQTT2_p4d_publisher
   NR         616
   STATE      ???
   TYPE       MQTT2_DEVICE
   mqtt2server_MSGCNT 8138
   mqtt2server_TIME 2020-04-21 13:10:08
   READINGS:
     2020-04-21 13:10:08   name            Vorlauf-Solltemperatur
     2020-04-21 13:10:08   state_topic     p4d2mqtt/sensor/Vorlauf-Solltemperatur_0x16/state
     2020-04-21 13:10:08   unique_id       Vorlauf-Solltemperatur_0x16_p4d2mqtt
     2020-04-21 13:10:08   unit_of_measurement °C
     2020-04-21 13:10:08   value           48.00
     2020-04-21 13:10:08   value_template  {{ value_json.value }}
Attributes:
   IODev      mqtt2server
   readingList p4d_publisher:homeassistant/sensor/Kesseltemperatur_0x0/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Kesseltemperatur_0x0/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Status/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Status/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Abgastemperatur_0x1/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Abgastemperatur_0x1/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Betriebsmodus/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Betriebsmodus/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Boardtemperatur_0x2/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Boardtemperatur_0x2/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Uhrzeit/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Uhrzeit/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Au\xc3\x9fentemperatur_0x4/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Au\xc3\x9fentemperatur_0x4/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Saugzugdrehzahl_0x7/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Saugzugdrehzahl_0x7/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Zykluszeit_0xe/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Zykluszeit_0xe/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Saugzug-Ansteuerung_0xf/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Saugzug-Ansteuerung_0xf/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Kesselstellgr\xc3\xb6\xc3\x9fe_0x12/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Kesselstellgr\xc3\xb6\xc3\x9fe_0x12/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Abgas-Solltemperatur_0x13/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Abgas-Solltemperatur_0x13/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Vorlauf-Isttemperatur_0x15/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Vorlauf-Isttemperatur_0x15/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Vorlauf-Solltemperatur_0x16/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Vorlauf-Solltemperatur_0x16/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BetriebsartHeizkreis_0x17/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BetriebsartHeizkreis_0x17/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Vorlauf-Isttemperatur_0x19/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Vorlauf-Isttemperatur_0x19/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Vorlauf-Solltemperatur_0x1a/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Vorlauf-Solltemperatur_0x1a/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BetriebsartHeizkreis_0x1b/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BetriebsartHeizkreis_0x1b/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Boilertemperaturoben_0x5d/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Boilertemperaturoben_0x5d/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Betriebsstunden_0x62/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Betriebsstunden_0x62/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BetriebsstundeninderFeuererhaltung_0x73/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BetriebsstundeninderFeuererhaltung_0x73/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Puffertemperaturoben_0x76/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Puffertemperaturoben_0x76/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Puffertemperaturunten_0x78/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Puffertemperaturunten_0x78/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/PufferpumpenAnsteuerung_0x8c/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/PufferpumpenAnsteuerung_0x8c/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BoilerpumpeAnsteuerung_0x90/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BoilerpumpeAnsteuerung_0x90/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/TemperaturdesZweitkessel_0xc4/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/TemperaturdesZweitkessel_0xc4/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Lambdasondenspannunggemessen_0xd3/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Lambdasondenspannunggemessen_0xd3/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/StundenseitletzterWartung_0xd5/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/StundenseitletzterWartung_0xd5/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Lambdasondenspannungkorrigiert_0xdc/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Lambdasondenspannungkorrigiert_0xdc/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/PufferpumpenbegrenzungdurchAbgastemperatur_0xde/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/PufferpumpenbegrenzungdurchAbgastemperatur_0xde/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Pufferladezustand_0xe1/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Pufferladezustand_0xe1/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/F\xc3\xbchleramHydraulikmodul03_0xff/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/F\xc3\xbchleramHydraulikmodul03_0xff/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BetriebsstundenvonKessel2Brennerkontakt_0x109/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BetriebsstundenvonKessel2Brennerkontakt_0x109/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/EmpfohleneHolzmengebeimNachlegen_0x10a/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/EmpfohleneHolzmengebeimNachlegen_0x10a/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/BetriebsartBoiler_0x156/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/BetriebsartBoiler_0x156/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Build_0x16f/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Build_0x16f/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Raumf\xc3\xbchlerKBGTouch_0x191/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Raumf\xc3\xbchlerKBGTouch_0x191/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/PufferladezustandDiskret_0x1c0/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/PufferladezustandDiskret_0x1c0/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/VergangeneZeitseitletzterW\xc3\xa4rmetauscherreinigung_0x1c7/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/VergangeneZeitseitletzterW\xc3\xa4rmetauscherreinigung_0x1c7/state:.* { json2nameValue($EVENT) }
p4d_publisher:homeassistant/sensor/Kesselzustand_0x1c9/config:.* { json2nameValue($EVENT) }
p4d_publisher:p4d2mqtt/sensor/Kesselzustand_0x1c9/state:.* { json2nameValue($EVENT) }
   room       Hersteller->MQTT


Anschließend habe ich Device manuell wie folgt angelegt:

Internals:
   CFGFN     
   CID        p4d_publisher
   DEF        p4d_publisher
   DEVICETOPIC EG_HZR_Heizungsanlage
   FUUID      5e9ebd47-f33f-5dcf-36e4-9ca05dece05d54db
   IODev      mqtt2server
   LASTInputDev mqtt2server
   MSGCNT     10124
   NAME       EG_HZR_Heizungsanlage
   NR         654
   STATE      Stat: Heizen
TKes: 81.50
TPuu: 79.50
TPuo: 80.50
   TYPE       MQTT2_DEVICE
   mqtt2server_MSGCNT 10124
   mqtt2server_TIME 2020-04-21 13:37:11
   READINGS:
     2020-04-21 13:37:07   Abgas-Solltemperatur_0x13 146.00
     2020-04-21 13:37:06   Abgastemperatur_0x1 107.00
     2020-04-21 13:37:07   Au__entemperatur_0x4 12.50
     2020-04-21 13:37:11   BetriebsartBoiler_0x156 1.00
     2020-04-21 13:37:08   BetriebsartHeizkreis_0x17 0.00
     2020-04-21 13:37:08   BetriebsartHeizkreis_0x1b 0.00
     2020-04-21 13:37:06   Betriebsmodus   Dauerlast
     2020-04-21 13:37:08   Betriebsstunden_0x62 9832.00
     2020-04-21 13:37:09   BetriebsstundeninderFeuererhaltung_0x73 27.00
     2020-04-21 13:37:10   BetriebsstundenvonKessel2Brennerkontakt_0x109 2429.00
     2020-04-21 13:37:06   Boardtemperatur_0x2 40.50
     2020-04-21 13:37:09   BoilerpumpeAnsteuerung_0x90 0.00
     2020-04-21 13:37:08   Boilertemperaturoben_0x5d 62.00
     2020-04-21 13:37:11   Build_0x16f     2.00
     2020-04-21 13:37:10   EmpfohleneHolzmengebeimNachlegen_0x10a 0.00
     2020-04-21 13:37:10   F__hleramHydraulikmodul03_0xff 62.00
     2020-04-21 13:37:07   Kesselstellgr____e_0x12 98.00
     2020-04-21 13:37:06   Kesseltemperatur_0x0 81.50
     2020-04-21 13:37:11   Kesselzustand_0x1c9 3.00
     2020-04-21 13:37:09   Lambdasondenspannunggemessen_0xd3 24.07
     2020-04-21 13:37:10   Lambdasondenspannungkorrigiert_0xdc 24.07
     2020-04-21 13:37:11   PufferladezustandDiskret_0x1c0 4.00
     2020-04-21 13:37:10   Pufferladezustand_0xe1 100.00
     2020-04-21 13:37:09   PufferpumpenAnsteuerung_0x8c 100.00
     2020-04-21 13:37:10   PufferpumpenbegrenzungdurchAbgastemperatur_0xde 8.00
     2020-04-21 13:37:09   Puffertemperaturoben_0x76 80.50
     2020-04-21 13:37:09   Puffertemperaturunten_0x78 79.50
     2020-04-21 13:37:11   Raumf__hlerKBGTouch_0x191 19.00
     2020-04-21 13:37:07   Saugzug-Ansteuerung_0xf 88.00
     2020-04-21 13:37:07   Saugzugdrehzahl_0x7 2682.00
     2020-04-21 13:37:06   Status          Heizen
     2020-04-21 13:37:10   StundenseitletzterWartung_0xd5 9832.00
     2020-04-21 13:37:09   TemperaturdesZweitkessel_0xc4 15.50
     2020-04-21 13:37:06   Uhrzeit         Tuesday, 21. Apr. 2020 13:25:41
     2020-04-21 13:37:11   VergangeneZeitseitletzterW__rmetauscherreinigung_0x1c7 377.00
     2020-04-21 13:37:07   Vorlauf-Isttemperatur_0x15 32.50
     2020-04-21 13:37:08   Vorlauf-Isttemperatur_0x19 35.50
     2020-04-21 13:37:08   Vorlauf-Solltemperatur_0x16 47.50
     2020-04-21 13:37:08   Vorlauf-Solltemperatur_0x1a 47.50
     2020-04-21 13:37:07   Zykluszeit_0xe  53.70
Attributes:
   IODev      mqtt2server
   alias      Heizungsanlage
   event-min-interval .*:120
   event-on-change-reading .*
   icon       sani_boiler_temp
   readingList p4d2mqtt/sensor/.* { return unless $TOPIC=~m,sensor/([^/]+)/,; json2nameValue($EVENT, '', {value=>$1}) }
homeassistant.* {return;}
   room       Hersteller->Fröling,Aussen,Erdgeschoss->Heizungsraum,Hersteller->MQTT
   stateFormat Stat: Status
TKes: Kesseltemperatur_0x0
TPuu: Puffertemperaturunten_0x78
TPuo: Puffertemperaturoben_0x76


Hier ist nun zu erkennen, dass die Umlaute durch "__" ersetzt werden.

Das Feedback seitens horchi auf meinen Post ist nun übrigens mittlerweile auch da: https://www.holzheizer-forum.de/index.php?thread/50090-announce-p4d-visualisierung-und-einstellung-der-s-3200-via-com1/&postID=171555#post171555

Ich kopiere mal den gesamten Post hierhin:

Zitat
Zitatjo, grundsätzlich hat es nun geklappt. Alles was p4d ausgibt, sehe ich nun in einem eigenen Device in FHEM. Dies war aber nicht direkt so. Ich habe im FHEM-Forum einen eigenen Beitrag erstellt. Zwei Entwickler (u.a. der Erfinder von FHEM) haben sich dem Thema direkt angenommen und es grundsätzlich auch erstmal gelöst.

Trotzdem gibt es Feedback. Hier die drei wichtigsten Posts dazu:

https://forum.fhem.de/index.php/topic,110401.msg1044990.html#msg1044990​
https://forum.fhem.de/index.php/topic,110401.msg1045039.html#msg1045039​
https://forum.fhem.de/index.php/topic,110401.msg1045055.html#msg1045055​

Die MQTT Implementierung wird sogar als moderne Kunst betrachtet:

https://forum.fhem.de/index.php/topic,110401.msg1045092.html#msg1045092
Am besten ist es wahrscheinlich, wenn du den gesamten Thread liest. Das hält sich ja insgesamt noch in Grenzen.

Interesse ja, da ich FHEM nicht verwende kann ich nicht selbst testen. Auch habe ich im Moment wenig Zeit mich durch die FHEM Dokumentation zu wühlen. Habe da vor Jahren schon mal geschmökert als ich auf der Suche nach eine Hausautomatisierung war. FHEM was dann aber nichts für mich.
Ich sehe im Moment diese beiden Möglichkeiten:


  • du/ihr sendet mir ein Patch oder einen Git Pull-Request mit der für FHEM nötigen Erweiterung dann sehe ich mir das an und übernehme es wenn es passt
  • ihr schickt mir die Spezifikation wie die Nachrichten und MQTT Topics für FHEM aussehen müssen, dann schaue ich wie ich es umsetzen kann.

ZitatIst es deiner Ansicht nach möglich, dass in p4d Subgeräte erstellt werden, die dann wiederum in einem MQTT-Topic zusammengefasst werden?
Hast du überhaupt Interesse/Zeit p4d in dieser Richtung weiterzuentwickeln?
Setzt du eigentlich irgendeine Hausautomatisierungssoftware ein?
Kann man per MQTT eigentlich auch irgendwie Parameter an der Steuerung konfigurieren oder geht ausschließlich auslesen?


  • ja bestimmt, siehe meine Vorschläge oben
  • ja bestimmt, siehe meine Vorschläge oben ;)
  • ja ich verwende den HomeAssistant - passen zu diesem ist auch (wie irgendwo in diesem Thread erwähnt) das MQTT Interface implementiert
  • nein das geht noch nicht - habe aktuell auch keine Verwendung dafür

Grüße Jörg

@Beta-User Wie siehst du das?

Grundsätzlich besteht Interesse p4d zu optimieren. Ich kann hier allerdings lediglich testen und die Brücke spielen.

Ein Patch bzw. Pull Request kannst du wahrscheinlich nicht leisten. Gibt es die von horchi angesprochene Spezifikation wie Nachrichten und MQTT Topics für FHEM aussehen müssen/sollten?

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

rudolfkoenig

#31
ZitatGibt es die von horchi angesprochene Spezifikation wie Nachrichten und MQTT Topics für FHEM aussehen müssen/sollten?
FHEM kann die die Meldungen, so wie sie jetzt sind, verarbeiten. Es ist zwar ein manueller Eingriff notwendig, das kann man aber in ein Template einbauen. Da man das nur einmal anwendet, ist es meiner Ansicht nach verkraftbar.

Wenn FHEM automatisch die Daten erkennen soll (was ein Template je nach Anspruch nicht ueberfluessig macht), gibt es zwei Wege:
1. Einzeln: im Topic ReadingName als letztes Element spezifizieren, und den dazugehoerigen Wert direkt, ohne JSON im Message mitgeben.
2. Zusammengefasst: Daten als ein JSON-Message, in der Form { "ReadingName1":Wert1, "ReadingName2":Wert2 } uebermitteln.

In beiden Faellen sollten nur Aenderungen uebermittelt werden, und das Topic sollte pro Geraet eindeutig sein.
Die zweite Version ist Ressourcenschonender als die Alternative #1, bzw. das, was jetzt praktiziert wird.
Weiterhin sollte man auf SUBSCRIBE/UNSUBSCRIBE verzichten.

Beta-User

(...wieder mal zu langsam, bitte Rudi's Post nicht übersehen!).

Vorab nochmal die Empfehlung: Stell' den homeassistant-Zweig am IO ab (ignoreRegexp).

Zur Kommunkation an horchi:

Grundlegend: Wir brauchen nicht speziell irgendwas für FHEM, vielmehr ist das - jedenfalls nach meiner Meinung - sehr speziell, was er für homeassistant gebaut hat ;) . Mit den Announcements kann afaik keine andere Controller-Software umgehen, also auch nicht NodeRed usw. Ziel sollte also eher sein, was "allgemeinverträgliches" zu erreichen/strukturieren, dann "kommen" wir damit auch (noch) besser "klar". Anders gesagt: horchi muß keinerlei FHEM-Doku wälzen oder FHEM irgendwie verstehen...

Daher wäre auch der erste Vorschlag an horchi, die homeassistant-spezifischen Announcements nur zu machen, wenn die "irgendwo" eingeschaltet sind (und der default sollte "aus" sein; nicht angesehen habe ich, wie oft das kommt, aber eigentlich ist das eine einmalige Sache (beim Systemstart)).

2. Vorschlag: Er sollte prüfen, wann er die connects und disconnects macht. Ich kenne die MQTT-Specs nicht, aber was Rudi schreibt, würde ich als deutliche Kritik in Richtung "violation" interpretieren ;) .

3. Vorschlag: Umlaute sind in der Kommunikation immer tricky. Daher sollte man die (ggf. optional) vermeiden.

4. Vorschlag:
Im Moment kommen alle "Baugruppen" unter einem Sub-Pfad. Daher muß man händisch sortieren, was wohin (vielleicht...) gehört, dabei kann der Endanwender eigentlich nur raten.
Der Hersteller sollte aber wissen, welche Hex-Adresse zu welcher Baugruppe gehört und welches "Etikett"/welche Bezeichnung die hat. Also sollte es je einen Sub-Pfad geben, der die zusemmangehörenden Adressen bündelt.
Beispiel, damit man die Richtung evtl. erkennen kann:
p4d2mqtt/sensor/Kessel/Temperatur_0x0/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Kessel/Abgastemperatur_0x1/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Kessel/Stellgroesse_0x12/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Kessel/Abgas-Solltemperatur_0x13/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Kessel/Vorlauf-Isttemperatur_0x15/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Kessel/Vorlauf-Solltemperatur_0x16/state:.* { json2nameValue($EVENT) }


p4d2mqtt/sensor/Saugzug/Drehzahl_0x7/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Saugzug/Ansteuerung_0xf/state:.* { json2nameValue($EVENT) }


p4d2mqtt/sensor/BusInterface/Status/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/BusInterface/Zykluszeit_0xe/state:.* { json2nameValue($EVENT) }

p4d2mqtt/sensor/Steuerung/Betriebsmodus/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Steuerung/Boardtemperatur_0x2/state:.* { json2nameValue($EVENT) }
p4d2mqtt/sensor/Steuerung/Aussentemperatur_0x4/state:.* { json2nameValue($EVENT) }

(Was diese Gruppierungen angeht, hatte ich für ebus im Hinterkopf, dass das da mit csv-Files gemacht wird, wo die HEX-Adressen dann direkt Gruppen zugeordnet werden und je eine deutsche und englische Bezeichnung für Baugruppe und Element drin stand; kann aber auch falsch sein).

5. Ob man "sensor" im Pfad braucht, sei mal dahingestellt...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hoppel118

Vielen Dank erstmal euch beiden für das konstruktive Feedback. Ich kläre die weitere Vorgehensweise mit horchi und melde mich wieder.

Zitat von: Beta-User am 21 April 2020, 15:17:16
Vorab nochmal die Empfehlung: Stell' den homeassistant-Zweig am IO ab (ignoreRegexp).

Wie mache ich das genau?

Wenn ich am mqtt2server schaue, sehe ich unter "RETAIN" eine riesige Wurst an Informationen zum p4d. Hier nur ein kleiner Abschnitt:

RETAIN
{"homeassistant/sensor/Abgas-Solltemperatur_0x13/config":"{\u0022unit_of_measurement\u0022 : \u0022°C\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Abgas-Solltemperatur_0x13/state\u0022,\u0022name\u0022 : \u0022Abgas-Solltemperatur\u0022,\u0022unique_id\u0022 : \u0022Abgas-Solltemperatur_0x13_p4d2mqtt\u0022}","homeassistant/sensor/Abgastemperatur_0x1/config":"{\u0022unit_of_measurement\u0022 : \u0022°C\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Abgastemperatur_0x1/state\u0022,\u0022name\u0022 : \u0022Abgastemperatur\u0022,\u0022unique_id\u0022 : \u0022Abgastemperatur_0x1_p4d2mqtt\u0022}","homeassistant/sensor/Au__entemperatur_0x4/config":"{\u0022unit_of_measurement\u0022 : \u0022°C\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Außentemperatur_0x4/state\u0022,\u0022name\u0022 : \u0022Außentemperatur\u0022,\u0022unique_id\u0022 : \u0022Außentemperatur_0x4_p4d2mqtt\u0022}","homeassistant/sensor/Außentemperatur_0x4/config":"{\u0022unit_of_measurement\u0022 : \u0022°C\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Außentemperatur_0x4/state\u0022,\u0022name\u0022 : \u0022Außentemperatur\u0022,\u0022unique_id\u0022 : \u0022Außentemperatur_0x4_p4d2mqtt\u0022}","homeassistant/sensor/BetriebsartBoiler_0x156/config":"{\u0022unit_of_measurement\u0022 : \u0022\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/BetriebsartBoiler_0x156/state\u0022,\u0022name\u0022 : \u0022Betriebsart Boiler\u0022,\u0022unique_id\u0022 : \u0022BetriebsartBoiler_0x156_p4d2mqtt\u0022}","homeassistant/sensor/BetriebsartHeizkreis_0x17/config":"{\u0022unit_of_measurement\u0022 : \u0022\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/BetriebsartHeizkreis_0x17/state\u0022,\u0022name\u0022 : \u0022Betriebsart Heizkreis\u0022,\u0022unique_id\u0022 : \u0022BetriebsartHeizkreis_0x17_p4d2mqtt\u0022}","homeassistant/sensor/BetriebsartHeizkreis_0x1b/config":"{\u0022unit_of_measurement\u0022 : \u0022\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/BetriebsartHeizkreis_0x1b/state\u0022,\u0022name\u0022 : \u0022Betriebsart Heizkreis\u0022,\u0022unique_id\u0022 : \u0022BetriebsartHeizkreis_0x1b_p4d2mqtt\u0022}","homeassistant/sensor/Betriebsmodus/config":"{\u0022unit_of_measurement\u0022 : \u0022\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Betriebsmodus/state\u0022,\u0022name\u0022 : \u0022Betriebsmodus\u0022,\u0022unique_id\u0022 : \u0022Betriebsmodus_p4d2mqtt\u0022}","homeassistant/sensor/Betriebsstunden_0x62/config":"{\u0022unit_of_measurement\u0022 : \u0022h\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/Betriebsstunden_0x62/state\u0022,\u0022name\u0022 : \u0022Betriebsstunden\u0022,\u0022unique_id\u0022 : \u0022Betriebsstunden_0x62_p4d2mqtt\u0022}","homeassistant/sensor/BetriebsstundeninderFeuererhaltung_0x73/config":"{\u0022unit_of_measurement\u0022 : \u0022h\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/BetriebsstundeninderFeuererhaltung_0x73/state\u0022,\u0022name\u0022 : \u0022Betriebsstunden in der Feuererhaltung\u0022,\u0022unique_id\u0022 : \u0022BetriebsstundeninderFeuererhaltung_0x73_p4d2mqtt\u0022}","homeassistant/sensor/BetriebsstundenvonKessel2Brennerkontakt_0x109/config":"{\u0022unit_of_measurement\u0022 : \u0022h\u0022,\u0022value_template\u0022 : \u0022{{ value_json.value }}\u0022,\u0022state_topic\u0022 : \u0022p4d2mqtt/sensor/BetriebsstundenvonKessel2Brennerkontakt_0x109/state\u0022,\u0022name\u0022 : \u0022Betriebsstunden von Kessel 2 (Brennerkontakt)\u0022,\


Wie kann ich hier am IO definieren, dass der homeassistant-Zweig nicht beachtet werden soll? Müsste das wie folgt aussehen?

attr mqtt2server ignoreRegexp homeassistant.*

Anschließend würde ich dann mit folgendem Befehl nochmal alle Readings des mqtt2servers löschen:

deletereading -q mqtt2server (?!associatedWith).*

Dann müsste ich nochmal kurz bis die Readings wieder auftauchen warten und der homeassistant-Zweig dürfte weg sein.


Ist diese Vorgehensweise korrekt?

Danke und Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

Beta-User

Bei mir hatte ich die so definiert (kann aber nicht sagen, ob das wirklich "besser" ist):
attr mqtt2server ignoreRegexp homeassistant/.*/config:.*Würde also einfach mal den Test empfehlen mit dem, was du hast ;) . (Das "Schöne" an MQTT ist, dass es alles immer wieder auf einen stabilen Ausgangszustand bekommt, wenn man einfach autocreate machen läßt; man braucht nur eben manchmal einen Restart oder reconnect des externen Geräts).

Ansonsten habe ich manches einfach auch noch nicht selbst probiert und würde zu etwas mehr Mut raten (iVm. einer Kopie der RAW-Definition; damit ist es im Zweifel schnell repariert...).

Löschen der Readings bitte auch am m2_DEVICE.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hoppel118

Jo, kaputt machen kann ich eigentlich sowieso nichts, da ich immer bevor ich eine Veränderung vornehme ein Backup erstelle.

Wie dem auch sei. Beide folgenden Attribute am Device "mqtt2server" führen nicht dazu, dass die homeassistant Zweige abgestellt werden:

attr mqtt2server ignoreRegexp homeassistant/.*/config:.*
attr mqtt2server ignoreRegexp homeassistant.*

Wenn ich anschließend das Reading RETAIN lösche, kommen die homeassistant Einträge trotzdem wieder mit rein.

Noch eine Idee?

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

rudolfkoenig

ZitatWenn ich anschließend das Reading RETAIN lösche, kommen die homeassistant Einträge trotzdem wieder mit rein.
Ich brauche ein "attr mqtt2server verbose 5" Log, um das naeher anzuschauen.

hoppel118

Hi,

ok, bin wie folgt vorgegangen:

Folgendes habe ich am MQTT2_SERVER gesetzt:

attr mqtt2server ignoreRegexp homeassistant/.*/config:.*
attr mqtt2server verbose 5
deletereading -q mqtt2server (?!associatedWith).*


Dann habe ich gewartet bis RETAIN wieder voll ist:

Hier das Logfile:

https://pastebin.com/Nn5qrFKN

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

Beta-User

Verständnisfrage:

Imo sollte sich das "ignoreRegexp" nur intern auswirken, also einfach die Weitergabe nach MQTT2_DEVICE verhindern, nicht aber die externe Borker-Funktion irgendwie beeinträchtigen. Daraus würde ich schließen, dass es im Reading "retain" am SERVER eigentlich richtig ist, wenn dort das homeassistant-Dingens noch auftaucht.

Die Frage ist doch eigentlich, ob es am MQTT2_DEVICE wieder erscheint, wenn man autocreate werkeln läßt. Das (und nur das) sollte m.E. nicht der Fall sein.

Oder verstehe ich den Mechanismus falsch?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

ZitatHier das Logfile:
Ich sehe in der Datei keine dispatch Zeilen mit homeassistant drin, d.h. es werden keine Readings/Events mit diesem Topic generiert.
=> Funktioniert so, wie es beabsichtigt war.

ZitatImo sollte sich das "ignoreRegexp" nur intern auswirken, also einfach die Weitergabe nach MQTT2_DEVICE verhindern, nicht aber die externe Borker-Funktion irgendwie beeinträchtigen.
Genau das ist z.Zt. implementiert.

hoppel118

#40
Alles klar! Das war dann ein Verständnisproblem auf meiner Seite. Habe das gerade nochmal getestet. Beim autocreated MQTT2_DEVICE fehlen nun die homeassistant Zweige.

Wie viele Zeichen passen denn eigentlich in das Feld "RETAIN" des MQTT2_SERVERS?

Mit Leerzeichen sind das bereits 21.704 Zeichen für ein einziges Device. Läuft man da irgendwann gegen eine Wand oder kann das Feld unbegrenzt groß sein?

Danke und Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

rudolfkoenig

ZitatWie viele Zeichen passen denn eigentlich in das Feld "RETAIN" des MQTT2_SERVERS?
Haengt vom Speicher deines Rechners ab, unbegrenzt ist das vmtl auch nicht :)
Das Retain Flag fuer sowas zu missbrauchen finde ich uebrigens schlecht, ein MQTT Server ist keine Datenbank.

hoppel118

Hi,

horchi hat heute schon einiges umgesetzt. Komme aber erst heute Abend zum Testen. Er hat folgende Frage:

ZitatErgänzend, wo/wie werden bei dieser Lösung { "ReadingName1":Wert1, "ReadingName2":Wert2 } Einheit und Titel übertragen?
Der Titel kann ja noch Sonderzeichen, Leerzeichen etc. enthalten? Und wo die gewünschte Baugruppe? Aus dem im Topic verwendeten Namen bzw. der Sensor ID habe ich die Sonderzeichen wie geschrieben entfernt, aber ein Titel ohne diese wäre m.E. hässlich

Hier der Post mit den Antworten auf eure Punkte: https://www.holzheizer-forum.de/index.php?thread/50090-announce-p4d-visualisierung-und-einstellung-der-s-3200-via-com1/&postID=171754#post171754

Hier die Änderungen, die er bereits vorgenommen hat: https://www.holzheizer-forum.de/index.php?thread/50090-announce-p4d-visualisierung-und-einstellung-der-s-3200-via-com1/&postID=171755#post171755

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

hoppel118

Zitat von: rudolfkoenig am 25 April 2020, 10:50:34
Haengt vom Speicher deines Rechners ab, unbegrenzt ist das vmtl auch nicht :)
Das Retain Flag fuer sowas zu missbrauchen finde ich uebrigens schlecht, ein MQTT Server ist keine Datenbank.

Ok, ist irgendwo beschrieben, wie man es besser machen kann? Ich habe da grundsätzlich erstmal gar nichts am MQTT2_SERVER konfiguriert. Die Daten wurden automatisch nach RETAIN geschrieben.

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

rudolfkoenig

#44
ZitatOk, ist irgendwo beschrieben, wie man es besser machen kann?
Ich kenne keine wissenschaftliche Abhandlung, es fuehlt sich nur falsch an, alle Meldungen per RETAIN zu speichern.
Man kann sich fragen, in welchem Fall es einem weiterhilft, und gibt es wirklich keine Alternative dazu.
Ich persoenlich wuerde hoechstens die Last-Will Message per Retain speichern, wenn ueberhaupt.
Es ist aber jetzt nicht so, das FHEM in die Knie geht, oder abstuerzt, wenn man das nicht optimal macht.
Es kommen nur Benutzer, die Fragen stellen, was wiederum zu langen und  sinnlosen Diskussionen fuehrt :)

Da ich nicht sicher bin, ob das klar ist: der Publisher bestimmt, welche Meldungen ein Retain Flag haben. Meldungen mit so einem Flag muss der Server jedem Subscriber, der danach fragt, erzaehlen, auch wenn der Publisher nicht mehr verbunden ist, bzw. auch nach Server-Neustart.

ZitatErgänzend, wo/wie werden bei dieser Lösung { "ReadingName1":Wert1, "ReadingName2":Wert2 } Einheit und Titel übertragen?
Nirgends. Meiner Ansicht nach ist Einheit implizit (steht in der Doku, oder wenn es ungewoehnlich ist, im ReadingNamen), Titel gehoert nicht in so eine Schnittstelle, und mir ist bewusst, dass man darueber monatelang diskutieren kann.

Wenn man trotzdem darauf besteht, kann man sie verschachtelt einbauen, dafuer ist JSON praedestiniert, und FHEM kann das automatisch parsen.
{
  "boilerCurrentTemp": { "value":35, "unit":"°C", "title_de":"Aktuelle Kesseltemperatur", "title_en":"Current Boiler Temperature", "title_hu":"A kazán pillanatnyi hőmérséklete", "title_cn":"锅炉温度", ...},
  "desiredWaterTemp": { "value":50, "unit":"°C", "title_de":"Eingestellte Wassertemperatur", "title_en":"Desired Water Temperature", "title_hu":"Kívánt vízhőmérséklet", "title_cn":"所需水温", ... },
...
}

Ist halt eine Verschwendung vom Netzwerk, CPU, Speicher und Entwicklerzeit.

Baugruppen kann man entweder als Unterobjekt im gleichen JSON realisieren (s.o. fuer Inspiration), oder je Baugruppe ein Topic.