NEWS
Sonoff NSPanel
-
Noch einmal zum Thema outlets, es funktioniert, ist aber hässlich. Hat jemand eine andere Lösung, bitte?
block xmlns="https://developers.google.com/blockly/xml" type="on" id="%EyOn{I#|;b(C5[k^L@@" x="-537.2998" y="3762.1322"> <field name="OID">Object ID</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="on" id="RE}OOwL(gcsufpkxT$Tv"> <field name="OID">mqtt.0.SmartHome.nspanel_7A3C70.tele.RESULT</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="4^bM+A%,f_(@#L!}+Mhb"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="SM/Yz0Ry/aB(?:QO0TbW"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="Ar3rxm%M}$QyQlvUkUT-"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="d=eVL6)Tla1;.]yAl]j^"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="a~9q+{=/:g0i)-?SEGz6"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":0},{"switch":"off","outlet":1}]}}}</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="@0*WCtT=!yFNt9]aF=vb"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="QpRMOf/`CsH,s:bhX-+["> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="7Rf*pTQU!_1+T5+3b/?b"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":0},{"switch":"on","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="~0[VcZ#]x!mPY{BTm_@A"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-1#8AA73F#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="u.g;#U@qZ8hzjVU5O9!X"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="r:jn;4MuTyqHBFh~-S_F"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="k/Z9Ao.,q)^8Wr^D];Xz"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="?2l|+YjxXqIo2.*v3#7Q"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="c#G+qG=Y*ftIumEncY|="> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":0},{"switch":"off","outlet":1}]}}}</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="]-M4(n}RAuxPL!t0*m^{"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="q,@{~GxIb}Rx!+bpitfy"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="]FH87^koOh?a^{d*Pq#2"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":0},{"switch":"on","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="]^:0%~)(.@HRbrS%T]2t"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-1#8AA73F#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="6//q^20gN|G(1zRe[d]C"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="Pk-oml(]H,yrLi.8IHVy"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="XCbFA|#bbp}oRNv-L4]x"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="Hsz^uX:Oed[)nyv3Pd(@"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="/4o8(csH4`[AHXWRu0~y"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="u~g,7+~b_fjMnS!b^Y#s"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":0},{"switch":"on","outlet":1}]}}}</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=";I4v4{cqB*I-MjRdjGaP"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="pMO%T5uy7n/6CtyLAt1E"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="~e3o*~0g:0{x;fjld6=g"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":0},{"switch":"on","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="!P[];t/*:t)byb~yWQWA"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tradfri.0.L-65585.lightbulb.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="$)|3oTWYbafu_Tgdn[c)"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="gz.~1Ai}3yaJY$azE#wx"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="|i;()n*i7FL^W|huvZ9G"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="*tP]a$TF_d+ko{@m_;j;"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="pYBUef0_M@+.bCT!N*%="> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":0},{"switch":"off","outlet":1}]}}}</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="s*lV!eTM:XA5UC9$Jw#t"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="e]-y/sRXiApZJ2N({[K!"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="kPt;YIQB`=/Zz-Nqy!bF"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":0},{"switch":"off","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="zeT3(e}f,i^.vQaY*]P~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tradfri.0.L-65585.lightbulb.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="f=H#OyJ_mLOUGP(w]WnO"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="on" id="DAaf5S[MB_p{eGd(V*x3"> <field name="OID">shelly.0.SHSW-1#8AA73F#1.Relay0.Switch</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="Tnc4f5DKo,99{MIg-4Se"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="on_source" id="F.[=Ys)Sf;njZz#ECPW{"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="sendto_custom" id="x70$Z:W/A|^wwMeRAQ1R"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation> <field name="INSTANCE">mqtt.0</field> <field name="COMMAND">sendMessage2Client</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </shadow> <block type="convert_tostring" id="EEi$X|c`gBLbj3#a;+f."> <value name="VALUE"> <block type="text" id="HL`[LHc}[g?|hl%wc|OY"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </block> </value> </block> </value> <value name="ARG1"> <shadow type="text"> <field name="TEXT"> {"ATCMode": 0}</field> </shadow> <block type="convert_tostring" id="HO;X+hyFDu_Dw_5~O$$k"> <value name="VALUE"> <block type="text" id="84W[F*M9~6Jewo=esXBp"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":0}]}}}</field> </block> </value> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_negate" id="0H|}uF#Uy-k|bdQ@Pub@"> <value name="BOOL"> <block type="on_source" id="C(@`U_762M@s8ZOQ)6Mh"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <statement name="DO1"> <block type="sendto_custom" id="RW{TIwqJovK-7)wl}OA,"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation> <field name="INSTANCE">mqtt.0</field> <field name="COMMAND">sendMessage2Client</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </shadow> <block type="convert_tostring" id=";l_uZ8!D#OdLGHi^234C"> <value name="VALUE"> <block type="text" id="ePqNyTR{z7j4f7y49zUx"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </block> </value> </block> </value> <value name="ARG1"> <shadow type="text"> <field name="TEXT"> {"ATCMode": 0}</field> </shadow> <block type="convert_tostring" id="q!7Yl%*yE=l*IF/w^M.E"> <value name="VALUE"> <block type="text" id="Y8zbp#:2f?``+5:lD~Aq"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":0}]}}}</field> </block> </value> </block> </value> </block> </statement> </block> </statement> <next> <block type="on" id="$q~)-GqB%u,Ps,*hv{Rv"> <field name="OID">tradfri.0.L-65585.lightbulb.state</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="IswT0nXU4*Ddayki-Mhy"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="on_source" id="#,7Gh^ok$uy774J@DwxQ"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="sendto_custom" id="9Bw.{*kjA`*M%[z*nMAL"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation> <field name="INSTANCE">mqtt.0</field> <field name="COMMAND">sendMessage2Client</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </shadow> <block type="convert_tostring" id="*MyW(j5ad`7`ZM7D]TRS"> <value name="VALUE"> <block type="text" id="y|J{$*VXS-c_b3F_(U3-"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </block> </value> </block> </value> <value name="ARG1"> <shadow type="text"> <field name="TEXT"> {"ATCMode": 0}</field> </shadow> <block type="convert_tostring" id="p)axM?N$)iNbJ_+zAEe9"> <value name="VALUE"> <block type="text" id="k[rKsip7`3]ck$%,ZQgm"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"on","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_negate" id="h1)Az`H2)./dcqVC/i-u"> <value name="BOOL"> <block type="on_source" id="hWU)I^,_=pn%dv%eOM%:"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <statement name="DO1"> <block type="sendto_custom" id="hm1`@.|fLglV~:k8Orv_"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation> <field name="INSTANCE">mqtt.0</field> <field name="COMMAND">sendMessage2Client</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </shadow> <block type="convert_tostring" id="QU$SUl:=?l^9+`XApqE0"> <value name="VALUE"> <block type="text" id="/WA.$3`;7ks8xhN}|2pq"> <field name="TEXT">SmartHome/nspanel_7A3C70/cmnd/NSPSend</field> </block> </value> </block> </value> <value name="ARG1"> <shadow type="text"> <field name="TEXT"> {"ATCMode": 0}</field> </shadow> <block type="convert_tostring" id="8v~Q+e*ywKxz!,5{Uz/l"> <value name="VALUE"> <block type="text" id="c{3gcVljR[IGy*~!1Ah-"> <field name="TEXT">{"NSPanel":{"id":"6","params":{"switches":[{"switch":"off","outlet":1}]}}}</field> </block> </value> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </statement> </block>
-
@bananajoe said in Sonoff NSPanel:
SetOption114 1
Im Prinzip bin ich den Weg gegangen.Ich habe die Buttons von den Relais gelöst:
ButtonTopic /%topic%/button
Damit landen beim Betätigen der Buttons Trigger auf zwei neuen Datenpunkten, die ich dann in zwei selbst erstellte Datenpunkte toggle und damit persistiere. Damit habe ich dann die Button-Status zur Weiterverarbeitung im ioBroker.
Nun klappt es, dass der Bewegungsmelder nur noch die Lampen ausschaltet, wenn die Buttons ausgeschaltet sind.
Im Prinzip ein ziemlicher Umweg (NSPanel-Button->MQTT->ioBroker->Verarbeitung->MQTT->Relais) aber lüppt -
Hallo erstmal,
ich habe seit gestern auch ein Panel hier. Tasmota geflashed und auch die Ansteuerung über mqtt geht soweit.
Aber die ursprüngliche FW ist da doch recht eingeschränkt Bei OpenHap oder HA ist man schon viel weiter und arbeitet mit eigenen FW. Die GUIs sehen echt vielversprechend aus:
https://community.openhab.org/t/nxpanel-replacement-firmware-for-sonoff-nspanel/132869https://github.com/joBr99/nspanel-lovelance-ui
Da beide Versionen über mqtt laufen, sollte man das doch mit iobroker nutzen können? Das ursprüngliche tft kann man ja vorab sichern.
Gruß
Holger -
@holgerwolf Hallo Holger,
den Link zum Openhubforum habe ich vor einer Woche auch schon gepostet. Bis jetzt leider noch keine Reaktion.
Ich fände es auch super wenn etwas Bewegung reinkommen würde, da ich zum Entwickeln des ganzen völlig ungeeignet bin und meine bis zu einer "guten" Lösung in der Schublade bleiben. -
Korrigiert mich bitte. Aber ich habe das so verstanden dass nur die nspanel.be durch nxpanel.be ersetzt werden muss.
Der rest wäre doch nur MQTT und Script. -
@muchul
Nein, du wirst auch das Display flashen müssen. -
@maik-0
Kannst du mir bitte zeigen wo ich das finde?
Mit Google translate kommt nicht alles so richtig bei mir an.Tasmota ist klar.
Edit:
Habs gefunden, mit InstallNxPanel kommt die Firmware drauf. -
Hallo zusammen,
weiß jemand wie man das Format des Datums auf der Hauptseite ändern kann?
Aktuell wird es ja in MM/DD WD angezeigt. Ich hätte aber lieber gerne unsere übliche Schreibweise.Danke vorab
-
Habe seit gestern auch ein NSPanel und habe die outlets (Punkt 1) wie folgt gelöst:
Eigentlich ist es der gleiche Baustein in Matthias Video/Quellcodes (@haus-automatisierung war eine sehr gute Starthilfe), nur das jetzt die Zustände der einzelnen switches ausgewertet werden.
Beispiel für einen 4-fach Switch (siehe Screenshot):
NSPanel.params.switches.0.switch
NSPanel.params.switches.1.switch
NSPanel.params.switches.2.switch
NSPanel.params.switches.3.switchUnd die Feedbacks sehen dann wie folgt aus:
Falls es noch jemand schaffen sollte die Umbenennung der Outlets hinzubekommen, so wäre ich ebenfalls dankbar.
VG
-
Hat irgendjemand schon mit dem NSPanel-Thermostat (Slide 3) experimentiert? Ich bin da über eine Sache gestoßen, bei der ich mir nicht sicher bin ob das gewollt oder ein BUG im Panel ist!
Bei der Auswahl der Setpoint-Temperatur (egal ob über +/- oder das Widget), bekomme ich immer wenn ich auf 21°C komme einen Rücksprung auf den vorherigen Wert. Im JSON-String finde ich {"NSPanel":{"ATCMode":0,"ATCExpect0":21}B}} statt {"NSPanel":{"ATCMode":0,"ATCExpect0":21}}. Also ohne das überflüssige "B}", wie bei den restlichen Werten.
Ich helfe mir aktuell mit einem Workaround --> Funktioniert auch super... --> und alles verhält sich normal.
Hat jemand ebenfalls dieses Phänomen? Weiß jemand, ob das gewollt ist? Wie habt ihr das gelöst?
VG
-
ist wohl nen Bug in dem Berry Driver von blakadder
-
@holgerwolf Mittlerweile gibt's auch jemand der nen ioBroker Backend für nspanel-lovelace-ui baut
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
-
@jobr99 Dann versuch ich das mal nachzubauen
Den berry Treiber habe ich auf dem NSPanel installiert. Jedenfalls habe ich jetzt eine weitere Konsole in Tasmota:
Wenn ich jetzt aber das tft File flashen will passiert nix:
Ich hatte das auch mit nem tft vom eigenen Webserver versucht aber auch da passiert nix.
Fehlt mir noch was? -
Ja, du musst den Berry Treiber aus dem Repo hochladen/installieren, Tasmota neustarten und dann solltest du den FlashNextion Command haben. Die Berry Konsole ist bei Tasmota für ESP32 immer dabei.
https://github.com/joBr99/nspanel-lovelace-ui#upload-berry-driver-to-tasmota
und bis das ioBroker Backend geupdatet ist musst du Version 1.9.1 nehmen
FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v1.9.1.tft
-
@jobr99 Mein Fehler. Die autoexce.be war falsch.
Ich mache morgen weiter...
-
@jobr99 Da auch immer in den readme‘s davon die Rede ist, was meinst du den mit iobroker backend?
-
@holgerwolf
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBrokerDas Typescript Script von britzelpuf, welches die geräte aus ioBroker zu mqtt commands übersetzt und die commands vom panel wieder zurück zu iobroker übersetzt.
-
@jobr99 Ich habe jetzt das v1.9.1..tft drauf.
Das Display steht nach dem Starten des TS-Scriptes auf "Waiting for Content - This is taking longer than usual...."
Im TS Script habe ich
panelRecvTopic: "mqtt.1.SmartHome.tasmota_7BC490.stat.RESULT", panelSendTopic: "mqtt.1.SmartHome.tasmota_7BC490.cmnd.NSPSend",
mit meinen Objekten angepasst. Die werden auch befüllt und kommen an.
Im Script sind aber noch jede Menge anderer Objekte drin, die ich nicht habe. z Bsp "alias.0.Wetter". Sollte das Display trotzdem laden? Fehlermeldungen habe ich in beiden Logs (iobroker mqtt und tasmota) nicht. -
@holgerwolf sagte in Sonoff NSPanel:
alias.0.Wetter
Bin jetzt auch umgestiegen, da mir die Möglichkeiten im Originalpanel zu stark eingeschränkt sind. Der Screensaver läuft schon und sieht meiner Ansicht nach sehr ansprechend aus. Habe mal ein paar Werte verändert.
Habe auch keine Fehler im TrueType. Das ist bislang aber auch die einzige Seite die funktioniert, da es etwas schleppend ist, die Aliase zu interpretieren. Ein paar Kommentare im Code zu den Objekt-Inhalten wären nicht übel...
-
Ich habe immer noch dieses "Waiting for Content" und bin am Fehlersuchen.
Seht ihr denn in der Tasmota Console die ankommen Befehle vom iobroker?
Bei mir sieht das dauerhaft so aus:
12:28:34.949 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:28:40.850 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:28:46.754 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:28:52.753 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:28:58.651 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:28:59.750 MQT: stat/tasmota_7BC490/RESULT = {"Command":"Unknown"} 12:29:04.650 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:29:10.552 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:29:16.486 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:29:22.470 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"} 12:29:28.350 MQT: tele/tasmota_7BC490/RESULT = {"CustomRecv":"event,startup,21"}