NEWS
Per MQTT Werte an Anzeigegerät (AZ Touch Mod) senden
-
@mickym Ich benutze den MQTT Broker. Wie gesagt die cmnd zeigt er ja auch an aber die stats nicht.
Oder muß ich die extra anlegen und dann genauso im az-touch anlegen? -
@ossisp1 Nein alles was Tasmota sendet - wird im MQTT angelegt. Es sei denn der Adapter spinnt wieder mal und Du liest im Log irgendwas, dass Nachrichten nach 11 retries gelöscht wurden.
-
@mickym
Das bekomme ich beim ersten starten des AZ-Touch.
Tasmota ist da doch gar nicht im Spiel.
Das ist doch das Sketch von Gerald Lechner aus dem Smarthome Buch -
@ossisp1 Ich kenne das Buch nicht - aber ich glaube zumindest im Groben verstanden zu haben, wie MQTT funktioniert.
Wenn Du sagtst die Messwerte kommen herein, dann siehst Du diese ja im stat oder im tele Ast. Der cmnd Ast ist in der Regel immer leer, weil darauf die Geräte subscriben - diese muss man also anlegen.
Ehrlich gesagt verstehe ich auch nicht so recht, was oder wer der Client 3C6105309E3CID ist.
Wenn Du also die Werte im MQTT Adapter von Deiner Wetterstation hast geht es doch darum, die auf Dein Display zu schicken und das geht nur über eigens angelegte Datenpunkte im cmnd Ast Deines Displays.
Als erstes kannst Du ja mal schauen, ob Du über die Tamota Konsole befehle absetzen kannst um was auf dem Display zu senden. Wenn das funktioniert kannst Du diesen Befehl zumindest in gleicher Form über einen selbst erstellten Datenpunkt backlog im cmnd Ast Deines Displays zu schicken.
Im Prinzip siehst Du ja alles Kommandos für Displays hier: https://tasmota.github.io/docs/Commands/#displays
Um was zu schreiben - kannst Du also unter Deinem cmnd Ast des Displays ein Datenpunkt DisplayText und DisplayMode erstellt werden. Wenn DisplayMode auf 0 gesetzt ist, kann man wohl im DisplayText dann wie hier https://tasmota.github.io/docs/Displays/#displaytext beschrieben anwenden.
Was Du mit Deinem eigenen stat willst - verstehe ich ehrlich gesagt nicht. Ich würde aber Deine MQTT-Einstellungen des Adapters belassen und weder eigene states unterhalb von mqtt.0.* publishen. In den Standardeinstellungen solltest Du von allen Geräten, die etwas publischen entsprechenden Datenpunkte sehen. Für alle wo Du was publishen willst musst Du die Datenpunkte selbst erstellen.
-
@stephan-sommer Hi, ich komme nochmal auf deinen Post zurück.
- Hat das jetzt geklappt und läuft das?
- (viel wichtiger
Ich hab mir auch so einen AZ-Touch zugelegt, komme aber überhaupt nicht klar mit dem Aufspielen eines fertigen Sketches klar. Wenn du mir hier ein paar Infos geben kannst, welchen Sketch du verwendest und wie du den aufgespielt hast, wäre das super...
-
Hallo
Hat hier schon jemand eine Lösung was das AZ Touch und MQTT betrifft?
-
Habe mir jetzt auch gerade 3 Displays bestellt. 3 ESP32 mini habe ich noch hier.
Am Fr sollten die Teile da sein, dann werde ich mich mal da dran setzen.
Hoffentlich kann ich am Mo dann Erfolge berichten -
@bass-t Bin gespannt
-
Meins sieht Aktuell so aus.
Läuft über MQTT.
Programmierung ist zwar nicht die schönste, aber funktionär -
@fichte Kannst du den Code bitte posten? Die Anleitungen, die ich dazu gefunden habe bringen mich nicht weiter
-
@amg_666 Beschreibst du den ESP32 mit Arduino IDE?
-
@fichte ja
-
Denk aber dran das es nicht Perfekt ist.
Es ist wie alles im Leben, Funktioniert und man rührt es nichtmehr an
Am Ende der ino Datei bei "void NVS_Start()"prefs.putString("save_ssid", "WLAN Name"); prefs.putString("save_wifipwd", "WLAn PAsswort"); prefs.putString("save_clientname", "ESP Client Name"); prefs.putString("save_mqttserver", "MQTT Server IP"); prefs.putInt("save_mqttport", MQTT Port);
Alles an dein System Anpassen.
Dann Erstellt du dir ein Blockly wo die daten Übermittelt werden.
hier hast du meins als Beispiel.<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="61n)%Y!M6uhxD:7PQX+Q" x="297" y="-367"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="rab]-tzHYK#3-8kX^X|d"> <field name="oid">mqtt.0.Wohnzimmer.settemp</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="b=!XBN+{x7)dw3Oj.H(I"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Raumtemperatur.WohnzimmerSoll</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="O[}IF/0^DkmZPi7:E%S*"> <field name="ATTR">val</field> <field name="OID">mqtt.0.Wohnzimmer.settemp</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="Q}ONZu_]z.bU}?OH6?=D"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="tW^Cm@=heQ4_*^V/?!kp"> <field name="oid">zigbee.0.00158d00044a9329.temperature</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="Nv[~tH.6TBr4{~jLl2Z9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">mqtt.0.Wohnzimmer.roomtemp</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">500</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="math_round" id="vCPke8y_GX!_$HDbe86%"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="?Ox.yg|TsFJ+Vq2Uwi*8"> <field name="NUM">3.1</field> </shadow> <block type="get_value" id="?~,W7S@Y:gl1O(bV6~U|"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00044a9329.temperature</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="mV@myC3i+V,$_cO:(x6R"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="EKcV^7)mPu]*{]YinB!O"> <field name="oid">sonoff.0.MCUHeizung.POWER3</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="p?x8+RA#-]vh`]X8v+8#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">mqtt.0.Wohnzimmer.aktor</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">500</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="iTmBArzu+ew4TiDtLI}|"> <field name="ATTR">val</field> <field name="OID">sonoff.0.MCUHeizung.POWER3</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="$t6c#QB65}98d9h0qot["> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="cQ*kCILPKvTl[uux`51n"> <field name="oid">0_userdata.0.Raumtemperatur.WohnzimmerSoll</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="jD**ilY~aq(5j#`49hjZ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">mqtt.0.Wohnzimmer.settemp</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">500</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="u@}9tzz#3-Wa.8G`v[4I"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Raumtemperatur.WohnzimmerSoll</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="u%@r,J9Aa=Hs1QyI9{=="> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=")Y__c5YpNOS67Yu8V9=?"> <field name="oid">heatingcontrol.0.Rooms.Wohnzimmer.State</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="WWLmmTC9Hb6_A(`xajMr"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">mqtt.0.Wohnzimmer.heizstatus</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">500</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="get_value" id="#5,w5b?^B#w5sjp9GD?0"> <field name="ATTR">val</field> <field name="OID">heatingcontrol.0.Rooms.Wohnzimmer.State</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
LG Fichte
-
@fichte sagte in Per MQTT Werte an Anzeigegerät (AZ Touch Mod) senden:
Top, danke. ich werd das mal nächste Woche angehen und dann nochmal Feedback geben.
Es ist wie alles im Leben, Funktioniert und man rührt es nichtmehr an
Haha, das ist hier das iobroker Forum, wenn an funktionierenden Systemen rumgebastelt wird, dann doch wohl hier
-
Mittlerweile habe ich die Bauteile da und mich etwas damit beschäftigt.
Als Software nutze ich Tasmota mit HASPmota auf einem ESP32-S Dev Kit v4.
Dieses Board hat leider kein PSRAM, weshalb der RAM bei falscher Programmierung voll läuft und das modul dann abschmiert. Dann hilft nur noch neu flashen und Programm wieder runterschmeißen, bevor man den Fehler korrigieren kann, ...
Ein Modul mit PSRAM ist sehr schwer aufzutreibenHabe mir jetzt 3 aus China (ebay) bestellt. Leider ist die Pin Belegung eine andere und ich werde dann das ganze komplett neu verlöten müssen, ... Steckverbindung ist mit dem ESP32-S3 nicht nutzbar, ...
HASPmota basiert auf openHASP und man kann so schön mehrere Layer per jsonl Schreiben.
Bisher habe ich das Display an und einen PIR eingebaut, damit das Display automatisch an/aus geht.
Gestern Abend hat das auch funktioniert. Nach einem "mal wieder absturz" seit heute morgen nicht mehr
Befehle per MQTT senden funktioniert auch schon seit gestern AbendAbsturz passiert in der Regel wann man png als Bilder benutzt. Besser ist es eine bin zu verwenden.
Aktuell bin ich dran das Design anzupassen.
"Leider" bin ich berufstätigund kann nur abends dran. Weil ist schwierig zu Programmieren, wenn ich das Display nicht vor mir habe
Als nächstes möchte ich jetzt noch per Status die Buttons/Symbole anpassen und einen Wetter Status mit einbauen.
Hier mal ein paar gute Quellen, welche ich gefunden habe - Die Dokumentation ist extrem sperrlich und schwer was passendes zu finden:
Angefangen habe ich hiermit
Weiter geht es jetzt hierWerde euch auf dem Laufenden halten
-
So, heute morgen kann ich erste erfolge berichten
Die ersten Symbole funktionieren;- Beim Booten werden Variable Symbole in Pink angezeigt (weil sie noch keine Werte haben)
- Werte werden per MQTT ausgelesen
- Wenn die Werte hinterlegt sind (Werte werden bei jedem "Display AN" oder "Button) geladen, wird der Button Hintergrund "AN" in grün angezeigt.
Für die Werte Abfrage muss Folgeneder Datenpunkte unter MQTT.0 angelegt werden:
mqtt.0.Displays.ExterneWerteSenden (string)Blockly für die ersten 3 Test Datenpunkte:
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="tc=)^tp.6.x{c8lDLy/i" x="88" y="113"> <field name="COMMENT">Werte senden / aktualisieren</field> <next> <block type="on" id="Ol.6$39XkHVd8(~#%eOF"> <field name="OID">mqtt.0.Displays.ExterneWerteSenden</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="*ECq=vFA46=pyi2j,s~w"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Balkon.Licht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="LdnJDzg4E$;rF8J}k+2`"> <field name="ATTR">val</field> <field name="OID">mqtt.0.Displays.Balkon.Licht</field> </block> </value> <next> <block type="control" id="$y+Osqm=C6VW@|##LieP"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Wohnzimmer.Fernseher</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="M_j!9O7*%0?77]nYB(e9"> <field name="ATTR">val</field> <field name="OID">mqtt.0.Displays.Wohnzimmer.Fernseher</field> </block> </value> <next> <block type="control" id="Isi`;`eA@kB{vo.rQ-}9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Allgemein.Hauptschalter</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="r;Y@?OX1%-9jpsx$#8(Y"> <field name="ATTR">val</field> <field name="OID">mqtt.0.Displays.Allgemein.Hauptschalter</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="Hk?L_Y|yq8LBmDLe3q)l"> <field name="COMMENT">Werte ändern</field> <next> <block type="on" id="egGg]/)f^,N8Tq2L#^d)"> <field name="OID">mqtt.0.stat.Balkon.POWER</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id=",U{rBN=^1cUNUB.H4oDl"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Balkon.Licht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="z9bSolmZE/pOrXGa[]b{"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> <next> <block type="on" id="JCpRovwDHt%_w(,+f,m|"> <field name="OID">alias.0.Wohnzimmer.Fernseher.SET</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="e=u)).S7~+i99K$m@8*$"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Wohnzimmer.Fernseher</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="z=zwTK$q~7x}qt%-xdQs"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> <next> <block type="on" id="t~Mi$uox`;Cm9dLfGF#E"> <field name="OID">mqtt.0.stat.Hauptschalter.POWER</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="Vg!#+da!O1~Y+K/BnwT5"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.Displays.Allgemein.Hauptschalter</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="]AsN,Cs-N75T!9m3Dbfj"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Auf dem ESP läuft tasmota32-lvgl.bin
Dateien für die erste config:
autoexec.be
pages.jsonlWerde die Tage noch ein Wetter auf die Main Page packen.
Bilder folgen dann auch noch ausführlicher.Viel Spass damit vorab
EDIT:
Hier noch die display.ini, da ich das Display hochkannt benutze::H,ILI9341,320,240,16,SPI,1,*,*,*,*,*,*,*,20 :S,2,1,1,0,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C :R,36 :0,28,00,00,05 :1,88,00,00,01 :2,E8,00,00,02 :3,48,00,00,03 :r,3 :i,20,21 :TS,* :M,3946,401,3828,241 #
-
Danke, konntest Du weitere Erkenntnisse sammeln? Wäre sehr an Deinem Beispiel interessiert.
Die Darstellung funktioniert schon mal bei mir auf dem Display nur wie Du den Mqtt transfer realisiert hast, ist mir noch nicht wirklich klar.
Kannst Du das bitt einmal umreißen?
Du legst in der autoexec.be globale Variablen an die Du mit haspmota und der entsprechenden Button/Switch/etc Bezeichnung verknüpfst?
Bin schon länger auf der Suche nach einem Tutorial wie man zB erstmal einfach startet und nur einen Wert zB Temperatur der über mqtt übermittelt wird darstellt.
Dann ergänzend was zu tun ist, wenn es ein lesen und schreiben wie bei einem button ist. Leider bisher nichts gefunden und der Gedanke Haspmota zu verwenden, da da der Unterbau ähnlich und sofort wie bei Tasmota funktioniert (zB Mqtt) erscheint mir ein Irrglaube.
-
Scheiter leider noch am Transfer der Daten vom IOBroker zum Display. Vielleicht kann mir dbzgl. jemand einen Hinweis geben, gerne auch wie ich es testen kann.
Habe aktuell wie von @Bass-T beschrieben einen Datenpunkt ExterneWerteSenden angelegt und dieser wird auch mit Display On/Off aktualisiert im IOBroker.
Daraufhin wollte ich einen Testdatenpunkt aktualisieren/senden der im Display auf eine globale Variable p1b200 geht die von einem Button wiederum belegt ist. Dieser leider ohne erkennbare Wertezuweisung.
Im IOBroker:
Im Display:
def subscribes() import mqtt mqtt.subscribe("Displays/WohnzDaikin/#", Wertezuweisen) end def Wertezuweisen(topic, idx, payload_s,payload_b) var logmassage = "MQTT: " var loglevel = 4 if topic == "Displays/WohnzDaikin/Testvalue" if payload_s == "OFF" global.p1b200.bg_color="#1FA3EC" end if payload_s == "ON" global.p1b200.bg_color="#00D000" end else logmassage = "MQTT: MQTT-Unknown " loglevel = 2 end log(logmassage + topic +" "+ payload_s +"("+ str(idx) +" "+ str(payload_b) +")",loglevel) return true end
Über Tips würde ich mich freuen.