NEWS
Skript vorschlag von ChatGPT korrekt?
-
Ich habe ChatGPT gefragt wie man täglich einen Objekt auf true setzen kann sobald eine von 3 Lampen eingeschaltet wird.
kann mir jemand der Ahnung hat die Antwort bestätigen? Ich denke nämlich hier wird der state nicht auf false zurück gesetzt. zb um Mitternacht.on({id: 'lamp1', val: true}, {id: 'lamp2', val: true}, {id: 'lamp3', val: true}, function (obj1, obj2, obj3) { var d = new Date(); var today = d.toDateString(); var objectState = getState('light1').val; if ((objectState == false) && (getState(obj1.id).ts > d.setHours(0, 0, 0, 0)) && (getState(obj2.id).ts > d.setHours(0, 0, 0, 0)) && (getState(obj3.id).ts > d.setHours(0, 0, 0, 0))) { setState('light1', true); } });
der zusätzliche Text von ChatGPT:
In diesem Beispielcode wird das Objekt "light1" nur einmal täglich auf "true" gesetzt, wenn eine der drei Lampen (mit den IDs "lamp1", "lamp2" und "lamp3") eingeschaltet wird und dies noch nicht an diesem Tag geschehen ist. -
@rtwl
Dieser Code funktioniert nicht, da der Trigger falsch gebildet wird und ein Zeit-Trigger (Mitternacht) zum Ausschalten fehlt. Zeile 1 enthält völligen Blödsinn.@rtwl sagte in Skript vorschlag von ChatGPT korrekt?:
täglich einen Objekt auf true setzen
Welches Objekt?
-
Hab meine Frage an ChatGPT genauer gestellt und folgendes bekommen. Ich denke so sieht es besser aus:
oder?// Objekt-ID des Zielobjekts const ZielobjektID = 'zielobjekt.0.state'; // Objekt-IDs der drei Lampen const Lampe1ID = 'lampe1.0.state'; const Lampe2ID = 'lampe2.0.state'; const Lampe3ID = 'lampe3.0.state'; // Aktuelles Datum const heute = new Date(); // Mitternacht des aktuellen Tages const mitternacht = new Date(heute.getFullYear(), heute.getMonth(), heute.getDate(), 24); // Funktion, um das Zielobjekt auf true zu setzen function setzeZielobjekt() { setState(ZielobjektID, true); } // Funktion, um das Zielobjekt auf false zu setzen function resetZielobjekt() { setState(ZielobjektID, false); } // Funktion, um zu überprüfen, ob das Zielobjekt bereits auf true gesetzt wurde function istZielobjektGesetzt() { const zielobjekt = getState(ZielobjektID); return (zielobjekt && zielobjekt.val === true); } // Funktion, um das Einschalten einer der Lampen zu überwachen function ueberwacheLampen() { if (!istZielobjektGesetzt()) { if (getState(Lampe1ID).val === true) { setzeZielobjekt(); } else if (getState(Lampe2ID).val === true) { setzeZielobjekt(); } else if (getState(Lampe3ID).val === true) { setzeZielobjekt(); } } } // Überwache die Lampen on({id: Lampe1ID, change: 'ne'}, ueberwacheLampen); on({id: Lampe2ID, change: 'ne'}, ueberwacheLampen); on({id: Lampe3ID, change: 'ne'}, ueberwacheLampen); // Setze das Zielobjekt jeden Tag um Mitternacht zurück auf false schedule('0 0 * * *', resetZielobjekt);
-
@rtwl sagte: so sieht es besser aus: oder?
Viel zu kompliziert. Vorschlag:
const idObject = '0_userdata.0.light'; on({id: ['adapter.0.lamp1','adapter.0.lamp2','adapter.0.lamp3'], change: 'gt'}, function() { if(!getState(idObject).val) setState(idObject, true, true) }); schedule('0 0 * * *', function() { if(getState(idObject).val) setState(idObject, false, true) });
-
Super danke.
ich dachte mir, dass es einfacher gehen würde.
das heißt also ChatGPT kann es wenn man die richtige Frage stellt es ist aber zu kompliziert. gut zu wissen