Zitat von Sipple
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
status.toast reagiert auf on_update
Einklappen
X
-
Das ist in der Tat seltsam. Ist es denn genauso konfiguriert, wie auch das andere toast? Am besten nochmal prüfen, ob sich nicht doch irgendwo noch eine VISU versteckt hat. Kann auch auf dem gleichen PC sein, oder einem Handy oder so ;-)
-
Ja, in der Regel ist das so, also zwei drei Visus parallel. Allerdings habe ich die gleichen Effekte auch wenn nur eine läuft.
Wenn der Geschirrspüler fertig ist z.B. Da kommt die Endemeldung per Toast immer zweimal. Über die selbe Endemeldung gibt es noch ein multimedia.audio, mit einer Sprachansage. Das kommt nur einmal.
Einen Kommentar schreiben:
-
Hi Wolfram,Zitat von wvhn Beitrag anzeigenloeserman, Ich baue mir Deine items und die Testseite in den nächsten Tagen einmal nach und teste.
Mich irritiert aber, dass beim Ausschalten der Klingel das item „SONDERFUNKTIONEN.KLINGEL.AKTIV“ doppelt rückgemeldet wird. Zudem werden items aktualisiert, die garnicht auf der Testseite sind (Squeezebox, Heizungszähler…). Normalerweise werden items beim Backend abbestellt, wenn sie auf der aktuellen Seite nicht mehr benötigt werden. Hast Du einen Proxy oder Reverse Proxy im Einsatz, der möglicherweise die Clients nicht sauber trennt?
ich habe folgendes herausgefunden warum auch Items aktualisiert werden (bzw. auftauchen), die mit der Seite nichts zu tun haben. Hierzu muss man wissen, dass bei mir mehrere Browser auf verschiedenen Rechnern parallel laufen und die SmartVISU anzeigen. Eins davon hat eine große Seite auf mit sehr vielen Items (Gesamtübersicht), welches ich mir auf einem Tablet anzeigen lasse. Mache ich das aus und starte als einziges einen Browser auf einem anderen PC neu mit der Testseite, dann sehe ich nur die Items, die der Browser auch angemeldet hat.
Beispiel zur Vereinfachung
Ausgangssituation: Nirgendwo läuft die SmartVisu
Test1:
PC1: Browser frisch starten und nur die Testseite aufrufen (Item D)
--> Es werden nur die Tags in der Console angezeigt, die auch auf der Seite angemeldet wurden (Item D)
Test2:
PC1: Zeigt weiterrhin die Testseite aus Test1 (Item D)
PC2: Öffnen einer SmartVISU Seite mit ganz vielen Tags (Items A, B, C)
--> Auf PC1 werden nach wie vor nur die Items im Log aufgeführt, die er auch angemeldet hat (nur Item D)
--> Auf PC2 werden die vielen Tags im Log angezeigt und aktualisiert (Items A, B, C, und D)
Test3:
PC1: Schließen des Browsers
PC2: Weiterlaufen lassen, wie im Test2 (Items A, B, C, das Item D von PC1 wird nicht mehr geloggt)
PC1: Testseite wieder aufrufen (Item D)
--> Auf PC1 werden die Tags der Testseite angemeldet aber auch alle Änderungen der anderen Tags angezeigt, die eigentlich über PC2 angemeldet wurden (Items A, B, C, D)
--> Auf PC2 werden nur noch die Tags angezeigt, die auch angemeldet selbst wurden ohne die der Testseite (Items A, B, C)
Das ganze Spiel kann auch mit unterschiedlichen oder gleichen Browsern auf einem PC gemacht werden.
Es sieht daher so aus, dass wenn ein PC2 bereits die Items A, B und C angemeldet hat und danach dann PC1 eine Seite öffnet, die eigentlich nur Item D anmeldet, dann bekommt PC1 dennoch die Aktualisierungen von den Items A, B und C mit, obwohl ihn diese eigentlich gar nicht interessieren.
Wurde aber zuerst die Testseite auf PC1 geöffnet und damit nur Item D angemeldet und danach dann PC2 mit den Items A, B, C, dann bekommt PC1 auch nur das Item D aktualisiert und nichts von den anderen mit.
Fazit:
Kurzum, jede neue SmartVISU Instanz bekommt immer alle Items aktualisiert, die bereits angemeldet sind plus die eigenen, die es eigentlich nur haben will.Vielleicht hilft das etwas weiter.Instanz / Item A B C Instanz 1 meldet an A Wer erhält was Inst1 ... Instanz 2 meldet an B Wer erhält was Inst1+Inst2 Inst2 ... Instanz 1 schließen / meldet ab A Wer erhält was Inst2 ... Instanz 3 meldet an C Wer erhält was Inst2 Inst2+Inst3
Gruß
ChristophZuletzt geändert von loeserman; 28.03.2023, 07:52.
Einen Kommentar schreiben:
-
Interessant, dass Du da auch solche Phänomene hast. Das mit dem Bild im Toast ist übrigens eine schöne Sache, habe ich gleich mal übernommen ;-)Zitat von Sipple Beitrag anzeigenServus
...
Türöffnerbutton geht (und schließt auch den Toast), Stream geht, manuell Schließen mit dem Kreuz oben rechts geht.
Macht man gar nichts, verschwindet der Toast nach den eingestellten 120s (autotimer im Item).
Das ist aber wohl nicht genau das, was du willst, richtig? Du möchtest, dass der Toast ewig angezeigt wird und nur durch eine Aktion von dir verschwindet?
Das ist nämlich in der Tat ein Problem. Mein Toast hat ja auch param_hideafter auf false, verschwindet aber trotzdem wenn das item auf 0 geht, was es nicht soll, aber
Einen Kommentar schreiben:
-
Das ist in der Tat etwas merkwürdig. Ich habe nun nochmal alles Mögliche rausgeworfen. Den Browser geschlossen, dann die Console geöffnet und direkt die Seite aufgemacht. Das Folgende Ergebnis. Es werden nur die 3 Tags angemeldet, aber in der Ausgabe erscheint dennoch mehr.
2023-03-27 21_06_02-Loeserhome 3.0.png
Einen Kommentar schreiben:
-
loeserman, Ich baue mir Deine items und die Testseite in den nächsten Tagen einmal nach und teste.
Mich irritiert aber, dass beim Ausschalten der Klingel das item „SONDERFUNKTIONEN.KLINGEL.AKTIV“ doppelt rückgemeldet wird. Zudem werden items aktualisiert, die garnicht auf der Testseite sind (Squeezebox, Heizungszähler…). Normalerweise werden items beim Backend abbestellt, wenn sie auf der aktuellen Seite nicht mehr benötigt werden. Hast Du einen Proxy oder Reverse Proxy im Einsatz, der möglicherweise die Clients nicht sauber trennt?
Bitte poste mal die Ausgabe der Konsole beim Neuladen der Seite. Dort müsste man das „monitor“-Kommando sehen, mit dem die items abonniert werden.
Gruß
Wolfram
Einen Kommentar schreiben:
-
Servus
Probleme mit dem Toast habe ich auch. Ähnliche Probleme mit zwei identischen Toasts kurz hintereinander ohne mir ersichtlichen Grund. Oder welche, die bei einem Seitenwechsel immer wieder auftauchen, obwohl der Status längst erledigt sein sollte.
Aber das mit der Türklingel klappt mit einer Einschränkung. Oder ich habe noch ein Problem, was mir aber in der Praxis noch nicht aufgefallen ist.
Ich habe ein zweites Item, das auf die gleiche Gruppenadresse hört wie das eigentliche Klingelitem.
Das Item 'Klingel' ist für den Toast irrelevant. Nur Klingelmeldung wird verwendet.Code:Klingel: type: bool knx_dpt: 1 knx_send: 5/2/4 knx_cache: 5/2/5 Klingelmeldung: type: bool knx_dpt: 1 knx_listen: 5/2/4 autotimer: 120 = 0
Das Widget sieht dann so aus.
Das ergibt dann das:Code:{{ status.toast('Klingeltoast', 'Klingelmeldung', '', '', '', 'KLINGELING', 'Jemand steht an der Tür <br/><br/><img src="http://x.x.x.x/control/faststream.jpg?stream=full&preview&size=1280x480&quality=40&fps=12.0" width="100%" alt="Der Stream geht nicht"> <br/>', 'message_bell.svg', '', 'Tueroeffner', '    Hier drücken zum Tür öffnen    ', '1', '', 'false', '', 'false', 'black', 'orange') }}
grafik.png
Türöffnerbutton geht (und schließt auch den Toast), Stream geht, manuell Schließen mit dem Kreuz oben rechts geht.
Macht man gar nichts, verschwindet der Toast nach den eingestellten 120s (autotimer im Item).
Das ist aber wohl nicht genau das, was du willst, richtig? Du möchtest, dass der Toast ewig angezeigt wird und nur durch eine Aktion von dir verschwindet?
Das ist nämlich in der Tat ein Problem. Mein Toast hat ja auch param_hideafter auf false, verschwindet aber trotzdem wenn das item auf 0 geht, was es nicht soll, aber ich kann damit leben.
SHNG 1.9.2, smartVISU 3.2.2Zuletzt geändert von Sipple; 27.03.2023, 08:54.
Einen Kommentar schreiben:
-
Also wenn ich ein Item benutze, welches ich über ein Skript setze und rücksetze, funktioniert das einwandfrei. Ich habe also eine Lösung für mich, aber vielleicht finden wir ja auch noch einen Ansatzpunkt, warum das mit meinem verlängertem Item nicht geklappt hat.
Ja diese Option hatte ich zuerst, allerdings kann ich damit nicht nachtriggern, weshalb ich das wieder bei Seite gelegt hatte.Zitat von Bonze Beitrag anzeigenbtw. du hast aber auch die option, direkt den Toast nach x sekunden schließen zu lassen..
dafür gibts folgenden parameter
Einen Kommentar schreiben:
-
Test 2:
Mit dem Item SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE für das Toast. In Summe sieht das schon besser aus, macht aber auch nicht das, was ich erwartet hätte.
2.1
Alles aus: Alle drei Items off, kein Toast2023-03-27 08_45_36-Loeserhome 3.0.png
2.2
Das Item AKTIV wird gesetzt und es erscheint wie erwartet ein Toasts, da das Item LONG_IMPULSE nur einmal auftaucht.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_45_41-Loeserhome 3.0.png2023-03-27 08_45_43-Loeserhome 3.0.png2023-03-27 08_45_45-Loeserhome 3.0.png
2.3
Das Item AKTIV wird wieder rückgesetzt über die Visualisierung (daher send). Dabei erscheint nun aber noch ein Toast, obwohl das Item LONG_PULSE gar nicht erneut kommt.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_45_51-Loeserhome 3.0.png
2023-03-27 08_45_52-Loeserhome 3.0.png2023-03-27 08_45_54-Loeserhome 3.0.png
2.4
Nach den 30sek werden dann die Items LONG_IMPULSE_TEMP und damit auch LONG_IMPULSE wieder vom SmarthomeNG zurückgesetzt. Damit wird nun aber nur das letzte Toast wieder gelöscht. Das andere bleibt stehen.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_46_11-Loeserhome 3.0.png2023-03-27 08_46_13-Loeserhome 3.0.png2023-03-27 08_46_15-Loeserhome 3.0.png
Naja in Summe ist mir das nicht so ganz klar, warum das so ist.
Einen Kommentar schreiben:
-
Moin zusammen,
Danke für eure aktive Suche. Ich verstehe das einfach nicht. Ich habe mir mal eine Testseite gemacht auf der die drei Items drauf sind.
Da ihr euch aber schon so viel Mühe gegeben habt, habe ich mal versucht alle relevanten Informationen zusammenzutragen, aber ich kann es auch verstehen, wenn ihr hier nicht die Muße habt euch da durchzuwühlen. Ich versuche mich sonst einfach weiter und werde sicherlich noch einen Weg finden. Eventuell kann ich das Item einfach über ein Skript setzen. Das probiere ich gleich mal noch.
Testseite
Ganz oben: Dort habe ich den Toast eingebaut. Ich habe zwei Tests gemacht. Einmal mit LONG_IMPULSE und einmal mit LONG_IMPULSE_TEMP.
Oben: Klingel AKTIV
(das ist der Impuls von dem Klingeltaster, den ich hier auch mal testhalber manuell drücken kann)
Mitte: Klingel LONG_IMPULSE_TEMP
(dieser wird von dem Taster AKTIV getriggert und soll nach 30sek wieder weggehen, wird aber nachgetriggert und somit verlängert, wenn innerhalb der 30sek nochmal gedrückt wird.)
Unten: Klingel LONG_IMPULSE
(dieser wird von LONG_IMPULS_TEMP über on_change getriggert. Damit hatte ich die Hoffnung es lösen zu können, da dies eigentlich nur eine Antriggerung erfährt, wenn sich LONG_IMPULSE geändert hat.)
Code:<ul data-role="listview" data-dividertheme="c"> {{ status.toast('toasttest', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP', '', '', '', 'Klingel', 'Es hat geklingelt', 'message_bell', '', 'R12.HAUSTUER.OEFFNER', 'Öffnen', 'true', 'true', 'false', '', 'true', '#FFFFFF', '#FF1356', '1') }} <li data-role="list-divider">Testskript</li> <li data-icon="false" style="padding-left: 1em"> <div class="cells"> <div class="lcell20 lcellcenter"> {{ basic.trigger('uid14052625600_logic1b', 'testscript', 'TEST', 'refresh', 1, 'mini') }} </div> <div class="lcell80 lcellleft lcellvmiddle"> Testskript ausführen (Trigger) </div> </div> </li> <li data-icon="false" style="padding-left: 1em"> <div class="cells"> <div class="lcell20 lcellcenter"> {{ basic.stateswitch('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV', 'icon', [1, 0], ['message_bell.svg', 'message_bell.svg'], '',['icon1', 'icon0']) }} <br> {{ basic.symbol('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV', ['Aktiv', 'Aus'], '', [1, 0], '', '', '', '') }} <br> Klingel </div> <div class="lcell80 lcellleft lcellvmiddle"> AKTIV </div> </div> </li> <li data-icon="false" style="padding-left: 1em"> <div class="cells"> <div class="lcell20 lcellcenter"> {{ basic.stateswitch('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP', 'icon', [1, 0], ['message_bell.svg', 'message_bell.svg'], '',['icon1', 'icon0']) }} <br> {{ basic.symbol('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP', ['Aktiv', 'Aus'], '', [1, 0], '', '', '', '') }} <br> Klingel </div> <div class="lcell80 lcellleft lcellvmiddle"> LONG_IMPULSE_TEMP </div> </div> </li> <li data-icon="false" style="padding-left: 1em"> <div class="cells"> <div class="lcell20 lcellcenter"> {{ basic.stateswitch('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE', 'icon', [1, 0], ['message_bell.svg', 'message_bell.svg'], '',['icon1', 'icon0']) }} <br> {{ basic.symbol('', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE', ['Aktiv', 'Aus'], '', [1, 0], '', '', '', '') }} <br> Klingel </div> <div class="lcell80 lcellleft lcellvmiddle"> LONG_IMPULSE </div> </div> </li>
Hier auch nochmal die aktuelle item config
Code:%YAML 1.1 --- # Verschiedene Sonderfunktionen SONDERFUNKTIONEN: KLINGEL: AKTIV: name: Rxx Klingel gedrueckt type: bool visu_acl: rw value: 'False' enforce_updates: 'True' knx_dpt: 1 knx_listen: 1/7/1 knx_init: 1/7/1 on_change: SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP = True if (value == True) else None autotimer: 20 = False # Wird nach 20sek wieder auf False gesetzt (zur Sicherheit, falls einer die Klingel dauerhaft drueckt) LONG_IMPULSE_TEMP: name: Rxx Klingel gedrueckt, dann wird diese Variable für 30sek gehalten / nachtriggern moeglich (gesetzt von SONDERFUNKTIONEN.KLINGEL.AKTIV.on_change) type: bool visu_acl: rw value: 'False' enforce_updates: 'True' on_change: SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE = value autotimer: 30 = False # Wird nach 30sek wieder auf False gesetzt LONG_IMPULSE: name: Rxx Klingel gedrueckt, dann wird diese Variable für 30sek gehalten / nachtriggern moeglich (gesetzt von SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP.on_change) type: bool visu_acl: rw value: 'False' enforce_updates: 'True' autotimer: 30 = False # Wird nach 30sek wieder auf False gesetzt
Wie sieht das Ergebnis mit dem Log aus im Browser.
Test 1:
Mit dem Item SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE_TEMP für das Toast
1.1
Alles aus: Alle drei Items off, kein Toast
2023-03-27 08_43_58-Loeserhome 3.0.png
1.2
Das Item AKTIV wird gesetzt und es erscheinen gleich zwei Toasts, obwohl das Item LONG_IMPULSE_TEMP nur einmal auftaucht.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_44_02-Loeserhome 3.0.png
2023-03-27 08_44_04-Loeserhome 3.0.png
2023-03-27 08_44_06-Loeserhome 3.0.png
1.3
Das Item AKTIV wird wieder rückgesetzt über die Visualisierung (daher send). Dabei erscheint gleich noch ein Toast.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_44_12-Loeserhome 3.0.png
2023-03-27 08_44_14-Loeserhome 3.0.png 2023-03-27 08_44_16-Loeserhome 3.0.png
1.4
Nach den 30sek werden dann die Items LONG_IMPULSE_TEMP und damit auch LONG_IMPULSE wieder vom SmarthomeNG zurückgesetzt. Damit wird aber keins der Toasts wieder gelöscht, obwohl ich erwartet hätte, dass mindestens eins wieder verschwindet.
Ich habe im SmarthomeNG auch die drei Items angesehen zu dem Zeitpunkt, daher sind es 3 Bilder
2023-03-27 08_44_33-Loeserhome 3.0.png2023-03-27 08_44_35-Loeserhome 3.0.png
2023-03-27 08_44_37-Loeserhome 3.0.png
Ich habe den gleichen Test auch nochmal mit dem anderen Item LONG_IMPULSE gemacht. Die Bilder dazu packe ich aber ich einen weiteren Post, um diesen nicht zu groß zu machen.
...Zuletzt geändert von loeserman; 27.03.2023, 08:24.
Einen Kommentar schreiben:
-
Nein.
Im Widget status.toast wird bei jedem item update geprüft, ob das Triggeritem 0 oder 1 ist. Entsprechend wird der Toast entfernt oder gesetzt.
smartVISU kennt kein "enforce_updates". D.h. die Update-Methode der Widgets wird nur aufgerufen, wenn der Wert des per Websocket empfangenen items von dem in widget.buffer gespeicherten Wert abweicht.
Einen Kommentar schreiben:
-
Könnte es sein, das wir im widget die variable zurücksetzen?
Einen Kommentar schreiben:
-
@bonze,
Du verwendest Deine eigene Version "toast.toast", die offenbar bei updates anders reagiert.
Ich habe das widget "status.toast" jetzt mal mit den von Dir genannten Parametern getestet. Dort verschwindet der Toast wieder, wenn das Trigger-item auf 0 geht.
0->1 Toast geht auf
1->1 Toast bleibt auf (enforce_updates: yes)
1->0 Toast geht zu
Der Toast reagiert also nicht auf on_update, wie in der Überschrift steht, sondern auf "on_change".
loeserman, Du kannst bei ausgeschaltetem Cache in der Konsole der Browser-Tools beobachten, welche Änderungen für das Triggeritem von shNG gesendet werden. Vermutlich geht das Triggeritem eben doch nochmal auf 0, wenn erneut geklingelt wird.
Gruß
Wolfram
Einen Kommentar schreiben:
-
also, ich hab das mal bei mir getestet, ich wechsele beim klingelsignal:
- 0->1 1. Toast geht auf
- 1->0 1. Toast bleibt auf
- 0->1 2. Toast geht auf
- 1->0 2. Toast bleibt auf
mein Toast ist folgendermaßen aufgerufen
btw. du hast aber auch die option, direkt den Toast nach x sekunden schließen zu lassen..Code:[COLOR=#d4d4d4] {% import "toast.html" as toast %}[/COLOR] [COLOR=#d4d4d4] {{ toast.toast('', 'sprechanlage.live.klingel', '', 'sprechanlage.live.live_image', '', 'Klingel', '', 'scene_livingroom', '', '', 'OK', '20', 'true', 'false', '','', '','','','','mid-center', 'big') }}[/COLOR]
dafür gibts folgenden parameter
* @param {text=} param_hideafter `` to make it sticky or time in miliseconds to hide after(optional)
{% macro toast(id, item_trigger, item_title, item_content, item_icon, text_title, text_content, text_icon,param_template, item_button,text_button, value_button, param_allowclose, param_hideafter, param_showhide, param_showloader, param_color,param_bgColor, param_stack, param_align, param_position ) %}
Ich kann mir bei deinem Problem nur ein Item Konfigurationsproblem vorstellen, da der SV normalerweise egal ist, wie das Item geupdatet wurde, also initial oder per update .. es wird ja nur das item abonniert und bei ner Wertänderung an den Webbrowser geschickt; außer du nutzt enforce_update, dann wird das item auch geupdatet wenn der Wert sich nicht ändert.
Ich denke das Problem kommt von der Item Konfig., wie kommt den das Signal der Klingel in dein System? per KNX, oder ein anderes System?
Dann gibt es ja das Klingelitem , dieses wechselt ja Ständig von 0-1-0 bei Taste gedrückt, losgelassen.
Ich glaube so einfach dynamisch die Zeit anzupassen, ohne das das Item neu getriggert wird, kann man das nicht, aber vielleicht hat jemand im smarthomeng Forum ne idee.. Ich weiss auch nicht wie das bei nem Nachtriggern von nem Treppenhauslicht ist, was ja die gleiche Funktion hat ..
Einen Kommentar schreiben:


Einen Kommentar schreiben: