@andreas_z sagte in SONOFF NSPanel mit Lovelace UI:
Display hat keine Lust etwas anzuzeigen, außer "Waiting for content"
Hallo zusammen,
zunächst einmal vielen Dank an alle Mitwirkenden für dieses hervorragende NsPanel Projekt und die sehr gute Zusammenstellung der Thematik.
Ich gehöre auch zu den Leidtragenden, die den "hula hoob Reifen" und "Waiting for content" nicht los werden. Meinen ersten Aufruf des Skripts habe ich, nachdem die Voraussetzungen und Vorarbeiten getan und erfüllt waren, zu dem Zeitpunkt gemacht, als es die Probleme mit der Klasse "IconsSelektor" / "icon_mapping" als globales TS Skript auftraten.
@andeas_z zitiere ich an der Stelle, weil meine bisherigen Erfahrungen und Probleme vergleichbar sind. Das Notepad++ Problem habe ich nicht. Ich verende einen Linux Desktop und die Editor Codepage Einstellung ist unicode UTF8. Das Transferproblem in den Java Skript Adapter kann ich ausschließen.
Es ist mir auch gelungen das NsPanel dazu zu bewegen etwas anderes als "Waiting for content" anzuzeigen (siehe Fotos). Das Ergebnis kann ich jederzeit reproduzieren, habe aber keine gesicherte Erklärung, sonder nur eine Vermutung hierfür.
Zunächst die Fotos:




