Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Problem bei Abfrage von 2 Sensoren an einem Fenster

    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

    Problem bei Abfrage von 2 Sensoren an einem Fenster

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

      Hallo zusammen,

      vorab, ich habe 2 Sensoren an jedem Fenster,
      ein Sensor oben für gekippt und
      eins unten für offen, wobei bei öffnen beide Sensoren auslösen!

      Hier mein Script

      let pfadRaeumeTeil1 = "0_userdata.0.vis.StatusHaus.Raeume.";
      let pfadSensorTeil1 = 'bshb.0.hdm:HomeMaticIP:';
      let pfadSensorTeil2 = '.ShutterContact.value';
      let fensterDeviceID;
      
      let fensterAuf = 0;
      let fensterGekippt = 0;
      
      /*Auszug Json Fenster
      [
       {
         "Pfad_Status": "Schlafzimmer.Fenster_Terrasse-Links",
         "Name_Sensor_Oben": "3014F711A000009A18592597",
         "Name_Sensor_Unten": "3014F711A000009BB85FD526"
       },
       {
         "Pfad_Status": "Schlafzimmer.Fenster_Terrasse-Rechts",
         "Name_Sensor_Oben": "3014F711A000009BB85FD559",
         "Name_Sensor_Unten": "3014F711A000009A18592781"
       }
      ]
      */
      let dpFenster = '0_userdata.0.vis.StatusHaus.Sensoren.Fenster';
      let jsonFenster = JSON.parse(getState(dpFenster).val);
      
      $('state[id=*](functions=fenster)').on(function(dp) {
         fensterAuf = 0;
         fensterGekippt = 0;
         fensterDeviceID = dp.deviceId;
         fensterStatus(dp.id);
      });
      
      async function fensterStatus(fensterID) {   
      
         for (let i = 0; i <= jsonFenster.length -1; i ++) {
      
             let sensorOben = pfadSensorTeil1 + jsonFenster[i].Name_Sensor_Oben + pfadSensorTeil2;
             let sensorUnten = pfadSensorTeil1 + jsonFenster[i].Name_Sensor_Unten + pfadSensorTeil2;
      
             let sensorObenVal = (await getStateAsync(sensorOben)).val;
             await sleep(50);
             let sensorUntenVal = (await getStateAsync(sensorUnten)).val;
             await sleep(50);
             let sensorName = pfadRaeumeTeil1 + jsonFenster[i].Pfad_Status;
      
             if ((fensterID === sensorOben) || (fensterID === sensorUnten)) {
                 SensorStatus(sensorName, sensorObenVal, sensorUntenVal);
             };
             
             statusFenster(sensorName, sensorObenVal, sensorUntenVal);
             
         }; //Ende for
         
         log('Auf: ' + fensterAuf);
         log('Gekippt: ' + fensterGekippt);
         
      }; //Ende fuction
      
      //Anzahl offene und/oder gekippte Fenster
      function statusFenster(NameRaum, sensorObenVal, sensorUntenVal) {
      
         if (sensorUntenVal === "OPEN") {
             fensterAuf ++;
         } else if (sensorUntenVal === "CLOSED") {
             if (sensorObenVal === "OPEN") {
                 fensterGekippt ++;
             };
         };
      
      };
      
      //Dient zur Grafischen Anzeige in der View "Home"
      async function SensorStatus(NameRaum, sensorObenVal, sensorUntenVal) {
      
         let zustandID = 0;
      
         if (sensorUntenVal === "OPEN") {
             zustandID = 1;
         } else if (sensorUntenVal === "CLOSED") {
             if (sensorObenVal === "CLOSED") {
                 zustandID = 0;
             } else if (sensorObenVal === "OPEN") {
                 zustandID = 2;
             };
         };
         
         await setStateAsync(NameRaum, zustandID );
      
      };
      
      

      Der Teil für die grafische Darstellung funktioniert.

      Bei "statusFenster" Probleme.

      Wenn ein Fenster gekippt wird steht im log
      Auf: 0
      Gekippt: 1
      wenn geöffnet steht im Log
      Auf:2
      Gekippt: 0

      Was kann und muss ich ändern?

      Für die Hilfe schon mal vorab Herzlichen Dank.

      MfG
      Wastl

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

      Support us

      ioBroker
      Community Adapters
      Donate

      572
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      javascript
      1
      1
      126
      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