NEWS
SONOFF NSPanel mit Lovelace UI
-
Okay, ich fasse mal für die ScreensaverNotify zusammen:
- Wechsel zwischen ScreensaverEntities und Wetter ist aktiv und wechselt auch (ganz normal)
- Das Blockly-Script schreibt in vorhandene Datenpunkte des Panels:
- Werte stehen nicht im NSPanel (Panel verhält sich, als hätte es keine Info bekommen)
- Datenpunkte werden geleert, wenn Klick auf Screensaver.
Konnte es mit der 3.9.0 bislang nicht reproduzieren. Funktioniert...
- Kam das Verhalten mit einer Versionsänderung?
- Welche Version des Scriptes ist aktuell installiert?
Die ausführende Funktion zur Nachrichtenübermittlung ist die
async function InitPopupNotify()
Das ist eigentlich nur ein Trigger, der wenn er Werte in einen der Datenpunkte sieht, diese an das Panel übersendet.
Jetzt wäre mal 2 Dinge interessant zu wissen:
- Was steht in dem CustomSend Datenpunkt des MQTT, wenn die Datenpunkte geschrieben wurden (evtl. mal kurz aufzeichnen, falls due History, SQL oder InfluxDB verwendest)
- Wenn du:
ausführst, ist das dann immer noch so?FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.9.4.tft
EDIT: Das Blockly scheint in Ordnung zu sein. Es schreibt ja Werte in den Datenpunkt und das soll es ja auch. Dem Script ist es auch völlig egal, was da reingeschrieben wird. Solange kein Klick auf den Screensaver erfolgt, bleiben diese Daten ja auch vorhanden!
Der Transport zum Panel ist hier der entscheidende Punkt oder die TFT-Version. Kann ja durchaus sein, dass bei den Veränderungen mit dem Screensaver2 in einer bestimmten TFT etwas nicht in Ordnung war.
-
@armilar
Ich hab gestern Script + TFT + Tasmota + Berrydriver geupdated (unter anderem wegen der Zickerei mit dem Müllscript). Ich hatte noch 3.6 laufen wo es nicht funktioniert hat. Bin mir nicht sicher ob bei 3.4 oder 3.5 die Funktion dann versagt hat.
Ich kann jetzt auch von Hand eintragen was ich will und bekomme keinen Output mehr. Das kann ich natürlich mal aufnehmen. Vieleicht sieht man da was. -
Ja kurz den Austausch über CustomSend zeigen, also aktuell dann auf der 3.9.0.4?
Das Script produziert auch keine Warnungen oder Fehler im Log?
-
@armilar Ja Skript ist Stand gestern von Github, Berrydriver 8, TFT 49.
Edit:
Also es sieht stark danach aus das mein Skript zwar die Werte einträgt, das aber keinen Notify-Aufruf ausgeführt wird.
So schaut es aus wenn ich Manuell etwas eintrage:
So schaut es aus wenn mein Blocky um 11:37 gelaufen ist.
Erst der Screensaver-Verlauf:
Hier der CustomSend-Verlauf:
Da wird irgendwie nix getriggert.. was ist denn der Unterschied wenn ich per Skript da reinschreibe?
-
mir ist bei der popupNotify auch aufgefallen.
// Notification to screensaver on({ id: [screensaverNotifyHeading, screensaverNotifyText], change: 'ne', ack: false }, async (obj) => { const heading = getState(screensaverNotifyHeading).val; const text = getState(screensaverNotifyText).val; setIfExists(config.panelSendTopic, `notify~${heading}~${text}`); if (obj.id) { await setStateAsync(obj.id, <iobJS.State>{ val: obj.state.val, ack: true }); // ack new value } }); // popupNotify - Notification an separate Seite on({ id: [popupNotifyInternalName], change: 'ne' }, async () => { let notification: string; let v_popupNotifyHeadingColor = (getState(popupNotifyHeadingColor).val != null) ? getState(popupNotifyHeadingColor).val : '65504'// Farbe Headline - gelb 65504 let v_popupNotifyButton1TextColor = (getState(popupNotifyButton1TextColor).val != null) ? getState(popupNotifyButton1TextColor).val : '63488'// Farbe Headline - gelb 65504 let v_popupNotifyButton2TextColor = (getState(popupNotifyButton2TextColor).val != null) ? getState(popupNotifyButton2TextColor).val : '2016'// Farbe Headline - gelb 65504 let v_popupNotifyTextColor = (getState(popupNotifyTextColor).val != null) ? getState(popupNotifyTextColor).val : '65535'// Farbe Headline - gelb 65504 let v_popupNotifyIconColor = (getState(popupNotifyIconColor).val != null) ? getState(popupNotifyIconColor).val : '65535'// Farbe Headline - gelb 65504 let v_popupNotifyFontIdText = (getState(popupNotifyFontIdText).val != null) ? getState(popupNotifyFontIdText).val : '1' let v_popupNotifyIcon = (getState(popupNotifyIcon).val != null) ? getState(popupNotifyIcon).val : 'alert' notification = 'entityUpdateDetail' + '~' + getState(popupNotifyInternalName).val + '~' + getState(popupNotifyHeading).val + '~' + v_popupNotifyHeadingColor + '~' + getState(popupNotifyButton1Text).val + '~' + v_popupNotifyButton1TextColor + '~' + getState(popupNotifyButton2Text).val + '~' + v_popupNotifyButton2TextColor + '~' + getState(popupNotifyText).val + '~' + v_popupNotifyTextColor + '~' + getState(popupNotifySleepTimeout).val; if (getState(popupNotifyLayout).val == 2) { notification = notification + '~' + v_popupNotifyFontIdText + '~' + Icons.GetIcon(v_popupNotifyIcon) + '~' + v_popupNotifyIconColor; } setIfExists(config.panelSendTopic, 'pageType~popupNotify'); setIfExists(config.panelSendTopic, notification); });
Wenn du mehrfach nacheinander ein Ereignis hast was den gleichen InternalName verwendet (bspw. Abfall), dann erscheint die Seite nicht mehr.
Abhilfe schafft nur wenn ne => durch any zu ersetzt
on({ id: [popupNotifyInternalName], change: 'any' }, async () => {
Das gleiche "Problem" hast du auch beim popupNotifyHeading und screensaverNotifyText , wenn dort immer das gleich eingetragen wird, dann erscheint es nicht mehr, auch hier muss ne durch any ersetzt werden
on({ id: [screensaverNotifyHeading, screensaverNotifyText], change: 'any', ack: false }, async (obj) => {
-
Kann man machen, wäre auch kein Problem...
Würde an der Situation aber ja nichts verändern, da das Panel bei "gleichen Daten" im Fall von "ne" ja bereits die Daten anzeigt, und somit auch keine Aktionen notwendig sind.
Sollte sich ein Wert ändern, so wird dieser auch mit "ne" überschrieben und aktualisiert.
Mögliche Änderungen sind. Ein Text verändert sich um mindestens ein Zeichen oder der Inhalt der DP verändert sich dadurch, das es mit Klick auf den Screensaver in der bExit geleert (notify~~ ) wird.
-
Bei der Aktion hätte etwas im Panel stehen müssen.
Wie sind deine MQTT-Einstellungen in der MQTT-Instanz? Direkte Kommunikation oder über Umwege (Mosquitto extern)
Bei denen wurde auch eine Aktualisierung durchgeführt
oder
-
Interessant ist darüber hinaus natürlich der Eintrag:
Der Hätte, sofern nicht der gleiche Inhalt bereits im DP gestanden hat, auch getriggert werden müssen.
Für die Tests kannst du die Trigger natürlich auch auf "any" setzten. Dann werden ja alle Ereignisse mitgenommen... Auch wenn sich der Text nicht ändert.
-
@armilar said in SONOFF NSPanel mit Lovelace UI:
Mögliche Änderungen sind. Ein Text verändert sich um mindestens ein Zeichen oder der Inhalt der DP verändert sich dadurch, das es mit Klick auf den Screensaver in der bExit geleert (notify~~ ) wird
Ah ok , ich habs noch mal probiert beim Screensaver wirds geleert, bei Popup Nachricht bleibt alles drin.
-
@armilar
So schauen die MQTT-Einstellungen aus. Das läuft direkt über ioB. Mosquitto hab ich zwar auch am Laufen aber nur weil ich zu Faul bin alles umzustellen.Die Datenpunkte habe ich vorher leer gemacht und dann das Skript erst laufen lassen per Cron das auch wirklich was passiert und ich es sehe. Das das Löschen der DP funktioniert hatte ich dir ja im Eingangspost schon bestätigt.
Ob beim Manuellen Eintrag was passiert kann ich erst am Nachmittag sagen.. Bin noch Brötchen verdienen.. -
Na dann noch viel Spaß bei der Arbeit und bis später
-
Ja, bei der popUpNotify könnte ein "any" rein. Ich habe die jetzt mal angepasst. Schaden kann es definitiv nicht...
-
@armilar Soll ich bei mir das Skript auch mal mit anpassen und die ne auf any nehmen und probieren? Müsste ich ja auch in den logs schon sehen ob mein Müllscript das mag.
-
Ja, ändere das mal ab. Und verwende in deinem Müllskript mal "steuere" statt "aktualisiere".
-
@armilar Interessant.. jetzt hab ich die 2 Punkte auf any geändert und das Blocky auf "steuere" und jetzt hab ich plötzlich auch ZWEI Notify-Einträge direkt hintereinander mit dem selben 2notify~GelberSack,Restmüll~13.02.2023"im CustomSend.
Bin gespannt ob das auch angezeigt wird. Ich logge mal noch den Result mit und schaue mal ob das Panel auch reagiert aber ich gehe mal stark davon aus. -
Ich gehe da mal von aus. Wenn du den "aktualisiere" verwendest, was ja im Prinzip ein Adapter in einem 2. Schritt erledigt, dann weiß der Script-Trigger oder alternativ ein Adapter ja nicht, dass da noch etwas zu tun ist. Also nur "aktualisiere" verwenden, wenn mit dem Eintrag "nichts" mehr passieren soll...
-
@armilar Ich kann mal Vollzug vermelden. Jetzt funktioniert es wie es soll. Danke für die Hilfe!
-
Ja perfekt. Dachte schon es wäre was schlimmes
Ggfs. auch mal in anderen Skripten überprüfen, ob da der falsche Baustein verwendet wurde...
-
hallo zusammen
kann ich mit dem Panel auch eine Seite für den repetier server einrichten
also eine Seite dir mir Daten des drucks anzeigt
bin leider nicht so Sattelfest im Thema repetier...ggf könnt ihr ne denk Hilfe geben
-
kann ich mit dem Panel auch eine Seite für den repetier server einrichten?
Was liefert der denn für Daten und welche sollen angezeigt werden?
Gibt es eine Übersicht an relevanten Datenpunkten?