Das Besondere an der Sache ist, zum Zeitpunkt, als ich die Fotos machte, ist das TS Skript nicht gelaufen. Allerdings war das NsPanel via Tasmota und Mqtt mit dem laufenden IoBroker verbunden. Ich vermute aber, dass ich die Anzeige auch provozieren kann, wenn der IoBroker nicht läuft (noch nicht getestet). Das selbe Ergebnis kann man auch bei laufenden NsPanel TS Skript erzwingen. In der Tasmota Konsole und im Mqtt.0 kommen auch die entsprechenden Events an, wen man auf die jeweiligen Displayobjekte drückt.
Wie bringt man das NsPanel dazu, "Waiting for content" zu verlassen?
Einfach mehrere, schnell hintereinander durchgeführte Berührungen auf den Touchscreen machen, bis der Screen (Foto 2) angezeigt wird. Von dort kann man dann weiter navigieren. In meinem Fall werden die Ereignisse in Tasmota / Mqtt sichtbar. Das TS Skript reagiert aber nicht darauf.
Meine spekulative Vermutung
Durch den Bug, dass TS Skripts nicht im globalen Umfeld korrekt laufen, kam es, in meinem Fall, zum Abbruch des NsPanel Skripts, wobei Fragmente der Screens im Flash-Speicher bereits geladen wurden, die man mit obiger Methode anzeigen kann. Den Bug bin ich umgangen, indem ich die Klasse und Funktion IconsSelektor im NsPanel Skript implementiert habe. Wobei ich nur die Icons übernommen habe, die auch vom Skript verwendet werden. Danach konnte ich mit dem NsPanel Skript weiter testen. Es ist sehr wahrscheinlich, dass ich die Bearbeitung des NsPanel Scripts nicht vollständig und korrekt abgeschlossen hatte, als das Skript dann ohne Abbruch lief.
Gibt es eine Methode die Fragmente aus dem User Flash Speicher wieder zu löschen (ClearUserMemory)?
Die Neuinstallation inkl. Flashen ist, wie bei @andeas_z, erfolglos verlaufen. Der Flash Prozess wurde bei mir auch bei 90% gestartet. Die in den Fotos gezeigten Inhalte sind nicht verschwunden.
Über meine bisherigen Aktivitäten habe ich folgendes Protokoll erstellt.
TopGoal, 23.09.2020:
Protokoll:
Installation, Aktivitäten und Tests
zum Sonoff NsPanel (Tasmota / Berry-Driver)
Allgemeines, Ressourcen und Quellen
-----------------------------------
HDW: ESP32-D0WD-V3
UFS: FlashFS mounted with 280 kB free
CFG: Loaded from File, Anzahl 415
QPC: Count 1
BRY: Berry initialized, RAM used=3735 bytes
Projekt tasmota - SoNsP99 Version 12.1.1(tasmota)-2_0_4_1(2022.08.25 11:41:45)
NXP: Initializing Driver
BRY: Successfully loaded 'autoexec.be'
WIF: verbinden mit AP1 FBF7390-5 Channel 1 BSSId 34:31:C4:XX:XX:XX in Modus 11n als LeupoldsPub-SoNsP99-1988...
RSL: RESULT = {"CustomRecv":"event,startup,42,eu"}
WIF: verbunden
IoBroker Installation
---------------------
Plattform: linux
Betriebssystem: linux - Ubuntu Server 22.04 LTS
Architektur: arm64
Modell: Raspberry Pi 4 / 8 GB Ram
(Keine Sd-Card, SSD boot, 128 GB)
Node.js: v14.20.1
NPM: 6.14.17
Admin.0: v6.2.22
AccuWeather.0: v1.2.1
JS-Controller.0: 4.0.23
Mqtt.0: IOB/Client-Mode, Port 1883
Mqtt Broker: Mosquitto 2.0.15 (Ubuntu Snap App.)
Der Mqtt-Broker läuft auf einem anderen Server
im LAN/WLAN (Ubuntu Server 22.04 LTS), Port 1883
Mqtt Explorer 0.3.5 (Client, Port 1883)
Als Testhilfe und zum Prüfen der Topics auf dem Mosquitto Broker.
Über den Explorer wurde:
LeupoldsPub/SoNsP99/cmnd/CustomSend
an den Mosquitto Broker published. Der IOB-Mqtt.0 Client hat die Topicstruktur sauber
übernommen (aboniert).
=============================================================================================
TypeScript v3.4.0.5 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar/@Britzelpuf
- abgestimmt auf TFT 42 / v3.4.0 / BerryDriver 4 / Tasmota 12.1.1
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
icon_mapping.ts: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts (TypeScript muss in global liegen)
ioBroker-Unterstützung:
https://forum.iobroker.net/topic/58170/sonoff-nspanel-mit-lovelace-ui
https://forum.iobroker.net/topic/50888/sonoff-nspanel
https://forum.iobroker.net/topic/50888/sonoff-nspanel/612?_=1664024536560
WIKI zu diesem Projekt unter:
https://github.com/joBr99/nspanel-lovelace-ui/wiki (siehe Sidebar)
=============================================================================================
TopGoal, 26.09.2022
Testweise Änderungen im TypeScript NsP99-Layout (Basis GitHub: v3.4.0.5)
Zeile 1012 url: `http://${get_current_tasmota_ip_address()}/cm?cmnd=Status0`,
geändert in: url: `http://${get_current_tasmota_ip_address()}/cm?cmnd=Status 0`,
Die Änderung führt dazu, dass alle Objektinformationen in der Rückgabemenge enthalten sind!
??????Im Falle von "cmnd=Status0" werden gefilterte Objete nicht mit Daten versorgt???????
SendToPanel bekommt Daten.
--------------------------
Die Seite cardEntities wird aufgebaut: "NSPanel Service"
javascript.0 2022-09-26 14:21:16.020 info script.js.NsPanels.NSP99-Layout: entityUpd~NSPanel Service~0|1~delete~~~~~~button~navigate.NSPanel_Infos~~65535~NSPanel Infos~PRESS~button~navigate.NSPanel_Firmware_Updates~~65535~Manuelle-Updates~PRESS~button~navigate.NSPanel_Einstellungen~~65535~Einstellungen~PRESS
javascript.0 2022-09-26 14:21:16.020 info script.js.NsPanels.NSP99-Layout: pageType~cardEntities
javascript.0 2022-09-26 14:21:16.019 info script.js.NsPanels.NSP99-Layout: Zeile 1285: SendToPanel wird ausgeführt!
Icons werden geholt!
javascript.0 2022-09-26 14:21:16.019 info script.js.NsPanels.NSP99-Layout: Zeile 0146: ma_name --> wrench-outline
javascript.0 2022-09-26 14:21:16.018 info script.js.NsPanels.NSP99-Layout: Zeile 0146: ma_name --> update
javascript.0 2022-09-26 14:21:16.017 info script.js.NsPanels.NSP99-Layout: Zeile 0146: ma_name --> information-outline
javascript.0 2022-09-26 14:21:16.014 info script.js.NsPanels.NSP99-Layout: 0
TopGoal, 25.09.2022
Berry_Driver: Datentype --> String:
===================================
State value to set for "0_userdata.0.NSPanel.99.Berry_Driver.currentVersion" has to be type "number" but received type "string"
You are assigning a string to the state "0_userdata.0.NSPanel.99.Berry_Driver.currentVersion" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.
0_userdata.0.NSPanel.99.Berry_Driver.currentVersion ---> von Zahl auf Zeichenkette geändert!
In das Coding habe ich zusätzlich Debug Punkte eingefügt, um zu Erkenntnissen zu gelangen, was möglicherweise nicht korrekt läuft.
Dieser Punkt sollte von den Entwicklern mal in die Beta Version übernommen und getestet werden.
TopGoal, 26.09.2022
Testweise Änderungen im TypeScript NsP99-Layout (Basis GitHub: v3.4.0.5)
Zeile 1012 url: `http://${get_current_tasmota_ip_address()}/cm?cmnd=Status0`,
geändert in: url: `http://${get_current_tasmota_ip_address()}/cm?cmnd=Status 0`,
Die Änderung führt dazu, dass alle Objektinformationen in der Rückgabemenge enthalten sind!
??????Im Falle von "cmnd=Status0" werden gefilterte Objete nicht mit Daten versorgt???????
In der zugehörigen Funktion werden mehrere Status Kategorien aus Tasmota gefiltert und dann Datenobjekte bewertet. Der Aufruf "cmnd=Status0" liefert aber nicht die erwarteten Kategorien, was u.U. zu Folgefehlern führen kann. Wenn man in der Tasmota Konsole Statu0 und dann Status 0 eingibt, werden die Unterschiede deutlich.
Für jeden Tipp, der mir hilft, das NsPanel ans Laufen zu bringen, bin ich außerordentlich dankbar.
Viele Grüße
TopGoal