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. Lampencheck bei verlassen des WLANs

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

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

Lampencheck bei verlassen des WLANs

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 597 Aufrufe
  • Ä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.
  • J Offline
    J Offline
    jEEESTAR
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • K Offline
      K Offline
      Karl_999
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • J Offline
        J Offline
        jEEESTAR
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          Karl_999
          schrieb am zuletzt editiert von
          #4

          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 Antwort Letzte Antwort
          0
          • J Offline
            J Offline
            jEEESTAR
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @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

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

              553

              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