Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Benutzeravatar
Cyrelian
Beiträge: 599
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von Cyrelian »

udo1toni hat geschrieben: 8. Jul 2021 12:50 Ich denke nicht, dass Du mit den externen Daten glücklich wirst, egal wieviele Account oder Systeme Du Dir da hinstellst.

Die Daten von Astro werden kalkuliert, die Frequenz kannst Du einstellen (ich habe hier 300 Sekunden eingestellt, das reicht für meine Zwecke vollkommen). Bei openweathermap hast Du aber keinerlei Kontrolle über die Aktualität der Daten.
Wenn Du z.B. Beschattung anhand von Bewölkung steuern willst, wäre ein Lichtsensor deutlich effizienter und genauer.
Hi,

hier muss ich Udo zu 100% zustimmen. Ich habe mir jetzt auf Grund der "ungenauen" Wetterdaten eine eigene Wetterstation(Wind. Regen, UV, Temp. und Luftdruck) und einen Lichtsensor geholt.

eagledata
Beiträge: 2
Registriert: 20. Feb 2021 14:00

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von eagledata »

Cyrelian hat geschrieben: 14. Jul 2021 10:20 Ich habe mir jetzt auf Grund der "ungenauen" Wetterdaten eine eigene Wetterstation(Wind. Regen, UV, Temp. und Luftdruck) und einen Lichtsensor geholt.
Hi, darf ich fragen was du da genommen hast? Grad mit den Bewölkungsdaten hab ich auch so meine Problem für die Verschattung.

Alex

Benutzeravatar
Cyrelian
Beiträge: 599
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von Cyrelian »

Hi,

zwei Xiaomi Lichtsensoren, angebunden via Deconz.

CU
Cyrelian

TomW80
Beiträge: 17
Registriert: 7. Mai 2021 19:11

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von TomW80 »

TomW80 hat geschrieben: 22. Jun 2021 21:22 Wie kann ich nachdem die Jalousien die Posion angefahren haben, die Lamellen noch auf eine gewünschte Position bringen?
Hat das evtl. schon jemand realisiert?
Habe jetzt folgende Anpassung gemacht und es funktioniert. :)

Code: Alles auswählen

//-------------  Verschattung starten --------------------

val shadingStart = [GroupItem shutter |

        val String logPrefix = "Verschattung aktivieren - "

                val Map<String, Number> targetHights = newHashMap ( 
                "EG_Gaestezimmer_Rollo" -> 50,                  
                "EG_Wohnzimmer_Rollo" -> 50,                  
                "Jalousie_Wohnzimmer_3M1" -> 100,             
                "Lamelle_Wohnzimmer_3M1" -> 75,
                "Jalousie_Esszimmer_West_4M1" -> 100,
                "Jalousie_Esszimmer_West_4M2" -> 100,
                "Jalousie_Esszimmer_Sued_4M3" -> 100,
                "Jalousie_Esszimmer_Sued_4M4" -> 100,
                "Lamelle_Esszimmer_West_4M1" -> 100,
                "Lamelle_Esszimmer_West_4M2" -> 100,
                "Lamelle_Esszimmer_Sued_4M3" -> 100,
                "Lamelle_Esszimmer_Sued_4M4" -> 100,
                "Jalousie_Kueche_5M1" -> 50,
                "Lamelle_Kueche_5M1" -> 100,
                "Rollo_OG_Bad_Osten" -> 50,                  
                "Rollo_OG_Kind2_Sueden" -> 50,                  
                "Rollo_OG_Kind2_Osten" -> 50,                  
                "Rollo_OG_Buero" -> 50,                         
                "Rollo_OG_Kind1_Westen" -> 45,                 
                "Rollo_OG_Kind1_Sueden" -> 50                  
                )
                // Rollladen werden geschlossen
                logInfo("rules", logPrefix + "Grenzwert wurden erreicht, Rollladen werden geschlossen")


                shutter.allMembers.forEach[ blind |
                
                    var String[] blindtyp = blind.name.toString().split('_') // String am _ splitten

                    if (blindtyp.get(0) != "Lamelle")
                    {
                        if ((blind.state as Number) < targetHights.get(blind.name.toString()).intValue) {
                            logInfo("rules", logPrefix + "Fahre Rollladen (" + blind.name.toString() + ") auf (" + targetHights.get(blind.name.toString()).intValue + ") %" )
                            blind.sendCommand(targetHights.get(blind.name.toString()).intValue)
                        } else {
                            logInfo("rules", logPrefix + "Rollladen (" + blind.name.toString() + ") ist bereits weiter geschlossen (" + blind.state.toString() + "%) als er geschlossen werden sollte und wird daher ignoriert")
                        }
                    }
                    

                    if (blindtyp.get(0) == "Lamelle")
                    {
                        if ((blind.state as Number) < targetHights.get(blind.name.toString()).intValue) {
                        logInfo("rules", logPrefix + "Fahre Lamelle (" + blind.name.toString() + ") auf (" + targetHights.get(blind.name.toString()).intValue + ") %" )
                        blind.sendCommand(targetHights.get(blind.name.toString()).intValue)

                        } else {
                            logInfo("rules", logPrefix + "Lamelle (" + blind.name.toString() + ") ist bereits weiter geschlossen (" + blind.state.toString() + "%) als er geschlossen werden sollte und wird daher ignoriert")
                        }
                    }


                ]
                AutoShading_Start_last.postUpdate(now.toString())
    return true;
]

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von HansDampf »

