Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Jarvis 3.1.2 Icon dynamisch mittels Berechnung setzen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Jarvis 3.1.2 Icon dynamisch mittels Berechnung setzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hvb last edited by

      Ich möchte gerne das Icon eines Bewegungsmelder Devices ändern, wenn die letzte Bewegung vor mehr als x Sekunden gemeldet wurde.
      Der Bewegungsmelder liefert einen timestamp zurück.

      Für den State kann ich die Sekunden seit dem letzten Eintrag wie folgt ermitteln und setzten:

      Sate Properties

      {"value":"val => {return Math.floor((new Date().getTime()-val)/1000);}"}
      

      Nun möchte ich das Icon entsprechend ändern, wenn die letzte Bewegungserkennung mehr als z.B. 30 Sekunden zurückliegt.

      Icon

      {"<30":"mdi:motion-sensor", "default":"mdi:motion-sensor-off"}
      

      Der Vergleich "<30" verwendet jedoch val und nicht value. Also müsste ich die Berechnung aus den State Properties in Icon nochmals in ähnlicher weise durchführen. In etwa so:

      {"Math.floor((new Date().getTime()-val)/1000)<30":"mdi:motion-sensor", "default":"mdi:motion-sensor-off"}
      

      Das funktioniert aber leider nicht. Hat jemand so eine ähnliche Anforderung schon einmal gelöst?

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @hvb last edited by MCU

        @hvb Zeig mal bitte den verwendeten DP (ioBroker).

        H 1 Reply Last reply Reply Quote 0
        • H
          hvb @MCU last edited by

          @mcu

          3d4a7c35-c8b0-4cc0-98da-529b1d5d9d17-image.png

          b50a862c-fc75-406d-bba1-0e28da080aa0-image.png

          H 1 Reply Last reply Reply Quote 0
          • H
            hvb @hvb last edited by

            @MCU 87228013-646b-4360-b2e4-1c09204158ac-image.png

            M 1 Reply Last reply Reply Quote 0
            • M
              MCU @hvb last edited by MCU

              @hvb Welche Werte zeigt er denn nach der Berechnung an?
              0581f3d8-a7c6-4071-abae-7f96f73c7657-image.png
              Sieht man im Geräte-Popup.

              Also wenn dort
              8ac1e71b-bbd8-4420-b605-7834fd0a47a4-image.png
              ??? Versuch

              {"{val}< new Date().getTime()/1000":"icon"}
              

              Das ist doch dieser Wert:
              2da101be-901e-46a5-89b4-1e9c6dbf7713-image.png
              Hat der Sensor denn keinen boolean-Wert?

              H 1 Reply Last reply Reply Quote 0
              • H
                hvb @MCU last edited by

                @mcu
                cc98b982-5d85-4b6e-9c7a-0fe549f69ab9-image.png

                Sensor liefert im original einen timestamp als UTC String den hab ich dann mittels Alias in einen Timestamp umgewandelt, damit ich einen numerischen Werthabe mit dem ich rechnen kann.

                Ich könnten natürlich auch direkt in ein boolean umwandeln, dann passiert das aber nur beim einlesen und ändert sich nicht mehr.

                Ich möchte gerne laufend neu berechnen obwohl sich der eigentliche Wert des Adapters nicht ändert.

                Das refreshen mache ich mittels Script via

                let intRefresh = setInterval(async function(){
                    refreshDeviceState("bd8aadca-4695-4536-9954-3b4244f9c646", "Motion detected");  // Corridor base Motion Detector 
                },5000);
                

                Das erzeugt mir dann alle 5 sekunden ein neues Value (zählt also ab Bewegungserkennung die Sekunden hoch) Am Anfang zeige ich das on-Icon nach 30 Sekunden das off-Icon.

                H 1 Reply Last reply Reply Quote 0
                • H
                  hvb @hvb last edited by

                  @MCU Funktioniert jetzt 😃

                  Der entscheidende Hinweis war die korrekte Notation in Deinem Beispiel.

                  {"{val}< new Date().getTime()/1000 - 30":"icon"}
                  

                  val in Klammern nach links und die Berechnung komplett nach rechts ohne Klammern.

                  Vielen Dank!

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  933
                  Online

                  31.6k
                  Users

                  79.6k
                  Topics

                  1.3m
                  Posts

                  own project
                  2
                  7
                  260
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo