Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Datetime für VIS auswerten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Datetime für VIS auswerten

Scheduled Pinned Locked Moved Skripten / Logik
9 Posts 5 Posters 582 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I Offline
    I Offline
    init5
    wrote on last edited by
    #1

    Servus,
    ich benötige mal wieder eure Hilfe. Ich habe für meine Zigbee Geräte ein Skript laufen, welches den Zeitpunkt der letzten Änderung in einem Datenpunkt speichert. Nun würde ich gern in meinem VIS farblich darstellen, wenn der letzte Änderungszeitpunkt der Temperaturfühler länger als bspw. 8h zurück liegt.
    Wie würdet ihr da ran gehen? Ich habe versucht im Alias Adapter über die Konvertierungsfunktion einen Datenpunkt "Valid" zu erzeugen, der "true" ist, wenn der Zeitpunkt passt. Leider ohne Erfolg.
    Ich stehe auf dem Schlauch. Es gibt bestimmt unzählige Lösungen, aber die die mir einfallen gelingen mir nicht. Entweder als weiteren Datenpunkt, oder direkt in VIS.

    mickymM paul53P 2 Replies Last reply
    0
    • I init5

      Servus,
      ich benötige mal wieder eure Hilfe. Ich habe für meine Zigbee Geräte ein Skript laufen, welches den Zeitpunkt der letzten Änderung in einem Datenpunkt speichert. Nun würde ich gern in meinem VIS farblich darstellen, wenn der letzte Änderungszeitpunkt der Temperaturfühler länger als bspw. 8h zurück liegt.
      Wie würdet ihr da ran gehen? Ich habe versucht im Alias Adapter über die Konvertierungsfunktion einen Datenpunkt "Valid" zu erzeugen, der "true" ist, wenn der Zeitpunkt passt. Leider ohne Erfolg.
      Ich stehe auf dem Schlauch. Es gibt bestimmt unzählige Lösungen, aber die die mir einfallen gelingen mir nicht. Entweder als weiteren Datenpunkt, oder direkt in VIS.

      mickymM Online
      mickymM Online
      mickym
      Most Active
      wrote on last edited by
      #2

      @init5 Ich halte nichts davon über Zeitstempel zu rechnen. Ich würde lieber in Deiner Logikmaschine einen Trigger starten, wenn eine Änderung vorkommt und Alarm zu schlagen, wenn keine Änderung/Aktualisierung vorkommt. In Node-Red machst Du das mit dem Trigger - gibt aber auch Blocklies mit Timern.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Reply Last reply
      1
      • I init5

        Servus,
        ich benötige mal wieder eure Hilfe. Ich habe für meine Zigbee Geräte ein Skript laufen, welches den Zeitpunkt der letzten Änderung in einem Datenpunkt speichert. Nun würde ich gern in meinem VIS farblich darstellen, wenn der letzte Änderungszeitpunkt der Temperaturfühler länger als bspw. 8h zurück liegt.
        Wie würdet ihr da ran gehen? Ich habe versucht im Alias Adapter über die Konvertierungsfunktion einen Datenpunkt "Valid" zu erzeugen, der "true" ist, wenn der Zeitpunkt passt. Leider ohne Erfolg.
        Ich stehe auf dem Schlauch. Es gibt bestimmt unzählige Lösungen, aber die die mir einfallen gelingen mir nicht. Entweder als weiteren Datenpunkt, oder direkt in VIS.

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #3

        @init5 sagte: wenn der letzte Änderungszeitpunkt der Temperaturfühler länger als bspw. 8h zurück liegt.

        Vorschlag:

        Bild_2021-12-29_223833.png

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        I 1 Reply Last reply
        1
        • paul53P paul53

          @init5 sagte: wenn der letzte Änderungszeitpunkt der Temperaturfühler länger als bspw. 8h zurück liegt.

          Vorschlag:

          Bild_2021-12-29_223833.png

          I Offline
          I Offline
          init5
          wrote on last edited by
          #4

          @paul53 Sorry für die späte Antwort. Ich habe immer ein Problem mit diesen Skripten. Ich weiß nicht wie ioBroker damit umgeht, aber für meine Verständnis laufen dann die Skripte über die gesamte Dauer. Das erscheint mit nicht sehr effizient. Macht das dem System nichts aus, wenn mehrere dieser Skripte laufen? Ich habe bisher immer versucht meine Skripte kurz zu halten. Also Start --> prüfen --> Ende.

          Thomas BraunT P 2 Replies Last reply
          0
          • I init5

            @paul53 Sorry für die späte Antwort. Ich habe immer ein Problem mit diesen Skripten. Ich weiß nicht wie ioBroker damit umgeht, aber für meine Verständnis laufen dann die Skripte über die gesamte Dauer. Das erscheint mit nicht sehr effizient. Macht das dem System nichts aus, wenn mehrere dieser Skripte laufen? Ich habe bisher immer versucht meine Skripte kurz zu halten. Also Start --> prüfen --> Ende.

            Thomas BraunT Online
            Thomas BraunT Online
            Thomas Braun
            Most Active
            wrote on last edited by
            #5

            @init5 sagte in Datetime für VIS auswerten:

            Also Start --> prüfen --> Ende.

            skripte lauern immer im Hintergrund auf die Trigger.

            Linux-Werkzeugkasten:
            https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
            NodeJS Fixer Skript:
            https://forum.iobroker.net/topic/68035/iob-node-fix-skript
            iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

            I 1 Reply Last reply
            1
            • Thomas BraunT Thomas Braun

              @init5 sagte in Datetime für VIS auswerten:

              Also Start --> prüfen --> Ende.

              skripte lauern immer im Hintergrund auf die Trigger.

              I Offline
              I Offline
              init5
              wrote on last edited by
              #6

              @thomas-braun Wie verhält sich das Skript bei einem Neustart? Wird das Timeout dann unterbrochen, oder läuft es beim nächsten Triggerzeitpunkt weiter, wenn das System dann gestartet ist?

              Thomas BraunT paul53P 2 Replies Last reply
              0
              • I init5

                @thomas-braun Wie verhält sich das Skript bei einem Neustart? Wird das Timeout dann unterbrochen, oder läuft es beim nächsten Triggerzeitpunkt weiter, wenn das System dann gestartet ist?

                Thomas BraunT Online
                Thomas BraunT Online
                Thomas Braun
                Most Active
                wrote on last edited by
                #7

                @init5 sagte in Datetime für VIS auswerten:

                Wie verhält sich das Skript bei einem Neustart?

                Neustart von was?

                Linux-Werkzeugkasten:
                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                NodeJS Fixer Skript:
                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                1 Reply Last reply
                0
                • I init5

                  @thomas-braun Wie verhält sich das Skript bei einem Neustart? Wird das Timeout dann unterbrochen, oder läuft es beim nächsten Triggerzeitpunkt weiter, wenn das System dann gestartet ist?

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  @init5 sagte: Wie verhält sich das Skript bei einem Neustart?

                  Das Timeout wird gelöscht und beim nächsten Trigger neu gestartet.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Reply Last reply
                  0
                  • I init5

                    @paul53 Sorry für die späte Antwort. Ich habe immer ein Problem mit diesen Skripten. Ich weiß nicht wie ioBroker damit umgeht, aber für meine Verständnis laufen dann die Skripte über die gesamte Dauer. Das erscheint mit nicht sehr effizient. Macht das dem System nichts aus, wenn mehrere dieser Skripte laufen? Ich habe bisher immer versucht meine Skripte kurz zu halten. Also Start --> prüfen --> Ende.

                    P Offline
                    P Offline
                    PorterRicks
                    wrote on last edited by PorterRicks
                    #9

                    @init5 said in Datetime für VIS auswerten:

                    @paul53 Sorry für die späte Antwort. Ich habe immer ein Problem mit diesen Skripten. Ich weiß nicht wie ioBroker damit umgeht, aber für meine Verständnis laufen dann die Skripte über die gesamte Dauer.

                    Normale Skripte laufen nur 1 Mal...nämlich beim Starten des Brokers. z.B. zum Initialisieren von irgendwelchen Werten o.ä.
                    Wenn Du jedoch einen "Trigger" einbaust, dann meldet sich Dein Skript am System bei einem Eventhandler an und sagt diesem: "Starte meine angegebene Callback-Funktion und übergieb dieser bestimmte Daten , wenn ein bestimmtes Ereignis eingetreten ist. (z.B. eine Wertänderung bei einem Knoten oder Ablauf eines Timers). Das eigentliche Skript läuft also nicht weiter sondern wartet im Hintergrund darauf, dass es vom Eventhandler erneut aufgerufen wird (nicht das komplette Skript sondern nur die jeweis übergebene Callback-Funktion).

                    Nur als kleines Beispiel:

                    on({id: "mqtt.0.esp32.temperature", change: "ne"}, async function (obj) {
                      var value = obj.state.val;
                    // hier können weitere Anweisungen innerhalb der Callback-Funktion stehen
                    }
                    );
                    

                    bedeutet
                    on {(Ereignis}, rufe meine asynchrone Funktion "function(obj)" auf und übergieb ihr als Parameter das Objekt, in dem das Ereignis stattfand.})
                    Auf dieses Objekt kann man dann innerhalb der Funktion problemlos zugreifen
                    var value = obj.state.value;

                    Jetzt zu Deinem eigentlichen Problem mit der Überprüfung des Temperatursensors:
                    Wie oben gerade gesagt, reagieren die Trigger nur bei "Veränderungen" (welcher Art auch immer) und rufen entsprechende Routinen (callback-Funktionen) auf. Aber genau das hast Du ja eben nicht! Es verändert sich ja nichts...
                    Du bräuchtest also quasi so eine Art "timeout" Funktion, die aufgerufen wird, wenn sich ein Meßwert z.B. über 8 Std nicht verändert (bzw aktualisiert) hat.

                    Ich selber beschäftige mich jetzt erst ein paar Wochen mit dem Broker und weiß nicht, ob das Developer Team sowas evtl bereits umgesetzt (programmiert) hat

                    Daher würde ich für so eine Überwachung auf einen Timer zurückgreifen, der alle paar Minuten überprüft, ob meine Meßdaten aktualisiert wurden oder ob z.B. ein Meßfühler ausgefallen ist.

                    Je nach Wichtigkeit könnte dann sogar eine Alarmmeldung rausgeschickt werden (z.B. e-mail oder Telegram o.a.)
                    Damit das aber auch im VIS angezeigt wird, würde ich mir einen User-definierten Alarm-Knoten einrichten, der nur true oder false enthält.

                    Bsp:

                    Neues Objekt hinzufügen: 0_userdata.0.Temperaturalarm
                    parent: 0_userdata.0
                    Typ: Datenpunkt
                    Zustandstyp: boolean
                    Name: Temperaturalarm

                    Wenn man diesen neuen Knoten anlegt, bekommt er vom System sofort den default-Wert: false...

                    In diesem Knoten wird dann vom Timer regelmäßig abgelegt, ob der Messfühler noch aktiv ist (Alarm=false) ...wenn nicht, wird der Wert "true" gesetzt, was einem Alarm gleichkommt.

                    Der Timer:
                    interval = setInterval(async function () {}, 60000); //alle 60000 ms = 1 Min starten

                    Jetzt nur noch die Funktion "füllen":
                    Das Script sieht dann später so aus:

                    var interval;
                    
                    // Describe this function...
                    async function getTimeDiffMin() {
                        var aktDateTime= new Date();
                        
                        return (aktDateTime.getTime() - getState("mqtt.0.esp32.temperature").ts)/1000/60;
                    
                    }
                    
                    
                    interval = setInterval(async function () {
                      if (await getTimeDiffMin() >= 1) {
                        setState("0_userdata.0.Temperaturalarm"/*Temperaturalarm*/, true, true);
                      } else {
                        setState("0_userdata.0.Temperaturalarm"/*Temperaturalarm*/, false, true);
                      }
                    }, 60000);
                    
                    

                    oder das Blockly:

                    Unbenannt-2.jpg

                    Somit kann man im Blocly einstellen, in welchem Intervall geprüft wird und wie groß die 'Zeitspanne maximal sein darf... (jeweils in Minuten)

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    565

                    Online

                    32.4k

                    Users

                    81.5k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe