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. Problem bei Abfrage von 2 Sensoren an einem Fenster

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    986

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Problem bei Abfrage von 2 Sensoren an einem Fenster

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
1 Beiträge 1 Kommentatoren 193 Aufrufe 1 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.
  • L Offline
    L Offline
    Langer
    schrieb am zuletzt editiert von Langer
    #1

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

    672

    Online

    32.6k

    Benutzer

    82.3k

    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