NEWS
SONOFF NSPanel mit Lovelace UI
-
@danny_v1 ja gerne, ich würde es dann mit ins Wiki übernehmen. Vielleicht kannst du noch ein paar Hinweise geben, was zu beachten ist.
-
@tt-tom Alles klar mach ich, ist aber alles noch im Test, aber bis jetzt macht es keinen schlechten Eindruck.
Ich hätte da auch noch eine Anfrage für eine neue Card. Gibt es die Möglichkeit eine Card für einen Wecker zu integrieren? Bin gerade am Testen der MQTT Alarm Clock App für Android, das zb fünf Minuten vor dem gestellten Wecker die Rollos auf gehen und sobald der Wecker angeht Alexa irgend einen Radiosender spielt und nach dem zweiten mal snooze z.b. das Licht an und aus geht. Da wäre es ganz praktisch das ganze am Panel darzustellen bzw auch drüber den Wecker zu stellen.
-
-
@tt-tom Sorry das es etwas gedauert hat aber hier noch das Blockly, wie ich den Alarm Adapter mit der AlarmPage verbunden habe.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="P7QE+GF6h)E2g%:#y$/Y">LichtEGStatusAlt</variable> <variable id="UcL-MS2|s1+aEP7O*`A:">LichtOGStatusAlt</variable> </variables> <block type="on_ext" id="|8X[PbbvSU!7I^5{*^a=" x="88" y="63"> <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="`)3Y`~St5DH5v?F+]9M3"> <field name="oid">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="7[^|QcTy/@.{2s(OG$Fb"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="=.KD7qSe4~]TtSI!xiI."> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="CPg[7^D?vcw{xepZZ}EX"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="T[[`hbH(-}+MXWi9KnYp"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="x)l][_Kt,BrAEFLDdC@u"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="a-[@@{!jc/q29XT$V#^o"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="o7.X|H!0~iKqFeQp5a*H"> <field name="ATTR">val</field> <field name="OID">alarm.0.status.enableable</field> </block> </value> <value name="B"> <block type="logic_boolean" id="@2dbs*qhF=tzkW^1}r+*"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="ZHQRocGj=Q*cJItr_[,a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmPin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="!M0tIs|-E.^-Vq8F@?|0"> <field name="NUM">1234</field> </block> </value> <next> <block type="control" id="[W{gk$~R,i,/YN:v#}]9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="oX_:B54QYu5Vhdf[vg*("> <field name="TEXT">armed</field> </block> </value> <next> <block type="control" id="p@-g_|Ai2)pFRlmW!?!."> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmType</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="NXo+M(9d}#{0}{1d}rDg"> <field name="TEXT">A1</field> </block> </value> <next> <block type="control" id="tsT$MuFe0)Sc#oLXC5Fm"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alarm.0.status.activated</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="!R0?Sfg.nqx%}`G]hHVJ"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="`V)hoN1w2b=nkKl`oddW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.1.ScreensaverInfo.popupNotifyHeading</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="wnXujXR/B-fTx9*ESBPK"> <field name="TEXT">Alarmanlage</field> </block> </value> <next> <block type="control" id="P+~noX9+8Xc~~.UP$Lwu"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.1.ScreensaverInfo.popupNotifyText</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="GBTKSe+%xY9n]r[El0f$"> <field name="TEXT">Vollschutz aktiv</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="TPzsIanmsL4v[Cq=IRQ@"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="l9$l`DT]e5;:SvPO@]+["> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="E9Z0MOKXn=]f24RS7F77"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="1mGoL-)gl|wF]4ojsWCS"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="=^_Se%Hun-5UjTB9aX,b"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="*TwUAn4%?h=|l?g$GcHR"> <field name="ATTR">val</field> <field name="OID">alarm.0.status.enableable</field> </block> </value> <value name="B"> <block type="logic_boolean" id="t~pMo=u0XsA^I([8xy8Z"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="`AR;2[%g4!:!@fSU[Nk8"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Qd[b2-|vE)wCJwkcW:x/"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> <block type="on_ext" id="878R%*,J0DoZ$`CTH2~G" x="88" y="563"> <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="vY]]X7=yW5ud-7)@.[cX"> <field name="oid">0_userdata.0.NSPanel.Alarm.AlarmState</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="Dn3uq*-U3bF|r|lRF=O2"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id=":gh%YH,Er.:u%^k/A5M^"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=",vVGqd18%^nS?@Lv*@iO"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="@jB:FzUnE.mM*{xtFGFs"> <field name="TEXT">disarmed</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="GKiESAyt$/0)d;GBBzTG"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alarm.0.use.disable</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="bo{lnh?p0H#UgmEi+^O("> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="l[o~|nrZ50ecR#m70T(m"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">alarm.0.use.disable</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="lY5y;c!arQEj}{/5;Jt7"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="/DuX0s07rDjJG_)GH#Qa"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Y.!%z)Aoj;8hq;]7y^#]"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="PAKXc91S8U.I-a%xop9L"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alias.0.TreppeFlur.DeckeEG.ON</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="0`x4B6[Rj_Tn*_CF$)Vz"> <field name="VAR" id="P7QE+GF6h)E2g%:#y$/Y">LichtEGStatusAlt</field> </block> </value> <next> <block type="control" id="e~EA|q9|2[iW8nsp.O:C"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alias.0.TreppeFlur.DeckeOG.ON_SET</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="))H2`fEybXNbjU3df]!j"> <field name="VAR" id="UcL-MS2|s1+aEP7O*`A:">LichtOGStatusAlt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="6w!6(LoO[?}oY*U#Gl~K"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="h.e)e34pQyCsHTmWie:?"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="YlgD^C`@F@9!K-CTWb^3"> <field name="TEXT">arming</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="7II/mr[uv-iwLiantF?J"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="lurrJr!WWoTy6(qJ{uSE"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> <block type="on_ext" id="GigMf:F8epyVG;Dwj+@C" x="863" y="538"> <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="PdQZ.w~i9RiZ^o#yRh43"> <field name="oid">alarm.0.status.burglar_alarm</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="XijA|xcfM?eTr!T~%puY"> <value name="IF0"> <block type="logic_compare" id="1Y)4rnLtqEUM0$cnP^d."> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="kfH9w6vy}dZp?hY//MRw"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="wnM,DSd8Y*ZOzFX~/6e)"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="8c-h%.Im$e^`5Tb)HE}*"> <field name="VAR" id="P7QE+GF6h)E2g%:#y$/Y">LichtEGStatusAlt</field> <value name="VALUE"> <block type="get_value" id="b}hOF7NXr^3gH=Ozq^D="> <field name="ATTR">val</field> <field name="OID">alias.0.TreppeFlur.DeckeEG.ON</field> </block> </value> <next> <block type="variables_set" id="Q[shuU$MzOS2N-+/%g#R"> <field name="VAR" id="UcL-MS2|s1+aEP7O*`A:">LichtOGStatusAlt</field> <value name="VALUE"> <block type="get_value" id="]~yhhkD0E.^c7_kTIwJ;"> <field name="ATTR">val</field> <field name="OID">alias.0.TreppeFlur.DeckeOG.ON_SET</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> <block type="on_ext" id="Mj%;$r_Va+fuu23DU%zO" x="863" y="788"> <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="WTlwg+c]eF{}UUUNCLw~"> <field name="oid">alarm.0.status.sleep</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="Uz5pl3/qX5MFoxJ!b2-{"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Q_^C5_tNat6gj.:=e(ga"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=",8ut)Jl78*^_B_gKRP^O"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id=";ALn4,6|YLJ)Y%~:UQ^C"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="yxR{V$lEKXa@0|[DUy88"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="G(c~)uuXbDDh/t0zg#3V"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="%W$wM#=_v5Ce~l:Xu:FV"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="fC1}q6!ZR;xELf{2=p$M"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="=1xlUlZ,T:}h|zv8#^GQ"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="e#6S8g*`Kr(:)7iG:xMA"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.Aktivierungen.VollschutzAn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="1-v-X([W0xGAqO#+1%;w"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="(vV*wIqmAE}M;8AJoO6s"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alarm.0.use.disable</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="]Wf{Ua.|#,S4U0ktYX72"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="*;;l^`=_PIe{)JJt`x`."> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">alarm.0.use.disable</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="`SZ{/m5h$PhZ7E-t%C,}"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="iRX$?5x=agp2yQQJO,B+"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmPin</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="XtR/6+Jiz$*6^w3Y(vM#"> <field name="TEXT">1234</field> </block> </value> <next> <block type="control" id="yE]mw5BVbcwuJV@DY2%/"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="xjC{pV2??Mdu4ExLgb2X"> <field name="TEXT">disarmed</field> </block> </value> <next> <block type="control" id="DAYNMXSt!]Br=~m.xa-i"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.Alarm.AlarmType</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="~t:e?*BP{*SquN714-a$"> <field name="TEXT">D1</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
Kurze Erklärung noch dazu:
-Es wird ein Datenpunkt als Boolean benötigt, in dem Blockly "VollschutzAN".
-Ich nutze einen festen Pin (im Blockly 1234) kann entweder ein fester Pin sein oder durch einen Datenpunkt ersetzt werden.
-zur Aktivierung am Panel, egal welcher Pin bei der Aktivierung eingegeben wird, der Pin im Blockly ist der der den Alarm deaktiviert!!!
-Es wird alles im Alarm Adapter festgelegt, also was Überwacht wird, was bei welchem Alarm gesteuert wird usw.
-Es ist alles noch in der "Testphase" bei mir läuft es zur Zeit so: Ich habe die AlarmPage auf dem Panel neben meiner Haustür aktiv, per Button am Panel wird die Alarmanlage scharf geschaltet, ich überwache alle Türkontakte sowie Bewegungsmelder im Alarmadapter. Wichtig beim scharfschalten die Tür muss offen sein und im Alarmadapter der Haken gesetzt sein "Konfigurierte Zustände bei der Aktivierung ignorieren" da sonst schon beim verlassen der Alarm ausgelöst wird. Wird der Alarm ausgelöst öffnet sich am Panel automatisch die AlarmPage und mit der StandartPin lässt sich der Alarm deaktivieren. Sollte dies nicht innerhalb von der Im Alarmadapter festgelegten Zeit passieren blicken erst die Lampen die im Blockly stehen. Was danach passiert kann ja jeder selbst entscheiden und im AlarmAdapter festlegen, z.B Rauchmelder aktivieren Alexa etwas sagen lassen eine Telegram Nachricht verschicken, usw.Hoffe das war nicht zu ausführlich.
Das Blockly darf gern verwendet und im besten Fall verbessert werden!
-
Hallo,
bin neu hier und habe ein Problem und eine Frage :-
Frage : kann man Datenpunkte verschachteln bzw. wie?
Bekomme im Trashschedule unter trashschedule.0.next.types nur den Typ, z.b. Wertstofftonne. Die Farbe wäre dann zu finden unter trashschedule.0.type.wertstofftonne.color -
Problem
habe im NSPanel Service keine Datenpunkte (alles was nicht navigate ist, ist leer), dabei sieht aliaspfad etc. gut aus. Im NSPanel_Service fehlt auch schon der erste untere rebootbutton. Habe dort auch versucht den Pfad direkt einzutragen, keine Änderung. Hier weiß ich gerade nicht weiter.
Ansonsten ist alle Software frisch, keine Fehlermeldungen, minimal angepasstes NSPanelTs.ts ohne Beispiele.
Der Rest (accuweather, mqtt etc. geht)
tasmota 12.5.0
berrydriver 8
adapter 1.1.1
javascript 6.1.4
TS script 4.0.5 ohne Beispiele
Pfade angepasst
nspanel.ts -
-
Ich weiß zwar nicht wie das passiert ist, aber deine Aliase haben so wie es aussieht keine "Channel"!
Müsste so aussehen:
Lösche bitte mal das durch das "Script" erstellte Verzeichnis unter 0_userdata.0. und alias.0.
Danach noch mal das Script ausführen und alle Datenpunkte erneut anlegen lassen.
Welche nodeJS-Version ist im Einsatz? --> In Linux-Console
node -v
ausführenHintergrund: Das Script sucht nach dem Alias
Channel
. Wenn der nicht vorhanden ist, weiß das Script nicht, welches Steuerelement instanziert werden soll...Beispiel rebootNSPanel
- bei mir button
- bei dir folder
EDIT:
Zum Thema trashschedule.0. kann ich dir allerdings nicht helfen, da ich den Adapter nicht benutze. Gibt aber bestimmt zahlreiche User hier mit Beispielen...EDIT2: Kann es sein, dass der Haken setObjects im JS-Adapter (Config) nicht gesetzt ist? Könnte erklären, warum die Channel nicht angelegt werden.
-
@armilar said in SONOFF NSPanel mit Lovelace UI:
setObjects
Danke, war setObjects - was man nicht alles übersehen kann ...
-
@xblades sagte in SONOFF NSPanel mit Lovelace UI:
Frage : kann man Datenpunkte verschachteln bzw. wie?
Bekomme im Trashschedule unter trashschedule.0.next.types nur den Typ, z.b. Wertstofftonne. Die Farbe wäre dann zu finden unter trashschedule.0.type.wertstofftonne.colorwenn du den Abfallkalender nach dem Wiki nachbauen willst, wirst du mit dem Color Probleme bekommen. Der Trash bringt den Color in HEX und das Script benötigt es aber als rgb_dec565. Zusätzlich wird der aktuelle nicht oben stehen auf der Page.
du kannst auch mein Script nutzen, es holt sich die Daten aus dem ical und ist mit dem Wiki konform
-
@tt-tom
Ich möchte eigentlich nur eine color für den Screensaver wie im NSPanel.TS// leftScreensaverEntity 3 (only Advanced Screensaver) { ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityIconOn: 'trash-can', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Abfall', ScreensaverEntityUnitText: '', ScreensaverEntityIconColor: '0_userdata.0.Abfallkalender.1.color'
Ich habe aber im Trash keine color für das nächste Element, sondern nur den Typ, zum Typ gibt es dann wieder eine Color.
Vielleicht so
{val:trashschedule.0.types; val="Wertstofftonne"? 'trashschedule.0.type.wertstofftonne.color': val="Restabfalltonne"? 'trashschedule.0.type.restabfalltonne.color': val="Biotonne"? 'trashschedule.0.type.biotonne.color':'trashschedule.0.type.papiertonne.color'}
Oder
{val:trashschedule.0.types; val="Wertstofftonne"? 'Yellow': val="Restabfalltonne"? 'Red':val="Biotonne"? 'Green':'Blue'}
Keine Idee was da funktionieren könnte und wie es korrekt geschrieben wird - JS ist Neuland.
-
@xblades
Folgendes scheint zu funktionieren :ScreensaverEntityIconColor: getState('trashschedule.0.next.types').val=="Biotonne"?Green:getState('trashschedule.0.next.types').val=="Papiertonne"?Blue:getState('trashschedule.0.next.types').val=="Wertstofftonne"?Yellow:Red
-
@xblades
Deine Trash-Daten kommen doch vom ical - Adapter. Wenn du mein Script nimmst, welches eine Erweiterung aus dem Wiki ist, bekommst du alle Daten für das Panel. Es erstellt auch alle Datenpunkte selber.
Damit kannst du dir eine Page anlegen und auch im Screensaver die Daten anzeigen lassen. Den Trash-Adapter kannst du auch parallel betreiben für die VIS. Bei mir läuft er auch so.
Meine Config für den Screensaver. Der nächste Termin liegt immer in "1.date"// leftScreensaverEntity 3 (only Advanced Screensaver) { ScreensaverEntity: '0_userdata.0.Abfallkalender.1.date', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 0, ScreensaverEntityIconOn: 'trash-can', ScreensaverEntityIconOff: null, ScreensaverEntityText: 'Abfall', ScreensaverEntityUnitText: '', ScreensaverEntityIconColor: '0_userdata.0.Abfallkalender.1.color' },
Für die Page sieht die Config so aus.
let Abfall = <PageEntities> { 'type': 'cardEntities', 'heading': 'Abfallkalender', 'useColor': true, 'items': [ <PageItem>{ id: AliasPath + 'Abfall.event1',icon: 'trash-can'}, <PageItem>{ id: AliasPath + 'Abfall.event2',icon: 'trash-can'}, <PageItem>{ id: AliasPath + 'Abfall.event3',icon: 'trash-can'}, <PageItem>{ id: AliasPath + 'Abfall.event4',icon: 'trash-can'} ] };
Dies soll nur ein Vorschlag für dich sein. schönes Wochenende
-
@tt-tom
Ja, das dürfte passen, ich probier es mal aus. Im Grunde war es eher ein Versuch Daten in den Screensaver zu bekommen. Habe da schon meine Pooltemperatur, das war einfach, da Zahl. Dann wollte ich einfach mal Daten aus dem Trashschedule ausgeben, da finegen die Probleme dann an.
z.B. das Datum liegt als Text vor und ist dort korrekt formatiert. Wenn es an den Screensaver deht detektiert der, dass ein Datum drin ist und formatiert es neu. Folge Tag und Monat sind vertauscht.
Die ScreensaverEntity wird als Zahl interpretiert, da kann man nicht direkt umformatierungen machen.
Das heißt dann ein Script, das Datenpunkte in andere userdata umformatiert, die man dann direkt benutzen kann.
Sowas habe ich im Wiki nicht gelesen - vielleicht auch zu schnell gelesen
Alternativ könnte man alias anlegen mit einer neuen Role und die Role dann im script entsprechend bearbeiten. -
@xblades sagte in SONOFF NSPanel mit Lovelace UI:
Alternativ könnte man alias anlegen mit einer neuen Role und die Role dann im script entsprechend bearbeiten.
Könnte man - aber aus Gründen der Abwärtskompatibilität nicht wirklich die Beste Idee
-
@xblades sagte in SONOFF NSPanel mit Lovelace UI:
z.B. das Datum liegt als Text vor und ist dort korrekt formatiert. Wenn es an den Screensaver deht detektiert der, dass ein Datum drin ist und formatiert es neu. Folge Tag und Monat sind vertauscht.
Die ScreensaverEntity wird als Zahl interpretiert, da kann man nicht direkt umformatierungen machen.
Das heißt dann ein Script, das Datenpunkte in andere userdata umformatiert, die man dann direkt benutzen kann.Wenn das Datum korrekt vorliegt, warum formatierst du es dann noch?
Wenn getDateObject die falschen Daten einsammelt, dann liegt es wohl eher an den Locales des Betriebssystems
-
@thomson Hi Thomson, hast Du die Wlan Karte hinbekommen?
Ich bekomme einen Fehler beim Aufruf der Seitelet WLAN = <PageQR> { 'type': 'cardQR', 'heading': 'Gäste WLAN', 'useColor': true, 'subPage': false, 'items': [<PageItem>{ id: 'alias.0.NSPanel.1.Sonstige.wlan_guest', hidePassword: false }] };
Ich habe unter Userdata einen Datenpunkt angelegt und unter alias darauf verwiesen. Hab meine Wlandaten so eingegeben wie in Deinem Screenshot.
Trotzdem bekomme ich einen Fehler im Skript angezeigt:22:38:33.312 warn javascript.0 (5458) at GenerateQRPage (script.js.NSPanel.Panel1:5487:67) 22:38:33.313 warn javascript.0 (5458) at GeneratePage (script.js.NSPanel.Panel1:3435:29) 22:38:33.313 warn javascript.0 (5458) at HandleButtonEvent (script.js.NSPanel.Panel1:5821:21) 22:38:33.313 warn javascript.0 (5458) at HandleMessage (script.js.NSPanel.Panel1:3370:21) 22:38:33.313 warn javascript.0 (5458) at Object.<anonymous> (script.js.NSPanel.Panel1:3279:25) 22:38:33.313 warn javascript.0 (5458) at step (script.js.NSPanel.Panel1:33:23) 22:38:33.313 warn javascript.0 (5458) at Object.next (script.js.NSPanel.Panel1:14:53) 22:38:33.313 warn javascript.0 (5458) at script.js.NSPanel.Panel1:8:71 22:38:33.313 warn javascript.0 (5458) at __awaiter (script.js.NSPanel.Panel1:4:12) 22:38:33.313 warn javascript.0 (5458) at Object.<anonymous> (script.js.NSPanel.Panel1:3271:12) 22:38:33.314 warn javascript.0 (5458) script.js.NSPanel.Panel1: error at function GenerateQRPage: Cannot read properties of null (reading 'split') 22:38:33.314 warn javascript.0 (5458) script.js.NSPanel.Panel1: error at function SendToPanel: Cannot read properties of undefined (reading 'payload')
Welchen Unterschied macht es, ob man let Wlan oder var Wlan schreibt?
Danke, Roland
-
Ich weiß nicht, ob ich hier ganz richtig bin, falls nicht , entschuldigt meinen Beitrag. Ich habe nur ein paar Fragen :
-
Es scheint zwei Versionen zu geben , eine ältere und eine neuere, wobei nur letztere ohne weiteres in die Unterputzdose passt, stimmt das ? Habe dazu nur flüchtig was bei Recherchen gelesen. Wenn ja, wie erkenne ich die neuere Version? Und gibt es die auch in weiß oder vorerst nur in schwarz?
-
lässt sich das Panel gut als Ersatz für einen normalen Lichtschalter verwenden ? Bei den üblichen Schalterhöhen hängt es doch bisschen zu tief oder ? Wollte einen Lichtschalter am Hauseingang damit ersetzen und mit die Müllabfuhrdaten anzeigen lassen .
Hatte keine Zeit die 3000 Beiträge zu lesen.
-
-
Hast du die Anleitung im Wiki gelesen?
wie heisst dein kompletter Alias Pfad und welche Rolle hat er?
-
@smarthome2020
zu Punkt 1 kann ich dir keine Aussage machen, da ich sie ohne Netzteil nutze. habe ein 3D Gehäuse mit USB Eingang.Zu 2, ja. Als Schalterersatz möglich, aber bei der Einbauhöhe nicht sinnvoll. Und du benötigst den Null-Leiter in der Dose.
-
@smarthome2020 sagte in SONOFF NSPanel mit Lovelace UI:
-
Es scheint zwei Versionen zu geben , eine ältere und eine neuere, wobei nur letztere ohne weiteres in die Unterputzdose passt, stimmt das ? Habe dazu nur flüchtig was bei Recherchen gelesen. Wenn ja, wie erkenne ich die neuere Version? Und gibt es die auch in weiß oder vorerst nur in schwarz?
-
lässt sich das Panel gut als Ersatz für einen normalen Lichtschalter verwenden ? Bei den üblichen Schalterhöhen hängt es doch bisschen zu tief oder ? Wollte einen Lichtschalter am Hauseingang damit ersetzen und mit die Müllabfuhrdaten anzeigen lassen .
Zu 1)
Es würde mich wundern, wenn es mittlerweile noch die NSPanel (eu) aus der ersten Generation (Q4/2021) mit dem "zu großen Netzteil" im Handel geben würde.
Die weißen NSPanel (euw) wurden erst nach Einführung des korrigierten Netzteils in den Handel gebracht. Sollten also immer passen.Zu 2)
Es kommt ein wenig auf die Höhe des Lichtschalters an. Nach DIN 18040 werden Lichtschalter zwischen 85-115 verbaut. Für eine ideale Höhe eines Touchpanels würde ich mindestens 130cm (idealerweise 165cm) veranschlagen. -
-
@tt-tom Danke! Ich habe es versucht aus der Vorlage zu bauen aber wie im Wiki steht kommen viele Neulinge mit den Alaisen nicht zurecht. Jetzt klappt es. Im Script wurde auf "alias.0.NSPanel_1.wlan_guest.ACTUAL" verwiesen. Nachdem ich das ACTUAL gelöscht habe gehts.
Peinliche Frage zu Aliasen: Muss ich die immer über das Menü Geräte anlegen oder geht das auch direkt in den Objekten?
Gibt es die Möglichkeit nach Ablauf des Timers einen Ton zu spielen? Ich meine irgendwo gehört zu haben dass das NSPanel einen Pieper besitzt.
Beim Timer steht auf "CANCLE" statt "CANCEL"
Danke, Roland