MQTTServer und Client Übertragungsintervall

Begonnen von Helmi55, 18 April 2022, 11:10:54

Vorheriges Thema - Nächstes Thema

Helmi55

Hallo Leute schönen Ostermontag,

Ich frage von meinem EVN Zähler die Werte per MBUS ab und sende diese an einen MQTTServer (Zählerkasten - weit weg vom Haus)
Im Haus habe ich einen MQTTClient wo ich die Daten empfange (hier empfange ich auch andere Daten von meinen Garagen Pi - Shelly)

Jetzt spukt die Schnittstelle vom Zähler aber alle 5 Sekunden Werte aus

Gibt es eine Möglichkeit das Sendeintervall vom Server auf den Client zu beeinflussen? z.B. jede Minute?

event-min-interval event on change und on update bringen hier ja nix

Danke euch
Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

rudolfkoenig

ZitatGibt es eine Möglichkeit das Sendeintervall vom Server auf den Client zu beeinflussen? z.B. jede Minute?
Nicht direkt.

Indirekt geht in etwa so:
- fuer das MQTT2_DEVICE (was an dem MQTT2_SERVER haengt) event-min-interval setzen
- einen zweiten MQTT2_SERVER definieren
- per notfiy oder MQTT_GENERIC_BRIDGE die events der MQTT2_DEVICE auf dem neuen MQTT2_SERVER schieben
- MQTT2_CLIENT auf dem neuen MQTT2_SERVER umbiegen.

Helmi55

Ok Danke für den Hinweis muss ich mir in ruhe überlegen
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

87insane

Hey ggf würde ein RAW helfen. Ich könnte mir vorstellen die ReadingsList dahingehend an zu passen.
Du könntest zb das ReadingsAge prüfen und wenn älter als x dann schreiben, ansonsten nicht.

Damit sollte auch das Event unterdrückt werden. Wenn du dir die MQTT Templates anschaust, siehst du das dort für andere Dinge auch gern solche Prüfungen drin sind. Wenn ein Gerät zb den status aktiv anzeigen soll, dieses aber im "Ruhemodus" schon 4 Watt braucht, dann würde es so aussehen:

DEVICE/pfad/0/power:.* { my $compare = $EVTPART0<"5" ? "false":"true";;

rudolfkoenig

Ich meine verstanden zu haben, dass auf dem "Zaehlerkasten-FHEM" ein MQTT2_SERVER laeuft, EVN-Zaehler und "Haus-FHEM" greifen beide darauf zu. Die Aufgabe ist, die Kommunikation zwischen den beiden FHEMs zu minimieren, das geht aber nicht, weil MQTT2_SERVER alleine keinen Zeitfilter anbietet.

Meine Loesung laeuft darauf hinaus, den "Zaehlerkasten-FHEM" komplizierter aufzubauen, damit man einen der ueblichen event-... FHEM-Filter einbauen kann.
Ergaenzung zu meinem letzten Beitrag: einen zweiten MQTT2_SERVER braucht man nicht unbedingt, man kann auch den gleichen mit einem unterschiedlichen Topic verwenden.

87insane

#5
Bin mir aktuell noch nicht sicher ob es um reine Kommunikation geht (Datenverkehr) oder aber ob einfach weniger Event gemeint ist.

Beides wäre möglich. Das was du beschreibst, finde ich "fhemig" - zu kompliziert für normale Menschen.
Ich Frage mich immer wieder warum ich für zusätzliche Einträge ein addlog o.ä. brauche oder für weniger ein event-min-intervall nicht "sprechend" dafür funktioniet.
Generell verteidige ich fhem immer wieder gerne aber gerade diese Dinge verkomplizieren nur.

Edit: MQTT2_DEVICE + bridgeRegexp und hier dann die readingslist anpassen. Würde auf Server Seite nichts verringern. Da kommt es ja eh an. Auf Client seite aber nur annehmen was gewollt ist. Würde dann dem entsprechen was rudolfkoenig sagt. Aber auch das ist in meinen Augen wieder sehr komplex. Gerade das Event handling sollte deutlich einfacher sein. Ich selber ärgere mich zb auch über die notify Reihenfolgen (Thema DEFINE / UNDEFINED)... Aber egal das ist nun zu viel des guten.

Gruß,
87insnse

rudolfkoenig

ZitatBin mir aktuell noch nicht sicher ob es um reine Kommunikation geht (Datenverkehr) oder aber ob einfach weniger Event gemeint ist.
Gewuenscht war weniger Datenverkehr, und ich habe dafuer keine einfachere Loesung. Und "normalen" Menschen ist weniger Datenverkehr egal :)
Weniger Events auf der Client-Seite ist jetzt schon moeglich mit even-min-interval oder Aehnliches.

Helmi55

Hallo und Danke für eure Antworten.
Da der MBUS vom Zähler alle 5 Sekunden folgende Werte liefert, will ich eigentlich nur die Datenflut zwischen Server und Client gering halten.
Aber ich könnte ja eigentlich auch die ReadingsList beschneiden? oder?
Weil Spannung und Strom interessieren mich nicht.

Zitat von: rudolfkoenig am 20 April 2022, 22:09:28
Weniger Events auf der Client-Seite ist jetzt schon moeglich mit even-min-interval oder Aehnliches.

Ich dachte event-min-interval ist nur dazu da, wenn für x Sekunden kein Event kommt, dann wird eines erzeugt bzw. geschrieben?

Aber ja, ich glaube das Netzwerk wird die "Datenflut" aushalten  ;D

Ins LogFile kommt eh nur das was ich brauche, aber dafür auch alle 5 Sekunden........

Aber ja ich bin kein FHEM Profi, vielleicht übersehe ich da noch was?

Schönen Tag und Danke

Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

rudolfkoenig

ZitatIns LogFile kommt eh nur das was ich brauche, aber dafür auch alle 5 Sekunden........
LogFile schreibt Events, und Events kann man mit event-min-interval filtern:
Zitatevent-min-interval
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind. Falls event-on-change-reading auch spezifiziert ist, dann werden sie mit ODER kombiniert, d.h. wenn einer der beiden Bedingungen wahr ist.

Helmi55

Danke Rudi
ich hatte das "event-min-intervall" falsch interpretiert
Ich dachte bei einem Thermometer, wenn keine Werte kommen, wird z.B. jede Minute der letzte Wert für den Graphen generiert und gespeichert

Aber so funktioniert es jetzt
defmod MQTT2_EVNClient MQTT2_DEVICE EVNClient
attr MQTT2_EVNClient alias EVN Zaehler
attr MQTT2_EVNClient appOptions { "home": true, "template": "zaehler" }
attr MQTT2_EVNClient event-min-interval MomentanleistungP:60[,Momentanleistung:60,MomentanleistungN:60,Verbrauch_kWh:60,statVerbrauch_kWhDay:60,statVerbrauch_kWhMonth:60]
attr MQTT2_EVNClient genericDeviceType outlet
attr MQTT2_EVNClient group Strom
attr MQTT2_EVNClient homebridgeMapping E863F10D-079E-48FF-8F27-9C2605A29F52=MomentanleistungP,name=power,format=FLOAT,history:size=1024,type=energy
attr MQTT2_EVNClient icon mqtt_bridge_2
attr MQTT2_EVNClient readingList EVNClient:Smartmeter/WirkenergieP:.* WirkenergieP\
EVNClient:Smartmeter/WirkenergieN:.* WirkenergieN\
EVNClient:Smartmeter/MomentanleistungP:.* MomentanleistungP\
EVNClient:Smartmeter/MomentanleistungN:.* MomentanleistungN\
EVNClient:Smartmeter/Momentanleistung:.* Momentanleistung\
EVNClient:Smartmeter/SpannungL1:.* SpannungL1\
EVNClient:Smartmeter/SpannungL2:.* SpannungL2\
EVNClient:Smartmeter/SpannungL3:.* SpannungL3\
EVNClient:Smartmeter/StromL1:.* StromL1\
EVNClient:Smartmeter/StromL2:.* StromL2\
EVNClient:Smartmeter/StromL3:.* StromL3\
EVNClient:Smartmeter/Leistungsfaktor:.* Leistungsfaktor
attr MQTT2_EVNClient room MQTT2_Client,Homekit,MQTT2_DEVICE,Strom
attr MQTT2_EVNClient stateFormat Watt:  MomentanleistungP, <br/> Watt ins Netz:  MomentanleistungN
attr MQTT2_EVNClient userReadings Ins_Netz_kWh:WirkenergieN.* monotonic {ReadingsVal($NAME,"WirkenergieN",0)/1000.0}, Verbrauch_kWh:WirkenergieP.* monotonic {ReadingsVal($NAME,"WirkenergieP",0)/1000.0}


