NEWS
Script wenn mehr als 30min true
-
@cephalopod sagte in Script wenn mehr als 30min true:
Ich habe die zweite Variante genommen, ist "eleganter".
Die zweite von @paul53 startet den Timer wenn beim Öffnen des Fensters die Temperatur weniger 15 Grad ist.
Bei meiner Variante startet der Timer immer wenn das Fenster geöffnet wird, aber es erfolgt nur eine Nachricht wenn nach Ablauf des Timers die Aussentemperatur weniger 15 Grad ist.Bei "wert" wird immer "true" ("wahr") abgefragt.
-
@cephalopod sagte in Script wenn mehr als 30min true:
Ihr habt beide nur
Falls Wertgeschrieben.
Muss man nicht
Falls Wert = wahrschreiben?
Du musst Dir grundsätzlich vorstellen, dass jeder Ausdruck daraufhin überprüft wird, ob er wahr wird. Also ist eine Bedinung wahr wenn 0=0 ist oder gelb=gelb. Wenn der Wert an sich wahr ist dann wird also immer ausgeführt. Das heißt es muss nicht mal ein Ausdruck ausgewertet werden, wenn der Wert wahr ist. Also wenn Wert=wahr kann man sich deshalb sparen, wenn die Bedingung sowieso wahr ist, weil der Wert wahr ist. Mit anderen Worten: Lieber Computer Du musst gar nichts auswerten, ich sag Dir direkt ob die Bedingung wahr oder falsch ist.
-
@vitaminc Computer sind leider nicht schlau. Sie machen genau das was du ihnen sagst (auch wenn es Schwachsinn ist).
Was Dein Skript macht:
Alle 30 Minuten fügst du einen weiteren Trigger in die Triggerliste ein, die alle deine AnyOn Objekte überprüft. Wenn das Skript lange genug läuft wird der JS Adapter sich verabschieden.
Nicht elegant.
Es hilft sich 2 Dinge zu merken:
- Trigger in Trigger ist Mist. Das geht nur in besonderen Fällen, und gilt für fast alle (Haupt)Bausteine aus dem Trigger Bereich.
- Ein Trigger ist keine "Falls Bedingung mache" abfrage. Es ist die Aufforderung eine Bedingung dauerhaft zu überwachen. Dabei wird prinzipiell nicht überprüft wie oft die identische Bedingung überwacht wird.
Ansonsten hast du das Problem das die Methode für 1 Lampe geht, für mehrere so nicht, da das ausschalten einer beliebigen Lampe eine 0 Einträgt.
Was du wirklich willst:

Intern zählt das Skript die Lampen die an sind. Zählen tut er die Lampen sofort, nur das Schreiben in deinen AnyOn Datenpunkt passiert erst nach 1 Minute. (oder nach 20, wenn jemand 19 Minuten lang alle 50 Sekunden eine beliebige Lampe schaltet :) )
Nachtrag:
Bei Skriptstart muss das Skript natürlich alle Lampen abfragen, um zu ermitteln welche an sind. Macht es auch.
Danke für deinen Input. Habe das mal umgesetzt, in dem ich alle Bewegungsmelder auf Veränderung prüfen möchte und mir dann in ein Datenpunkt eine 0 oder 1 schreiben möchte, je nachdem ob sich z.B. nach 1 Minute etwas verändert hat oder nicht. Habe für die Bewegungsmelder eine Funktion angelegt:

Zudem einen Datenpunkt als Zahl namens Any_MotionSensor, dort will ich eine 0 oder 1 haben.
Hier das Script, das ich nach deiner Anleitung nachgebaut habe:

Dann kommt:
10:29:09.997 error javascript.0 (187) script.js.common.Bewegungsmelder_V1 Error by subscription (trigger): empty ID defined. All states matched. -
Danke für deinen Input. Habe das mal umgesetzt, in dem ich alle Bewegungsmelder auf Veränderung prüfen möchte und mir dann in ein Datenpunkt eine 0 oder 1 schreiben möchte, je nachdem ob sich z.B. nach 1 Minute etwas verändert hat oder nicht. Habe für die Bewegungsmelder eine Funktion angelegt:

Zudem einen Datenpunkt als Zahl namens Any_MotionSensor, dort will ich eine 0 oder 1 haben.
Hier das Script, das ich nach deiner Anleitung nachgebaut habe:

Dann kommt:
10:29:09.997 error javascript.0 (187) script.js.common.Bewegungsmelder_V1 Error by subscription (trigger): empty ID defined. All states matched. -
Eine Frage noch.
Diesen Part verstehe ich nicht:
Fall Wert
erhöhe um 1
sonst um 1.Das war auch so in der Vorlage von @Asgothian

-
Eine Frage noch.
Diesen Part verstehe ich nicht:
Fall Wert
erhöhe um 1
sonst um 1.Das war auch so in der Vorlage von @Asgothian

-
So, mein Script funktioniert soweit

Wie füge ich eine weitere Bedingung ein, dass die Außentemperatur unterhalb von 15 °C sein muss, damit alarmiert wird?
@cephalopod sagte in Script wenn mehr als 30min true:
So, mein Script funktioniert soweit

Äääääh, so ganz funktioniert mein Script doch nicht.
Wenn das Fenster innerhalb der 30 Minuten geschlossen wurde, kommt trotzdem der Spruch "Fenster schließen".Wie kann das sein?
-
@cephalopod sagte in Script wenn mehr als 30min true:
So, mein Script funktioniert soweit

Äääääh, so ganz funktioniert mein Script doch nicht.
Wenn das Fenster innerhalb der 30 Minuten geschlossen wurde, kommt trotzdem der Spruch "Fenster schließen".Wie kann das sein?
