Ankündigung

Einklappen
Keine Ankündigung bisher.

status.toast reagiert auf on_update

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    status.toast reagiert auf on_update

    Hallo zusammen,
    ich wollte das status.toast verwenden, um eine Nachricht zu schicken, wenn es geklingelt hat. Diese soll dann 30sek stehen bleiben und ich wollte die Möglichkeit haben, dass ich da auch direkt die Türe öffnen kann. Dazu habe ich mir ein Item erstellt, was die 30sek auf true bleibt, da das Klingelitem selbst nur solange true ist, wie man drückt.

    Laut der Beschreibung dachte ich, dass das status.toast erscheint und solange bleibt, wie das Item 1 ist. Ich musste allerdings feststellen, dass es bei jedem Update (ohne dass sich der Wert ändert) das status.toast neu reagiert. Ist das so gewollt? Das hat bei mir den Effekt, dass wenn das Klingel Signal wieder auf 0 geht, bekomme ich das nächste toast, obwohl ich auf meinen verlängerten Impuls schaue, der auch stehen bleibt. So habe ich dann bei jedem Klingeln 0->1->0 zwar meinen langen Puls für 30sek aber zwei status.toast auf dem Bildschirm.

    config
    Code:
    [SONDERFUNKTIONEN]
    	[[KLINGEL]]
    		[[[FREIGABE]]]
    			name = Rxx Klingel freigeben
    			type = bool
    			visu_acl = rw
    			cache = True
    			knx_dpt = 1
    			knx_listen = 1/7/0
    			knx_send = 1/0/0
    			knx_init = 1/7/0
    		[[[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 = 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]]]]
    				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
    				autotimer = 30 = False # Wird nach 30sek wieder auf False gesetzt

    Aufruf im Code
    Code:
    {{ status.toast('toast01', 'SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE', '', '', '', 'Klingel', 'Es hat geklingelt', 'message_bell', '', 'R12.HAUSTUER.OEFFNER', 'Öffnen', 'true', 'true', 'false', '', 'true', '#FFFFFF', '#FF1356') }}
    Mache ich da etwas falsch? Ist das so gewollt?

    #2
    Die Liste macht es vielleicht etwas klarer.

    Beispiel 1
    Code:
    AKTIV    AKTIV.LONG_IMPULSE     toast Anzeige
    0        0                      Nein
    1        1                      Toast A
    1        1                      Toast A
    0        1                      Toast A und weiteres Toast B
    0        1                      Toast A und weiteres Toast B
             .. 30sek
    0        0                      Toast A geht wieder weg, Toast B bleibt stehen
    0        0                      Toast B
             .. so bleibt es

    Beispiel 2, mit Retrigger
    Code:
    AKTIV    AKTIV.LONG_IMPULSE     toast Anzeige
    0        0                      Nein
    1        1                      Toast A
    1        1                      Toast A
    0        1                      Toast A und weiteres Toast B
    0        1                      Toast A und weiteres Toast B
             .. 15sek               Toast A und weiteres Toast B
    1        1                      Toast A, Toast B, Toast C
    0        1                      Toast A, Toast B, Toast C, Toast D
             .. 30sek
    0        0                      Toast A geht wieder weg, Toast B,C,D bleiben stehen
    0        0                      Toast B
             .. so bleibt es
    Ich würde schon gern, dass man den Impuls verlängern kann. Das habe ich durch on_change und enforce_update erreicht. Zur Not müsste ich noch ein Item machen welches nur auf on_change von LONG_IMPULSE reagiert. Aber das geht bestimmt charmanter :-)

    Kommentar


      #3
      Das hat jetzt nichts mit Deinem Problem zu tun: Hat es einen besonderen Grund, dass Du bei SmartHomeNG noch die alten Konfigurationsdateien verwendest und kein yaml?

      Dadurch entgehen Dir einige Features (z.B. das Editieren in der Admin GUI).
      Außerdem wird die Unterstützung für die .conf Dateien in einem der kommenden Releases retired werden.
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        Hehe, nee das hat keinen besonderen Grund. Ein paar konfigs sind schon umgebaut. Aber eine große habe ich noch vor mir. Vielleicht gehe ich das mal in meinem Urlaub an.

        Aber mir ist bewusst dass das depreciated ist und ich mich da mal langsam drum kümmern muss. Danke für den trigger.

        Kommentar


          #5
          Du weisst, das es ein Tool gibt, das Dir die Arbeit abnimmt? (Von ein paar manuellen Nacharbeiten zur Verschönerung mal abgesehen)
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            Ich kann dein problem nur bedingt nachvollziehen, wenn ich von hand triggere 0-1-0 , bleibt der toast angepinnt..
            es gibt einen modus, da verschwindet der toast nach einer einstellbaren zeit von selbst, eventuell solltest du mal die parameter checken..
            ich weiss, das widget ist sehr umfangreich ..
            da du anscheinend ne ältere version nutzt hast du auch den widget assistent noch nicht?

            Kommentar


              #7
              Ich denke mit einem Item allein wirst Du es nicht nachstellen können. Das Problem ist ja, dass bei mir das Item "LONG_IMPULSE" auf das das widget reagiert den Zustand nicht ändert (und immer 30sek lang TRUE bleibt). Aber es wird neu getriggert/geupdated durch das Item "AKTIV" (on_update, NICHT on_change).


              Siehe das "on_change" bei [[[AKTIV]]]
              Code:
              SONDERFUNKTIONEN:
              
                  KLINGEL:
              
                      AKTIV:
                          name: Rxx Klingel gedrueckt
                          type: bool
                          visu_acl: rw
                          enforce_updates: 'True'
                          on_change: SONDERFUNKTIONEN.KLINGEL.AKTIV.LONG_IMPULSE = True if (value == True) else None
              
                          LONG_IMPULSE:
                              name: Rxx Klingel gedrueckt, dann wird diese Variable für 30sek gehalten
                              type: bool
                              visu_acl: rw
                              enforce_updates: 'True'
                              autotimer: 30 = False

              Ich habe eigentlich alles auf Stand, oder woran machst Du fest, dass ich eine alte Version habe. Die config habe ich heute bereits auf yaml umgestellt.
              SmartVISU = 3.3.1
              SmartHomeNG = v1.9.4-master (c0cfb39cd)
              Zuletzt geändert von loeserman; 19.03.2023, 09:41.

              Kommentar


                #8
                liegt es vl daran das du enforce updates auf true hast ?
                ich verstehe deine item konfiguration noch nicht so ganz ..
                das signal kommt von deiner Klingel 0->1, wird dann von dir wieder auf 0 gesetzt oder macht das auch die Klingel?
                oder ist deine Klingel einfach ein Taster ?

                Kommentar


                  #9
                  Ja die Klingel ist ein Taster. Das ist das item AKTIV.
                  in der oberen konfigs setze ich das zurück nach 20sek falls einer die Klingel gedrückt hält oder was klemmt. Das kannst du vernachlässigen.

                  Den 0-1 Impuls der Klingel will ich nutzen und 30sek auf 1 halten. Dafür das 2. Item LONG_IMPULSE.

                  Das enforce Update ist dazu da die 30sek zu verlängern wenn einer 2mal schnellt.

                  ​​​​​​Solange wie das item LONG_IMPULSE 1 ist soll das toast anstehen. So war der Plan 😎

                  Kommentar


                    #10
                    mh, das müsst ich nochmal nachstellen das verhalten weiss ich in diesem Fall auch nicht auswendig, wie gesagt, das ist eigentlich sehr mächtig, weil sich vieles konfigurieren lässt ..

                    Kommentar


                      #11
                      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
                      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]
                        
                      ​
                      btw. du hast aber auch die option, direkt den Toast nach x sekunden schließen zu lassen..
                      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 ..

                      Kommentar


                        #12
                        @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

                        Kommentar


                          #13
                          Könnte es sein, das wir im widget die variable zurücksetzen?

                          Kommentar


                            #14
                            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.

                            Kommentar

                            Lädt...
                            X