2022-04-24_15:19:43 MQTT2_EVNClient Verbrauch_kWh: 852.679
2022-04-24_15:19:43 MQTT2_EVNClient statVerbrauch_kWhDay: 13.736
2022-04-24_15:19:43 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.790
2022-04-24_15:19:43 MQTT2_EVNClient MomentanleistungP: 279
2022-04-24_15:19:43 MQTT2_EVNClient MomentanleistungN: 1335
2022-04-24_15:19:43 MQTT2_EVNClient Momentanleistung: -1056
2022-04-24_15:20:45 MQTT2_EVNClient Verbrauch_kWh: 852.679
2022-04-24_15:20:45 MQTT2_EVNClient statVerbrauch_kWhDay: 13.736
2022-04-24_15:20:45 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.790
2022-04-24_15:20:45 MQTT2_EVNClient MomentanleistungP: 295
2022-04-24_15:20:45 MQTT2_EVNClient MomentanleistungN: 1334
2022-04-24_15:20:45 MQTT2_EVNClient Momentanleistung: -1039
2022-04-24_15:21:56 MQTT2_EVNClient Verbrauch_kWh: 852.679
2022-04-24_15:21:56 MQTT2_EVNClient statVerbrauch_kWhDay: 13.736
2022-04-24_15:21:56 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.790
2022-04-24_15:21:56 MQTT2_EVNClient MomentanleistungP: 262
2022-04-24_15:21:56 MQTT2_EVNClient MomentanleistungN: 1321
2022-04-24_15:21:56 MQTT2_EVNClient Momentanleistung: -1059
2022-04-24_15:22:58 MQTT2_EVNClient Verbrauch_kWh: 852.679
2022-04-24_15:22:58 MQTT2_EVNClient statVerbrauch_kWhDay: 13.736
2022-04-24_15:22:58 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.790
2022-04-24_15:22:58 MQTT2_EVNClient MomentanleistungP: 307
2022-04-24_15:22:58 MQTT2_EVNClient MomentanleistungN: 1303
2022-04-24_15:22:58 MQTT2_EVNClient Momentanleistung: -996
2022-04-24_15:24:00 MQTT2_EVNClient Verbrauch_kWh: 852.679
2022-04-24_15:24:00 MQTT2_EVNClient statVerbrauch_kWhDay: 13.736
2022-04-24_15:24:00 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.790
2022-04-24_15:24:00 MQTT2_EVNClient MomentanleistungP: 352
2022-04-24_15:24:00 MQTT2_EVNClient MomentanleistungN: 508
2022-04-24_15:24:00 MQTT2_EVNClient Momentanleistung: -156
2022-04-24_15:25:16 MQTT2_EVNClient Verbrauch_kWh: 852.681
2022-04-24_15:25:16 MQTT2_EVNClient statVerbrauch_kWhDay: 13.738
2022-04-24_15:25:16 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.792
2022-04-24_15:25:16 MQTT2_EVNClient MomentanleistungP: 324
2022-04-24_15:25:16 MQTT2_EVNClient MomentanleistungN: 532
2022-04-24_15:25:16 MQTT2_EVNClient Momentanleistung: -208
2022-04-24_15:26:18 MQTT2_EVNClient Verbrauch_kWh: 852.681
2022-04-24_15:26:18 MQTT2_EVNClient statVerbrauch_kWhDay: 13.738
2022-04-24_15:26:18 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.792
2022-04-24_15:26:18 MQTT2_EVNClient MomentanleistungP: 321
2022-04-24_15:26:18 MQTT2_EVNClient MomentanleistungN: 542
2022-04-24_15:26:18 MQTT2_EVNClient Momentanleistung: -221
2022-04-24_15:27:20 MQTT2_EVNClient Verbrauch_kWh: 852.681
2022-04-24_15:27:20 MQTT2_EVNClient statVerbrauch_kWhDay: 13.738
2022-04-24_15:27:20 MQTT2_EVNClient statVerbrauch_kWhMonth: 361.792
2022-04-24_15:27:20 MQTT2_EVNClient MomentanleistungP: 337
2022-04-24_15:27:20 MQTT2_EVNClient MomentanleistungN: 525
2022-04-24_15:27:20 MQTT2_EVNClient Momentanleistung: -188


Schönen Sonntag noch
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/