Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Scrypt schaltet in Software aber nicht Physisch

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    268

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Scrypt schaltet in Software aber nicht Physisch

Scrypt schaltet in Software aber nicht Physisch

Scheduled Pinned Locked Moved JavaScript
4 Posts 3 Posters 294 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    powerpeer
    wrote on last edited by Homoran
    #1

    Moin,
    ich habe keine Ahnung und habe es von ChatGPT machen lassen aber vielleicht könnt ihr mir da besser weiter helfen

    wie gesagt ich kann in den Objekten sehen wie das Licht auf TRUE schaltet aber es ist nicht an, aber wenn ich es selbst mit der Maus auf TRUE schalte geht es an.

    const licht = 'zigbee.0.a4c1386f336183e9.state';
    const bewegungsmelder = 'zigbee.0.0017880103295819.occupancy';
    const luefter = 'hm-rpc.1.00255BE98CF4E0.4.STATE';
    
    let lichtTimer = null;
    let luefterTimer = null;
    let luefterStartTimer = null;
    let bewegungStart = null;
    
    on({ id: bewegungsmelder, change: 'ne' }, function (obj) {
    if (obj.state.val) {
    // Bewegung erkannt -> Licht sofort an
    setState(licht, true, true);
    
    // Zeitstempel speichern, wann Bewegung erkannt wurde
    bewegungStart = Date.now();
    
    // Falls Licht- oder Lüfter-Timer laufen, abbrechen
    if (lichtTimer) {
    clearTimeout(lichtTimer);
    lichtTimer = null;
    }
    if (luefterTimer) {
    clearTimeout(luefterTimer);
    luefterTimer = null;
    }
    if (luefterStartTimer) {
    clearTimeout(luefterStartTimer);
    luefterStartTimer = null;
    }
    
    // Lüfter erst nach 2 Min prüfen
    luefterStartTimer = setTimeout(() => {
    if (Date.now() - bewegungStart >= 2 * 60 * 1000) {
    // Falls Bewegung noch aktiv ist -> nach 3 weiteren Minuten Lüfter an
    luefterTimer = setTimeout(() => {
    setState(luefter, true, true);
    luefterTimer = null;
    }, 3 * 60 * 1000);
    }
    }, 2 * 60 * 1000);
    
    } else {
    // Keine Bewegung mehr -> Licht nach 20 Sekunden aus
    lichtTimer = setTimeout(() => {
    setState(licht, false, true);
    
    // Falls Lüfter an ist, nach 3 Minuten aus
    if (getState(luefter).val) {
    luefterTimer = setTimeout(() => {
    setState(luefter, false, true);
    luefterTimer = null;
    }, 3 * 60 * 1000);
    }
    }, 20 * 1000);
    }
    });
    

    MOD-EDIT: Code in code-tags gesetzt!

    vielen dank

    geschildG 1 Reply Last reply
    0
    • P powerpeer

      Moin,
      ich habe keine Ahnung und habe es von ChatGPT machen lassen aber vielleicht könnt ihr mir da besser weiter helfen

      wie gesagt ich kann in den Objekten sehen wie das Licht auf TRUE schaltet aber es ist nicht an, aber wenn ich es selbst mit der Maus auf TRUE schalte geht es an.

      const licht = 'zigbee.0.a4c1386f336183e9.state';
      const bewegungsmelder = 'zigbee.0.0017880103295819.occupancy';
      const luefter = 'hm-rpc.1.00255BE98CF4E0.4.STATE';
      
      let lichtTimer = null;
      let luefterTimer = null;
      let luefterStartTimer = null;
      let bewegungStart = null;
      
      on({ id: bewegungsmelder, change: 'ne' }, function (obj) {
      if (obj.state.val) {
      // Bewegung erkannt -> Licht sofort an
      setState(licht, true, true);
      
      // Zeitstempel speichern, wann Bewegung erkannt wurde
      bewegungStart = Date.now();
      
      // Falls Licht- oder Lüfter-Timer laufen, abbrechen
      if (lichtTimer) {
      clearTimeout(lichtTimer);
      lichtTimer = null;
      }
      if (luefterTimer) {
      clearTimeout(luefterTimer);
      luefterTimer = null;
      }
      if (luefterStartTimer) {
      clearTimeout(luefterStartTimer);
      luefterStartTimer = null;
      }
      
      // Lüfter erst nach 2 Min prüfen
      luefterStartTimer = setTimeout(() => {
      if (Date.now() - bewegungStart >= 2 * 60 * 1000) {
      // Falls Bewegung noch aktiv ist -> nach 3 weiteren Minuten Lüfter an
      luefterTimer = setTimeout(() => {
      setState(luefter, true, true);
      luefterTimer = null;
      }, 3 * 60 * 1000);
      }
      }, 2 * 60 * 1000);
      
      } else {
      // Keine Bewegung mehr -> Licht nach 20 Sekunden aus
      lichtTimer = setTimeout(() => {
      setState(licht, false, true);
      
      // Falls Lüfter an ist, nach 3 Minuten aus
      if (getState(luefter).val) {
      luefterTimer = setTimeout(() => {
      setState(luefter, false, true);
      luefterTimer = null;
      }, 3 * 60 * 1000);
      }
      }, 20 * 1000);
      }
      });
      

      MOD-EDIT: Code in code-tags gesetzt!

      vielen dank

      geschildG Offline
      geschildG Offline
      geschild
      wrote on last edited by
      #2

      @powerpeer Kann sein, das die Lampe nur auf 'sendpayload' reagiert:

      Generiere eine Variable: const lichtpay = 'zigbee.0.a4c1386f336183e9.send_payload';
      Ersetze mal sie Zeilen:
      setState(licht, true, true);
      durch:
      setState(lichtpay /* Send a raw json payload /, '{"state": "on"}');
      und :
      setState(licht, false, true);
      durch:
      setState(lichtpay /
      Send a raw json payload */, '{"state": "off"}');

      falls der Lüfter auch nicht geht, dann dito,

      P 1 Reply Last reply
      0
      • T Do not disturb
        T Do not disturb
        ticaki
        wrote on last edited by ticaki
        #3

        Kurz:
        setState(wo, was, false)
        oder einfach
        setState(wo, was)

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        1 Reply Last reply
        1
        • geschildG geschild

          @powerpeer Kann sein, das die Lampe nur auf 'sendpayload' reagiert:

          Generiere eine Variable: const lichtpay = 'zigbee.0.a4c1386f336183e9.send_payload';
          Ersetze mal sie Zeilen:
          setState(licht, true, true);
          durch:
          setState(lichtpay /* Send a raw json payload /, '{"state": "on"}');
          und :
          setState(licht, false, true);
          durch:
          setState(lichtpay /
          Send a raw json payload */, '{"state": "off"}');

          falls der Lüfter auch nicht geht, dann dito,

          P Offline
          P Offline
          powerpeer
          wrote on last edited by
          #4

          @geschild Oh ja Danke das funktioniert.

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate

          161

          Online

          32.4k

          Users

          81.3k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe