-
-
Notifications
You must be signed in to change notification settings - Fork 193
NSPanel Tasmota FAQ
Tasmota verfügt über optional zu definierende Regeln (rules), die das System besonders flexibel einsetzbar machen.
https://tasmota.github.io/docs/Rules/
Bitte nicht verwenden, wenn Rule 2 mit buttonXPages belegt ist
Wenn die Tasten zum Blättern durch die Seiten genutzt werden sollen, müssen folgende Änderungen durchgeführt werden. Mit dieser Rule kann die linke Taste eine Seite nach oben springen (Eigenschaft parent: ) und die rechte Taste zur Startseite bzw. auf die Seite die durch die Eigenschaft home: definiert wurde.
In der Tasmota Konsole:
Rule1 on Button1#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,buttonPress2,hwbtn,bUp"} endon on Button2#state do Publish %topic%/tele/RESULT {"CustomRecv":"event,buttonPress2,hwbtn,bHome"} endon
Rule1 1
Beide Hardware-Buttons als Dialog - Die internen Relais werden dabei nicht geschaltet
Rule2 on Button1#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
Linker Button Dialog - Rechter Button Schalter
Rule2 on Button1#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button1"} endon
Linker Button Schalter - Rechter Button Dialog
Rule2 on Button2#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon
Zum Anschalten der Rule
Rule2
1 oder Rule2 On
Zum Ausschalten der Rule
Rule2
0 oder Rule2 Off
Nutzung in ioBroker:
Bis Version 4.0.4:
Im Konfigurationsskript benötigt Ihr nun unter der pages Definition buttonxPage: (x=Nummer des Buttons).
Entweder gebt Ihr hier nun den var/const Name eines bestehenden Grid mit, damit kann man einen Button quasi als Home-Button nutzen, oder man legt einen eigenen Grid auf den Button, welcher dann zuvor definiert werden muss.
Ab Version 4.0.4.1:
Im Konfigurationsskript benötigt man in der Config Definition die Objekte button1/button2.
Der Button kann nun über die Eigenschaft mode mit drei verschiedenen Funktionen belegt werden. Der Modus "page" entspricht dem Verhalten in der Version 4.0.4 und früher. Der Button ruft dann die entsprechende Page oder SubPage auf welche hier angegeben wird.
Im Modus "toggle" muss ein Boolean Entity im Feld "entity" angegeben werden. Der Button wird dann automatisch den aktuellen Zustand umkehren.
Der Modus "set" benötigt ebenfalls eine Zielentity im Feld "entity", welche dann immer beim drücken des Buttons auf den Wert aus dem Feld "setValue" gesetzt wird.
Bsp:
button1: {
mode: 'toggle', // Mögliche Werte wenn Rule2 definiert: 'page', 'toggle', 'set' - Wenn nicht definiert --> mode: null
page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page)
entity: '0_userdata.0.zielobjekt', // Zielentity - Verwendet wenn mode = set oder toggle
setValue: null // Zielwert - Verwendet wenn mode = set
}
Der eingebaute Buzzer des ESP32 kann auch Geräusche zur Unterstützung der Tastenbetätigung erzeugen Hierzu muss folgende Rule angelegt und aktiviert werden:
rule3 on CustomRecv do Buzzer 1 endon
rule3 1
Alternativ gibt Tasmota noch folgende Befehle per Default mit:
Buzzer 1
oder
Buzzer 1,2,3,0xF54
Weitere Infos:
https://tasmota.github.io/docs/Buzzer/
diese Regel blendet den Startbildschirm (drehender Kreis) ein, wenn das Panel die Verbindung zum ioBroker verloren hat.
rule1
ON CustomSend DO RuleTimer1 90 ENDON
ON Rules#RuleTimer=1 DO CustomSend pageType~pageStartup ENDON
rule1 1
Man kann die physische Hardware-Buttons auch im (Multi-Press Functions) betreiben.
SetOption73 1
Jeder Button sendet per /stat/RESULT "SINGLE", "DOUBLE", "TRIPLE", "QUAD" oder "PENTA". Somit hat man 5 mögliche Schaltzustände pro Button.
Da ein sechster Klick das WifiConfig 2 ausführt, sollte dabei ebenfalls
SetOption1 1
ausgeführt werden, um zu verhindern, dass der Wifi Manager ausgeführt wird.
(Rule2 dabei ausschalten)
Falls du diese Funktion nutzen möchtest, kannst du das nachfolgende Blockly (siehe Spoiler) gerne verwenden:
Blockly Skript
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="$%h)IyP*A]i!w|o;@^u~">PanelResult</variable>
<variable id="iG,DhTT3ntIL)6jkdBSx">Action</variable>
</variables>
<block type="on_ext" id="Z*WW:Hq=V/0/+D.7sBGj" x="88" y="63">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="s?5LPlVoKvrW,Gf/,d6(">
<field name="oid">default</field>
</shadow>
<block type="field_oid" id=";VZs-nq`+#GL`5jVspo^">
<field name="oid">mqtt.0.SmartHome.NSPanel_1.stat.RESULT</field>
</block>
</value>
<statement name="STATEMENT">
<block type="variables_set" id="W*-eYA4LLj$WMX1vlx9+">
<field name="VAR" id="$%h)IyP*A]i!w|o;@^u~">PanelResult</field>
<value name="VALUE">
<block type="convert_json2object" id="H}rYz*|_N_r:7lN6kRq)">
<value name="VALUE">
<block type="on_source" id="ks};I#sE9{y$Os12X3%`">
<field name="ATTR">state.val</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="|e+,CBW1}SywJvnEFroP">
<mutation elseif="1"></mutation>
<value name="IF0">
<block type="logic_compare" id="tkA^fRI!3FU^2Tiqlahc">
<field name="OP">EQ</field>
<value name="A">
<block type="text_getSubstring" id="k}-`K]@kua~8fg*?I[t#">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="on_source" id="qCOa@52xDIv4(R#:]Yzp">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="AT1">
<block type="math_number" id="Ncm@lgRgVYVBF~^yWKRE">
<field name="NUM">3</field>
</block>
</value>
<value name="AT2">
<block type="math_number" id="Gov$3|Qrd91N~RUzWea=">
<field name="NUM">9</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="text" id="2~EGhvBs4KIPXXMcNVkx">
<field name="TEXT">Button1</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="G!Z=C5KTj-Nl+XFa0RU_">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
<value name="VALUE">
<block type="get_attr" id="Ed}{-}B{X+obkb^Mmk8O">
<value name="PATH">
<shadow type="text">
<field name="TEXT">Button2.Action</field>
</shadow>
<block type="text" id="-XSmbNSLD2q^JU.3)[(^">
<field name="TEXT">Button1.Action</field>
</block>
</value>
<value name="OBJECT">
<block type="variables_get" id="-%8e}:rqW1kj_iUDQyyf">
<field name="VAR" id="$%h)IyP*A]i!w|o;@^u~">PanelResult</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="729?J2a__sAP*2PmMN2%">
<mutation elseif="4"></mutation>
<value name="IF0">
<block type="logic_compare" id="u9lV/l]c1,yVRl3(21(L">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="kG0ARQ1j%HKz(I=l}`:P">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="v?m}nM1~E8zR0,Ja+if+">
<field name="TEXT">SINGLE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="comment" id="iqFwhe!^P0z9-W9D[tyh">
<field name="COMMENT">Schalte etwas: Button1 1x gedrückt</field>
<next>
<block type="debug" id="F22M/f@lJ_xQ$t2#QW[#">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="?r3.Wy5c@$3DxmvbIGr}">
<field name="TEXT">Button1 SINGLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="[Vpq7B,RWb4k)Bhwq{nh">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="|Whz!$I5#Iym52Pg8N?p">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="~f_cI8hrs;I)wJ-S.G3r">
<field name="TEXT">DOUBLE</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="comment" id="D;PPB54t87N)%F{.hQAx">
<field name="COMMENT">Schalte etwas: Button1 2x gedrückt</field>
<next>
<block type="debug" id="xoG/r3;33`8/j$QeZHW5">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="9PgW|#6f8``brbWQM9q7">
<field name="TEXT">Button1 DOUBLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF2">
<block type="logic_compare" id="t)8drGw=u/q0Pl+ul^43">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="-lf~?Q^H8o}J:cf@I5aN">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="Z!={5~.hF?V-NFw73|BL">
<field name="TEXT">TRIPLE</field>
</block>
</value>
</block>
</value>
<statement name="DO2">
<block type="comment" id="xjdh~X8eM8ab/a/JuIM/">
<field name="COMMENT">Schalte etwas: Button1 3x gedrückt</field>
<next>
<block type="debug" id="n$kU%^k3$wHN/L**K=jA">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="SA^R/OJX#a7JDhE7LwL[">
<field name="TEXT">Button1 TRIPLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF3">
<block type="logic_compare" id="ZCUeBK[Sc08KKQVMF)tC">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id=":Jlhv9(rM!D5H*eM|Gw-">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="6NH!g[HN7f=7_q%U10M!">
<field name="TEXT">QUAD</field>
</block>
</value>
</block>
</value>
<statement name="DO3">
<block type="comment" id="77*X9-*|mO]|P0$Jw=K`">
<field name="COMMENT">Schalte etwas: Button1 4x gedrückt</field>
<next>
<block type="debug" id="qE@`G.#9s!UAtrlMJ/yi">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="G:19{lKn)m`B!x(NUx5S">
<field name="TEXT">Button1 QUAD wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF4">
<block type="logic_compare" id="fz#2[~sK=iF%wd=4`hB,">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="ROFyrrPZn5KJg7?Hs),Z">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="a]-o=$vOr9JDr(T!#SmL">
<field name="TEXT">PENTA</field>
</block>
</value>
</block>
</value>
<statement name="DO4">
<block type="comment" id="fxPE82.Ci3L`ME=X3nl|">
<field name="COMMENT">Schalte etwas: Button1 5x gedrückt</field>
<next>
<block type="debug" id="7GbZ650het?k*+CCO:nr">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="*[}-a1hl?2pc^*@4E*hI">
<field name="TEXT">Button1 PENTA wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="8Ev:iPPfN3B?L^Q]oOIc">
<field name="OP">EQ</field>
<value name="A">
<block type="text_getSubstring" id="xx:q0nC7,q8A8~v?PC#s">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="on_source" id="JWC4m9/7dS^!]+xQ-I0Y">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="AT1">
<block type="math_number" id="k7=j)18I6TmB%)upvAVJ">
<field name="NUM">3</field>
</block>
</value>
<value name="AT2">
<block type="math_number" id=",EKn%h/uX3}ZjCvmW1KE">
<field name="NUM">9</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="text" id="Uuj{UrX@-3nNjw{n!H/@">
<field name="TEXT">Button2</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="variables_set" id="U~1k_f;62_-QkRvGZz=)">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
<value name="VALUE">
<block type="get_attr" id="izCz6K1Y;L.7M7MlHA$c">
<value name="PATH">
<shadow type="text">
<field name="TEXT">Button2.Action</field>
</shadow>
<block type="text" id="y1)^1#)QjYVVA7)mWdvM">
<field name="TEXT">Button2.Action</field>
</block>
</value>
<value name="OBJECT">
<block type="variables_get" id="TIg$Lr%^Fuk`fxDLC:,^">
<field name="VAR" id="$%h)IyP*A]i!w|o;@^u~">PanelResult</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="tC_APU:6jW5063/l=sR1">
<mutation elseif="4"></mutation>
<value name="IF0">
<block type="logic_compare" id="P9XXNXzc+3H{*^w1P_@q">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="sua/L8[qi8e:U#m}d^pi">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="E^e9/nh{n@)S6e:4q3_h">
<field name="TEXT">SINGLE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="comment" id="qoOw*}O|E06w[5[cXWLo">
<field name="COMMENT">Schalte etwas: Button2 1x gedrückt</field>
<next>
<block type="debug" id=",tE:-UWz(0Zqlc8KBLqO">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="!waPZV$J9fR+dq462%h+">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="{3#KVO|*86E:3pR/!%WP">
<field name="TEXT">Button2 SINGLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF1">
<block type="logic_compare" id="_Z+eBL!Zj.|LQL+_s|Ld">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="15Tx7/a!(wJ;FO+x!4JW">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="}l%?@L+:Ma!=:d2Ky/%*">
<field name="TEXT">DOUBLE</field>
</block>
</value>
</block>
</value>
<statement name="DO1">
<block type="comment" id="~72fN$sZV!.O{%*0+awy">
<field name="COMMENT">Schalte etwas: Button2 2x gedrückt</field>
<next>
<block type="debug" id="-T4*$n8-_X_{@6!Ga5FQ">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="LFX2j}Pr:o,{$YxQVcp2">
<field name="TEXT">Button2 DOUBLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF2">
<block type="logic_compare" id="6-2Eew1,aoyC]Th*AaJ5">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="4Nl6[tYm2pL@rL7v8vLI">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="zthA#*kib2r|xv+,A{Sh">
<field name="TEXT">TRIPLE</field>
</block>
</value>
</block>
</value>
<statement name="DO2">
<block type="comment" id="?OI)q#8XL#1)x.E=*m~~">
<field name="COMMENT">Schalte etwas: Button2 3x gedrückt</field>
<next>
<block type="debug" id="%6ZLfC`!6?Z%jXlF:mFa">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="eh|tY,l}uz:WTx}4_G_E">
<field name="TEXT">Button2 TRIPLE wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF3">
<block type="logic_compare" id="*~f.cy|6d8U0s?|^%:8R">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="tiZ6%x5iuvhh:Yi*9qB9">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="I|K0m__6/:.kuBtYQE5l">
<field name="TEXT">QUAD</field>
</block>
</value>
</block>
</value>
<statement name="DO3">
<block type="comment" id="ToQ_dt~n$Ef|8-fb|__O">
<field name="COMMENT">Schalte etwas: Button2 4x gedrückt</field>
<next>
<block type="debug" id="qyb7DL~:^6|r@9~KOb+A">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="tb4wo7_n@J)Q9$FLf|rV">
<field name="TEXT">Button2 QUAD wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<value name="IF4">
<block type="logic_compare" id="M:x`b;I}a8;jJU=g}u)[">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="Yh,)fk$+WmVXS=iwbzK{">
<field name="VAR" id="iG,DhTT3ntIL)6jkdBSx">Action</field>
</block>
</value>
<value name="B">
<block type="text" id="1FMk3I`mfaAfEhMd$D#e">
<field name="TEXT">PENTA</field>
</block>
</value>
</block>
</value>
<statement name="DO4">
<block type="comment" id="5+tVGCf{MdkG(OBDmuy|">
<field name="COMMENT">Schalte etwas: Button2 5x gedrückt</field>
<next>
<block type="debug" id="}{-PVi#AL#[EGD,eb?M#">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">Button</field>
</shadow>
<block type="text" id="HuBkD3zi|[email protected]">
<field name="TEXT">Button2 PENTA wurde gedrückt</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>
In der ersten Zeile musst du lediglich deine stat/RESULT anpassen und an den entsprechenden Kommentaren deine Aktoren einbauen.
Da das Hardware-Buttons sind werden die extern verarbeitet (nicht über das TS-Skript)
Um die zwei Hardware-Buttons direkt in eine Rollladensteuerung umzuwandeln sind folgende Schritte erforderlich
In der Tasmota-Konsole folgende Konfigurationen einstellen:
SetOption80 1
ShutterRelay1 1
Interlock 1,2
Interlock ON
Für Shutter mode 1:
Rule2 0
SetOption73 0
SetOption114 0
Wenn du einen anderen brauchst, dann entsprechend der Anleitung vorgehen: https://tasmota.github.io/docs/Blinds-and-Shutters/
Da kann man die auch kalibrieren.
Die Hardware Buttons sind im Blakadder-Template als "Buttons" konfiguriert.
SwitchMode gilt, wie der Name schon sagt, NUR für GPIO, das in Tasmota als Switch-Komponente konfiguriert ist. SwitchMode hat KEINEN Einfluss auf das Verhalten von GPIO, das als Button-Komponenten konfiguriert ist.
Der GPIO14 und der GPIO27 sind "Button" (x=1 und 2)
Um die Tasmota-Switchmode-Funktion für die Hardware-Buttons zu nutzen, müssen die Button GPIO's in Tasmota zu Switch GPIO's umkonfiguriert werden:
Für einen ganz normalen Taster (gedrückt an/loslassen aus) wären optional folgende Einstellungen notwendig
Alternativ folgendes Template aktivieren
{"NAME":"NSPanel_1","GPIO":[0,0,0,0,3872,0,0,0,0,0,160,0,0,0,0,225,0,480,224,1,0,0,0,161,0,0,0,0,0,0,0,0,0,0,4736,0],"FLAG":0,"BASE":1}
Danach in der Tasmota-Konsole
switchmode1 2
switchmode2 2
ausführen
Das NSPanel verfügt über interne Temperatur-Sensoren:
- Die Analog1 Temperatur ist die gemessene Raumtemperatur über den verbauten Temperatursensor an der Unterseite des NSPanel's.
- ESP32 Temperature ist die Temperatur des ESP32-Prozessor
Um den internen Temperatursensor benutzen zu können, muss dieser in der Regel zuerst kalibriert werden. Hierzu benötigst du ein Thermometer, welches dir die Referenztemperatur liefert.
Die Werte können in der Tasmota-Console mit AdcParam justiert werden. Folgende Einstellungen konnten bisher brauchbare Ergebnisse liefern (ggfs. weiter anpassen):
AdcParam 2,14600,10000,3950
oder
AdcParam 2,15880,10000,3950
siehe auch: https://tasmota.github.io/docs/ADC/
Das größte Problem ist die Hitzeentwicklung durch das Display selbst. Wenn das Display auf volle Helligkeit eingestellt ist, ist der Sensormesswert 2-4°C höher (oder sogar noch höher). Bei einem Dimmwert von 8 relativiert sich der Temperaturunterschied.
Ansonsten bietet es sich an, für eine exaktere Raumtemperatur einen zentralen, externen Raumtemperatur-Sensor (z.B. Zigbee) zu verwenden und den Datenpunkt über einen Alias vom Gerätetyp "Info" in z.B. einer cardEntities zu visualisieren.
Der interne ESP-Temperatursensor war bis zur Tasmota Version < 12.2.0 noch per "default" angeschaltet.
Um diese Temperatur mit den Sensordaten zu übertragen ist jetzt eine zusätzliche Konfiguration über die Tasmota-Console erforderlich:
setOption146 1
Wenn Tasmota in einer Version installiert wurde, bevor es im Tasmota "Safeboot" gab, dann haben die Devices zwei gleich große Partitionen (keine kleinere Safeboot). In diesem Fall kann die Partition mit dem Partition Wizard Tool korrigiert werden und es ist keine Neuinstallation erforderlich
Warum tritt dieser Fehler auf?:
Mit Tasmota 13.0 ist die Unterstützung für Matter nun standardmäßig enthalten, was bedeutet, dass die Tasmota-Binärdateien nun die Größe der beiden gleich großen Partitionen vor dem Safeboot-Partitionierungsschema überschreiten. Daher muss zunächst das Setup auf das Safeboot-Layout aktualisieren werden.
Vorher
Nachher
Auf der Tasmota Seite ist eine Kurzbeschreibung und ihr könnt dort den Wizards downloaden.
Direkt Link zum Download Partition Wizard Tool
BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'
Tritt selten auf wenn eine feste IP vergeben wurde. Lässt sich lösen in dem die IP kurzeitig über den DHCP bezogen wird. Danach kann die IP wieder fest vergeben werden.
-
Feste (statische) IP des NSPanels merken
-
Jetzt alles weitere in der Tasmota-Konsole ausführen:
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1
dann
FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-vx.x.x.tft
die TFT-Frmware sollte sich jetzt wieder flashen lassen
und dann, wenn durchgelaufen, wieder mit der gemerkten statischen IP einstellen
ipaddress1 192.168.X.X
Fehler beim flashen des Nextion Displays mit Lovelace UI, vornehmlich bei Tasmota Versionen > 14.0.0
In seltenen Fällen startet der Flashvorgang nicht mit dem Befehl
FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-vx.x.x.tft
Der Flashvorgang bleibt auf dem Display bei der Meldung writing Data stehen.
In der Konsole von Tasmota wird es so oder so ähnlich ausgegeben
CMD: FlashNextionAdv0 http://nspanel.pky.eu/lui.tft
RSL: RESULT = {"FlashNextionAdv":"Done"}
FLH: host: nspanel.pky.eu, port: 80, get: /lui.tft
FLH: Send (High Speed) flash start
FLS: Something has gone wrong flashing display firmware [bytes('85')].
Richtig wäre es wie hier ( https://www.youtube.com/watch?v=ZPLJk2ZLo_8 ) ab 11:23 min zu sehen, das der Flashvorgang auf dem Display beginnt und in der Tasmota-Konole so ausgegeben wird.
Auch kann es sein das auf dem Display die Info ausgegeben wird, Model does not match
welches dann weiß hinterlegt ist und in der Tasmota - Konsole erscheint wie folgt:
CMD: FlashNextion http://nspanel.pky.eu/lui.tft
RSL: RESULT = {"FlashNextion":"Done"}
FLH: host: nspanel.pky.eu, port: 80, get: /lui.tft
FLH: Send (High Speed) flash start
RSL: RESULT = {"Flashing":{"complete": 0, "time_elapsed": 0}}.
Die letzten Hinweise haben ergeben, das ein donwgrade auf Tasmota 13.4.0 nötig ist, um die TFT-Firmware zu flashen.
Danke an bob den 1. für die kurze Zusammenfassung. Der Beitrag wird bei neuen Erkenntnissen durch uns aktualisiert.