Tibber-Livestream lokal auslesen

Begonnen von gvzdus, 26 April 2023, 23:45:29

Vorheriges Thema - Nächstes Thema

gvzdus

Verstehe ich auch so: Vermutlich ist ja die Tibber Bridge bei ihm (Dir) schon auf "Dauer-HTTP-Server" eingestellt. Also einfach beim 2. Block aus Beitrag #1 weitermachen - dem Test - und fertig.
Irgendein Zusatzmodul im Docker-Container brauchst Du nicht, das macht das OBIS-Modul gleich mit.

dennisk

Hallo @xerion,@gvzdus,

danke für eure Rückmeldungen. Ihr habt natürlich recht, es geht auch mittels des vorgeschlagenen Pollings. Mich stört daran nur, dass das eigentlich für diese Zwecke vorgesehene Messaging-Protokoll MQTT dann nicht verwendet wird und ich den Tibber noch zusätzlich mit einem Polling belaste. Theoretisch ließe sich der Webserver auf dem verbauten ESP32 dann auch wieder abschalten bzw. wieder so einstellen, dass er eben nur gestartet wird, wenn die Tibber Bridge im AP-Modus hochfährt. Und ich könnte mir vorstellen, dass der Use Case auch für die diversen ESP-Selbstbau-Leseköpfe mit Tasmota eine Alternative sein könnte, d.h. ich kann die SML-Auswertung dem OBIS-Modul überlassen und benötige kein entsprechendes Skript mehr für die Tasmota-basierte Auswertung. Ich hoffe, das macht es ein wenig klarer?

gvzdus

Ja, jetzt verstanden :-)
Du hast also die Variante "MQTT-Proxy-Server" gewählt, und lässt die Bridge den MQTT-Stream nicht direkt in die AWS schicken, sondern über einen lokalen Proxy? Bei der Möglichkeit hätte ich persönlich als Tibber viel mehr dagegen als gegen einen HTTP-Server, weil es die Option zur Datenmanipulation quasi vorbereitet. Aber sei es drum.

Ich habe mal schnell was gebastelt (siehe Anhang), dass Du mit "set <obisdevice> data <sml in hex>" Daten einfüttern kannst. Anbei die Variante. Also:
defmod ot OBIS noneund dann jeweils Hex so einkippen:
set ot OBIS data 1b1b1b1b....1b1b1b1b1a.....
Hilft das? Wie sehen denn die MQTT-Nachrichten aus? Hex oder Binär?

gvzdus

P.S. Kann sein, dass ich mich jetzt völlig verhaue mit der Sichtbarkeit von Modul-Funktionen außerhalb ("Perl-Basics"). ABER:

Du musst eigentlich nur OBIS_Parse mit Hash und den binären Inputdaten aufrufen, dann wird geparsed und in das Device dekodiert. Also nehmen wir mein Beispiel mit einem OBIS-Device "ot". Dann solltest Du in einem Notify, dass auf ein MQTT-Topic triggert, so etwas schreiben können (auch mit dem bestehenden Modul):

define smlprocess notify <MQTT-Device>:<smltopic> { OBIS_Parse (%defs{"ot"}, $EVTPART1) }
oder - bei HEX -

define smlprocess notify <MQTT-Device>:<smltopic> { OBIS_Parse (%defs{"ot"}, (pack 'H*', $EVTPART1) ) }
Vielleicht einen Versuch wert - hier aber ungetestet.