Quautiputzli hat geschrieben: 15. Jun 2021 06:55 Bin mir nicht ganz sicher, ob ich das richtig mache.

Muss ich von:

Code: Alles auswählen

val Boolean isRainLastHour = (Wetter_Regen.maximumSince(now.minusHours(1), "influxdb").state >= (minPrecip))
val Boolean isCloudLastHour = (Wetter_Bewolkung.averageSince(now.minusHours(1), "influxdb")as Number >= (cloudHysteresis))
auf:

Code: Alles auswählen

val Boolean isRainLastHour = (Wetter_Regen.maximumSince(now.minusHours(1).state) >= (minPrecip))
val Boolean isCloudLastHour = (Wetter_Bewolkung.averageSince(now.minusHours(1)as Number) >= (cloudHysteresis))
abändern, oder was muss da alles raus?

Zumindest bei der Temp gibt es noch ein Problem, da bei mir die Werte mit Einheit daherkommen. Mit diesem code

Code: Alles auswählen

val Boolean isTemperature = ((Wetter_Aussentemperatur.state as Number).floatValue < (Wetter_Aussentemperatur.minimumSince(now.minusHours(1), "influxdb").state as DecimalType -(temperatureHysteresis)))
gibt es diesen Fehler:

Code: Alles auswählen

2021-06-14 20:20:50.743 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Rollo_auto-2' failed: Could not cast 23.58 °C to org.openhab.core.library.types.DecimalType; line 238, column 90, length 88 in Rollo_auto
Wie muss ich die rule ändern, damit die vergangenen Werte richtig ausgewertet werden? Werden die in der Persistence auch mit Einheit gespeichert?


Bei dem Regen und den Wolken bin ich mir auch nicht sicher ob das so passt. Auch die sind bei mir mit Einheit. Die Wolken werden z.B. mit "35 %" angezeigt, wenn man auf Analyse klickt jedoch mit "0.35" Beim Regen scheint es um den Faktor 1000 zu wenig sein. Sollte ich dort lieber auf Werte ohne Einheit umstellen?
Wie hast du es gelöst? isTemperature = habe das gleiche Problem.

Quautiputzli
Beiträge: 249
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von Quautiputzli »

Hi, ich hab die Items tatsächlich abgeändert in Werte ohne Einheit.
Servus

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von HansDampf »

Quautiputzli hat geschrieben: 4. Aug 2021 16:11 Hi, ich hab die Items tatsächlich abgeändert in Werte ohne Einheit.
Danke und kannst du das noch posten?

Quautiputzli
Beiträge: 249
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von Quautiputzli »

Also, hab nochmal nachgesehen. Temperatur ist bei mir als "Number:Temperature" angelegt.
Bild_2021-08-07_123054.png
in der rule sieht es folgendermaßen aus:

Code: Alles auswählen

val Boolean isTemperature = ((Wetter_Aussentemperatur.state as Number).floatValue < (Wetter_Aussentemperatur.minimumSince(now.minusHours(1)).state as Number).floatValue -(temperatureHysteresis))
Ich habe keine influxdb. Nur rrd4j ohne spezielle Einstellungen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Servus

HansDampf
Beiträge: 34
Registriert: 23. Jul 2020 15:01
Answers: 1

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von HansDampf »

Folgende Zeile produziert bei mir die untenstehende Fehlermeldung. Mein Gefühl sagt mir, es liegt an dem Wert der aus der InfluxDB geholt wird?
Home_Current_Temperature wird in der InfluxDB gespeichert.

Code: Alles auswählen

val Boolean isTemperature = ((Home_Current_Temperature.state as Number).floatValue < (Home_Current_Temperature.minimumSince(now.minusHours(1), "influxdb").state as DecimalType - (temperatureHysteresis)))

Code: Alles auswählen

2021-08-11 07:11:14.242 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'shutter-2' failed: Could not cast 13.32 °C to org.openhab.core.library.types.DecimalType; line 291, column 91, length 89 in shutter
Kann jemand ein Fehler sehen?

Benutzeravatar
udo1toni
Beiträge: 10056
Registriert: 11. Apr 2018 18:05
Answers: 134
Wohnort: Darmstadt

Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen

Beitrag von udo1toni »

Steht ja direkt in englisch da. influxdb speichert die Einheit mit ab. Die Meldung “Could not cast 13.32 °C…” besagt genau das. Der Wert ist eben kein DecimalType, sondern ein QuantityType. Number ist der Überbegriff. Im ersten Teil des Vergleichs verwendest Du die korrekte Form ( (… as Number).floatValue) und genau so muss das auch für den aus der Datenbank extrahierten Wert eingegeben werden.


Gesendet von iPad mit Tapatalk
openHAB2.5.12 in einem Debian-Container (Proxmox, LXC)

Antworten