NEWS
Sonoff NSPanel
-
ich komm leider einfach nicht weiter und hoffe auf Hilfe
Folgende Fehlermeldung spuckt er aus:
javascript.0 (405) script.js.common.NS_Panel compile failed: at script.js.common.NS_Panel:5918
Kann mir einer erklären, was ich falsch mache
-
@stwer2203 Leider lässt sich das nicht pauschal beantworten. Aber lass uns prüfen:
- Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts)
- Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts
- Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Ich würde die Dateinamen genauso übernehmen. Was bei dir nicht der Fall ist.
Check das mal aus und wir können weiter schauen. Mir wurde hier auch viel geholfen, also keine Sorge, dich kriegen wir auch "verarztet".
-
Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts).
ja, war und ist das Script
Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts
ich habe im common meine Unterverzeichnisse, aber habe es jetzt genauso wie du
Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts.
das war auch und die mqtt Pfade angepasst
weiterhin bleibt:
13:45:54.626 info javascript.0 (3155) Stop script script.js.Prod.NSPanel.NsPanelTs 13:45:55.037 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: compiling TypeScript source... 13:45:58.202 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: TypeScript compilation successful 13:45:58.225 error javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs compile failed: at script.js.Prod.NSPanel.NsPanelTs:782
-
- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassen
-
@a200 sagte in Sonoff NSPanel:
- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassen
Der Dateiname ist völlig egal - kannst das Skript hinlegen wo du willst und auch Schneewittchen nennen.
Wenn es einen "compile failed" gibt, dann steh in der Regel auch etwas mehr im Protokoll und an irgendeiner Stelle im Code ist es seitlich rot. Ich bräuchte diese Informationen ma kurz
-
Ich habe auf Github eine neuere Version des TypeScript abgelegt:
https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Die Version sollte jetzt alle Features unterstützen, die auch in der openHAB-Version verfügbar sind.
Bugfixes und Erweiterungen seit letzter Version:
- BugFix: Automatischer Dimmode versetzt NSPanel im Normalbetrieb in Dimmodus ohne Screensaver
- Fix: Auto-Update in definiertem Zustand
- Neu: manuelle Updates (Werden über Popup eingeblendet, falls vorhanden)
- Neu cardAlarm (Anleitung/Emulator zum Testen folgt)
- Neu popupNotify (Nachricht über separates Popup Fenster im Panel - Anleitung/Emulator zum Testen folgt)Wie immer die Variablen berücksichtigen.
Ab jetzt gibt es zunächst (und falls erforderlich) nur noch Bugfixes und weitere Aliase.
Viel Spaß beim ausprobieren.
-
Ich habe für die popupNotify einen kleinen Blockly-Emulator geschrieben - Eventuell möchte den jemand ausprobieren, um besser zu verstehen, wie die Nachrichten (von außen - durch andere Skripts (JS, Blockly, TS)) an das Panel übermittelt werden.
Code in neues Blockly importieren, Parameter anpassen und ausführen
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="uo@LUG^!/XDby|445u/B">Path</variable> <variable id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</variable> <variable id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</variable> <variable id="-o6c|nVGu[-e9kJUQ*Py">Text</variable> <variable id="g=qMvdYbq.K$K#qmOxv%">Button1</variable> <variable id="[OV33hQZKYvb2l{,hIz5">Button2</variable> <variable id="GLNUJ.^6GeEeSI!hhRv^">Timeout</variable> </variables> <block type="comment" id="`s6]m,+$3U;:^lwh}RV5" x="62" y="-413"> <field name="COMMENT">Emulation wird jede Minute durchgeführt</field> <next> <block type="schedule" id="0G0P80pyKC8!U~a1%(.E"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="30#(TnQM=_MBK:actv{l"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> <value name="VALUE"> <block type="text" id="h/e(`ygx?v?]11Z`88zp"> <field name="TEXT">0_userdata.0.NSPanel.1.popupNotify.</field> </block> </value> <next> <block type="variables_set" id="R3Wks}hW8#-p/m25k-mK"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> <value name="VALUE"> <block type="text" id="l*M,26M-+$C$vL0GW,XJ"> <field name="TEXT">Waschmaschine</field> </block> </value> <next> <block type="variables_set" id="u3F5ACIOMm{nZ%~T@gN7"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> <value name="VALUE"> <block type="text_join" id="gilEtg%GtWmZ{Ma7#TH)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="ar3{89`Ttkt[m[W$ns5W"> <field name="TEXT">Nachricht von </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="W*TW2,-kH?kXp0-zq$m#"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> </block> </value> <next> <block type="variables_set" id="7xV_#HwZp%4fs)`69P7I"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> <value name="VALUE"> <block type="text_join" id="0u!=u_]+ir[CYmK[xb,%"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text" id="ah?o$fm/Du;,mkK#~Wn`"> <field name="TEXT">Der Waschvorgang ist beendet</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="5PgB+z=YZ/Cy(G3`k:LK"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="text_newline" id=",CuP]bnfML_B8A4YWfB0"> <field name="Type">\r\n</field> </block> </value> <value name="ADD3"> <block type="text" id="!i/O$+%ZdbrJ7-^YqXs2"> <field name="TEXT">Diese Nachricht zerstört sich in 15 Sekunden</field> </block> </value> <value name="ADD4"> <block type="text_newline" id="v)hnAj(3J#E:-.SacK9|"> <field name="Type">\r\n</field> </block> </value> <value name="ADD5"> <block type="text" id="bW{bQPK]Zr;DCxw7rx^}"> <field name="TEXT">von selbst</field> </block> </value> <value name="ADD6"> <block type="text_newline" id="e9WhU9G$[u]$hGIHHkOg"> <field name="Type">\r\n</field> </block> </value> <value name="ADD7"> <block type="text_newline" id="#{;D1ACiGtk3DAeH4RvP"> <field name="Type">\r\n</field> </block> </value> <value name="ADD8"> <block type="text" id="{7;]*K(T=]lPCH;#yy,S"> <field name="TEXT">Bist du sicher das du mich abstellen </field> </block> </value> <value name="ADD9"> <block type="text" id="Id60*I{KgLs,7,RNbL#0"> <field name="TEXT">möchtest?</field> </block> </value> </block> </value> <next> <block type="comment" id="MghuTgD][qtrl)GO#HrD"> <field name="COMMENT">Button1 liefert "false" - kann auch leer sein</field> <next> <block type="variables_set" id="d|F8*4v2KA:${~Q;9;n~"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> <value name="VALUE"> <block type="text" id="gHu6:V~JvgPcVq53w1.="> <field name="TEXT">Nein</field> </block> </value> <next> <block type="comment" id="C5?qa0+JRgTU%GlVW$g4"> <field name="COMMENT">Button2 liefert "true" - kann auch leer sein</field> <next> <block type="variables_set" id="aG7hBeg1fGHN@a_`sUbZ"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> <value name="VALUE"> <block type="text" id="1O$?!70tQ:aSFIXlS7A,"> <field name="TEXT">OK</field> </block> </value> <next> <block type="comment" id="]h~w+hG;N$9l!}_GV+4B"> <field name="COMMENT">Kann auch auf 0 für manuell schließen</field> <next> <block type="variables_set" id="CGGwa_Ykf}kYYeR)IkR."> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> <value name="VALUE"> <block type="math_number" id="([Hku{[tr5;;mM@qHQ$t"> <field name="NUM">15</field> </block> </value> <next> <block type="control_ex" id="1dL$wOk9{m-yOy|2=*1g"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="p%b].;f)Tg{x/hQ,(`:E"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="amkxN:qSczo2d]97yqgU"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="k;cYrw$(3p-R5GTFvMW%"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="C6sE8F@i_5VZ)C,x0(s_"> <field name="TEXT">popupNotifyHeading</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="*FA,Qt^=:a61n5.Y3.x]"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="MTH3SkAm}pe/1Cg:N1dV"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="-DlWt*-;[s9PI#Xyv}ZS"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="F,R/t@f|GO,Z.QfkIwd$"> <field name="COMMENT">Im Text wird die Zeit mitgegeben</field> <next> <block type="comment" id="F-3#0=OVZNca`nOED6Ls"> <field name="COMMENT">ohne Änderung des Textes wir kein popup angezeigt</field> <next> <block type="control_ex" id="?uUW)tMaHVs%}4f(O{3R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="%,m?2:R:N?)ZD,$vBC`d"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="w~,,}#T_:R!@(91x(KY)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="35hU_%k~-#4$(:LcM6,1"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="g`M._dA#Yo[g)P0|,[*N"> <field name="TEXT">popupNotifyText</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="R`0o?%kFD}=);P5,o-V2"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="9LX]H?SV#xzIh`X!vZVX"> <mutation items="3"></mutation> <value name="ADD0"> <block type="convert_from_date" id="L^EjJxj1V$OZ/Ga7/4*2"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">TT.MM.JJJJ SS:mm:ss</field> <value name="VALUE"> <block type="time_get" id="rjD9!@$v?CDm/5n}@(GA"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="n{mP0B^59fa`=3,/=tlV"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="%hXKnQkTTz?%Waf1T0%i"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="{5ff|Qz@z:(ZrW[T:`)E"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="mHM54A6B1nA*)Tl`4bTs"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="Ya+g|Cl+i7=.p/Ie(AtO"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="GI+;?qw:YE[{U2_kxJZg"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="wybh?!k``1,iP%|P]c[p"> <field name="TEXT">popupNotifyButton1Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="YA2[S#5qR#UG$jHlfQ%S"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="?=AGjEn:juA9us=H]a%;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="8_BX{?-?Oi|$d|Gg$1Cy"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="He1!cC/^[205l;-1}ASR"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="jw4DW_qno}iIHugSt,}8"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="lr.F~YZdc$sfF|z#V.w5"> <field name="TEXT">popupNotifyButton2Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="]l!LD%wcjPA[2)SfUHHs"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="OdWpiHsNV#30R]Aq!$Gu"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id=":`/?=XT;sJqhXvIA~Q_R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="jCD!fuaPfAai?P8U9,?n"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="b]8Y@1:l8%|,xImg{V(_"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="VCw44y[yzUF][09V_+OU"> <field name="TEXT">popupNotifySleepTimeout</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="z;!QKJE2cka}x5~oL8%2"> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="1YUXTd5z~e^I*6/?o_;0"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="d,*_!q{w=02C~^vvZlYP"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="cQlWDwPHeE4tzR|+)TlH"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="}bZBoWEFal{Z@vm_im$#"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="fK9rd_%mPOgv)BI14-(I"> <field name="TEXT">popupNotifyInternalName</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="?Ue4ZS-9tnXRHWmu?j$u"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="KSV7H~p;Rw}X]^fgXGA;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="k}-$zkTkx#NVPnhQ+zzM"> <field name="COMMENT">Output-Parameter werden abgefragt</field> <next> <block type="on_ext" id="Q$YB)v(VTl#wB2|u;63q"> <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="^prU7]O!M$KjiHYwI?{T"> <field name="oid">0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="USh#T`M700~2CAoY2d#e"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id=";L2c+1)qFU}F1Z=qjFbU"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="orbJ;#C((8Dtuf7!S17/"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="gP!v0w[Yj`(AAv=w66@^"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="[A=mJCJZXmf%8fuZKr8/"> <field name="COMMENT">Aktion für "false" durchführen</field> <next> <block type="debug" id="QR:oB2FD{+gth,B^eN%4"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|NuBbx-lPVkd#K@m:cZ#"> <field name="TEXT">test</field> </shadow> <block type="text" id="nEbw|*BtC5J,K~$cfr7S"> <field name="TEXT">Es wurde Button1 gedrückt</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="+EYB1H+OhaH?$hux,j{`"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="t)S*(~jk01onDN%F3Up["> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="p8I|SmJp#?Ja8]g4h;-G"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id=":)$,fqkdSEZ}qHWxBKQJ"> <field name="COMMENT">Aktion für "true" durchführen</field> <next> <block type="debug" id="wmpOOSJ=^fxqOo$:5Gk0"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="u1yn4=-4Qr$ZKL$Ma6-P"> <field name="TEXT">Es wurde Button2 gedrückt</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
Jetzt ein weiterer Blockly-Emulator für die cardAlarm
Hintergrund: Nach Aktivierung des Alarms wird in einen Datenpunkt (Pin/Status/Typ) geschrieben. Da ich davon ausgehe, dass alle anderen Aktionen, wie Bewegungen/Fenster- und Türsensoren, etc. über externe Skripts verarbeitet werden, gibt es quasi eine Schnittstelle:
- Pin: Eingabe wird nach Aktivierung übernommen und in Datenpunkt 0.userdata.0......Alarm.AlarmPin hinterlegt. Bei Deaktivierung wird der Pin erneut abgefragt.
- Typ: ist der ausgewählte Alarmtyp (Kann separat extern ausprogrammiert werden (z.B. Unterschiedliche Steuerung des Alarms für Vollschutz, Nachts (wenn im Sommer Fenster auf sein sollen), Besuch, etc.. (0.userdata.0......Alarm.AlarmType)
- State: Das Panel sendet keine Zustände wie "armed" oder "disarmed", sondern "arming" oder "pending" an den Datenpunkt 0.userdata.0......Alarm.AlarmState. Das nachträglich verarbeitende "externe" Skript" setzt den Status "armed" bei erfolgreicher Aktivierung oder "disarmed" bei erfolgreicher Deaktivierung. Wenn der Alarm ausgelöst wurde, so wird in den Datenpunkt (ebenfalls über externes Skript) ein "triggered" geschrieben.
Der Emulator reagiert auf das "arming" und "pending" und schreibt entsprechend ein "armed" oder "disarmed" zurück.
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="q!?(x}z/f~TClQnNmbyU" x="113" y="38"> <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="]~f@4kO$zmxdg=}/810C"> <field name="oid">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="=_e7bf!`Q]$tg*0U1_2F"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="0_9gv(MmSSJ{2a$j{}(P"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="H$WWrxxX|NaWkT%W]g!Z"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="_TnyjJ5x!)JY~rQ:Opj)"> <field name="TEXT">arming</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="eO}0c$0s~08Di)?sMM0("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="J(va8~n[/dogNBn!W].I"> <field name="TEXT">armed</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="]p3s+ouB~BJkfd:e)G:("> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=":n]Z,t6+q#-l_hP+MEI@"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="([Ep{MPBu5s.C-lOdHgr"> <field name="TEXT">pending</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="s77gpG^9o0A)T{f}{#,c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="4DC5l(?mcdlhZ/jIumty"> <field name="TEXT">disarmed</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
-
Falls jemand wissen möchte, wie ein spezieller Alias aussehen muss - dann einfach Bescheid geben. Kann gerne ein Screenshot aus dem Adapter "Geräte verwalten" machen.
Im Verlauf des Threads habe ich schon den ein oder anderen Alias für Lampe, Dimmer, etc. aufgeführt.
Ebenso sollte sich bereits der Alias für die cardMedia (Alexa-Player) im Thread befinden, der sich allerdings nur korrekt über den Adapter "Alias-Manager (wie ebenfalls beschrieben) erzeugen ließ. Hier versagt der Adapter "Geräte verwalten" komplett.
Für den Alias cardThermo setzte ich jetzt bereits einen Screenshot vom Alias-Typ: Thermostat ein:
und etwas tiefer (scrollen):
Ist in diesem Fall ein Thermostat von homaticIP - wer andere Typen hat, kann auch weitere Indikatoren füllen
-
Der Alias für die cardAlarm war etwas trickreicher...
Habe einen Alias vom Typ "Feueralarm" verwendet und um "Zustand hinzufügen (schwarzes +)", die Zustände PIN (Rolle: state; Datentyp: string) und TYPE (Rolle: state; Datentyp: string) hinzugefügt.
Nach dem Speichern habe ich den ACTUAL unter alias.0...Alarm.ACTUAL von "boolean" auf "string" umgebogen
-
Das ist mein Alias für das aktuelle Wetter im Screensaver:
und etwas weiter gescrollt die Temperatur (bei mir direkt aus der Wetterstation)
-
Und noch eine HUE-Lampe (bei mir nur emuliert in 0_userdata, da ich in Wirklichkeit keine habe)
-
Hallo, hat jemand ein Idee/Vorschlag?
Vielen lieben Dank, -
@joris-cornelissen sagte in Sonoff NSPanel:
Hallo, hat jemand ein Idee/Vorschlag?
Vielen lieben Dank,Hi Joris, I thought someone from the thread was still using the original Sonoff NSPanel firmware. I saw that you have problems with shelly integration and NSPanel. Unfortunately I don't have the Blakadder firmware on the panel, nor the Shelly RGBW2. If you would send me which fields need to be converted into what, then it would probably be easier to help you. In the Sonoff NSPanel (hardware) thread, I think almost everyone is now using the Lovelace version, in which the RGBW2 would be relatively easy to integrate. The fact that you are using the original firmware makes it difficult to try and test something.
More information on the Lovelace version can be found here if you are interested:
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
-
Guten Morgen,
Ich bekomme vonAccuweather keine Daten,
API Key ist da und im Adapter eingetragen, Standortschlüssel ebenso.
Alle Werte sind "null"
wo liegt bei mir der Fehler ( sicher vor der Tastatur )
Danke
wheinz44 -
@wheinz44 sagte in Sonoff NSPanel:
Guten Morgen,
Ich bekomme vonAccuweather keine Daten,
API Key ist da und im Adapter eingetragen, Standortschlüssel ebenso.
Alle Werte sind "null"
wo liegt bei mir der Fehler ( sicher vor der Tastatur )
Danke
wheinz44Spielen wir den Ball kurz zurück - was hast du denn bislang gemacht?
- Um einen API-Schlüssel zu erhalten, registrieren Sie sich unter https://developer.accuweather.com/ und erstellen Sie eine Anwendung im Menü "Meine Apps"
- https://www.accuweather.com/de/de/Stadt/PLZ/weather-forecast/XXXXXX (XXXXXX = Standortschlüssel)
- Land "de" (für mich) auswählen.
https://github.com/iobroker-community-adapters/ioBroker.accuweather
Meine Einstellungen:
Ist bei mir einer der zuverlässigsten Adapter - hat noch nie Probleme gemacht.
-
@armilar
Hallo, Danke für die Atwort.
Meine Einstellungen sind exakt gleich, bekomme aber trotzdem keine Daten.
Ich habe deine Anleitung EXAKT durchgearbeitet,
habe aber trotzdem meist leere Seiten.
Diverse Testschalter kann ich am Panel bedienen, aber der Schiebeschalter springt meist
ohne mein zutun zurück und ich kann erst wieder nach ein paar zwichenklick schalten.
Am Screensaver hab ich nur Uhrzeit, Datum , keine Wettericons sondern nur Rufzeichen.
Super wäre es wen du mir Beispiele für Alexa Alias zukommen lässt.
LG
wheinz44 -
@armilar Hallo, Wetterdaten sind jetzt da, Warum??
aber am Panel nur Icon für aktuelles Wetter und die Temperatur ist irgend ein Wert (9°C) immer gleich.
Die weiteren 4 sind gleich geblieben. (Rufzeichen und "null") -
Der Alias bekommt immer erst Daten, wenn sich ein Datenpunkt verändert, deshalb auch manchmal die Verzögerung. Ich ändere den Datenpunkt meistens, in dem ich den Wert unter Objekte kurz verändere und dann wieder zurückstelle. Beschleunigt die Sache --> ist meistens der Grund, warum Schalter wieder zurückspringen - weil der Alias noch nicht greift. - dann kurz den Datenpunkt an/aus unter Objekte - dann sollte es klappen.
Kann es sein, dass im Accu-Weather Adapter noch nicht alle Daten sind? Warte mal bis morgen, der Forecast wird bei Accu-Weather um 5 Uhr berechnet und aktualisiert. Ist die Variable Forecast oben auf true?
var weatherForecast = true; //true = WheatherForecast 5 Days
Woher kommt denn der Wert 9°C? Was ist das für ein Datenpunkt, der sich nicht ändert? Eigener Sensor oder Temperatur aus Wetter-Adapter? Der muss ja unter Temp. im Alias "Wetter" gesetzt sein, oder?
Werf mal unter Objekte im mqtt.0. im Dtaenpunkt "CustomSend" das rein...
weatherUpdate~~17.6 °C~Do~~25.3 °C~Fr~~21.2 °C~Sa~~17.2 °C~So~~19.6 °C~
... und "Wert setzen" bestätigen. Dann sollte sich zumindest zeigen, ob das Panel reagiert.
Die Anleitung für Alexa cardMedia habe ich hier schon ausführlich am 19.04.2022 bechrieben
https://forum.iobroker.net/topic/50888/sonoff-nspanel/254?page=13#:~:text=19. Apr. 2022%2C 15%3A17
-
@armilar Hallo, Danke für deine Mühe.
Panel Reagiert wie es soll. mein Wetter-Alias sieht so aus: