Jalousien nach Sonnenstand
-
- Beiträge: 138
- Registriert: 6. Okt 2019 13:20
Re: Jalousien nach Sonnenstand
Gaga hin oder her. Keine Ahnung wo der Name herkommt.
Was soll ich denn noch machen das man das erkennen kann?
Und wie bitte bekomme ich die Zeilennummern da rein kopiert?
Was soll ich denn noch machen das man das erkennen kann?
Und wie bitte bekomme ich die Zeilennummern da rein kopiert?
- udo1toni
- Beiträge: 13986
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Jalousien nach Sonnenstand
Achso, ich möchte empfehlen, dass Du die Indentation beachtest. Das ist zwar in der DSL für den Ablauf irrelevant, hilft aber den Code zu lesen
Meist sitzen die Tabs im 4er Abstand, ein Tab führt also auf ein Stelle "mehrfaches von 4". Hier in der Forensoftware ist es aber so, dass ein Tab ein mehrfaches von 8 ist, das führt dann zu zusätzlichen Verschiebungen.
Zum eigentlichen Problem... eventuell ist die Strahlungsintensität ebenfalls einheitenbehaftet (habe da nicht drauf geachtet). Weiterhin habe ich ja den Bewölkungsgrad mit eingebaut. Das funktioniert natürlich nur dann, wenn Du auch ein entsprechendes Item hast. der Bewölkungsgrad wird in % angegeben, das wäre also ein Wert zwischen 0 und 100.
Hier mal eine hoffentlich robustere Version:
Meist sitzen die Tabs im 4er Abstand, ein Tab führt also auf ein Stelle "mehrfaches von 4". Hier in der Forensoftware ist es aber so, dass ein Tab ein mehrfaches von 8 ist, das führt dann zu zusätzlichen Verschiebungen.
Zum eigentlichen Problem... eventuell ist die Strahlungsintensität ebenfalls einheitenbehaftet (habe da nicht drauf geachtet). Weiterhin habe ich ja den Bewölkungsgrad mit eingebaut. Das funktioniert natürlich nur dann, wenn Du auch ein entsprechendes Item hast. der Bewölkungsgrad wird in % angegeben, das wäre also ein Wert zwischen 0 und 100.
Hier mal eine hoffentlich robustere Version:
Code: Alles auswählen
val nElevationMin = 0 // 10
val nElevationMax = 300 // 45
val nAzimutMin = 0 // 130
val nAzimutMax = 210 // 210
val nIntensityMin = 0 // 80
val nCloudynessMax = 110 // 40
rule "Beschattung"
when
Item LokaleSonnendaten_Position_Elevation changed
then
if(!(LokaleSonnendaten_Position_Elevation.state instanceof Number)) {
logWarn("shade","Elevation ungültig! Abbruch!")
return;
}
if(!(LokaleSonnendaten_Azimut.state instanceof Number)) {
logWarn("shade","Azimut ungültig! Abbruch!")
return;
}
val nElevation = (LokaleSonnendaten_Position_Elevation.state as Number).floatValue
val nAzimut = (LokaleSonnendaten_Azimut.state as Number).floatValue
var nIntens = 100
if(LokaleSonnendaten_DirekteStrahlung.state instanceof Number)
nIntens = (LokaleSonnendaten_DirekteStrahlung.state as Number).floatValue
var nCloud = 0
if(LokaleWettervorhersage_Bewolkung.state instanceof Number)
nCloud = (LokaleWettervorhersage_Bewolkung.state as Number).intValue
if(nElevation < nElevationMin || nElevation > nElevationMax ||
nAzimut < nAzimutMin || nAzimut > nAzimutMax ||
nIntens < nIntensityMin ||
nCloud > nCloudynessMax) {
logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung aus!")
} else {
logInfo("shade","Rolladen Büro und Kinderzimmer Beschattung an!")
DGBuero.sendCommand(50)
DGKind.sendCommand(50)
}
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 138
- Registriert: 6. Okt 2019 13:20
Re: Jalousien nach Sonnenstand
Hi,
danke dir. Das Item habe ich letztes mal schon gesehen und umbeannt in mein Item der Bewölkung (LokaleWettervorhersage_Bewolkung)
Ich bekomme auch keinen Fehler mehr im Logging aber immer nur die Log Info "Rolladen Büro und Kinderzimmer Beschattung aus!"
Trotz der Parameter wie ich sie oben definiert habe (min/max werte) läuft die Regel nicht weiter durch.
Ich habe den nElevationMin auf -50 gesetzt funktioniert dies überhaupt in Bezug auf instanceof number ? (Negativwerte)
Da der Elevationswinkel im Moment bei ca -20 steht
danke dir. Das Item habe ich letztes mal schon gesehen und umbeannt in mein Item der Bewölkung (LokaleWettervorhersage_Bewolkung)
Ich bekomme auch keinen Fehler mehr im Logging aber immer nur die Log Info "Rolladen Büro und Kinderzimmer Beschattung aus!"
Trotz der Parameter wie ich sie oben definiert habe (min/max werte) läuft die Regel nicht weiter durch.
Ich habe den nElevationMin auf -50 gesetzt funktioniert dies überhaupt in Bezug auf instanceof number ? (Negativwerte)
Da der Elevationswinkel im Moment bei ca -20 steht
- udo1toni
- Beiträge: 13986
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Jalousien nach Sonnenstand
Na dann hilft es nix, muss halt mehr Logging rein...
Diesen Block
vor der Zeile
einfügen, dann siehst Du die konkret genutzten Werte.
Diesen Block
Code: Alles auswählen
logInfo("shade","Elevation: Min({}) Max({}) aktuell:{}",nElevationMin,nElevationMax,nElevation)
logInfo("shade"," Azimut: Min({}) Max({}) aktuell:{}",nAzimutMin,nAzimutMax,nAzimut)
logInfo("shade","Intensity: Min({}) aktuell:{}",nIntensityMin,nIntens)
logInfo("shade"," Cloud: Max({}) aktuell:{}",nCloudynessMax,nCloud)
Code: Alles auswählen
if(nElevation < nElevationMin || nElevation > nElevationMax ||
nAzimut < nAzimutMin || nAzimut > nAzimutMax ||
nIntens < nIntensityMin ||
nCloud > nCloudynessMax) {
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 138
- Registriert: 6. Okt 2019 13:20
Re: Jalousien nach Sonnenstand
Hi Udo,
wie cool.
Azimut max hatte nicht gepasst. Habe ich angepasst.
Jetzt kommt aber wieder diese Meldung.
wie cool.
Azimut max hatte nicht gepasst. Habe ich angepasst.
Jetzt kommt aber wieder diese Meldung.
Ich gehe davon aus das diese Meldung kommt wenn die Werte für den Start der Beschattung passen würden2021-03-05 20:43:29.619 [INFO ] [org.openhab.core.model.script.shade ] - Elevation: Min(-50) Max(300) aktuell:-25.00499
2021-03-05 20:43:29.624 [INFO ] [org.openhab.core.model.script.shade ] - Azimut: Min(0) Max(500) aktuell:291.34424
2021-03-05 20:43:29.628 [INFO ] [org.openhab.core.model.script.shade ] - Intensity: Min(0) aktuell:0.0
2021-03-05 20:43:29.632 [INFO ] [org.openhab.core.model.script.shade ] - Cloud: Max(110) aktuell:12
2021-03-05 20:43:29.645 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'SonnenschutzBüro-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_lessThan(int,int) on instance: null in SonnenschutzBüro
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Jalousien nach Sonnenstand
Nein, die Meldung ist ja ein Fehler
Ich habe das gerade mal nachgebaut und bei mir kommt diese Meldung nicht
Ich habe die Items derzeit als simple "Number" angelegt22:04:06.659 [INFO ] [org.openhab.core.model.script.shade ] - Elevation: Min(0) Max(300) aktuell:-33.32822
22:04:06.659 [INFO ] [org.openhab.core.model.script.shade ] - Azimut: Min(0) Max(210) aktuell:308.66458
22:04:06.663 [INFO ] [org.openhab.core.model.script.shade ] - Intensity: Min(0) aktuell:0.0
22:04:06.663 [INFO ] [org.openhab.core.model.script.shade ] - Cloud: Max(110) aktuell:0
22:04:06.671 [INFO ] [org.openhab.core.model.script.shade ] - Rolladen Büro und Kinderzimmer Beschattung aus!
Code: Alles auswählen
Number LokaleSonnendaten_Azimut "Azimuth" { channel="astro:sun:local:position#azimuth" }
Number LokaleSonnendaten_Position_Elevation "Elevation" { channel="astro:sun:local:position#elevation" }
Number LokaleSonnendaten_DirekteStrahlung "Strahlung" { channel="astro:sun:local:radiation#direct" }
Number LokaleWettervorhersage_Bewolkung "Wolken" { channel="openweathermap:weather-and-forecast:api:local:current#cloudiness" }
Zuletzt geändert von int5749 am 5. Mär 2021 22:32, insgesamt 2-mal geändert.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Jalousien nach Sonnenstand
Dies ist leider eine Eigenart von OH3, Der Name ist einfach der Name der Datei und dann werden die enthaltenen Rules hochgezählt und der Name der Rule als Identifier
In meinem Fall
Beschattung
Test-1
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Jalousien nach Sonnenstand
Evtl. habe ich ja auch noch nicht verstanden, wann genau die Rollladen bei Dir fahren sollen, aber
Code: Alles auswählen
if(nElevation < nElevationMin || nElevation > nElevationMax ||
nAzimut < nAzimutMin || nAzimut > nAzimutMax ||
nIntens < nIntensityMin ||
nCloud > nCloudynessMax) {
bedeutet "oder"||
wäre z.B. ein "und" Vergleich&&
Und verschachteln könntest Du, indem Du Klammern um Vergleiche setzen würde.
Dait wären wir wieder bei "Wie, wann, wo (weiß nicht Obi) aber sollte klar definiert sein
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
- udo1toni
- Beiträge: 13986
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Jalousien nach Sonnenstand
Ah, jetzt, ja. Das war der eine Parameter, den ich nicht kannte... so ist es natürlich wieder einigermaßen sinnvoll. Fehlende Zeilennummern sind aber trotzdem unschön.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
- udo1toni
- Beiträge: 13986
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Jalousien nach Sonnenstand
Das VerODERn ist hier schon in Ordnung, es geht darum, dass die Rollläden nur dann in die Beschattung gehen sollen, wenn alle Parameter oberhalb des Minimum und unterhalb des Maximum sind.int5749 hat geschrieben: ↑5. Mär 2021 22:57Evtl. habe ich ja auch noch nicht verstanden, wann genau die Rollladen bei Dir fahren sollen, aberbedeutet ja, das nur einer der angegebenen Vergleiche wahr sein muß um eben "Rolladen Büro und Kinderzimmer Beschattung aus!" zu triggernCode: Alles auswählen
if(nElevation < nElevationMin || nElevation > nElevationMax || nAzimut < nAzimutMin || nAzimut > nAzimutMax || nIntens < nIntensityMin || nCloud > nCloudynessMax) {
bedeutet "oder"||wäre z.B. ein "und" Vergleich&&
Und verschachteln könntest Du, indem Du Klammern um Vergleiche setzen würde.
Dait wären wir wieder bei "Wie, wann, wo (weiß nicht Obi) aber sollte klar definiert sein
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet