NEWS
Ausgabe der Ergebnisse zweier Skripte
-
@stefan341 sagte: ist von zwei Skripten abhängig - und da ist das Problem
Man sollte das Fahren der Rollos in nur einem Skript erledigen - und das möglichst ohne zusätzlichen Datenpunkt:
-
@paul53
@Codierknecht
Danke erstmal für eure Ausführungen. Ich bin mir nur nicht sicher ob wir vielleicht aneinander vorbei reden.Ich habe bereits ein Script, dass die Rollos zuverlässig hoch und runter fährt. Da brauche ich nichts Neues. Es geht nur um die Visualisierung der Zeit, wann dies geschieht.
-
@stefan341 sagte in Ausgabe der Ergebnisse zweier Skripte:
Ich habe bereits ein Script, dass die Rollos zuverlässig hoch und runter fährt. Da brauche ich nichts Neues. Es geht nur um die Visualisierung der Zeit, wann dies geschieht.
Das ist uns schon klar.
Aber wenn ich das richtig sehe, fährst Du zu festgelegten Zeiten.
Du willst aber:- Zu unterschiedlichen Zeiten fahren (Wochenende, Urlaub, Ferien)
- Die Zeiten visualisieren
Also lautet unser Vorschlag: Die Berechnung und das Fahren kommen in ein einziges Script.
Es ist nicht unbedingt sinnvoll, das auf mehrere Scripte aufzuteilen. Alles zusammen in ein Script macht die Sache deutlich übersichtlicher.
Du brauchst ja letztendlich auch 2 Berechnungen:
- Runterfahren: Entweder Sonnenuntergang oder feste Zeit
Da muss die Zeit berechnet und in einem DP gespeichert werden, um sie visualisieren zu können. Wenn man die schon berechnet, kann man die ja auch gleich in den Zeitplan packen mit dem gefahren wird. - Hochfahren: Auch hier muss zuerst ermittelt werden, wann denn nun zu fahren ist. Wochenende, Ferien usw. muss ja schließlich berücksichtigt werden.
Wenn Du Dein funktionierendes Script nicht verlieren möchtest, kannst Du das ja erstmal stoppen.
Dann erzeugst Du ein neues, in das sowohl die Berechnung als auch das Fahren reinkommt.
Das besteht im Großen und Ganzen aus 4 Teilbereichen:- Berechnung für Runter
- Zeitplan für Runter
- Berechnung für Rauf
- Zeitplan für Rauf
Für 4) fehlen uns noch Infos, wo denn Deine Werte herkommen.
Wie erkennst Du, ob z.B. Ferien- oder Feiertag ist? Mit welchem Adapter? Wie sehen da die DP aus? -
@codierknecht
Ich verstehe, dass es sinnvoll ist alles über ein Script laufen zu lassen. Wie gesagt, wollte ich einfach nur die Zeiten ausgeben lassen für die VIS. Wenn ihr gleich das komplette Script neu machen wollt, halte ich euch nicht aufAlso, die Informationen bzgl. schulfrei, Ferien etc kommen vom Adapter schoolfree. Das Ganze sieht dann so aus:
Das Ganze soll dann wie folgt geschaltet werden:
Grundsätzlich teile ich die Rollos in zwei Gruppen (EG und OG)Im EG soll es wie folgt funktionieren:
Rollos runter: 10Min nach Sonnenuntergang oder um 21:00Uhr, je nach dem was früher eintritt
Rollos hoch: Wenn "10 Minuten nach Sonnenaufgang" und einer folgender Szenarien zutrifft:
Im OG soll es wie folgt funktionieren:
Grundsätzlich wird über zwei DP getriggert:
Kinder_Schlafenszeit
Sonne_untergegangenRollos runter: Einer der beiden DP geht auf 1
Rollos hoch: Kinder_Schlafenszeit geht auf 0
Die beiden DP werden wie folgt geschaltet:
Kinder_Schlafenszeit geht auf 1:
-
Sonntag bis Donnerstag um 19:00Uhr wenn "schoolfree tomorrow" auf 0 ist.
-
Sonntag bis Donnerstag um 20:00Uhr wenn "schoolfree tomorrow" auf 1 ist.
-
Freitags und Samstags um 20:00Uhr.
Kinder_Schlafenszeit geht auf 0:
-
Montag bis Freitag um 7:30Uhr wenn Wert von "school free today" 0 ist.
-
Montag bis Freitag um 9:00Uhr wenn Wert von "school free today" 1 ist.
-
Jeden Samstag und Sonntag um 9:00Uhr.
Sonne_untergegangen geht auf 0:
- Sonnenuntergang
Sonne_untergegangen geht auf 1:
- 3Min nach Sonnenaufgang
Das ist soweit die Grundschaltung. Nun ist aber noch der Sonnenschutz integriert.
Der Sonnenschutz ist temperaturabhängig. Bei größer 26Grad Außentemperatur (Adapter: das Wetter) und ertönt Alexa mit folgender Vorwarnung:
Der Sonnenschutz wurde durch die Aussentemperatur aktiviert. Alle Rollos fahren in zwei Minuten runter. Bitte für der hindernisfreien Lauf der Rollos sorgen. Dann folgt folgende Pushover:
Der Sonnenschutz wurde zu Hause aktiviert. Die Jalousien fahren in zwei Minuten runter.
Dann folgt ein Timeout von 2 Minuten
Dann nochmal Alexa mit: Der Sonnenschutz wird jetzt aktiviert.
Timeout 3Sek
Dann werden alle Rollos über folgenden http-Befehl, jeweils mit einem Timeout von einer Sekunde dazwischen runtergefahren:http://IP-DES-SCHALTERS/cm?cmnd=ShutterPosition1%20
Das Ganze sieht dann so aus:
Der DP Sonnenschutz_aktiviert wird auf 1 gesetzt
Wenn die Außentemperatur unter 23Grad sinkt:
- Alexa mit Der Sonnenschutz wurde durch die Absenkung der Aussentemperatur deaktiviert. Alle Rollos fahren in einer Minute hoch.
- Pushover mit Der Sonnenschutz wurde zu Hause deaktiviert. Die Jalousien fahren in einer Minute hoch.
- Timeout 1Min
- Rollos per http:
http://192.168.100.52/cm?cmnd=ShutterPosition1%20100%20on
hoch.
Jetzt habe ich noch zwei DP die ich zum Schutz eingebaut habe:
Sonnenschutz_aktiviert
Wenn der Sonnenschutz aktiviert wird, wird dieser DP auf 1 gesetzt. Das habe ich aus folgendem Grund so gemacht: Wenn die Temperatur über die eingestellte Schwelle steigt, wird geprüft ob der DP auf 0 ist. Damit wird verhindert, dass das Script immer wieder die Rollos auf 75% runter fährt wenn sich die Temperatur oberhalb der eingestellten Schwelle ändert, weil ja mit der Temperatur getriggert wird.Rollo_hoch_verhindern
ist aus folgendem Problem entstanden: Der Sonnenschutz wurde aktiviert, abends sind die Rollos über die Automatik ganz normal geschlossen worden. Dann ist nachts die Temperatur unter die eingestellte Schwelle gesunken und der Sonnenschutz hat mitten in der acht alle Rollos hoch gemacht.
Wenn also der Sonnenschutz aktiviert ist und die Automatik die Rollos runter macht, geht der DP auf 1 und der Sonnenschutz schaut bevor er wegen sinkender Temperatur die Rollos hoch macht, ob der DP auch wirklich auf 0 ist. Dies kann dann nur tagsüber der Fall sein, weil der DB jeden Morgen um 9Uhr auf 0 gesetzt wird.Sonnenschutz
Der DP wird über meine VIS gesteuert und ist lediglich dafür da, um festzulegen ob das Script aktiv ist oder nicht.Automatik
Das gleiche wie Sonnenschutz, nur für die Automatik der Rollos.Ich hoffe ich habe nichts vergessen.
****EDIT
Ich sehe gerade, meine URLs im Code-Tag sind nicht vollständig. Die werden natürlich wie im Screenshot angegeben, zusammengefügt. Sorry für die Verwirrung. -
-
@stefan341
Also bei so vielen Variablen würde ich das machen wie schon vorher skizziert:- Zeit für "runter" berechnen und die berechnete Zeit in einen DP schreiben
Den kann man dann auch prima visualisieren - Einen "Zeitplan aus Zeit-Zustand" auf diesen DP legen.
Damit wird dann auch tatsächlich zu diesem Zeitpunkt gefahren. Also zwei Fliegen mit einer Klappe. - Zeit für "rauf" berechnen.
Das ist ja nochmal deutlich komplizierter als "runter". Auch diese Zeit würde ich in einen DP schreiben. Muss ja nicht visualisiert werden, aber es hilft bei einer evtl. mal nötigen Fehlersuche. - Auch "rauf" würde ich an einen DP hängen. Genau wie bei 2). Macht das Ganze einfacher, wenn man nicht x-verschiedene Blöcke verwenden muss.
Ich würde das eigentliche Fahren der Rollläden in eine kleine Blockly-Funktion legen.
Mit einem Parameter, der "rauf" oder "runter" festlegt.
Innerhalb der Funktion werden dann die einzelnen Rolläden mit dem von Dir gewünschten Versatz gefahren.Erwarte nicht, dass wir Dir das fertige Script liefern.
Wir bieten "Hilfe zur Selbsthilfe". Ein gewisser Lerneffekt soll ja bleiben - Zeit für "runter" berechnen und die berechnete Zeit in einen DP schreiben
-
@codierknecht said
Erwarte nicht, dass wir Dir das fertige Script liefern.
Wir bieten "Hilfe zur Selbsthilfe". Ein gewisser Lerneffekt soll ja bleibenDas ist auch gut so, wenn ein gewisser Lerneffekt bleibt.
Um einen Anfang hinzubekommen, wäre wahrscheinlich die Grundvoraussetzung, dass man versteht wovon du schreibst ;). Das ist bei mir nicht mehr gegeben. Darum bin ich da auch raus. Das Ganze läuft bei mir so wie es soll. Das mit der Visualisierung wäre ganz nett gewesen. Aber wenn das so einfach nicht möglich ist, oder zu aufwändig ist, dann lass ich es eben. Meine Kenntnisse reichen nicht aus um auch nur einen Anfang zu finden auf dem man dann aufbauen könnte. Darum danke an euch Beiden für die Inspirationen soweit -
@stefan341 sagte in Ausgabe der Ergebnisse zweier Skripte:
Das mit der Visualisierung wäre ganz nett gewesen.
Wenn's nur das ist ...
Die Lösung dafür steht ganz oben in meinem ersten Post.
Das kannst Du ja in Dein Script mit einbauen.Man könnte aber auch aufräumen und den ganzen Salat vereinfachen, wenn man eh mal dran ist.
Um einen Anfang hinzubekommen, wäre wahrscheinlich die Grundvoraussetzung, dass man versteht wovon du schreibst ;). Das ist bei mir nicht mehr gegeben
Wo ist das Problem?
Das Beispiel zeigt das "runter". Um 01:00 Uhr wird für den neuen Tag die Zeit berechnet und in einen eigenen DP unterhalb von0_userdata.0
geschrieben. Den kann man praktischerweise auch visualisieren
Der "Zeitplan aus Zeit-Zustand" darunter zeigt auf genau diesen DP.
Bei Änderungen an diesem DP wird intern der Zeitplan gestoppt und mit der neuen Zeit neu gestartet.
Das Schöne daran: Man kann diesen DP auch manuell ändern und schwupps wird der Zeitplan zu diesem neuen Zeitpunkt ausgeführt.
Versuch macht klug:
Das Gleiche macht man noch für "rauf" (mit einer etwas aufwändigeren Berechnung der Zeit) und gut ist.
-
@codierknecht
Was genau ist der Trigger Zeitplan nach Zeit-Zustand? Also was macht der anders als der Trigger nach dem DP? -
@stefan341
Ein "Zeitplan aus Zeit-Zustand" wird an einen bestimmten DP gebunden, der eine Zeit enthält.
Er löst zu der Zeit aus, die im DP steht , z.B. "12:00". Es muss also ein DP vom Typ "Zeichenfolge" sein.
Ändert man den Wert des DP, wird der Zeitplan gestoppt und mit der geänderten Zeit neu gestartet.
Eigentlich ideal für Deine Anforderung. -
@codierknecht
Ich habe jetzt normal etwas rumexperimentiert. Ich denke auch ich habe die Anzeigen soweit hinbekommen, nur die Anzeige für die Rollos oben runter will noch nicht so ganz. Es wird immer eine Minute nach der Triggerzeit angezeigt. Irgendwo habe ich da wahrscheinlich ein Fehler im Script, finde ihn aber nicht:
Sonntag bis Donnerstag gehen die Rollos um 19:00 Uhr runter wenn der Wert von schoolfree tomorrow falsch ist. Wenn er wahr ist, um 20:00Uhr
Freitags um Samstags gehen die Rollos immer um 20:00Uhr runter.