NEWS
SONOFF NSPanel mit Lovelace UI
-
Hallo zusammen, erst einmal möchte ich Danke sagen für dieses tolle Projekt und euer aller Engagement. Ich habe mich heute den ganzen Abend durch die verlinkten tutorials und soweit es ging auch durch diesen thread gearbeitet. Leider hänge ich aber immer noch beim Flashen des Nextion TFT. Es passiert einfach nichts wenn ich FlashNextion starte. Ich nutze IOBroker mit aktuellen Adaptern
23:22:24.210 CMD: FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.6.0.tft 23:22:24.222 MQT: SmartHome/NSPanel_DG/stat/RESULT = {"FlashNextion":"Done"} 23:22:24.262 FLH: host: nspanel.pky.eu, port: 80, get: /lovelace-ui/github/nspanel-v3.6.0.tft
-
Was wird auf dem Display angezeigt?
Bild von der Original Firmware? --> Aufschrauben, das Kabel vom Display abstecken wieder einstecken und dann nochmal probieren.
System Data Error --> Es könnte sein, das euer Panel irgendwie in 9600 Baud festhängt, das war zumindest das Problem bei @Markus S.
Ich hab gerade nen weiteren Command zu dem Berry Skript hinzugefügt um das zu testen.- autoexec.be und .bec in tasmota löschen
- autoexec.be mit dem Inhalt von hier (https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be) neu anlegen
- Tasmota neu starten
- Mal mit
FlashNextionAdv6 http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.6.0.tft
probieren.
-
@joBr99 Ja das Bild der Original Firmware (Bei Temperatur und Uhrzeit steht überall 0). Ich habe das Kabel entfernt und wieder angesteckt. Auch mit dem vorgeschlagenen Befehl tut sich nichts. Zum Verständnis: Muss auf dem iobroker bereits etwas eingerichtet sein, damit sich das NSPanel die TFT Datei darüber ziehen kann?
23:51:39.858 QPC: Reset 23:51:41.858 MQT: SmartHome/NSPanel_DG/tele/STATE = {"Time":"2022-12-17T23:51:41","Uptime":"0T00:00:09","UptimeSec":9,"Heap":138,"SleepMode":"Dynamic","Sleep":0,"LoadAvg":204,"MqttCount":1,"Berry":{"HeapUsed":15,"Objects":229},"POWER1":"OFF","POWER2":"ON","Wifi":{"AP":1,"SSId":"FRITZ!Box 7490","BSSId":"7C:FF:4D:84:C1:37","Channel":13,"Mode":"11n","RSSI":100,"Signal":-40,"LinkCount":1,"Downtime":"0T00:00:03"}} 23:51:41.902 MQT: SmartHome/NSPanel_DG/tele/SENSOR = {"Time":"2022-12-17T23:51:41","ANALOG":{"Temperature1":27.4},"TempUnit":"C"} 23:51:46.271 CMD: FlashNextionAdv6 http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.6.0.tft 23:51:46.286 MQT: SmartHome/NSPanel_DG/stat/RESULT = {"FlashNextionAdv":"Done"} 23:51:46.337 FLH: host: nspanel.pky.eu, port: 80, get: /lovelace-ui/github/nspanel-v3.6.0.tft
Edit: Danke an joBr99 für die nächtliche Hilfe: nach dem Downgrade auf Tasmota 12.2.0 funktioniert es
http://ota.tasmota.com/tasmota32/release-12.2.0/tasmota32-nspanel.bin -
So, ich hab Screensaver komplett auf DasWetter.com umgestellt.
Nur noch nicht alle Icons
switch (icon) { case 24: // Ice case 30: // Hot case 31: // Cold return 'window-open'; // exceptional
wie kommst du auf das offenen Fenster?
Noch was, die Wettervorhersage wurde wahrscheinlich im Hochsommer erstellt als "max" wichtig war. Im Winter ist "min" wichtiger.
-
wie kommst du auf das offenen Fenster?
Ist ganz einfach zu erklären:
Ca. 10% vom Code des TypeScript ist nicht von mir... und der gehört dazuFalls du das Wetter auf "Das Wetter" umgestellt hast, hast du es dann nur ersetzt? Oder bist du zweigleisig mit "Schalter" gefahren? Falls 2. Variante, dann könntest du einen Pull Request einstellen. Falls 1. Variante, dann könntest du die vollständige Icon-Übersetzung zur Verfügung stellen (Ist der nervigste Teil, da "Das Wetter" noch weniger Icons hat)
Noch was, die Wettervorhersage wurde wahrscheinlich im Hochsommer erstellt als "max" wichtig war. Im Winter ist "min" wichtiger.
Wenn ich das so richtig interpretiere ist der Code im Februar/März entstanden. Aber mit Blick auf Hochsommertemperaturen. Wenn ich das richtig in Erinnerung habe, dann wird es bei 25° 35° schon enger im Display unter den Wetter-Icons als bei 5° 10°
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Ist der nervigste Teil
das kannst du laut sagen, bin noch immer nicht fertig
Falls du das Wetter auf "Das Wetter" umgestellt hast, hast du es dann nur ersetzt?
mit einen Objekt, Blockly und dein ts angepasst . Geht wahrscheinlich einfacher aber bin nicht so Script, Sprachen und co
Wenn ich mit den Icons fertig bin kann ich alles hier einstellendann wird es bei 25° 35° schon enger im Display unter den Wetter-Icons als bei 5° 10°
mir geht es um min-max. Im Winter ist min wichtiger ;))))
so sieht es aus am Mo wenn wir min -20° und max -10° haben ( ich hoffe es tritt nie auf )
-
habe 3 Varianten eingebaut (Min/Max/MinMax) weil ich die Idee schon gut finde...
so sieht es aus am Mo wenn wir min -20° und max -10° haben ( ich hoffe es tritt nie auf )
Falls das wirklich mal der Fall sein sollte, haben wir ganz andere ProblemeSelbst dann kann ich mir noch denken, dass der 2. Wert dann in °C sein sollte. Und na ja ab 100°C hätten wir auch ein anderes Problem. Denke nicht, dass das Panel dann noch läuft...
EDIT: Ich weiß was du da gerade mit dem Icon-Mapping durchmachst
Habe das auch mal mit unterschiedlichsten Adaptern gemacht und habe mich dann entschieden, dass accuweather doch kein schlechtes Wetter liefertWenn du fertig bist, dann nehme ich das mit auf...
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
haben wir ganz andere Probleme
eigentlich möchte ich später ein Panel im Flur einbauen und das Wetter auf Warnungen ändern, offene Fenster, Licht im Keller, Garage offen, Waschmaschine fertig,... Mit blinkenden Icons.
Aber wie gesagt bin nicht so mit Script, Sprachen und co.
Mal schauen -
Ich wusste doch das da noch ein interessanter Punkt fast untergegangen wäre.
ich habe einen Vorschlag zur Variable "AliasPath:" da diese Variabel auf eine feste Struktur bezieht, denke ich das eine User-Variabel vielleicht auch sinnvoll wäre aller "AliasUserPath" und die vom Panel "AliasPanelPath".
somit muss man nicht alle Geräte unter NSPanel an siedeln und kann eine eigene Struktur nutzen.Hättest du einen Vorschlag? Brauche den in erster Linie für die Auto-Aliase. Das Problem wird sein, dass zum Zeitpunkt der Nutzung nur wenige User die eigene spätere Struktur kennen werden...
-
@armilar Guten Morgen, wir haben hier heute wieder gefrierenden Regen, das Symbol hierzu aus AccuWeather wird nicht korrekt angezeigt. Hatte ich kürzlich auch schon und mich über das Symbol gewundert ....!
20221219_072631.jpg -
Nee, das macht wirklich keinen Sinn...
Also das passendste was ich in den Symbolen finde ist
weather-snowy-rainy
snowflake-alert
snowflake-melt
Da sind alle möglichen Icons drin, die wir verwenden können. Habt ihr einen alternativen Vorschlag?
https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.htmlEDIT: Vorschlag von meiner Seite für extremes Wetter:
function GetAccuWeatherIcon(icon: number): string { try { switch (icon) { case 30: // Hot return 'weather-sunny-alert'; // exceptional case 24: // Ice case 31: // Cold return 'snowflake-alert'; // exceptional
-
@armilar So sieht das Symbol bei AccuWeather aus
Vielleicht könnte das ja jemand "nachbauen", ich hab da leide kein Talent
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Wenn du fertig bist, dann nehme ich das mit auf..
Ich weiß nicht ob du das so übernehmen kannst, eventuell kann man das auch besser oder anders machen.
So habe ich das für ioBroker.DasWetter angepasst.
G für gemeinsamer Ordner
0_userdata.0.NSPanel.G.Wetter.Forecast.json
Blockly
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="=-RD+F[QK[CFGi85zl}}" x="38" y="313"> <field name="OID">daswetter.0.NextDays.Location_1.Day_1.Tag_value</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="c*!Ju/BKs3zP6DRCzE5v"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.DayOfWeek_d1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id="_8GEul]RV!MCmj832jJR"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="1Q~0V{%4?7SdnjRYZmi("> <field name="ATTR">state.val</field> </block> </value> <value name="AT2"> <block type="math_number" id="_d0Q%V{{!V1-u/*Q7XU)"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id=";-6Flm5hUp9pzC^7H):j"> <field name="OID">daswetter.0.NextDays.Location_1.Day_2.Tag_value</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="R+{O%cq!FE_Gz;obS`F2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.DayOfWeek_d2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id=")5hX!4{7cf-F.UM=$]c,"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="rh$1Em2ZfP(1GQ}:}A?h"> <field name="ATTR">state.val</field> </block> </value> <value name="AT2"> <block type="math_number" id="JB]!qg7ckP,7Ks#*lxm@"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id="/mLwGtp0l1b;b7]QytEU"> <field name="OID">daswetter.0.NextDays.Location_1.Day_3.Tag_value</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="zOc(=C^k`T~%lL1?PJ,W"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.DayOfWeek_d3</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id="I/Tpaam{7X?U{:Mm9Of@"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="w?580kCA9NjBy~WX,$N["> <field name="ATTR">state.val</field> </block> </value> <value name="AT2"> <block type="math_number" id="Z,Vo.^+X76j;^UEX^/VL"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id="4_,LD@)ocp=]uODVT$sk"> <field name="OID">daswetter.0.NextDays.Location_1.Day_4.Tag_value</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="|FL*e6#][CntdDwO46_|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.DayOfWeek_d4</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id=";$i5U,UkHj]zxN~PDXh:"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="{@:jT?@JQ-m[Pm^Jgq)?"> <field name="ATTR">state.val</field> </block> </value> <value name="AT2"> <block type="math_number" id="!A:jeQLW/oxAtu#SKoi,"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on" id="fHXwq#%}ub%!WD)h(rG_"> <field name="OID">daswetter.0.NextDays.Location_1.Day_5.Tag_value</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="DkLTxs{NiV[6ip)23}(?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.DayOfWeek_d5</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_getSubstring" id="{U,1E=WT41-Yrc1percp"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="3yFRKzn`+C3s:hC+DH8l"> <field name="ATTR">state.val</field> </block> </value> <value name="AT2"> <block type="math_number" id="?UL9h5yXmQij6+yUaMqe"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="hr9S!iFGa$x}CT8C13g+"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="]_mN3!v8YmD.EkFz/N4D"> <field name="oid">default</field> </shadow> <block type="field_oid" id="p4eV.mdO4egtx}j,0qL1"> <field name="oid">daswetter.0.NextDays.Location_1.Day_1.Minimale_Temperatur_value</field> </block> </value> <value name="OID1"> <shadow type="field_oid" id="zLviln}e!*{$r~B9%7hr"> <field name="oid">default</field> </shadow> <block type="field_oid" id="bu;|FvkK!P?KSY|vjeXR"> <field name="oid">daswetter.0.NextDays.Location_1.Day_1.Maximale_Temperatur_value</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="7D2p`xlQ}.1!{)KQCHc)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.Temp_d1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="nhrPB?uW?H/(ArSiYm/p"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value" id="]E9GyMuKRru+#h#H9hHY"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_1.Minimale_Temperatur_value</field> </block> </value> <value name="ADD1"> <block type="text" id="Qy3nrsHc8gQ?M+vP8})%"> <field name="TEXT">° </field> </block> </value> <value name="ADD2"> <block type="get_value" id="e1,HZp}}{p_YZ8vnp,y@"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_1.Maximale_Temperatur_value</field> </block> </value> <value name="ADD3"> <block type="text" id="n:*Ah5^kMm^y{zRD_0YO"> <field name="TEXT">°</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id=":R#aX)$()T@VOSEj{2C]"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="YmttR63CnzYUPRpv)I}r"> <field name="oid">daswetter.0.NextDays.Location_1.Day_2.Minimale_Temperatur_value</field> </block> </value> <value name="OID1"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="xx7Lf%Tcy[=BOEjTzs#w"> <field name="oid">daswetter.0.NextDays.Location_1.Day_2.Maximale_Temperatur_value</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="WXQJca7bak+dyJt]-u?m"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.Temp_d2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id=")w^CFKmAr~I01WE9N.g+"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value" id="a6}pqsYbzKY4[~{#t.7M"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_2.Minimale_Temperatur_value</field> </block> </value> <value name="ADD1"> <block type="text" id="7SOCJ-cva$?8]VlL7%9m"> <field name="TEXT">° </field> </block> </value> <value name="ADD2"> <block type="get_value" id=")7YAJ?sYei6t^#B|A;f8"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_2.Maximale_Temperatur_value</field> </block> </value> <value name="ADD3"> <block type="text" id="WY:d$xZpTx0FhUkaA@i}"> <field name="TEXT">°</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="}2k;tXY/$/#|X{{#[vZt"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="Y0QjXc4nGv@5})+-9Eu?"> <field name="oid">daswetter.0.NextDays.Location_1.Day_3.Minimale_Temperatur_value</field> </block> </value> <value name="OID1"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="_Rnj}*fX~5%Pk|V1[B!|"> <field name="oid">daswetter.0.NextDays.Location_1.Day_3.Maximale_Temperatur_value</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="*k`K.u~rN-^6;9T#$oKq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.Temp_d3</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="hoKVI[-W:W*H14C)TWQ^"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value" id="raBJS2okpTrvx)2A8@8A"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_3.Minimale_Temperatur_value</field> </block> </value> <value name="ADD1"> <block type="text" id="uJ#FwWOMgyPWZ:OS7LgK"> <field name="TEXT">° </field> </block> </value> <value name="ADD2"> <block type="get_value" id="1-7u|$?tZ?_s9Ydi`(]Z"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_3.Maximale_Temperatur_value</field> </block> </value> <value name="ADD3"> <block type="text" id="c?yE|X8n#T6tDSX|4LXs"> <field name="TEXT">°</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="8g-#XIB(N9jv$hC[Yw=;"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="g%Z]q]{a:[H4gr^.ix=U"> <field name="oid">daswetter.0.NextDays.Location_1.Day_4.Minimale_Temperatur_value</field> </block> </value> <value name="OID1"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="B3m)BKz[=lYLR715*6V2"> <field name="oid">daswetter.0.NextDays.Location_1.Day_4.Maximale_Temperatur_value</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="N7cXvS8dhb?Y*=W6sn0E"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.Temp_d4</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="fJhfgM{e-CF~cCwcQk00"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value" id="Vu=8[w!{JR*sNdQ/m6P+"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_4.Minimale_Temperatur_value</field> </block> </value> <value name="ADD1"> <block type="text" id="$j24q%$+J#3*I/$~ZyE^"> <field name="TEXT">° </field> </block> </value> <value name="ADD2"> <block type="get_value" id="|6s^?i.d!V2u@+PWt{O/"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_4.Maximale_Temperatur_value</field> </block> </value> <value name="ADD3"> <block type="text" id="/:mxs+P1Nq-i24[pn(5S"> <field name="TEXT">°</field> </block> </value> </block> </value> </block> </statement> <next> <block type="on_ext" id="NZPjB4`YG$%O`FWT(sqi"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="sp+DT5@tY,7VSR3F,NN~"> <field name="oid">daswetter.0.NextDays.Location_1.Day_5.Minimale_Temperatur_value</field> </block> </value> <value name="OID1"> <shadow type="field_oid"> <field name="oid">default</field> </shadow> <block type="field_oid" id="~g:Q]oXI2|SQuWew7L8k"> <field name="oid">daswetter.0.NextDays.Location_1.Day_5.Maximale_Temperatur_value</field> </block> </value> <statement name="STATEMENT"> <block type="update" id=":GwX/U.w%qZDXK#dqb4="> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.NSPanel.O.Wetter.Forecast.Temp_d5</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="T4@e*m+DGlTihrI]wu5X"> <mutation items="4"></mutation> <value name="ADD0"> <block type="get_value" id="q[K(SS~4%a0i8qaJAZA1"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_5.Minimale_Temperatur_value</field> </block> </value> <value name="ADD1"> <block type="text" id="-YkhgoP|tsv%%[W=jE-d"> <field name="TEXT">° </field> </block> </value> <value name="ADD2"> <block type="get_value" id="0Q!Efuo@4F-4~SnYYUTW"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextDays.Location_1.Day_5.Maximale_Temperatur_value</field> </block> </value> <value name="ADD3"> <block type="text" id="Yd9Ie]0i9rn9NfbyV?Hl"> <field name="TEXT">°</field> </block> </value> </block> </value> </block> </statement> <next> <block type="direct" id="KzblwI)x?RW`H-5yV73A"> <field name="ONLY_CHANGES">TRUE</field> <value name="OID_SRC"> <shadow type="field_oid" id="bN4X7{`q2d@NG0{SIQ]S"> <field name="oid">daswetter.0.NextDays.Location_1.Day_1.Wetter_Symbol_id</field> </shadow> </value> <value name="OID_DST"> <shadow type="field_oid" id="sZGMk$?^.s8^3H-%LqLK"> <field name="oid">0_userdata.0.NSPanel.O.Wetter.Forecast.WeatherIcon_d1</field> </shadow> </value> <next> <block type="direct" id="8Q1l.suz9WwoTLDktvd["> <field name="ONLY_CHANGES">TRUE</field> <value name="OID_SRC"> <shadow type="field_oid" id="M|rrkRs(ou6Z?BiOg}JX"> <field name="oid">daswetter.0.NextDays.Location_1.Day_2.Wetter_Symbol_id</field> </shadow> </value> <value name="OID_DST"> <shadow type="field_oid" id="@o%#41lIto[u3Akk}MX}"> <field name="oid">0_userdata.0.NSPanel.O.Wetter.Forecast.WeatherIcon_d2</field> </shadow> </value> <next> <block type="direct" id="OoG#WhvB91K%9WJ|1{W="> <field name="ONLY_CHANGES">TRUE</field> <value name="OID_SRC"> <shadow type="field_oid" id="eO/5Ld74N^t[N8=]8xZ]"> <field name="oid">daswetter.0.NextDays.Location_1.Day_3.Wetter_Symbol_id</field> </shadow> </value> <value name="OID_DST"> <shadow type="field_oid" id="(C4LPXIL:Q]l?:pa5Qvi"> <field name="oid">0_userdata.0.NSPanel.O.Wetter.Forecast.WeatherIcon_d3</field> </shadow> </value> <next> <block type="direct" id="}B3%_j_I0sqiA5$1=%]["> <field name="ONLY_CHANGES">TRUE</field> <value name="OID_SRC"> <shadow type="field_oid" id="a8Flm@;PvUlP8j444m}t"> <field name="oid">daswetter.0.NextDays.Location_1.Day_4.Wetter_Symbol_id</field> </shadow> </value> <value name="OID_DST"> <shadow type="field_oid" id="Gq-SCr;8?OC^Q{l*nEXD"> <field name="oid">0_userdata.0.NSPanel.O.Wetter.Forecast.WeatherIcon_d4</field> </shadow> </value> <next> <block type="direct" id="]-ejTmSb]UnE-DVzn;]J"> <field name="ONLY_CHANGES">TRUE</field> <value name="OID_SRC"> <shadow type="field_oid" id=".03|%d/1f2ae6^5y:.Ap"> <field name="oid">daswetter.0.NextDays.Location_1.Day_5.Wetter_Symbol_id</field> </shadow> </value> <value name="OID_DST"> <shadow type="field_oid" id="X,n)52(ou^RCo10Ixp%C"> <field name="oid">0_userdata.0.NSPanel.O.Wetter.Forecast.WeatherIcon_d5</field> </shadow> </value> </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> </xml>
Angepasster ts
if (weatherForecast) { // AccuWeather Forecast Tag 2 - Tag 5 -- Wenn weatherForecast = true for (let i = 2; i < 6; i++) { let TempMax = getState('0_userdata.0.NSPanel.G.Wetter.Summary.TempMax_d' + i).val; let DayOfWeek = getState('0_userdata.0.NSPanel.G.Wetter.Summary.DayOfWeek_d' + i).val; let WeatherIcon = GetAccuWeatherIcon(getState('0_userdata.0.NSPanel.G.Wetter.Summary.WeatherIcon_d' + i).val); vwIconColor[i-1] = GetAccuWeatherIconColor(getState('0_userdata.0.NSPanel.G.Wetter.Summary.WeatherIcon_d' + i).val); if (Debug) { console.log(vwIconColor[i - 1]); } payloadString += DayOfWeek + '~' + Icons.GetIcon(WeatherIcon) + '~' + TempMax + '~'; }
und die daswetter Icons
function GetAccuWeatherIcon(icon: number): string { try { switch (icon) { case 1: // Sonnig return 'weather-sunny'; // sunny case 2: // Teils bewölkt case 3: // Bewölkt return 'weather-partly-cloudy'; // partlycloudy case 4: // Bedeckt return 'weather-cloudy'; // cloudy case 5: // Teils bewölkt mit leichtem Regen case 6: // Bewölkt mit leichtem Regen case 8: // Teils bewölkt mit mäßigem Regen case 9: // Bewölkt mit mäßigem Regen return 'weather-partly-rainy'; // partly-rainy case 7: // Bedeckt mit leichtem Regen return 'weather-rainy'; // rainy case 10: // Bedeckt mit mäßigem Regen return 'weather-pouring'; // pouring case 11: // Teils bewölkt mit starken Regenschauern case 12: // Bewölkt mit stürmischen Regenschauern return 'weather-partly-lightning'; // partlylightning case 13: // Bedeckt mit stürmischen Regenschauern return 'weather-lightning'; // lightning case 14: // Teils bewölkt mit stürmischen Regenschauern und Hagel case 15: // Bewölkt mit stürmischen Regenschauern und Hagel case 16: // Bedeckt mit stürmischen Regenschauern und Hagel return 'weather-hail'; // Hail case 17: // Teils bewölkt mit Schnee case 18: // Bewölkt mit Schnee return 'weather-partly-snowy'; // partlysnowy case 19: // Bedeckt mit Schneeschauern return 'weather-snowy'; // snowy case 20: // Teils bewölkt mit Schneeregen case 21: // Bewölkt mit Schneeregen return 'weather-partly-snowy-rainy'; case 22: // Bedeckt mit Schneeregen return 'weather-snowy-rainy'; // snowy-rainy default: return 'alert-circle-outline'; } } catch (err) { console.warn('GetAccuWeatherIcon: '+ err.message); } } function GetAccuWeatherIconColor(icon: number): number { try{ switch (icon) { case 1: // Sonnig return rgb_dec565(swSunny); case 2: // Teils bewölkt case 3: // Bewölkt return rgb_dec565(swPartlycloudy); case 4: // Bedeckt return rgb_dec565(swCloudy); case 5: // Teils bewölkt mit leichtem Regen case 6: // Bewölkt mit leichtem Regen case 8: // Teils bewölkt mit mäßigem Regen case 9: // Bewölkt mit mäßigem Regen return rgb_dec565(swRainy); case 7: // Bedeckt mit leichtem Regen return rgb_dec565(swRainy); case 10: // Bedeckt mit mäßigem Regen return rgb_dec565(swPouring); case 11: // Teils bewölkt mit starken Regenschauern case 12: // Bewölkt mit stürmischen Regenschauern return rgb_dec565(swLightningRainy); case 13: // Bedeckt mit stürmischen Regenschauern return rgb_dec565(swLightning); case 14: // Teils bewölkt mit stürmischen Regenschauern und Hagel case 15: // Bewölkt mit stürmischen Regenschauern und Hagel case 16: // Bedeckt mit stürmischen Regenschauern und Hagel return rgb_dec565(swHail); case 17: // Teils bewölkt mit Schnee case 18: // Bewölkt mit Schnee return rgb_dec565(swSnowy); case 19: // Bedeckt mit Schneeschauern return rgb_dec565(swSnowy); case 20: // Teils bewölkt mit Schneeregen case 21: // Bewölkt mit Schneeregen return rgb_dec565(swSnowyRainy); // snowy-rainy case 22: // Bedeckt mit Schneeregen return rgb_dec565(swSnowyRainy); default: return rgb_dec565(White); } } catch (err) { console.warn('GetAccuWeatherIconColor: '+ err.message); } } Mit den Farben bin ich mir nicht sicher :grin:
-
Du kannst nur Symbole aus der Datei nehmen.
Da sind wir eingeschränkt. Aber besonders clever gewählt ist das Symbol von accuweather ja nun auch nicht
-
@vumer sagte in SONOFF NSPanel mit Lovelace UI:
Ich weiß nicht ob du das so übernehmen kannst, eventuell kann man das auch besser oder anders machen.
Für mich sind nur die Übersetzungen interessant. Werde eine Adapter-Weiche als Schalter einbauen und in die entsprechenden Adapter-Inhalte und Icon-Übersetzungen setzen.
Produktiv werde ich das wahrscheinlich nicht nutzen, da "Das Wetter" zumindest für meinen Standort nicht besonders gute Werte liefert. Aber bei anderen kann das schon wieder anders aussehen.
-
Wer hat den Erfahrung mit der Thermostat Steuerung?
Ich habe Homematic HM-CC-RT-DN und bekomm die Steuerung der Modi nicht in den Griff.
Vielleicht hat jemand einen Denkanstoß für mich. -
Wie sehen denn die Datenpunkte vom HM-CC-RT-DN aus? Und ein kleiner Blick auf die möglichen Werte für Modi...
-
@vumer sagte in SONOFF NSPanel mit Lovelace UI:
Ich weiß nicht ob du das so übernehmen kannst
So habe den "Das Wetter"-Adapter als Alternative zum "AccuWeather" dann noch kurzerhand eingebaut. Falls jemand Interesse hat, kann ich noch eine 3.6.0.5 auskoppeln. Dann bitte kurz bescheid sagen.
Greift dann auf die Icon-Übersetzungen (Symbole/Symbolfarben) von @Vumer zu. Ebenfalls werden dann Temperaturen (Min/Max) vom "Das Wetter"-Adapter genommen.
Zusätzliches Blockly ist daher nicht erforderlich...
Auch der AutoAlias für das Wetter unterscheidet somit den gewählten Adapter.
Kleine Info.
Der Adapter "Das Wetter" hat offensichtlich eine multilinguale Übertragung der Datenpunkte, was per sé nicht sonderlich clever gelöst ist. In anderen Sprachen (neben deutsch) ist dann evtl. eine Übersetzung der Datenpunkte erforderlich...EDIT:
@Vumer: Bislang sehen die Farben ganz okay aus... Ich lasse den auch aktuell mitlaufen... -
Hi, hier fehlt mir irgendwie noch der Bezug dazu, wie die Datenpunkte Einfluss auf das Thermostat haben.
'Mode wird über externe Datenpunkte gesteuert. Hierzu legst du dir unter 0_userdate.0. einen Ordner deiner Wahl an. In diesem Ordner können jetzt bis zu 5 Datenpunkte (Alle vom Typ boolean (true/false)) angelegt werden:"Der Control_Mode ist nur lesbar.
{ "type": "state", "common": { "name": "HZ Wohnzimmer:4.CONTROL_MODE", "type": "number", "role": "indicator", "def": 0, "min": 0, "max": 3, "read": true, "write": false, "states": { "0": "AUTO-MODE", "1": "MANU-MODE", "2": "PARTY-MODE", "3": "BOOST-MODE" }, "smartName": { "de": "Hm cc rt dn oeq0667828:4 control mode" } }, "native": { "CONTROL": "HEATING_CONTROL.CONTROL_MODE", "ID": "CONTROL_MODE", "TYPE": "ENUM", "UNIT": "", "DEFAULT": 0, "FLAGS": 1, "MAX": 3, "MIN": 0, "OPERATIONS": 5, "TAB_ORDER": 0, "VALUE_LIST": [ "AUTO-MODE", "MANU-MODE", "PARTY-MODE", "BOOST-MODE" ] }, "_id": "hm-rpc.0.OEQ0667828.4.CONTROL_MODE", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1669474641018 }
Eine weitere Frage, die Subpages von ServicePage "NSPanel Service" sind bei mir leer. Muss da auch was Manuel angelegt werden?
"Service Pages mit Auto-Alias (Nachfolgende Seiten werden mit Alias automatisch angelegt)" -
Muss erstmal die Logik von den Dingern verstehen (Da ist jeder Adapter unterschiedlich):
AUTO_MODE true =AUTO=0
AUTO_MODE false=MANU=1
BOOST_MODE true=BOOST=3Wie wird denn der Party Modus aktiviert? Wird der benötigt?
SET_TEMPERATUR = Setpoint = SET
BATTERY_STATE (in V) benötigt für LOWBAT eine Übersetzung (z.B. < 2.5V = LOWBAT true)
FAULT_REPORTING > 0 = Fehler / = 0 = kein FehlerACTUAL = aktuelle Raumtemperatur entweder vom Panels-sensor oder externer Sensor
Soll sonst noch etwas abgebildet werden?
Zur 2. Frage:
Welche Subpages sind denn in der Config unter Subpages eingetragen?