Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
hi,
aus diesem Grund nehme ich zwei Wetterdienste und ermittle dann den Durchschnittswert der letzten Stunde. Ich muss sagen, dass läuft super.
Die Daten von openweathermap waren mir einfach zu grob. Wie Peter schon sagt, 20%,40%...usw. Zusätzlich hole ich jetzt noch Daten mit ForecastIO.
Alles zusammen weg schreiben und dann durchschnitt ermitteln.
CYA
Cyrelian
aus diesem Grund nehme ich zwei Wetterdienste und ermittle dann den Durchschnittswert der letzten Stunde. Ich muss sagen, dass läuft super.
Die Daten von openweathermap waren mir einfach zu grob. Wie Peter schon sagt, 20%,40%...usw. Zusätzlich hole ich jetzt noch Daten mit ForecastIO.
Alles zusammen weg schreiben und dann durchschnitt ermitteln.
CYA
Cyrelian
-
- Beiträge: 34
- Registriert: 24. Feb 2018 09:11
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi Cyrelian.
das wollte ich auch machen, aber irgendwie bekomme ich die Daten von ForecastIo nicht richtig eingebunden. Einen API-Key habe ich und auch soweit alles eingerichtet, aber irgendwie bekomme ich die Daten nicht rein. Hast Du noch einen Tipp bzw. eine kurze Anleitung für die erfolgreiche Einrichtung von ForecastIo?
VG
das wollte ich auch machen, aber irgendwie bekomme ich die Daten von ForecastIo nicht richtig eingebunden. Einen API-Key habe ich und auch soweit alles eingerichtet, aber irgendwie bekomme ich die Daten nicht rein. Hast Du noch einen Tipp bzw. eine kurze Anleitung für die erfolgreiche Einrichtung von ForecastIo?
VG
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi,
eigentlich relativ "straightforward".
Das "alte" Weather-Binding installiert. Die weather.cfg angepasst:
und dann die ITEMS:
Das wars.
CU
Cyrelian
eigentlich relativ "straightforward".
Das "alte" Weather-Binding installiert. Die weather.cfg angepasst:
Code: Alles auswählen
# The apikey for the different weather providers, at least one must be specified
# Note: Hamweather requires two apikeys: client_id=apikey, client_secret=apikey2
apikey.ForecastIo=XXXXXXXXXXXXXXXXXXXXX
#apikey.WorldWeatherOnline=
#apikey.Hamweather=
#apikey2.Hamweather=
#apikey.Meteoblue=
# location configuration, you can specify multiple locations
location.home.name=Parkstrasse
location.home.latitude=XXXXXXXX
location.home.longitude=XXXXXXXXX
location.home.provider=ForecastIo
location.home.language=de
location.home.updateInterval=10
Code: Alles auswählen
/* ------------- Dark Sky ITEMS --------------------
*/
// atmosphere
Number Humidity "Luftfeuchtigkeit [%d %%]" <humidity> {weather="locationId=home, type=atmosphere, property=humidity"}
Number Visibility "Sichtweite [%.2f km]" {weather="locationId=home, type=atmosphere, property=visibility"}
Number Pressure "Luftdruck [%.2f mb]" <pressure> {weather="locationId=home, type=atmosphere, property=pressure"}
String Pressure_Trend "Luftdrucktendenz [%s]" <pressure> {weather="locationId=home, type=atmosphere, property=pressureTrend"}
Number Ozone "Ozone [%d ppm]" {weather="locationId=home, type=atmosphere, property=ozone"}
Number UV_Index "UV Index" {weather="locationId=home, type=atmosphere, property=uvIndex, scale=0"}
// clouds
Number Clouds "Aktuelle Bewölkung [%.0f %%]" <sun_clouds> {weather="locationId=home, type=clouds, property=percent"}
// condition
String Condition "Condition [%s]" {weather="locationId=home, type=condition, property=text"}
String Condition_ID "Condition id [%s]" {weather="locationId=home, type=condition, property=id"}
DateTime ObservationTime "Beobachtungszeit [%1$td.%1$tm %1$tH:%1$tM Uhr]" {weather="locationId=home, type=condition, property=observationTime"}
DateTime LastUpdate "Letztes Update [%1$td.%1$tm %1$tH:%1$tM Uhr]" <time> {weather="locationId=home, type=condition, property=lastUpdate"}
String CommonId "Wetter aktuell [MAP(weather_de.map):%s]" <time> {weather="locationId=home, type=condition, property=commonId"}
// precipitation
Number Rain "Aktueller Niederschlag (Regen) [%.2f mm/h]" <rain> {weather="locationId=home, type=precipitation, property=rain"}
Number Snow "Aktueller Niederschlag (Schnee) [%.2f mm/h]" <snow> {weather="locationId=home, type=precipitation, property=snow"}
Number Precip_Probability "Precip probability [%d %%]" <rain> {weather="locationId=home, type=precipitation, property=probability"}
// temperature
Number Temperature "Aktuelle Aussentemperatur [%.2f °C]" <temperature> {weather="locationId=home, type=temperature, property=current"}
Number Temp_Feel "Gefühlte Temperatur [%.2f °C]" <temperature> {weather="locationId=home, type=temperature, property=feel"}
Number Temp_Dewpoint "Taupunkt [%.2f °C]" <temperature> {weather="locationId=home, type=temperature, property=dewpoint"}
// min and max values only available in forecasts
Number Temp_Min "Tagestemperatur min [%.2f °C]" <temperature> {weather="locationId=home, type=temperature, property=min"}
Number Temp_Max "Tagestemperatur max [%.2f °C]" <temperature> {weather="locationId=home, type=temperature, property=max"}
String Temp_MinMax "Tagestemperatur Min/Max [%s °C]" <temperature> {weather="locationId=home, type=temperature, property=minMax"}
// wind
Number Wind_Speed "Windgeschwindigkeit [%.2f km/h]" <wind> {weather="locationId=home, type=wind, property=speed"}
Number Wind_Speed_Beaufort "Windgeschwindigkeit (Beaufort) [%d]" <wind> {weather="locationId=home, type=wind, property=speed, unit=beaufort"}
String Wind_Direction "Windrichtung [%s]" {weather="locationId=home, type=wind, property=direction"}
Number Wind_Degree "Wind degree [%.0f °]" {weather="locationId=home, type=wind, property=degree"}
Number Wind_Gust "Windbö [%.2f km/h]" {weather="locationId=home, type=wind, property=gust"}
Number Wind_Gust_Beaufort "Windbö (Beaufort) [%d]" {weather="locationId=home, type=wind, property=gust, unit=beaufort"}
Number Wind_Chill "Windkühle [%.2f °C]" {weather="locationId=home, type=wind, property=chill"}
CU
Cyrelian
-
- Beiträge: 34
- Registriert: 24. Feb 2018 09:11
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi Cyrelian,
vielen Dank für die Antwort. Genau so wie Du es beschreibst, habe ich es eingerichtet, aber verdammt Axt, es will auf diese Weise nicht funktionieren. Ich habe dann in der OpenHAB Community glücklicherweise noch einen alternativen Weg gefunden, der prima funktioniert, und zwar über das http-Binding. Hier mal der Link zu dem Beitrag, falls es jemanden interessieren sollte:
https://community.openhab.org/t/darksky ... json/70817
Damit kann ich mir jetzt auch einen Bewölkungs-Mittelwert aus zwei verschiedenen Provider-Daten berechnen
Eine Frage habe ich noch zur Berücksichtigung der Bewölkung in Deiner rule. Was genau machst Du mit der "durchschnittlichen Bewölkung der letzten Stunde"? Lese ich die rule richtig, dass Du prüfst, ob die durchschnittliche Bewölkung der letzten Stunde größer/gleich dem CloudHysterese-Sollwert ist und falls das so sein sollte, dann wird die Verschattung beendet? Für das Abfahren der Rollos berücksichtigst Du die durchschnittliche Bewölkung der letzten Stunde hingegen nicht?
VG
vielen Dank für die Antwort. Genau so wie Du es beschreibst, habe ich es eingerichtet, aber verdammt Axt, es will auf diese Weise nicht funktionieren. Ich habe dann in der OpenHAB Community glücklicherweise noch einen alternativen Weg gefunden, der prima funktioniert, und zwar über das http-Binding. Hier mal der Link zu dem Beitrag, falls es jemanden interessieren sollte:
https://community.openhab.org/t/darksky ... json/70817
Damit kann ich mir jetzt auch einen Bewölkungs-Mittelwert aus zwei verschiedenen Provider-Daten berechnen
Eine Frage habe ich noch zur Berücksichtigung der Bewölkung in Deiner rule. Was genau machst Du mit der "durchschnittlichen Bewölkung der letzten Stunde"? Lese ich die rule richtig, dass Du prüfst, ob die durchschnittliche Bewölkung der letzten Stunde größer/gleich dem CloudHysterese-Sollwert ist und falls das so sein sollte, dann wird die Verschattung beendet? Für das Abfahren der Rollos berücksichtigst Du die durchschnittliche Bewölkung der letzten Stunde hingegen nicht?
VG
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi,jensilein hat geschrieben: ↑19. Aug 2019 21:04 Eine Frage habe ich noch zur Berücksichtigung der Bewölkung in Deiner rule. Was genau machst Du mit der "durchschnittlichen Bewölkung der letzten Stunde"? Lese ich die rule richtig, dass Du prüfst, ob die durchschnittliche Bewölkung der letzten Stunde größer/gleich dem CloudHysterese-Sollwert ist und falls das so sein sollte, dann wird die Verschattung beendet? Für das Abfahren der Rollos berücksichtigst Du die durchschnittliche Bewölkung der letzten Stunde hingegen nicht?
VG
absolut korrekt. Genau so wie du es beschrieben hast.
CU
Cyrelian
-
- Beiträge: 1
- Registriert: 26. Aug 2019 10:19
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi Cyrelian,
versuche gerade die Rollosteuerung mit der Rule von Seite 5 ganz unten bei mir zu Konfigurieren.
Kannst Du bitte nochmal deine aktuelle Rollosteuerung.items und die dazugehörige Sitemap hier posten oder PM ?
Dankö
versuche gerade die Rollosteuerung mit der Rule von Seite 5 ganz unten bei mir zu Konfigurieren.
Kannst Du bitte nochmal deine aktuelle Rollosteuerung.items und die dazugehörige Sitemap hier posten oder PM ?
Dankö
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi Malte,
klar, kein Thema. here you go :
ITEMS:
RULE:
SITEMAP:
CU
Cyrelian
klar, kein Thema. here you go :
ITEMS:
Code: Alles auswählen
/* ------------- Rollladensteuerung --------------------
*/
// ------------- Manuell --------------------
Switch ManualShading "Manuelle Verschattung an/aus" (gInitializeOff)
// ------------- Automatic --------------------
Switch AutoShading "Automatische Verschattung" (gShading,gInitializeOn)
Switch AutoShading_end "Rollladen automatisch öffnen" (gShading,gInitializeOn)
Number AutoShading_Temp_min "Temperatur größer [%d °C]" <temperature> (gShading)
Number AutoShading_Temp_raise "Temperatur zum hochfahren der Rollladen [%d °C]" <temperature> (gShading)
Number AutoShading_Temp_diff "Temperaturunterschied der letzten Stunde [- %d °C]" <temperature> (gShading)
Number AutoShading_Cloudiness_max "Bewölkung weniger als [%d Prozent]" <sun_clouds> (gShading)
Number AutoShading_Cloudiness_Hyst "Durchschn. Bewölkung der letzten Stunde größer gleich [%d Prozent]" <sun_clouds> (gShading)
Number AutoShading_Rain_min "Mindestregenmenge der letzten Stunde größer gleich [%.2f mm/h]" <sun_clouds> (gShading)
Number AutoShading_Azimuth_east "Sonnenrichtung / Azimuth (Ost) größer gleich [%d °]" <compass> (gShading)
Number AutoShading_Azimuth_south "Sonnenrichtung / Azimuth (Süd) größer gleich [%d °]" <compass> (gShading)
Number AutoShading_Azimuth_west "Sonnenrichtung / Azimuth (West) größer gleich [%d °]" <compass> (gShading)
Number AutoShading_Elevation_end "Sonnenhöhe / Elevation kleiner gleich [%d °]" <niveau> (gShading)
DateTime AutoShading_Start_last "Letzte Ausführung (Rollladen ab) [%1$td.%1$tm %1$tH:%1$tM Uhr]" <time> (gShading)
DateTime AutoShading_End_last "Letzte Ausführung (Rollladen hoch) [%1$td.%1$tm %1$tH:%1$tM Uhr]" <time> (gShading)
RULE:
Code: Alles auswählen
// Values und Variablen für die Verschattung
//val Number blindClosed = 100
//val Number blindOpen = 0
//val Number blindTranslucent = 35
var Number closingAzimuth_west = 181
var Number closingAzimuth_south = 111
var Number closingAzimuth_east = 65
var Number closingCloudiness = 20
val Number cloudHysteresis = 45 //die Mindestbewölkung in der letzten Stunde
var Number openingTemperature = 22
val Number temperatureHysteresis = 4 //Temperaturabfall von min. 4 Grad in der letzten Stunde
val Number minPrecip = 5 //die Mindestmenge an Regen in der letzten Stunde
var boolean isActiveWest = false
var boolean isActiveEast = false
var boolean isActiveSouth = false
/* ------------- Verschattung FUNKTIONEN --------------------
*/
//------------- Verschattung starten --------------------
val shadingStart = [GroupItem shutter |
val String logPrefix = "Verschattung aktivieren - "
var boolean log = true
val Map<String, Number> targetHights = newHashMap (
"KuecheRollladenTuer" -> 58,
"SchlafzimmerRollladenTuer" -> 100,
"BadezimmerRollladen" -> 55,
"WohnzimmerRollladenEsstisch" -> 65,
"WohnzimmerRollladenTuer" -> 68,
"WohnzimmerRollladenBalkon" -> 100
)
if ((Temperature.state as Number).floatValue <= (AutoShading_Temp_min.state as Number)) {
//if (log) logInfo ("Lambda", logPrefix + "Mindesttemperatur von (" + AutoShading_Temp_min.state.toString() + ") wurde nicht erreicht. Aktuelle Temperatur (" + Temperature.state.toString() + ")")
if (log) logInfo ("Lambda", logPrefix + "Mindesttemperatur von ({}) wurde nicht erreicht. Aktuelle Temperatur ({}) ", AutoShading_Temp_min.state, Temperature.state)
return false;
}
if ((Clouds.state as Number).floatValue > (AutoShading_Cloudiness_max.state as Number)) {
//if (log) logInfo ("Lambda", logPrefix + "Aktuelle Bewoelkung (" + Clouds.state.toString() + ") ueberschreitet den eingestellten Grenzwert von (" + AutoShading_Cloudiness_max.state.toString() + ")")
if (log) logInfo ("Lambda", logPrefix + "Aktuelle Bewoelkung ({}) ueberschreitet den eingestellten Grenzwert von ({})", Clouds.state, AutoShading_Cloudiness_max.state)
return false;
}
if ((Elevation.state as Number) <= (AutoShading_Elevation_end.state as Number)) {
//if (log) logInfo ("Lambda", logPrefix + "Elevation für das Beenden der Verschattung (" + AutoShading_Elevation_end.state.toString() + ") ist groesser als aktuelle (" + Elevation.state.toString() + ")")
if (log) logInfo ("Lambda", logPrefix + "Elevation für das Beenden der Verschattung ({}) ist groesser als aktuelle ({}) ", AutoShading_Elevation_end.state, Elevation.state)
return false;
}
// Rollladen werden geschlossen
if (log) logInfo("Lambda", logPrefix + "Grenzwert wurden erreicht, Rollladen werden geschlossen")
shutter.members.forEach[ blind |
if ((blind.state as Number) < targetHights.get(blind.name.toString()).intValue) {
logInfo ("Lambda", logPrefix + "Fahre Rollladen (" + blind.name.toString() + ") auf (" + targetHights.get(blind.name.toString()).intValue + ") %" )
blind.sendCommand(targetHights.get(blind.name.toString()).intValue)
//Pushnachricht versenden
sendPushoverMessage(pushoverBuilder("Verschattung für " + blind.name.toString + " aktiviert, schließen auf " + targetHights.get(blind.name.toString()).toString() + " %"))
} else {
logInfo ("Lambda", logPrefix + "Rollladen ist bereits weiter geschlossen (" + blind.state.toString() + "%) als er geschlossen werden sollte und wird daher ignoriert")
}
]
AutoShading_Start_last.postUpdate(now.toString())
return true;
]
//------------- Verschattung beenden -------------------
val shadingEnd = [GroupItem shutter |
val String logPrefix = "Verschattung deaktivieren - "
var boolean log = true
val Map<String, Number> targetHights = newHashMap (
"KuecheRollladenTuer" -> 58,
"SchlafzimmerRollladenTuer" -> 100,
"BadezimmerRollladen" -> 55,
"WohnzimmerRollladenEsstisch" -> 65,
"WohnzimmerRollladenTuer" -> 68,
"WohnzimmerRollladenBalkon" -> 100
)
// Rollladen öffnen
if (log) logInfo ("Lambda", logPrefix + "Rollladen werden geoeffnet")
shutter.allMembers.forEach[blind|
if((blind.state as Number).intValue == targetHights.get(blind.name).intValue) {
logInfo ("Lambda", logPrefix + "Oeffne Rollladen: " + blind.name.toString())
blind.sendCommand(UP)
//Pushnachricht versenden
sendPushoverMessage(pushoverBuilder("Verschattung für (" + blind.name.toString() + ") beendet, Rollladen wird geöffnet."))
} else {
logInfo ("Lambda", logPrefix + "Rollladen: (" + blind.name.toString() + ") wird nicht geoeffnet, da dieser zwischenzeitlich manuell verändert wurde.")
}
]
// Letzte Ausführung mit entsprechendem Zeitstempel belegen
AutoShading_End_last.postUpdate(now.toString())
//Variablen zurücksetzen
isActiveWest = false
isActiveEast = false
isActiveSouth = false
return true;
]
/* ------------- Verschattung RULES --------------------
*/
//------------- Verschattung starten --------------------
rule "Verschattung starten"
when
Item Azimuth changed
then
val String logPrefix = "Verschattung aktivieren - "
//Prüfung auf: Verschattungsautomatik an / ob es Tag ist / Präsenz / Jahreszeit
if ((AutoShading.state == ON && IsDay.state == ON) && (DinesiPhone_Presence.state == OFF && OllisiPhone_Presence.state == OFF) && (Jahreszeit.state=="SPRING" || Jahreszeit.state=="SUMMER")) {
if (AutoShading_Start_last.state === NULL) {
if (log) logInfo(logPrefix, 'Letzte Ausführung unbekannt, Belegung mit Initialwert (-1 Tag)')
AutoShading_Start_last.postUpdate(now.minusDays(1).toString())
}
//var String timeNow = now.toString().substring(0,10)
//var String timeLastStart = AutoShading_Start_last.state.toString().substring(0,10)
// Items für Sitemap füllen
if (AutoShading_Azimuth_east == "NULL" || AutoShading_Azimuth_south == "NULL" || AutoShading_Azimuth_west == "NULL" ){
AutoShading_Azimuth_east.postUpdate(closingAzimuth_west)
AutoShading_Azimuth_south.postUpdate(closingAzimuth_south)
AutoShading_Azimuth_west.postUpdate(closingAzimuth_west)
AutoShading_Temp_diff.postUpdate(temperatureHysteresis)
AutoShading_Cloudiness_Hyst.postUpdate(cloudHysteresis)
AutoShading_Rain_min.postUpdate(minPrecip)
}
//Azimuth ist größer als 181° (WEST)
if (!isActiveWest) {
if ((Azimuth.state as Number).floatValue > (closingAzimuth_west)) {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden WEST")
isActiveWest = shadingStart.apply(gRollladenWest)
return;
}
} else {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden WEST bereits aktiviert")
}
//Azimuth ist größer als 111° (SÜD)
if (!isActiveSouth) {
if ((Azimuth.state as Number).floatValue > (closingAzimuth_south) && (Azimuth.state as Number).floatValue < (closingAzimuth_west)) {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden SÜD")
isActiveSouth = shadingStart.apply(gRollladenSouth)
return;
}
} else {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden SÜD bereits aktiviert")
}
//Azimuth ist größer als 65° (OST)
if (!isActiveEast) {
if ((Azimuth.state as Number).floatValue > (closingAzimuth_east) && (Azimuth.state as Number).floatValue < (closingAzimuth_south)) {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden OST")
isActiveEast = shadingStart.apply(gRollladenEast)
return;
}
} else {
if (log) logInfo (filename, logPrefix + "Verschattung für Rollläden OST bereits aktiviert")
}
} else {
if (log) logInfo(filename, logPrefix + "Verschattung wird nicht ausgeführt, da einer der folgenden Parameter matched: Verschattung deakiviert, es ist Nacht, Herbst oder Winter oder Anwesenheit erkannt.")
}
end
//------------- Verschattung beenden --------------------
rule "Verschattung beenden"
when
Item Elevation changed
then
if ((AutoShading_end.state == ON && IsDay.state == ON) && (Jahreszeit.state=="SPRING" || Jahreszeit.state=="SUMMER")) {
val String logPrefix = "Verschattung deaktivieren - "
val boolean isRainLastHour = (Rain.maximumSince(now.minusHours(1), "influxdb").state >= (minPrecip))
if (log) logInfo(filename, logPrefix + "Rain " + isRainLastHour)
val boolean isCloudLastHour = (Clouds.averageSince(now.minusHours(1), "influxdb")as Number >= (cloudHysteresis))
if (log) logInfo(filename, logPrefix + "Clouds " + isCloudLastHour )
val boolean isTemperature = ((Temperature.state as Number).intValue < (Temperature.minimumSince(now.minusHours(1), "influxdb").state as DecimalType -(temperatureHysteresis)))
if (log) logInfo(filename, logPrefix + "Temperatur " + isTemperature)
if (AutoShading_End_last.state === NULL) {
if (log) logInfo(logPrefix, "Letzte Ausführung unbekannt, Belegung mit Initialwert (-1 Tag)")
AutoShading_End_last.postUpdate(now.minusDays(1).toString())
}
var String timeNow = now.toString().substring(0,10)
var String timeLastEnde = AutoShading_End_last.state.toString().substring(0,10)
if (timeLastEnde == timeNow) {
if (log) logInfo(filename, logPrefix + "Beende, da heute bereits ein automatisches Hochfahren stattfand")
return;
}
if (!isActiveWest && !isActiveEast && !isActiveSouth) {
if (log) logInfo(filename, logPrefix + "Beende, da heute noch keine automatische Verschattung stattfand")
return;
}
if (isTemperature) {
if (log) logInfo (filename, logPrefix + "Verschattung beenden, Temperaturabfall von min. ({})° erkannt", temperatureHysteresis)
shadingEnd.apply(gRollladen)
return;
}
if ((Temperature.state as Number).floatValue > (AutoShading_Temp_raise.state as Number)) {
if (log) logInfo(filename, logPrefix + "Beende, aktuelle Temperatur ({})° ueberschreitet den eingestellten Grenzwert zum hochfahren von ({})°",Temperature.state, AutoShading_Temp_raise.state )
return;
}
if (isRainLastHour || isCloudLastHour) {
if (log) logInfo (filename, logPrefix + "Verschattung beenden, Mindestregenmenge von ({}) mm oder druchschnittliche Bewölkung von ({}) % erreicht",minPrecip, cloudHysteresis)
shadingEnd.apply(gRollladen)
return;
}
if ((Elevation.state as Number) > (AutoShading_Elevation_end.state as Number)) {
if (log) logInfo(filename, logPrefix + "Beende, aktuelle Elevation ({}) ueberschreitet den eingestellten Grenzwert von ({}) ", Elevation.state, AutoShading_Elevation_end.state)
return;
}
if (isActiveWest || isActiveEast || isActiveSouth ) {
if (log) logInfo (filename, logPrefix + "Verschattung beenden")
shadingEnd.apply(gRollladen)
return;
}
}
end
/* ------------- Verschattung Variablen zurücksetzen wenn kein automtisches hochfahren erfolgt --------------------
*/
rule "Verschattung Variablen zurücksetzen"
when
Time cron "15 59 23 * * ?"
then
if (isActiveWest == true || isActiveEast == true || isActiveSouth == true) {
isActiveWest = false
isActiveEast = false
isActiveSouth = false
}
end
Code: Alles auswählen
Frame item=gRollladen label="Rollladensteuerung"{
Switch item=gRollladen label="Alle Rollläden" mappings=[UP="Hoch", STOP="X", DOWN="Runter"]
Text item=gShading label="Automatische Verschattung" icon="rollershutter" {
Frame label="Verschattung aktivieren/deaktivieren" {
Switch item=AutoShading mappings=[ON="An", OFF="Aus"]
Switch item=AutoShading_end mappings=[ON="An", OFF="Aus"]
}
Frame label="Verschattung starten, wenn..." {
Setpoint item=AutoShading_Temp_min minValue=18 maxValue=40 step=1
Text item=Temperature valuecolor=[>27="red",>20="orange",>10="purple",>5="green",<=5="blue"]
Setpoint item=AutoShading_Cloudiness_max minValue=0 maxValue=100 step=5
Text item=Clouds
//Text item=AutoShading_Azimuth_east //minValue=45 maxValue=110 step=5
//Text item=AutoShading_Azimuth_south //minValue=111 maxValue=180 step=5
//Text item=AutoShading_Azimuth_west //minValue=181 maxValue=340 step=5
Default item=Azimuth
Text item=AutoShading_Start_last
}
Frame label="Verschattung beenden, wenn..." {
Setpoint item=AutoShading_Elevation_end minValue=-20 maxValue=60 step=1
Setpoint item=AutoShading_Temp_raise minValue=15 maxValue=30 step=1
Text item=AutoShading_Temp_diff
Text item=AutoShading_Cloudiness_Hyst
Text item=AutoShading_Rain_min
Default item=Elevation
Text item=AutoShading_End_last
}
Cyrelian
-
- Beiträge: 1
- Registriert: 21. Jan 2020 19:13
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hallo zusammen,
erstmal Danke für diese Tolle Projekt.
Allerdings bekomme ich es nicht richtig zum Laufen und meine Kenntnisse sind auch ein wenig begrenzt. Ich hoffe Ihr verzeiht mit die unwissenden Fragen.
Verstehe ich die .Rules Datei richtig das hier die Beschattungen freigeschaltet werden müssen?
Danke schon einmal für Hilfe
erstmal Danke für diese Tolle Projekt.
Allerdings bekomme ich es nicht richtig zum Laufen und meine Kenntnisse sind auch ein wenig begrenzt. Ich hoffe Ihr verzeiht mit die unwissenden Fragen.
- Beschattung Ost/Süd/West
Verstehe ich die .Rules Datei richtig das hier die Beschattungen freigeschaltet werden müssen?
Code: Alles auswählen
var boolean isActiveWest = true
var boolean isActiveEast = true
var boolean isActiveSouth = true
- Fehlermeldung IsDay
Code: Alles auswählen
==> /var/log/openhab2/openhab.log <==
2020-01-22 15:29:00.023 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Verschattung starten': The name 'IsDay' cannot be resolved to an item or type; line 124, column 37, length 5
- Gruppenadresse für die Beschattung
Danke schon einmal für Hilfe
- udo1toni
- Beiträge: 14032
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Code einfach kopieren, ohne ihn verstanden zu haben, ist nie eine gute Idee
Die Fehlermeldung besagt, dass IsDay weder als Item noch als Variable gefunden wird. Ich hab mir jetzt die Rule nicht angeschaut aber das ist der konkrete Fehler.
Am Rande: wenn man Variablen oder auch Konstanten definiert (var ...) und den Typ explizit angibt, gibt es zwei Möglichkeiten, nämlich die Definition also Objekt oder als Primitive. Dabei dauert die Definition als Primitive sehr viel länger (das liegt im Code im Hintergrund begründet), soll heißen, Objekte sind zu bevorzugen. Nicht jeder Typ ist in beiden Versionen verfügbar, teilweise differieren die Schlüsselworte etwas, im vorliegendne Fall (boolean) ist das Schlüsselwort aber identisch, nur mit einem Großbuchstaben am Anfang (der Großbuchstabe gilt für alle Objekte...) Besser wäre also die Definition so:
Die Fehlermeldung besagt, dass IsDay weder als Item noch als Variable gefunden wird. Ich hab mir jetzt die Rule nicht angeschaut aber das ist der konkrete Fehler.
Am Rande: wenn man Variablen oder auch Konstanten definiert (var ...) und den Typ explizit angibt, gibt es zwei Möglichkeiten, nämlich die Definition also Objekt oder als Primitive. Dabei dauert die Definition als Primitive sehr viel länger (das liegt im Code im Hintergrund begründet), soll heißen, Objekte sind zu bevorzugen. Nicht jeder Typ ist in beiden Versionen verfügbar, teilweise differieren die Schlüsselworte etwas, im vorliegendne Fall (boolean) ist das Schlüsselwort aber identisch, nur mit einem Großbuchstaben am Anfang (der Großbuchstabe gilt für alle Objekte...) Besser wäre also die Definition so:
Code: Alles auswählen
var Boolean isActiveWest = true
var Boolean isActiveEast = true
var Boolean isActiveSouth = true
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: Elektrischen Rolladen abhängig von Sonnenstand und Wetter steuern lassen
Hi,Knxpreiss hat geschrieben: ↑22. Jan 2020 15:32 Hallo zusammen,
erstmal Danke für diese Tolle Projekt.
Allerdings bekomme ich es nicht richtig zum Laufen und meine Kenntnisse sind auch ein wenig begrenzt. Ich hoffe Ihr verzeiht mit die unwissenden Fragen.
- Beschattung Ost/Süd/West
Verstehe ich die .Rules Datei richtig das hier die Beschattungen freigeschaltet werden müssen?Code: Alles auswählen
var boolean isActiveWest = true var boolean isActiveEast = true var boolean isActiveSouth = true
Ich bekomme folgende Fehlermeldung im Log. Allerdings kann ich damit nichts anfangen. Kann mir jemand weiterhelfen?
- Fehlermeldung IsDay
Code: Alles auswählen
==> /var/log/openhab2/openhab.log <== 2020-01-22 15:29:00.023 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Verschattung starten': The name 'IsDay' cannot be resolved to an item or type; line 124, column 37, length 5
Werden die einzelnen Richtungen mit gRollladenWest usw. angesprochen?
- Gruppenadresse für die Beschattung
Danke schon einmal für Hilfe
dir Fehlen diese Items.
Code: Alles auswählen
Switch IsNight "Es ist Nacht" <clearnight> (gAstro)
Switch IsDay "Es ist Tag" <clearday> (gAstro)
Switch IsTwilight "Es ist Dämmerung" <sun_clouds> (gAstro)
Ich habe die Rollläden eingeteilt und via gRollladenWest werden ALLE Rollladen auf der westlichen Seite des Hauses angesprochen. Die Zuordnung erfolgt in den einzelnen ITEMS.
CU
Cyrelian