Wert eines Tasmota-Gerätes auf einem anderen anzeigen lassen

  • Ich habe einen Sonoff DUAL R3 v2 (ESP32) der die Leistungsdaten meiner PV-Anlage erfasst und auch ordentlich per MQTT an den ioBroker übermittelt.

    Nun möchte ich aber die aktuelle Leistung (Watt) auf dem WebIF eines anderen Tasmota-Gerätes (ESP8266) und später auch auf dessen Display (SH1106) anzeigen lassen.

    Wie bekomme den Datensatz auf das andere Tasmota-Gerät?

    Einmal editiert, zuletzt von dcx (1. Juni 2022 um 11:32)

  • Ich weiss, dass sowas mit tasmota und der Scripting Language prima funktioniert:

    Man kann dann beliebige topics abonnieren und diese Webfrontend darstellen lassen :

    Am selbigen ESP habe ich ein TM1637-LED Display hängen, zur Anzeige des momentanen Stromverbrauchs:

    Achte beim Display auf min. 6 Ziffern, da die Werte schon oft 4 Stellen haben und dazu noch das Vorzeichen bei Einspeisung.

    Wenn Du mehr Infos brauchst, melde Dich wieder

    Gruss ow

    Einmal editiert, zuletzt von opferwurst (2. Juni 2022 um 12:19)

  • Ich hatte dieses Thema bereits studiert, komme aber überhaupt nicht weiter da der ESP32 "Berry Script" hat und der ESP8266 das im Thema angesprochene Standard-Scripting beherrscht.

    Ich habe nun einmal versucht die Werte von 2 ESP8266 Geräten untereinander auszutauschen, leider auch ohne Erfolg.

    Wie werden die globalen Scriptvariablen denn überhaupt kommuniziert? Via MQTT? Da ist bei mir noch ein großes Fragezeichen.

    2 Mal editiert, zuletzt von dcx (9. Juni 2022 um 09:56)

  • die ESP32 Version hat fast immer Berry weil die Tasmota Leute das als Standard etablieren wollen. Berry ist aber für ESP8266 wegen RAM Verbrauch nicht möglich.

    Du must dir eine eigene Version mit script kompilieren und Berry ausschalten

    #define USE_SCRIPT

    #undef USE_BERRY

    #undef USE_AUTOCONF

    das muss immer auch definiert werden

    #define USE_SCRIPT_GLOBVARS

    #define USE_SCRIPT_WEB_DISPLAY

    #define USE_SCRIPT_JSON_EXPORT


    Die globalen Variablen werden per UDP Multicast ausgetauscht nicht MQTT

    dies sollte deinen Sensor anzeigen und per UDP senden

    >D

    g:so5temp=0

    >T

    so5temp=DS18B20#Temperature

    >W

    Temp{m}%so5temp% C

    in einem anderen Gerät kannst du jetzt auf die Variable so5temp zugreifen

    >D

    g:so5temp=0

    >W

    Temp{m}%so5temp% C

    du darfst aber nur in einem Gerät die Variable beschreiben in allen anderen nur lesen

    2 Mal editiert, zuletzt von gemu2015 (10. Juni 2022 um 08:10)

  • Vielen Dank für Eure Antworten. Ich hatte es also schonmal richtig verstanden und nun nach dem Beispiel von gemu2015 eingestellt.

    Funktioniert leider nicht, entweder ist "DS18B20#Temperature" falsch (?) oder irgendwas stimmt mit meinem Tasmota-Custom-Build noch nicht (?). Habe unter "zusätzliche Parameter" explizit nochmal #define USE_SCRIPT_GLOBVARS hinzugefügt, das hat aber nichts geändert. Ich stehe vor einem Rätsel, bekomme den einen Wert einfach nicht auf dem Web-Frontend des andern Tasmota-Gerätes angezeigt.

    2 Mal editiert, zuletzt von dcx (9. Juni 2022 um 21:57)

  • Bekommst du denn auch keine Webanzeige ?

    Bei der Abfrage des Sensors kommt es genau auf die Groß-Kleinschreibung an. Sieh dir den JSON MQTT in der Konsole an.

    nimm einfach mal diese Zeile zum testen dazu, das muss gehen

    >S

    so5temp=21

    du solltest jetzt ganz sicher die 21 in der Webanzeige von beiden Geräten sehen.


    diese brauchst du auch

    #define USE_SCRIPT_GLOBVARS

    #define USE_SCRIPT_WEB_DISPLAY

    #define USE_SCRIPT_JSON_EXPORT

  • du darfst aber nur in einem Gerät die Variable beschreiben in allen anderen nur lesen

    Gilt dies nur für diese eine Variable oder darf nur generell ein "Variablenschreiber" im Netz sein. Hätte mehrere Geräte mit jeweils verschieden Vars, welche ich dann von einem Gerät verwerten wollte.

  • Solange nicht 2 oder mehr Geräte die gleiche Variable beschicken kannst Du das machen wie Du willst.

    Andere Geräte können anders benannte Variablen beschreiben die Du dann wiederum gegenseitig auslesen kannst.