NEWS
[gelöst] Blockly start nur bei Status Änderung Variable
-
Hallo zusammen
Ich möchte mir ein Blockly schreiben welches folgendes Vorgehen praktiziert. Wenn es in der Nacht windet und der Wind über 35km/h war wird eine Variable auf true gesetzt. Sobald der Wind wieder kleiner wie 35km/h ist und es immer noch nacht ist, dann warte ich noch 90 minuten um auf nummer sicher zu gehen dass es wirklich nicht mehr windet und sobald die 90minuten um sind und der Wind nie höher wie 35km/h war dann werden die rolläden wieder runter gefahren.
Damit das Skript nicht immer läuft wenn es kein Wind hat und die Variable auf false steht so würde ich gerne das Blockly nur laufen lassen, wenn der Wert der Variable von true auf false ändert. Nur dann bin ich sicher, dass vorher Wind war der höher wie 35km/h war und es danach wieder aufgehört hat. Der Trigger des gesamten Blockly soll auf den Wind der Wetterstation gelegt werden so kriegt das Blockly alle Windänderungen mit.
Wie würdet Ihr das mit dem Variablen Statuswechsel lösen?
Danke Euch
-
- Das Blockly sollte generell immer laufen. Ein Skript zu starten und anzuhalten ist nicht notwendig.
- Die Logik der Trigger sollte deine Bedingungen abdecken, allerdings bin ich mir nicht sicher was du da genau erreichen willst. Ich habe das folgende verstanden:
Wenn der Wind über 35 km/h steigt willst Du deine Rolläden hoch zwingen.
Wenn der Wind nachts für einen Zeitraum >90 Minuten unter 35 km/h gefallen ist dürfen die Rolläden wieder runter.In diesem Anwendungsfall wäre die Logik meiner Meinung nach so:
- Eine Variable die den Sollzustand der Rolläden beschreibt (sollen oben sein, sollen unten sein)
- Ein Trigger auf die Windgeschwindigkeit, auslösen wenn sie sich ändert. Darin:
-- Sollen die Rolläden oben sein: nichts machen, Ende.
-- Sollen die Rolläden unten sein:
--- Test Ist der Wind < 35 km/h und war er vorher >= 35 km/h: Timeout 90 Minuten, darin die Statusvariable auf falsch
--- Test: Ist der Wind > 35 km/h und war er vorher <= 35 km/h : Deine Statusvariable auf wahr (Hierzu kannst du die Bausteine "Wert" und "vorheriger Wert" aus dem Trigger Bereich nutzen (sind da mit Objekt ID voreingestellt verfügbar). Zusätzlich: Aktuelle Zeit merken, falls vorhanden, Timeout (von oben) löschen.
Ich hab hier leider kein Blockly zum zusammenbauen. Ich denke das schaffst du aber auch mit der Beschreibung.
A.
-
@asgothian Vielen Dank für Deine Rückmeldung. Ich versuch das mal oder mach mal ein Beispiel wie ich es umsetzen würde. allenfalls schaust Du mir dann nochmals drüber
Dank Dir
-
@asgothian so hast du das gedacht korrekt? ich hab mir noch den Wochentag hinzugefügt. In diesem beispiel ist es nur 1 wochentag als beispiel. dann könnte ich z.b. am wochenende eine andere Zeit einstellen bis wann die rolladen wieder nach unten fahren.
wenn ich es richtig verstehe brauche ich die Variable Wind grundsätzlich gar nicht mehr, wenn ich die Rolläden alle direkt in diesem Blockly fahre. Hab ich das auch richtig verstanden?
-
@drapo sagte in Blockly start nur bei Status Änderung Variable:
@asgothian so hast du das gedacht korrekt? ich hab mir noch den Wochentag hinzugefügt. In diesem beispiel ist es nur 1 wochentag als beispiel. dann könnte ich z.b. am wochenende eine andere Zeit einstellen bis wann die rolladen wieder nach unten fahren.
wenn ich es richtig verstehe brauche ich die Variable Wind grundsätzlich gar nicht mehr, wenn ich die Rolläden alle direkt in diesem Blockly fahre. Hab ich das auch richtig verstanden?
nein, so geht das nicht. Jetzt gehen die Rolläden nur zu wenn der Wind von >35 auf <= 35 fällt. Das ist nicht Plan, richtig ?
Du brauchst eine allgemeine Regel um den Rolladen zu schliessen und zu öffnen. Das sollte NICHT mit dem Wind Trigger verbunden sein, und neben dem Rolladen auch eine Variable "Rolladen_soll_zu_sein" auf wahr setzen.
Einzig eine Abfrage das der Rolladen physikalisch nur zu geht wenn der Wind Speed < 35 km/h ist kann / sollte da mit rein.
Das was du über
gemacht hat macht man eher so:
A. -
@asgothian dank dir für deine Ausführungen. Also das Blockly möchte ich wirklich nur anwenden wenn nach einem wind von 35km und nach 90minuten ein paar läden (nicht alle) wieder runter gefahren werden sollen.
Um die läden hoch zu fahren bei wind verwende ich ein anderes blockly.
Was mir immer noch nicht klar ist für was schaltest du die variable ( bei mir heisst sie Wind) auf true oder false. Damit wird ja dann nichts mehr gemacht?
-
@drapo sagte in Blockly start nur bei Status Änderung Variable:
Was mir immer noch nicht klar ist für was schaltest du die variable ( bei mir heisst sie Wind) auf true oder false. Damit wird ja dann nichts mehr gemacht?
Die wird dann nicht weiter gebraucht. Ich hab das getan weil das bei Dir initial geplant war.
@drapo sagte in Blockly start nur bei Status Änderung Variable:
Also das Blockly möchte ich wirklich nur anwenden wenn nach einem wind von 35km und nach 90minuten ein paar läden (nicht alle) wieder runter gefahren werden sollen.
Wenn du in einem anderen blockly das hochfahren bei Wind abgebildet hast, dann musst du irgendwo her holen ob die Zielposition der Rolläden oben oder unten ist.
Alleine mit einer Zeit-Abfrage ist das kritisch, da das herunter fahren wenn der Wind nachlässt schwer vorhersagbar ist. Und die gleiche Bedingung mit der du in einem anderen Blockly die Rolläden hochfährst hier zu duplizieren impliziert das Risiko das du (wenn du das mal anpasst) vergisst es an allen Stellen anzupassen. Daher die Variable (kann auch ein State sein) RolladenSollZuSein. Dadurch kennt dieses Skript den Sollzustand des Rolladens, ohne sich um die dazu gehörigen Bedingungen zu kümmern.
A.
-
@drapo sagte in Blockly start nur bei Status Änderung Variable:
Also das Blockly möchte ich wirklich nur anwenden
Scripte laufen immer! Die werden erstellt, gestartet und "horchen" dann auf bestimmte Ereignisse.
Dazu sind die Trigger und Zeitpläne da.
Keine Sorge: Die fressen kein Brot. Solange die Ereignisse nicht eintreten läuft da nicht etwa eine Art Dauerschleife oder sowas.Um die läden hoch zu fahren bei wind verwende ich ein anderes blockly.
Ich persönlich würde das alles in einem Blockly "Rollosteuerung" zusammenfassen.
Ob Wind, Zeit oder andere Auslöser (Schalter): Das hängt ja alles mehr oder weniger zusammen - also nur 1 Blockly.Ich fürchte, auch hier ist etwas Starthilfe nötig:
https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps -
@asgothian danke für Deine Hilfe und Unterstützung. Verstehe was Du meinst und ich denke es macht Sinn ein Blockly für die Windsteuerung der Rolläden zu haben. Werd mir das noch umbauen dass ich nur noch eines habe. Somit geht auch nichts vergessen.
-
@codierknecht ist mir bewusst, dass die skripte immer laufen. da habe ich mich falsch ausgedrückt. ich meinte mehr dass das blockly für die steuerung der rolladen nach unten nach einem wind gedacht ist.
danke für deine starthilfe aber ich denke ich habs verstanden