Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfe bei Javascript

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hilfe bei Javascript

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

      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

      Mic 1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer @DennisMenger last edited by

        @DennisMenger

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

        1 Reply Last reply Reply Quote 0
        • T
          Tictactoo last edited by

          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 Reply Last reply Reply Quote 0
          • D
            DennisMenger last edited by

            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 Reply Last reply Reply Quote 0
            • D
              DennisMenger @Tictactoo last edited by

              @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 Reply Last reply Reply Quote 0
              • T
                Tictactoo @DennisMenger last edited by

                @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 Reply Last reply Reply Quote 0
                • C
                  charakterkopf last edited by charakterkopf

                  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 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  450
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  454
                  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