NEWS
Per MQTT Werte an Anzeigegerät (AZ Touch Mod) senden
-
@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.