Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Lampencheck bei verlassen des WLANs

    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

    Lampencheck bei verlassen des WLANs

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

      Moin Leute,

      bin noch relativ frisch in dem Thema iobroker, und JavaScript jedoch wollte ich gerne ein Script haben, welches beim Verlassen des Hauses, sprich wenn die WLAN Verbindung meines iPhones abbricht einen Powercheck macht und mir dann über Telegram eine Nachricht zukommen lässt, ob noch Lampen eingeschaltet sind.

      Soweit so gut…

      Jetzt habe ich jedoch arge Probleme mit dem Script für das auslesen der Werte und die Rückgabe derer.

      Im Log finde ich folgende Fehlermeldungen:

      javascript.0 2018-12-19 20:30:43.288 warn at script.js.common.Abwesenheitskontrolle:11:9

      javascript.0 2018-12-19 20:30:43.277 warn getState "javascript.0.Datenpunkte.StatusLightOnText" not found (3)

      Der Code sieht momentan wie folgt aus:

      ` > function countLights()

      {

      var lichtAn = 0;

      var lights = getObject("enum.functions.lightstatus").common.members;

      var name = getObject(rm__).common.name;

      for(let i = 0; i < lights.length; i++) {

      var Status = getState(lights__).val;

      if ( Status ) { lichtAn = lichtAn + 1; }

      }

      if ( lichtAn > 0 ) {

      lichtAnText = lichtAn + " Lampe(n) eingeschaltet. Es handelt sich dabei um folgende: " +name;

      }

      setState('javascript.0.Datenpunkte.StatusLichtAnText', lichtAnText );

      setState('javascript.0.Datenpunkte.StatusLichtAn', lichtAn );

      }____ `

      1 Reply Last reply Reply Quote 0
      • K
        Karl_999 last edited by

        Ich sehe da einmal

        setState('javascript.0.Datenpunkte.StatusLichtAnText', lichtAnText );
        setState('javascript.0.Datenpunkte.StatusLichtAn', lichtAn );
        

        und einmal

        javascript.0 2018-12-19 20:30:43.288 warn at script.js.common.Abwesenheitskontrolle:11:9
        javascript.0 2018-12-19 20:30:43.277 warn getState "javascript.0.Datenpunkte.StatusLightOnText" not found (3)
        

        Das passt nicht ganz zusammen. Eine einheitliche Notation (entweder deutsch StatusLichtAnText oder englisch StatusLightOnText) könnte Abhilfe bringen

        1 Reply Last reply Reply Quote 0
        • J
          jEEESTAR last edited by

          Grüß dich.

          Ich habe jetzt alles einheitlich gemacht und immerhin sind die Fehlermeldungen alle weg.

          Jedoch schreibt er nicht die Werte in den Datenpunkt. Der Wert bleibt bei null, auch wenn ich eine Lampe angeschaltet lasse. Bekomme dann zwar eine Telegram Nachricht, jedoch keinen Text. Nur eine '0' wird gesendet.

          Berechtigung zum lesen und schreiben sind gegeben. Habe unten unter setState auch mal das javascript.0 entfernt und nur den Unterordner eingetragen. Dies brachte jedoch keine Änderung hervor, aber auch keinen Fehler, dass der Datenpunkt nicht gefunden werden konnte.

          ![](</s><URL url=)https://img.picload.org/image/dccdiaal/datenpunkt.png" />

          1 Reply Last reply Reply Quote 0
          • K
            Karl_999 last edited by

            Das angehängte Bild scheint es nicht mehr zu geben. Bitte direkt hier im Forum hochladen, dann gibt's solche Probleme nicht.

            Leider kommen deine Infos sehr bruchstückhaft.

            Im ersten Teil ging's nur um die Fehlermeldung. Die scheinen wir jetzt fertig zu haben.

            Jetzt wird auf einmal ein weiteres Stück Code erwähnt, dass nicht funktioniert. Dieses hast du uns bislang noch nicht präsentiert. Das macht eine gezielte Unterstützung relativ schwierig.

            Wie sieht das zweite Programm aus? Wie ist es mit dem ersten verknüpft?

            BTW: Ich empfehle in den Programmen immer zusätzliche Debugausgaben einzubauen, mit denen sich die einzelnen Fragen leichter lösen lassen.

            1 Reply Last reply Reply Quote 0
            • J
              jEEESTAR last edited by

              Ok, ich versuche es nochmal gänzlich zu erklären, damit ein umfassendes Bild möglich ist.

              Mein Code ist

              `function zaehleLampen()
              {
                var lichtAn = 0;
              
                var lampen = getObject("enum.functions.lampen").common.members;
                var name = getObject(rm[i]).common.name;
                for(let i = 0; i < lampen.length; i++) { 
                  var Status = getState(lampen[i]).val; 
                  if ( Status ) { lichtAn = lichtAn + 1; } 
                } 
              
                var lichtAnText = "Keine Lampe an"; 
              
                if ( lichtAn > 0 ) { 
                  lichtAnText = lichtAn + " Lampe(n) eingeschaltet"; 
                }
              
                setState('javascript.0.Datenpunkte.StatusLichtAnText', lichtAnText );
                setState('javascript.0.Datenpunkte.StatusLichtAn', lichtAn );
              }`
              
              Die letzten beiden Zeilen sollten eigentlich die beiden Datenpunkte mit den ausgelesenen Werten des Scriptes füllen. Also einmal der Text, ob eine Lampe noch an ist oder nicht und in dem zweiten Datenpunkt ein Wert von 0-x. Diese werden nur leider nicht beschrieben. Sprich der Wert ist konstant 0.
              
              Mein eigentlicher Gedanke war über ein Blockly Script die beiden Datenpunkte einzulesen und mir über Telegram beim Verlassen des Hauses einen Status zukommen zu lassen, falls ich ein Licht angelassen haben sollte.
              
              Mein Blockly-Script hierfür, sowie meine Aufzählung als auch meine Datenpunkte sehen wie folgt aus:
              
               ![15614_blockly.png](/assets/uploads/files/15614_blockly.png) 
               ![15614_datenpunkte.png](/assets/uploads/files/15614_datenpunkte.png) [/i][/i]
              
              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by paul53

                @jEEESTAR:

                Der Code sieht momentan wie folgt aus: `

                Der Code funktioniert so nicht. Vorschlag:

                const idAnwesend = 'javascript.0.Datenpunkte.Anwesenheit';
                const lights = getObject("enum.functions.lightstatus").common.members;
                
                function countLights() {
                   var lichtAn = 0;
                   var name = '';
                
                   for(let i = 0; i < lights.length; i++) {
                      if (getState(lights[i]).val) { 
                         lichtAn++;
                         name = name + getObject(lights[i]).common.name + ', ';
                      }
                   }
                
                   var lichtAnText = 'Alle Lampen aus';
                   if(lichtAn > 0) lichtAnText = 'Lampe(n) ein: ' + name;
                   setState('javascript.0.Datenpunkte.StatusLichtAnText', lichtAnText );
                   setState('javascript.0.Datenpunkte.StatusLichtAn', lichtAn );
                }
                
                on({id: idAnwesend, change: 'ne', val: false}, countLights);
                

                lightstatus muss den betreffenden Datenpunkten zugeordnet sein

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

                Support us

                ioBroker
                Community Adapters
                Donate

                881
                Online

                31.8k
                Users

                79.9k
                Topics

                1.3m
                Posts

                3
                6
                499
                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