NEWS
Etwas nur tagsüber laufen lassen
-
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
konkret nach Sonnenaufgang und vor Sonnenuntergang.
Dafür gibt es den Datenpunkt
isDayTime
unterjavascript.0.variables
. Auf welche Astro-Ereignisse der reagieren soll, kann in den Instanzeinstellungen festgelegt werden.EDIT: Sorry @DJMarc75 - hatte übersehen dass Du das schon geteilt hattest.
-
@djmarc75 sagte in Etwas nur tagsüber laufen lassen:
Ich nutze dafür eigentlich immer folgenden Datenpunkt:
javascript.0.variables.isDayTime
Ich gebe zu ich verstehe die Befehle so nicht.
Was soll dieses Falls Objekte ist größer als bewirken?
Was für ein Objekt würde man dahinter packen?Oder geht es nur um dieses "falls isdaytime"?
-
@haus-automatisierung sagte in Etwas nur tagsüber laufen lassen:
Dafür gibt es den Datenpunkt
isDayTime
unterjavascript.0.variables
. Auf welche Astro-Ereignisse der reagieren soll, kann in den Instanzeinstellungen festgelegt werden.Interessant zu wissen, dass man den DP isDayTime so gut feintunen kann.
-
Der Trigger ist Dein Bewegungsmelder, größer als letztes bedeutet dass nur dann getriggert wird wenn der Datenpunkt von false auf true oder 0 auf größer 0 springt.
Der blaue falls Block beinhaltet die Bedingung dass nur wenn Tag ist die Aktion ausgeführt wird. -
@djmarc75 sagte in Etwas nur tagsüber laufen lassen:
Der Trigger ist Dein Bewegungsmelder, größer als letztes bedeutet dass nur dann getriggert wird wenn der Datenpunkt von false auf true oder 0 auf größer 0 springt.
Ah, schlauer move. Diese Betrachtungsweise für den Wechsel einer Boolean Variable von false auf true als Zahlen zu sehen. Wieder was gelernt.
-
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
als Zahlen zu sehen
kann natürlich auch von Zahl x auf größere Zahl als x sein - Hauptsache der Wert ist größer als der vorherige
-
Ich habs jetzt mal ausporbieren können und bekomme das Ding irgendwie nicht zum Fliegen.
Das beschert mir nur einen Fehler:
script.js.Tests.Test_Tageszeit Error by subscription (trigger): Wrong ID of type boolean or number.
Ich verstehe nicht, was für ein Problem er hat, denn der triggernde DP ist Boolean.
-
@bertderkleine Im Trigger den blauen Baustein entfernen und dann NUR die ObjektID auswählen
-
@bertderkleine
Den Fehler hat Dir @DJMarc75 genannt.Du kannst das aber auch noch vereinfachen:
- Du brauchst keine zwei "Falls". 1 Block mit "Falls/Sonst" tut's auch.
- Wenn der Trigger schon auf den richtigen DP zeigt, musst Du den Wert nicht nochmal lesen. Nimm aus dem Bereich "Trigger" den Block "Wert".
- Boolean muss man nicht mit "Falls Wert = True" oder "Falls Wert = False" prüfen.
Hier reicht ein "Falls Wert" bzw. "Falls Nicht Wert".
https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps
Edit: Vorschlag:
-
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
Ich verstehe nicht, was für ein Problem er hat, denn der triggernde DP ist Boolean.
Was Du machst, ist gerade:
"Lieber JavaScript-Adapter, sag mir mal wann sich das hier ändert:
true
"Das ist der Wert des Datenpunktes (wie hier schon erläutert). Und damit gibt es keine Referenz mehr auf die Objekt-ID. Eigentlich hatte ich die Blöcke mal grün gefärbt, damit man sieht dass da ein String rein muss...
Da die Warnung für Dich scheinbar nicht verständlich ist: Wie hätte diese denn lauten müssen, damit Du weißt was falsch ist?
-
@codierknecht
Danke Dir.
Ich hoffe, so ist es nun richtig:
-
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
Ich hoffe, so ist es nun richtig:
Ja, würde zwar den Wert aus dem Trigger nehmen (siehe oben von @Codierknecht ), aber geht.
Hat nur das Problem, dass auf jeden Fall nach 5 Min das Licht ausgeht, auch wenn danach wieder eine neue Bewegung erkannt wird. Nur der "keine Bewegung mehr erkannt"-Zweig verlängert das um weitere 5min.
Ein manueller Timeout löst das Problem.
-
Wie @haus-automatisierung schon schreibt: Versuche es mit einem selbst hinzugefügten Timeout zu lösen.
https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/9
-
@bertderkleine wie schon von @haus-automatisierung geschrieben würde ein Timeout das lösen:
-
@haus-automatisierung sagte in Etwas nur tagsüber laufen lassen:
Was Du machst, ist gerade:
"Lieber JavaScript-Adapter, sag mir mal wann sich das hier ändert:true
"Genau, und das klingt für mich erstmal richtig. Ich will prüfen, ob sich true auf false und umgekehrt ändert.
Das ist der Wert des Datenpunktes (wie hier schon erläutert). Und damit gibt es keine Referenz mehr auf die Objekt-ID.
Tatsächlich weiss ich nicht, was Du ausdrücken willst. Die Objekt ID steht da doch.
Eigentlich hatte ich die Blöcke mal grün gefärbt, damit man sieht dass da ein String rein muss...
Für jemanden wie mich ist das noch verwirrender, denn ich verstehe vollends nicht wie hier ein String ins Spiel kommt.
Da die Warnung für Dich scheinbar nicht verständlich ist: Wie hätte diese denn lauten müssen, damit Du weißt was falsch ist?
- Mir ergab sich aus der Formulierung nicht, ob der Fehler besagt, dass da irgendwo ein "boolean or number" hinmuss oder ob derlei irgendwo wegmuss.
- "Wrong ID" liest sich für mich auch erstmal so, als ob da ein anderer datenpunkt hinmuss oder umformatiert werden muss.
Ich würde mir theoretisch wohl sowas wie "object ID expected, not value of one" wünschen.
Am Ende sehe ich aber meinen Hauptfehler, denn in dem Blocklybaustein wird ja visuell genau eine ObjectID impliziert, die ich dann doof mit "Wert von" überschrieben habe.
Sorry dafür. -
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
Genau, und das klingt für mich erstmal richtig. Ich will prüfen, ob sich true auf false und umgekehrt ändert.
Geht aber nicht, weil Du dem System nicht mitteilst was das ist. Sondern nur den aktuellen Wert von "irgendwas".
Kannst mir bescheid sagen, wenn sich
42
ändert? -
@bertderkleine sagte in Etwas nur tagsüber laufen lassen:
Die Objekt ID steht da doch.
nein! da steht Wert von objectID
-
Weil ich eh gerade dran bin, gibts bald ein kleines Ausrufezeichen mit einer Warnung wenn man den Block dort verbindet
Ist erstmal nur ein Hinweis - könnte ja sein, dass der Wert eine Objekt-ID ist. Und dann würde es wieder gehen...