Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Hilfe bei Javascript

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Hilfe bei Javascript

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 4 Kommentatoren 703 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Online
    D Online
    DennisMenger
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen.

    Ich möchte gerne das Script zur Überwachung eines bzw. mehrerer Datenpunkte aus dem folgenden Beitrag nutzen. Ich habe eine schaltbare Osram-Steeckdose über meinen EchoPlus eingebunden.

    https://forum.iobroker.net/topic/29461/aufruf-welche-guten-javascripts-setzt-ihr-ein/2

    //Das Script überprüft regelmässig die Datenpunkte auf Aktualisierung
    schedule("*/3 * * * *" , function () {                                  
    
       // Angabe des Datenpunkts; Namen in Javascript; Zeit in Sekunden (0 = default_zeit)           
       var ueberwachung = ['alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.connectivity;Licht Gartenhaus;400'];
    
    
       var default_zeit = 240;
       var pfad_javascript ='javascript.0.watchdog.';   // Beispiel: 'javascript.0.watchdog.'  !Punkt nicht vergessen am Ende!
    
    
       //------------------------------------------------------------------
       //Ab hier nichts mehr Ändern
       //------------------------------------------------------------------
       var zeit= Math.floor(Date.now() / 1000);
       var differenz, lchange;
       var daten, tchange;
    
       ueberwachung.forEach(function(item, index, array) 
       {
           // Array Splitten
              daten = item.split(";");
    
           //Datenpunkt erstellen wenn nicht vorhanden
               createState(pfad_javascript + daten[1], { read: true, write: false, name: "Watchdog " + daten[1], type: "boolean", role: " ", def: "false"});
    
           //Differenz Zeit default oder manuell?
               differenz = parseInt(daten[2]);
               if (differenz == 0) differenz=default_zeit;
    
           //Zeitstempel abfragen in Sekunden
               tchange=parseInt(getState(daten[0]).ts / 1000);
               
           //Vergleichen der Zeitstempel
                   if ((zeit-tchange)>differenz)
                   {
                       setState(pfad_javascript + daten[1], false);
                       //console.log(daten[1] + "  ist älter als " + differenz + " Sekunden");
                   }
                   else
                   {
                       setState(pfad_javascript + daten[1], true);
                       //console.log(daten[1] + "  ist jünger als " + differenz + " Sekunden");
                   } 
    

    Allerdings weiß ich nicht was ich verkehrt geändert habe. Bzw. weiß ich nicht was bei "Namen in JavaScript hinkommt. Welchen Datenpunkt sollte ich überwachen?

    alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.connectivity oder
    alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.powerState

    Danke für eure Hilfe.

    Gruß
    Dennis

    MicM 1 Antwort Letzte Antwort
    0
    • D DennisMenger

      Hallo zusammen.

      Ich möchte gerne das Script zur Überwachung eines bzw. mehrerer Datenpunkte aus dem folgenden Beitrag nutzen. Ich habe eine schaltbare Osram-Steeckdose über meinen EchoPlus eingebunden.

      https://forum.iobroker.net/topic/29461/aufruf-welche-guten-javascripts-setzt-ihr-ein/2

      //Das Script überprüft regelmässig die Datenpunkte auf Aktualisierung
      schedule("*/3 * * * *" , function () {                                  
      
         // Angabe des Datenpunkts; Namen in Javascript; Zeit in Sekunden (0 = default_zeit)           
         var ueberwachung = ['alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.connectivity;Licht Gartenhaus;400'];
      
      
         var default_zeit = 240;
         var pfad_javascript ='javascript.0.watchdog.';   // Beispiel: 'javascript.0.watchdog.'  !Punkt nicht vergessen am Ende!
      
      
         //------------------------------------------------------------------
         //Ab hier nichts mehr Ändern
         //------------------------------------------------------------------
         var zeit= Math.floor(Date.now() / 1000);
         var differenz, lchange;
         var daten, tchange;
      
         ueberwachung.forEach(function(item, index, array) 
         {
             // Array Splitten
                daten = item.split(";");
      
             //Datenpunkt erstellen wenn nicht vorhanden
                 createState(pfad_javascript + daten[1], { read: true, write: false, name: "Watchdog " + daten[1], type: "boolean", role: " ", def: "false"});
      
             //Differenz Zeit default oder manuell?
                 differenz = parseInt(daten[2]);
                 if (differenz == 0) differenz=default_zeit;
      
             //Zeitstempel abfragen in Sekunden
                 tchange=parseInt(getState(daten[0]).ts / 1000);
                 
             //Vergleichen der Zeitstempel
                     if ((zeit-tchange)>differenz)
                     {
                         setState(pfad_javascript + daten[1], false);
                         //console.log(daten[1] + "  ist älter als " + differenz + " Sekunden");
                     }
                     else
                     {
                         setState(pfad_javascript + daten[1], true);
                         //console.log(daten[1] + "  ist jünger als " + differenz + " Sekunden");
                     } 
      

      Allerdings weiß ich nicht was ich verkehrt geändert habe. Bzw. weiß ich nicht was bei "Namen in JavaScript hinkommt. Welchen Datenpunkt sollte ich überwachen?

      alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.connectivity oder
      alexa2.0.Smart-Home-Devices.9c8f16ca-0fa9-4149-b5d3-3f75bb0b7e51.powerState

      Danke für eure Hilfe.

      Gruß
      Dennis

      MicM Offline
      MicM Offline
      Mic
      Developer
      schrieb am zuletzt editiert von
      #2

      @DennisMenger

      Was möchtest du denn genau überwachen bei den Steckdosen, und was soll dann passieren, wenn Ereignis X eintritt?

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        Tictactoo
        schrieb am zuletzt editiert von
        #3

        Das Problem bei Geräten, die über einen Echo/über Alexa gekoppelt sind, dass nach dem Schalten über Alexa nicht synchronisiert werden. Das heißt, hast du zum Beispiel eine Lampe, kannst du sie problemlos über den Alexa-Adapter mit ioBroker schalten und hast dann diesen Wert wert im powerState stehen. Schaltest du aber die gleiche Lampe dann über "Alexa, Licht aus", wird der Wert im powerState nicht geändert.

        Das Skript, dass du da rausgesucht hast, nutzt zigbee2mqtt. Da sind die States in der Regel synchron und du kannst in Echtzeit prüfen.

        D 1 Antwort Letzte Antwort
        0
        • D Online
          D Online
          DennisMenger
          schrieb am zuletzt editiert von
          #4

          Ich habe das Script bzw. die Beschreibung so verstanden, dass das Script überprüft, ob das Gerät erreichbar ist oder nicht. Meine Osram Steckdose verabschiedet sich manchmal von der Erreichbarkeit.

          1 Antwort Letzte Antwort
          0
          • T Tictactoo

            Das Problem bei Geräten, die über einen Echo/über Alexa gekoppelt sind, dass nach dem Schalten über Alexa nicht synchronisiert werden. Das heißt, hast du zum Beispiel eine Lampe, kannst du sie problemlos über den Alexa-Adapter mit ioBroker schalten und hast dann diesen Wert wert im powerState stehen. Schaltest du aber die gleiche Lampe dann über "Alexa, Licht aus", wird der Wert im powerState nicht geändert.

            Das Skript, dass du da rausgesucht hast, nutzt zigbee2mqtt. Da sind die States in der Regel synchron und du kannst in Echtzeit prüfen.

            D Online
            D Online
            DennisMenger
            schrieb am zuletzt editiert von
            #5

            @Tictactoo das weiß ich. Aber auch wenn immer nur über ioBroker schalte verliert er manchmal die Verbindung. Daher wollte ich dieses Script einsetzen um zu überprüfen ob die Steckdose noch erreichbar ist.

            T 1 Antwort Letzte Antwort
            0
            • D DennisMenger

              @Tictactoo das weiß ich. Aber auch wenn immer nur über ioBroker schalte verliert er manchmal die Verbindung. Daher wollte ich dieses Script einsetzen um zu überprüfen ob die Steckdose noch erreichbar ist.

              T Offline
              T Offline
              Tictactoo
              schrieb am zuletzt editiert von
              #6

              @DennisMenger Morgen. Das Problem ist nicht, wie du es schaltest, sondern dass der Alexa2-Adapter nicht ständig die States synchronisiert. Wenn du zum Beispiel connectivity überwachst, dann wird sich da nix tun, weil der State nicht ständig aktualisiert wird. Das heißt leider, selbst mit Skript würde dir der Verbindungsabbruch nicht oder nur selten angezeigt werden.

              1 Antwort Letzte Antwort
              0
              • C Offline
                C Offline
                charakterkopf
                schrieb am zuletzt editiert von charakterkopf
                #7

                Hi gerne Helfe ich dir bei meinem Script. Die Bezeichnung Namen ist etwas ungünstig, habe das Script aktualisiert:

                Ich erkläre mal die Config für:

                var pfad_javascript ='javascript.0.watchdog.'
                var default_zeit = 240;

                var ueberwachung = ['mqtt.0.zigbee2mqtt.Fenster_1;Fenster_1;7000'];

                1. mqtt.0.zigbee2mqtt.Fenster_1 = State von dem du ungefähr weisst in welchen Intervall er aktualisiert wird. (Hier ein Zigbee Xiaomi Fenster Sensor, 7000s ist ein Erfahrungswert von mir)

                2. Fenster_1 = Der Datenpunkt javascript.0.watchdog.Fenster_1 wird automatisch angelegt durch das Script. True wenn der Datenpunkt jünger als 7000s aktualisiert ist, False wenn älter. In meiner Vis steuere ich mit dem Datenpunkt ein Hinweis.

                3. 7000 = Sekunden, die seit der letzten Aktualisierung des States vergangen sein dürfen. Trägst du 0 ein wird die default Zeit verwendet

                Licht Gartenhaus würde ich auf Licht_Gartenhaus ändern :)

                Gruß Martin

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                394

                Online

                32.5k

                Benutzer

                81.7k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe