NEWS
Scrypt schaltet in Software aber nicht Physisch
-
Moin,
ich habe keine Ahnung und habe es von ChatGPT machen lassen aber vielleicht könnt ihr mir da besser weiter helfenwie 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
-
@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,
-
Kurz:
setState(wo, was, false)
oder einfach
setState(wo, was)
-
@geschild Oh ja Danke das funktioniert.