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. [SOLVED] if - if else Logik Problem

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

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

[SOLVED] if - if else Logik Problem

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 4 Kommentatoren 643 Aufrufe 3 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.
  • iPhilBlnI Offline
    iPhilBlnI Offline
    iPhilBln
    schrieb am zuletzt editiert von iPhilBln
    #1

    Hej,
    ich bin grade etwas verwundert über die Aktionen meines Skripts.

    'use strict'
    
    const home_id        = '0_userdata.0.member.home';
    const door_state_id  = 'nuki.0.480179117.states.state';
    const door_action_id = 'nuki.0.480179117.actions.action';
    
    on({id: home_id, change: 'ne'}, async (obj) => {
        let state = obj.state.val;
        console.log('State: ' + state + ' ts: ' + formatDate(obj.state.ts, 'hh:mm:ss'));
    
        if (state == 0 || state == 3) {
            for (let i = 0; i < 5; i++) {
                console.log('closing');
                setState(door_action_id, {val: 2, ack: false}); // closing the door
    
                await wait(30 * 1000);
    
                state = (await getStateAsync(door_state_id)).val;
                if (state == 1 || state == 4) break;
            }
        }
        else if (state == 2) {
            for (let i = 0; i < 5; i++) {
                console.log('opening');
                setState(door_action_id, {val: 1, ack: false}); // opening the door
    
                await wait(30 * 1000);
    
                state = (await getStateAsync(door_state_id)).val;
                if (state == 2 || state == 3) break;
            }
        }
    });
    

    Für gewöhnlich kenne ich es so, dass nur eine der äußeren Bedingung ausgeführt werden, wenn die condition wahr ist. Allerdings scheint es so, dass hier ständig zwischen beiden hin und her geswitcht wird, ohne dass der Trigger auslöst. Dazu mal ein Auszug aus meinem LOG:

    >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: State: 2 ts: 17:24:46
    >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
    >2023-12-28 17:24:46.934  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780686885,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780686885}
    >2023-12-28 17:24:56.998  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
    >2023-12-28 17:24:57.043  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
    >2023-12-28 17:25:01.231  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
    >2023-12-28 17:25:01.234  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780701232,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780701232}
    >2023-12-28 17:25:01.467  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
    >2023-12-28 17:25:16.887  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
    >2023-12-28 17:25:16.890  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780716888,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780716888}
    >2023-12-28 17:25:31.232  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
    >2023-12-28 17:25:31.235  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780731233,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780731233}
    >2023-12-28 17:25:46.889  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
    >2023-12-28 17:25:46.892  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780746889,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780746889}
    >2023-12-28 17:26:01.234  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
    >2023-12-28 17:26:01.237  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780761234,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780761234}
    

    MOD-EDIT: Code in code-tags gesetzt!

    Ich hoffe man erkennt es, aber in der Konsole wird nur einmalig state mit Zeitstempel ausgegeben, was soweit auch richtig ist, denn home_id ändert sich auch nur einmalig. Und doch wird ständig zwischen den beiden setState hin und her geswitcht, was zur Folge hat, dass die Tür in unregelmäßigem Muster auf und zu geschlossen wird. Wer kann mir hier weiterhelfen?

    Meine Vermutung liegt hierbei darauf, dass die Variable state durch verschiedene Datenpunkte beschrieben wird, allerdings verstehe ich nicht wo das problem liegen könnte, da beides vom Typ Number ist und eigentlich ja auch erst nach der iF - IF ELSE condition neu beschrieben wird.

    CodierknechtC amg_666A 2 Antworten Letzte Antwort
    0
    • iPhilBlnI iPhilBln

      Hej,
      ich bin grade etwas verwundert über die Aktionen meines Skripts.

      'use strict'
      
      const home_id        = '0_userdata.0.member.home';
      const door_state_id  = 'nuki.0.480179117.states.state';
      const door_action_id = 'nuki.0.480179117.actions.action';
      
      on({id: home_id, change: 'ne'}, async (obj) => {
          let state = obj.state.val;
          console.log('State: ' + state + ' ts: ' + formatDate(obj.state.ts, 'hh:mm:ss'));
      
          if (state == 0 || state == 3) {
              for (let i = 0; i < 5; i++) {
                  console.log('closing');
                  setState(door_action_id, {val: 2, ack: false}); // closing the door
      
                  await wait(30 * 1000);
      
                  state = (await getStateAsync(door_state_id)).val;
                  if (state == 1 || state == 4) break;
              }
          }
          else if (state == 2) {
              for (let i = 0; i < 5; i++) {
                  console.log('opening');
                  setState(door_action_id, {val: 1, ack: false}); // opening the door
      
                  await wait(30 * 1000);
      
                  state = (await getStateAsync(door_state_id)).val;
                  if (state == 2 || state == 3) break;
              }
          }
      });
      

      Für gewöhnlich kenne ich es so, dass nur eine der äußeren Bedingung ausgeführt werden, wenn die condition wahr ist. Allerdings scheint es so, dass hier ständig zwischen beiden hin und her geswitcht wird, ohne dass der Trigger auslöst. Dazu mal ein Auszug aus meinem LOG:

      >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: State: 2 ts: 17:24:46
      >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
      >2023-12-28 17:24:46.934  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780686885,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780686885}
      >2023-12-28 17:24:56.998  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
      >2023-12-28 17:24:57.043  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
      >2023-12-28 17:25:01.231  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
      >2023-12-28 17:25:01.234  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780701232,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780701232}
      >2023-12-28 17:25:01.467  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
      >2023-12-28 17:25:16.887  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
      >2023-12-28 17:25:16.890  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780716888,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780716888}
      >2023-12-28 17:25:31.232  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
      >2023-12-28 17:25:31.235  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780731233,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780731233}
      >2023-12-28 17:25:46.889  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
      >2023-12-28 17:25:46.892  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780746889,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780746889}
      >2023-12-28 17:26:01.234  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
      >2023-12-28 17:26:01.237  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780761234,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780761234}
      

      MOD-EDIT: Code in code-tags gesetzt!

      Ich hoffe man erkennt es, aber in der Konsole wird nur einmalig state mit Zeitstempel ausgegeben, was soweit auch richtig ist, denn home_id ändert sich auch nur einmalig. Und doch wird ständig zwischen den beiden setState hin und her geswitcht, was zur Folge hat, dass die Tür in unregelmäßigem Muster auf und zu geschlossen wird. Wer kann mir hier weiterhelfen?

      Meine Vermutung liegt hierbei darauf, dass die Variable state durch verschiedene Datenpunkte beschrieben wird, allerdings verstehe ich nicht wo das problem liegen könnte, da beides vom Typ Number ist und eigentlich ja auch erst nach der iF - IF ELSE condition neu beschrieben wird.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #2

      @iphilbln
      Wozu sollen die Schleifen dienen?

      Du veränderst innerhalb der Schleifen das state.
      Wenn die Schleifen schon unbedingt benötigt werden, würde ich innerhalb mit anderen Variablen arbeiten.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      iPhilBlnI 1 Antwort Letzte Antwort
      0
      • iPhilBlnI iPhilBln

        Hej,
        ich bin grade etwas verwundert über die Aktionen meines Skripts.

        'use strict'
        
        const home_id        = '0_userdata.0.member.home';
        const door_state_id  = 'nuki.0.480179117.states.state';
        const door_action_id = 'nuki.0.480179117.actions.action';
        
        on({id: home_id, change: 'ne'}, async (obj) => {
            let state = obj.state.val;
            console.log('State: ' + state + ' ts: ' + formatDate(obj.state.ts, 'hh:mm:ss'));
        
            if (state == 0 || state == 3) {
                for (let i = 0; i < 5; i++) {
                    console.log('closing');
                    setState(door_action_id, {val: 2, ack: false}); // closing the door
        
                    await wait(30 * 1000);
        
                    state = (await getStateAsync(door_state_id)).val;
                    if (state == 1 || state == 4) break;
                }
            }
            else if (state == 2) {
                for (let i = 0; i < 5; i++) {
                    console.log('opening');
                    setState(door_action_id, {val: 1, ack: false}); // opening the door
        
                    await wait(30 * 1000);
        
                    state = (await getStateAsync(door_state_id)).val;
                    if (state == 2 || state == 3) break;
                }
            }
        });
        

        Für gewöhnlich kenne ich es so, dass nur eine der äußeren Bedingung ausgeführt werden, wenn die condition wahr ist. Allerdings scheint es so, dass hier ständig zwischen beiden hin und her geswitcht wird, ohne dass der Trigger auslöst. Dazu mal ein Auszug aus meinem LOG:

        >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: State: 2 ts: 17:24:46
        >2023-12-28 17:24:46.885  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
        >2023-12-28 17:24:46.934  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780686885,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780686885}
        >2023-12-28 17:24:56.998  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
        >2023-12-28 17:24:57.043  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
        >2023-12-28 17:25:01.231  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
        >2023-12-28 17:25:01.234  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780701232,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780701232}
        >2023-12-28 17:25:01.467  - info: javascript.0 (652) script.js.anwesenheiten.anwesenheit: {"default":{"name":"Home","atHome":2,"atHomeID":"0_userdata.0.member.home"},"persons":[{"name":"Phil","atHome":2,"stateID":"mqtt.0.home.member.phil.presence","atHomeID":"0_userdata.0.member.persons.phil"},{"name":"Caro","atHome":2,"stateID":"mqtt.0.home.member.caro.presence","atHomeID":"0_userdata.0.member.persons.caro"},{"name":"Sabrina","atHome":0,"stateID":"mqtt.0.home.member.sabrina.presence","atHomeID":"0_userdata.0.member.persons.sabrina"}]}
        >2023-12-28 17:25:16.887  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
        >2023-12-28 17:25:16.890  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780716888,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780716888}
        >2023-12-28 17:25:31.232  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
        >2023-12-28 17:25:31.235  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780731233,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780731233}
        >2023-12-28 17:25:46.889  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: opening
        >2023-12-28 17:25:46.892  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":1,"ack":false,"ts":1703780746889,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780746889}
        >2023-12-28 17:26:01.234  - info: javascript.0 (652) script.js.türschlösser.wohnungstuer: closing
        >2023-12-28 17:26:01.237  - debug: nuki.0 (1424) stateChange nuki.0.480179117.actions.action {"val":2,"ack":false,"ts":1703780761234,"q":0,"c":"script.js.türschlösser.wohnungstuer","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1703780761234}
        

        MOD-EDIT: Code in code-tags gesetzt!

        Ich hoffe man erkennt es, aber in der Konsole wird nur einmalig state mit Zeitstempel ausgegeben, was soweit auch richtig ist, denn home_id ändert sich auch nur einmalig. Und doch wird ständig zwischen den beiden setState hin und her geswitcht, was zur Folge hat, dass die Tür in unregelmäßigem Muster auf und zu geschlossen wird. Wer kann mir hier weiterhelfen?

        Meine Vermutung liegt hierbei darauf, dass die Variable state durch verschiedene Datenpunkte beschrieben wird, allerdings verstehe ich nicht wo das problem liegen könnte, da beides vom Typ Number ist und eigentlich ja auch erst nach der iF - IF ELSE condition neu beschrieben wird.

        amg_666A Offline
        amg_666A Offline
        amg_666
        schrieb am zuletzt editiert von
        #3

        @iphilbln ich steig da nicht ganz durch, was du eigentlich machen willst, aber
        in Zeile 11 prüfst du state auf "1" oder "3" und state ist der Wert von "home_id" später in Zeile 19 bist du immer noch im "IF-Teil" und änderst state auf den Wert von "door_state_id".
        Ich weiß nicht ob es besonders schlau ist innerhalb eines IF Arguments den Wert zu ändern auf den man geprüft hat.
        (Ehrlich gesagt weiß ich es schon und es ist nicht besonders schlau :-) )
        Ich würd mal versuchen in Zeile 19 eine andere Variable zu nehmen (z.B. "state_door")

        iobroker auf proxmox container

        iPhilBlnI 1 Antwort Letzte Antwort
        0
        • CodierknechtC Codierknecht

          @iphilbln
          Wozu sollen die Schleifen dienen?

          Du veränderst innerhalb der Schleifen das state.
          Wenn die Schleifen schon unbedingt benötigt werden, würde ich innerhalb mit anderen Variablen arbeiten.

          iPhilBlnI Offline
          iPhilBlnI Offline
          iPhilBln
          schrieb am zuletzt editiert von iPhilBln
          #4

          @codierknecht
          Die Schleife ist deshalb, weil das Nuki hin und wieder Befehle verschluckt und dann die Tür nicht auf oder abgeschlossen wird. Wieso das so ist, kann ich dir nicht verraten.
          Das mit der Variable ist mir im Nachhinein auch noch aufgefallen, nur ich wüsste nicht wieso die Variable die äußere IF - IF ELSE Abfrage beeinflussen sollte?

          amg_666A 1 Antwort Letzte Antwort
          0
          • amg_666A amg_666

            @iphilbln ich steig da nicht ganz durch, was du eigentlich machen willst, aber
            in Zeile 11 prüfst du state auf "1" oder "3" und state ist der Wert von "home_id" später in Zeile 19 bist du immer noch im "IF-Teil" und änderst state auf den Wert von "door_state_id".
            Ich weiß nicht ob es besonders schlau ist innerhalb eines IF Arguments den Wert zu ändern auf den man geprüft hat.
            (Ehrlich gesagt weiß ich es schon und es ist nicht besonders schlau :-) )
            Ich würd mal versuchen in Zeile 19 eine andere Variable zu nehmen (z.B. "state_door")

            iPhilBlnI Offline
            iPhilBlnI Offline
            iPhilBln
            schrieb am zuletzt editiert von
            #5

            @amg_666
            Ich verstehe schon deine Argumentation, nur wüsste ich gerne wieso es bei javascript hierbei zu Problemen kommen kann?
            Bin da eher mit C/C++ vertraut und dort kommt es eigentlich nicht zu solchen Phänomenen.

            Ich denke aber das Problem liegt aktuell auch eher daran, dass wenn der Trigger innerhalb der Schleife erneut aufgerufen wird und die gegenteilige Abfrage wahr ist, die beiden Schleifen gegeneinander laufen aktuell.

            1 Antwort Letzte Antwort
            0
            • iPhilBlnI iPhilBln

              @codierknecht
              Die Schleife ist deshalb, weil das Nuki hin und wieder Befehle verschluckt und dann die Tür nicht auf oder abgeschlossen wird. Wieso das so ist, kann ich dir nicht verraten.
              Das mit der Variable ist mir im Nachhinein auch noch aufgefallen, nur ich wüsste nicht wieso die Variable die äußere IF - IF ELSE Abfrage beeinflussen sollte?

              amg_666A Offline
              amg_666A Offline
              amg_666
              schrieb am zuletzt editiert von
              #6

              @iphilbln sagte in if - if else Logik Problem:

              Das mit der Variable ist mir im Nachhinein auch noch aufgefallen, nur ich wüsste nicht wieso die Variable die äußere IF - IF ELSE Abfrage beeinflussen sollte?

              Probiers doch einfach mal aus

              Ich denke aber das Problem liegt aktuell auch eher daran, dass wenn der Trigger innerhalb der Schleife erneut aufgerufen wird und die gegenteilige Abfrage wahr ist, die beiden Schleifen gegeneinander laufen aktuell.

              Wenn du das vermeiden willst könntest du ja einen Logikwert verwenden, der mit im Trigger abgefragt wird und solange die Schleife durchlaufen wird auf "False" gesetzt wird, anschliessend wieder auf "True".

              iobroker auf proxmox container

              iPhilBlnI 1 Antwort Letzte Antwort
              0
              • amg_666A amg_666

                @iphilbln sagte in if - if else Logik Problem:

                Das mit der Variable ist mir im Nachhinein auch noch aufgefallen, nur ich wüsste nicht wieso die Variable die äußere IF - IF ELSE Abfrage beeinflussen sollte?

                Probiers doch einfach mal aus

                Ich denke aber das Problem liegt aktuell auch eher daran, dass wenn der Trigger innerhalb der Schleife erneut aufgerufen wird und die gegenteilige Abfrage wahr ist, die beiden Schleifen gegeneinander laufen aktuell.

                Wenn du das vermeiden willst könntest du ja einen Logikwert verwenden, der mit im Trigger abgefragt wird und solange die Schleife durchlaufen wird auf "False" gesetzt wird, anschliessend wieder auf "True".

                iPhilBlnI Offline
                iPhilBlnI Offline
                iPhilBln
                schrieb am zuletzt editiert von
                #7

                @amg_666 sagte in if - if else Logik Problem:

                Probiers doch einfach mal aus

                Hmm klar kann man viele Sachen auch über try and error erlernen, aber ich bin eigentlich eher ein Fan davon auch die Hintergründe zu verstehen.
                Vielleicht kannst du mir ja noch nähere Infos dazu geben, das wäre super.

                Nichtsdesto trotz habe ich das Problem jetzt glaube ich gelöst mit der gegenseitigen Verriegelung der Schleifen durch ne boolsche Variable. Ich denke das war das Problem, dass die beiden Schleifen gleichzeitig in 2 verschiedenen Threads gelaufen sind und sich so gegenseitig beeinflusst haben.

                T 1 Antwort Letzte Antwort
                0
                • iPhilBlnI iPhilBln

                  @amg_666 sagte in if - if else Logik Problem:

                  Probiers doch einfach mal aus

                  Hmm klar kann man viele Sachen auch über try and error erlernen, aber ich bin eigentlich eher ein Fan davon auch die Hintergründe zu verstehen.
                  Vielleicht kannst du mir ja noch nähere Infos dazu geben, das wäre super.

                  Nichtsdesto trotz habe ich das Problem jetzt glaube ich gelöst mit der gegenseitigen Verriegelung der Schleifen durch ne boolsche Variable. Ich denke das war das Problem, dass die beiden Schleifen gleichzeitig in 2 verschiedenen Threads gelaufen sind und sich so gegenseitig beeinflusst haben.

                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #8

                  @iphilbln
                  Javascript-Adapter neustarten, das verhalten ist nicht nachvollziehbar.

                  Das Skript ist in der obrigen Version nicht gegen mehrfach Aufruf gesichert. Nicht gut.

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  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

                  809

                  Online

                  32.5k

                  Benutzer

                  81.6k

                  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