Weis niemand was zu meiner Frage? Wird der Switch Sonnenaufgang_Event nur kurz auf "on" gesetzt und ist danach gleich wieder auf "off" oder bleibt er den ganzen Tag über auf "on", bis die Sonne wieder untergeht?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Rolladen fahren nach Sonnenstand
Einklappen
X
-
Ich verwende das Astro Binding noch nicht, muss mich aber mal damit beschäftigen.
Ich hole mir die Sonnenauf / untergangszeiten von Wonderground um Mitternacht / Systemstart..
Diese Zeiten werden aller 5 Minuten bzw. bei Helligkeitsänderungen mit der aktuellen Uhrzeit verglichen und dann setze ich eigene Switche.
Nicht so schön, läuft aber schon einige Zeit..
Holger
PS: danke RoRo für die Erklärung, da kann ich auch einiges verbessern an meinen riesen if- AbfragenZuletzt geändert von HolgerW; 06.04.2015, 12:37.
Kommentar
-
Zitat von halloween Beitrag anzeigenWird der Switch Sonnenaufgang_Event nur kurz auf "on" gesetzt und ist danach gleich wieder auf "off" oder bleibt er den ganzen Tag über auf "on", bis die Sonne wieder untergeht?
If you bind it to a Switch, a event is scheduled and the state of the Switch is updated to ''ON'', immediately followed by a ''OFF'' at the calculated time.
Roland
Kommentar
-
Habs mittlerweile hinbekommen. Nachdem ich alles neu gemacht habe, hats funktioniert. War wohl ein Tippfehler drin.
Was mir aufgefallen ist: Wenn ich manchmal was an den Config-Dateien von Openhab ändere, dann steht danach plötzlich beim Astro-Plugin überall "-nicht initialisiert" drin. Ich hab in der astro.map drin, dass das bei einem Fehler angezeigt werden soll. Und ich lasse mir diverse Dinge in der Visu anzeigen, z.B. Sonnenaugfgangs-Zeit usw.
Wie kann man das wieder in Ordnung bringen? Muss ich jedesmal den openhab-service neu starten oder den Server neu booten? Oder geht das auch irgendwie anders? Und wird meine Rule trotzdem ausgeführt, auch wenn openhab "nicht intitialisiert" anzeigt?
Kommentar
-
Ich hab hier mal was zur verwendeten Sprache bei den Openhab-rules gefunden. Vielleicht kanns ja wer gebrauchen. http://docs.jboss.org/drools/release...html/ch04.html
Kommentar
-
Hallo zusammen,
vor ein paar Beiträgen hier kam die Frage, ob ich zu der diskutierten Implementierungsidee auch den kompletten Code posten kann.
Nachdem es inzwischen gut funktioniert ... hier ist er:
Ich logge gerne den Status der Regeln im Log-file mit.
An der Terrassentür gibt es einen Homematic-Drehgriff-Sensor.
Wenn die Tür offen ist (state==2), dann geht der zugehörige Rolladen nicht runter, damit ich mich nicht aussperre :-)
Code:## im Items-file: // *** --------------------------------------------------------- *** // *** Konfiguration des ASTRO Bindings // *** der zugehörige Ort wird in der openhab.cfg konfiguriert // *** --------------------------------------------------------- *** // neue Notation ab V1.6 des astro bindings DateTime Astro_Sunrise_Time "Sonnenaufgang [%1$tH:%1$tM h]" <sun> {astro="planet=sun, type=rise, property=start"} DateTime Astro_Sunset_Time "Sonnenuntergang [%1$tH:%1$tM h]" <moon> {astro="planet=sun, type=set, property=end"} // Options: rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight DateTime Astro_Shutters_UP_Time "Rolläden auf [%1$tH:%1$tM h]" <sun> {astro="planet=sun, type=civilDawn, property=start"} Switch Astro_Shutters_UP_Event {astro="planet=sun, type=civilDawn, property=start"} DateTime Astro_Shutters_DOWN_Time "Rolläden zu [%1$tH:%1$tM h]" <moon> {astro="planet=sun, type=civilDusk, property=end"} Switch Astro_Shutters_DOWN_Event {astro="planet=sun, type=civilDusk, property=end"} Switch Shutters_up_7h // interner Schalter ## im Rules-file: /* ------------------------------------------------------------------------- * Regeln zur automatischen Rolladensteuerung nach Sonnenauf- und Untergang * ------------------------------------------------------------------------- */ rule "Rule_Astro_Shutters_UP" when Item Astro_Shutters_UP_Event received update ON then logInfo("Rule_Astro_Shutters_UP: ", "Start") postUpdate(Shutters_up_7h, OFF) // doppelt, aber zur Sicherheit if (Shutters_auto_mode.state==ON) { if (now.getHourOfDay > 6) { // d.h. die Astro-Zeit ist mindestens 7h sendCommand(vShutter_EG_All, UP) logInfo("Rule_Astro_Shutters_UP: ", "Opened") } else { // d.h. die Astro-Zeit ist vor 7h logInfo("Rule_Astro_Shutters_UP: ", "Delayed until 7h") postUpdate(Shutters_up_7h, ON) // Trigger setzen, damit um 7h geöffnet wird } } else { logInfo("Rule_Astro_Shutters_UP: ", "Auto mode OFF executed") } end rule "Rule_7h_Shutters_UP" when Time cron "0 0 7 * * ?" // each day at 7h then logInfo("Rule_7h_Shutters_UP: ", "Start") if ((Shutters_auto_mode.state==ON) && (Shutters_up_7h.state==ON)) { sendCommand(vShutter_EG_All, UP) logInfo("Rule_7h_Shutters_UP: ", "Opened") } postUpdate(Shutters_up_7h, OFF) end rule "Rule_Astro_Shutters_DOWN" when Item Astro_Shutters_DOWN_Event received update ON then logInfo("Rule_Astro_Shutters_DOWN: ", "Start") if (Shutters_auto_mode.state==ON) { sendCommand(vShutter_EG_All, DOWN) // hier: Wenn Terrassentür offen ist, dann dieser Rolladen wieder STOP // damit man sich nicht aussperrt. Gekippt ist OK if (EG_WZ_TTuer.state==2) sendCommand(vShutter_EG_WZ2, STOP) logInfo("Rule_Astro_Shutters_DOWN: ", "Auto mode DOWN executed") } else { logInfo("Rule_Astro_Shutters_DOWN: ", "Auto mode OFF executed") } end
Grüße
Heiko (funcarver)
Kommentar
-
Zitat von halloween Beitrag anzeigenWenn ich manchmal was an den Config-Dateien von Openhab ändere, dann steht danach plötzlich beim Astro-Plugin überall "-nicht initialisiert" drin. [...] Muss ich jedesmal den openhab-service neu starten oder den Server neu booten? Oder geht das auch irgendwie anders? Und wird meine Rule trotzdem ausgeführt, auch wenn openhab "nicht intitialisiert" anzeigt?
Und Nein, solange da nicht initialisiert steht, wird auch nichts ausgeführt. Wann auch...?
Die Lösung ist aber einfach, Du kannst in der openhab.cfg für das astro-Binding ein Berechnungsintervall angeben. das ist natürlich vor allem interessant, wenn Du Dir aktuelle Astro-Stände (z.B. Sonnenhöhe und -richtung) anzeigen lassen willst, löst aber auch Dein Problem, indem das astro-Binding dann z.B. alle zwei Minuten die angezeigten Werte neu berechnet. Dann ist die Gefahr relativ gering, dass wegen neu geladenen Konfig irgendwelche Läden nicht auf- oder zufahren.
Kommentar
-
Das seltsame daran ist, dass ich ja schon 120 als Refresh-Wert drinstehen hab... Wenn ich an der items-Datei was ändere, stehen danach "nicht initialisiert" drin und geht auch nicht mehr weg, selbst wenn ich die 2 Minuten verstrichen sind. Ich werd das mal beobachten.
Ich hab jetzt alles mögliche über Dämmerung, Sonnenaufgang, bürgerliche Dämmerung usw durchgelesen. Einige hier nehmen die bürgerliche Dämmerung, andere den Sonnenaufgang und wieder andere den Sonnenaufgang mit Offset.
Ist denn Dämmerung (astronomisch) und Sonnenaufgang nicht das selbe? Bin noch am Feintuning.
Kommentar
-
Zitat von halloween Beitrag anzeigenDas seltsame daran ist, dass ich ja schon 120 als Refresh-Wert drinstehen hab...
Ist denn Dämmerung (astronomisch) und Sonnenaufgang nicht das selbe?
Kommentar
-
ich benutze folgende Items:Code:Switch Sunrise_Event "Aufgang [%s]" {astro="planet=sun, type=rise, property=start, offset=-25"} Switch Sunset_Event "Untergang [%s]" {astro="planet=sun, type=set, property=end, offset=25"}
Kommentar
-
So recht zufrieden bin ich noch nicht. Gestern ging der Rollo zu Beginn Sonnenaufgang auf, das war mir zu spät, weil es draussen schon richtig hell war. Abends ging er 20 Minuten nach Sonnenuntergang runter, da wars draussen eigentlich auch noch zu hell, meinem Empfinden nach. Heute morgen hab ich Beginn civilDawn eingestellt, das war mir zu früh :-(
Ich werde jetzt mal noch die zusätzliche Regelung "nicht vor xx Uhr" mit einbauen, vielleicht komme ich dann zu einem befriedigendem Ergebnis für mich. Und dann gehts schon bald los mit Sonnenschutz-Programmierung für den Sommer... Die nächste Baustelle :-)
Kommentar
-
Hallo Halloween,
für den Sonnenschutz verwende ich folgende Regel - vielleicht hilft es dir als Basis:
Code:rule "Sonnenschutz Automatisch - WESTEN" when Time cron "0 */20 11-18 * * ?" then var int azimuth = (Azimuth.state as DecimalType).intValue if (azimuth > 200 && azimuth < 280) { if(SunAuto.state==ON){ if (SunAutoActiveW.state==OFF){ postUpdate(SunAutoActiveW, ON) logWarn("Rule","Sonnenschutz Automatisch Executed") gSSchutzAutoW?.members.forEach(Rollershutter| sendCommand(Rollershutter, DOWN) ) logWarn("Rule","Sonnenschutz Automatisch Executed - THREAD PASSED") createTimer(now.plusSeconds(15)) [| gSSchutzAutoW?.members.forEach(Rollershutter| sendCommand(Rollershutter, STOP) ) ] } if (SunAutoActiveW.state==ON){ logWarn("Rule","Sonnenschutz WESTEN Automatisch Executed - Already acticvated") } } else if(SunAuto.state==OFF){ if (SunAutoActiveW.state==ON){ postUpdate(SunAutoActiveW, OFF) gSSchutzAutoWup?.members.forEach(Rollershutter| sendCommand(Rollershutter, UP) ) } } } end
Das Item SunAuto wird bei mir über den Solaroutput aktiviert. D.h. ab einer bestimmten kWH zahl aktiviere ich den Sonnenschutz. SunAutoActiveW = ON verhindert das wiederholte ausführen der Regel. Damit die Fensterläden entsprechend auf Höhe bleiben.
Hoffe das hilft
Karsten
Kommentar
-
Hallo,
hab gestern meine Rollosteuerung neu programmiert und dabei die Funktion eingebaut, dass sie trotz Astro-Programm nicht vor z.B. 6:30 Uhr morgens hochfahren sollen.
Ich bekomme jetzt jedoch eine Fehlermeldung im Log und die Rollos sind heute morgen nicht hochgefahren.
Kann vielleicht mal jemand drüberschauen, was da falsch läuft?
Fehlermeldung im Log:
Code:2015-05-21 07:42:04.392 [ERROR] [o.o.c.s.ScriptExecutionThread ] - Error during the execution of rule 'Rollos morgens hoch': Cannot cast org.openhab.core.library.types.OnOffType to void
Meine rollosteuerung.rules
Code:import org.joda.time.* /* ---alte Rule - nicht mehr in Betrieb --- rule "Rollos morgens Astro hochfahren" when Item Rollos_astro_up changed to ON then { sendCommand(Rollos, UP) } end */ rule "SunriseLimit on" when Time cron "0 30 6 ? * MON-FRI" or Time cron "0 30 6 ? * SAT-SUN" then sendCommand(SunriseLimit, ON) end rule "SunriseLimit off" when Item Rollos_astro_down received update ON then sendCommand(SunriseLimit, OFF) end rule "Rollos morgens hoch" when Item Rollos_astro_up received update ON or Item SunriseLimit received update ON then if (!now.isAfter((Rollos_astro_up.state as DateTimeType).calendar.timeInMillis)) { logInfo("Rolladen", "noch vor Sonnenaufgang") return 1 } if (SunriseLimit.state == OFF) { logInfo("Rolladen", "SunriseLimit noch nicht erreicht") return 1 } logInfo("Rolladen", "Sunrise + SunriseLimit passed") logInfo("Rolladen", "Rolladen hoch") sendCommand(Rollos, UP) end rule "Rollos abends Astro zufahren" when Item Rollos_astro_down changed to ON then { sendCommand(Rollos, DOWN) } end
Was ich auch nicht ganz verstehe... Am Anfang der Rules steht immer irgendwas von Java, das vorher geladen werden muss. Ich hab aber keine Ahnung, was ich da bei den Rules benötige... Wie kommt man da drauf?
Kommentar
-
Zitat von halloween Beitrag anzeigenCode:rule "Rollos morgens hoch" when Item Rollos_astro_up received update ON or Item SunriseLimit received update ON then if (!now.isAfter((Rollos_astro_up.state as DateTimeType).calendar.timeInMillis)) { logInfo("Rolladen", "noch vor Sonnenaufgang") return 1 } if (SunriseLimit.state == OFF) { logInfo("Rolladen", "SunriseLimit noch nicht erreicht") return 1 } logInfo("Rolladen", "Sunrise + SunriseLimit passed") logInfo("Rolladen", "Rolladen hoch") sendCommand(Rollos, UP) end
Hast Du eventuell noch ein zweites Item, was die Sonnenaufgangszeit beinhaltet, und nur die Namen der Items verwechselt?
Im übrigen verstehe ich nicht, warum Du eine Rule mit zwei komplett voneinander unabhängigen Events triggerst, nur um dann anschließend in er Rule umständlich die beiden Fälle auseinander zu dividieren. Ich habe eine Rule für den Zeitpunkt, da kontrolliere ich innerhalb der Rule, ob schon Sonnenaufgang war. Eine zweite Rule triggert nur auf Sonnenaufgang, da kontrolliere ich innerhalb der Rule, ob schon die Wunschzeit erreicht ist. Mag sein, dass das nicht so elegant ist, dafür ist es aber einfach erstellt. Falls wirklich gewünscht, kann man die Zeitangaben als Variable am Anfang des Files definieren, das habe ich aus Faulheit nicht gemacht (und weil ich das TypeCasting nicht verstehe...)Was ich auch nicht ganz verstehe... Am Anfang der Rules steht immer irgendwas von Java, das vorher geladen werden muss. Ich hab aber keine Ahnung, was ich da bei den Rules benötige... Wie kommt man da drauf?
Kommentar
Kommentar