Sonnen Azimuth zum schalten benutzen, aber wie ???

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

Hallo UDO

Code: Alles auswählen

rule "azimuth Sonnenstand West"
    when
      Item PositionAzimuth changed 
    then
       if (((PositionAzimuth.state as Number).floatValue > 241) && ((PositionAzimuth.state as Number).floatValue < 242 ))
      {
          EgBeschattungWest.sendCommand(ON)
          logInfo("Azimuth","Rollo Runter  ", PositionAzimuth.state as Number)
      }
   
      else {
          EgBeschattungWest.sendCommand(OFF)
          logInfo("Azimuth","Rollo Auf", PositionAzimuth.state as Number)
      }
end
So schaut der code aus. nun möchte ich wie gesagt, via RadiationDirect als zusätliches element mit einbauen so das die rolläden oben bleiben wenn die sonne nicht scheint.

quasi sonnstand und strahlung

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von PeterA »

Hi franky,

bei mir werte ich nicht die Strahlung sondern die Wolkenmenge als zusätzliche Bedingung aus.

Gruß Peter
- OpenHab 2.4
#PWRUP

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

Auch guter Ansatz wenn du da was hast. Ich bastel ja gerne..

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

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von udo1toni »

Ah, Du nutzt bestimmte Sonnenstände für die Beschattung :) Also brauchst Du nur eine zusätzliche Bedingung, die Du einfach mit einbaust. Meine Empfehlung ist aber, die Rule leicht anders zu gestalten:

Code: Alles auswählen

rule "azimuth Sonnenstand West"
 when
    Item PositionAzimuth changed
 then
    val nPos = (PositionAzimuth.state as Number).floatValue  // Azimuth
    val nWolken = Bewoelkung.state as Number                 // Bewölkungsgrad

    var iSoll = OFF                                          // Default Befehl

    if(nPos > 241 && nPos < 242 && nWolken < 40)
        iSoll = ON

    if(EgBeschattungWest.state != iSoll) {
        EgBeschattungWest.sendCommand(iSoll.toString)
        logInfo("Azimuth","Rollo {} (Azimuth {}°, Wolken {}%)",(if(iSoll == ON) "zu" else "auf"), nPos, nWolken)
    }
end
Die Nutzung von lokalen Konstanten macht hier die Rule zum einen leichter lesbar, zum zweiten wird der Status nur einmal ausgelesen, was Taktzyklen spart. Die Bewölkung habe ich pro forma mal mit rein geschrieben.
Der größte Unterschied zu Deiner Rule ist aber, dass der Steuerbefehl nur dann gesendet wird, wenn dies auch wirklich notwendig ist. Bei Deiner version wird alle 10 Minuten (wenn das der Refresh Intervall für Astro ist) ein Befehl OFF gesendet, außer wenn die Sonne passend steht, dann wird alt immer ON gesendet.
Das logInfo() verwendet zusätzlich einen ternären Operator um die Meldung entsprechend auszugeben.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

Udo vielen Dank, das werde ich heut Nachmittag gleich testen, bei Dir sieht das immer so einfach aus..
Ja so richtig war ich mit der Abfrage auch nicht zu frieden, da ja der Rollladen dann immer alle 10 min angesprochen wird.
Log info ist ein nettes gimnick, was jetzt nicht zwingend notwendig ist.
So kann ich es zwar lesen aber der log gibt es ja sowieso aus. Ich selber habe den mdt JAL Aktor 8fach dieser hat zwar die Option Absolute Positon aber nicht anfährt.( Openhab schmeisst zwar den befehl z.b. (30) der aktor setzt es aber nicht um.
Das bin ich dann umgangen in dem Ich im ets eine extra GA angelegt habe um eben diese eine Position anfahren zu können.
Allerdings geht das nur über funktion Schalter. Kleine Frage, die Abfrage für die Bewölkung bekomme ich dann auch aus der Openweather App? Da mit das im VS Code nicht so schön angezeigt wird.

WolfgangE
Beiträge: 4
Registriert: 4. Feb 2021 13:18
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von WolfgangE »

Ich hab das letztes Jahr mal auf die schnelle so gelöst mit Temperatur und Solarstrahlung von der Wetterstation

Code: Alles auswählen


rule "Markise ausfahren"
		when
				Item Solarstrahlung changed
		then
		    var solar40 = Solarstrahlung.averageSince(now.minusMinutes(40),"influxdb")
			var temp40 = Aussentemperatur.averageSince(now.minusMinutes(40),"influxdb")
		    var solar20 = Solarstrahlung.averageSince(now.minusMinutes(20),"influxdb")
			var temp = Aussentemperatur.state
			
			
			var MarkiseState = Markise_BlindsControl.state
			if (Blattfeuchte.state == 0 && Solarstrahlung.averageSince(now.minusMinutes(40),"influxdb") > 700 && Aussentemperatur.averageSince(now.minusMinutes(40),"influxdb") > 27 && Markise_BlindsControl.state <= 80 ) {
				if (Markise_BlindsControl.state != 80) { Markise_BlindsControl.sendCommand(80)
	            logInfo("FILE", "Markise ausfahren auf 80%")
	            sendTelegram("HOMEbot","Markise wird auf 80% ausgefahren s40:" + solar40 +" t40 " + temp40 + " M: " + MarkiseState + " s20: " + solar20 + " t: " + temp ) } }
			else if (Blattfeuchte.state == 0 && Solarstrahlung.averageSince(now.minusMinutes(20),"influxdb") > 500 && Aussentemperatur.state > 18 ){
			    if (Markise_BlindsControl.state != 40) { Markise_BlindsControl.sendCommand(40)
	            logInfo("FILE", "Markise ausfahren auf 40%") 
	            sendTelegram("HOMEbot","Markise wird auf 40% ausgefahren s40:" + solar40 +" t40 " + temp40 + " M: " + MarkiseState + " s20: " + solar20 + " t: " + temp ) } }
			else if ((Solarstrahlung.averageSince(now.minusMinutes(20),"influxdb") < 350 && Markise_BlindsControl.state > 0) || (Aussentemperatur.state < 15 && Markise_BlindsControl.state > 0 ) )
			{
				Markise_BlindsControl.sendCommand(0)
	            logInfo("FILE", "Markise wieder einfahren")
	            sendTelegram("HOMEbot","Markise wird eingefahren ")
			}
			
end

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

udo1toni hat geschrieben: 18. Feb 2021 21:47 Ah, Du nutzt bestimmte Sonnenstände für die Beschattung :) Also brauchst Du nur eine zusätzliche Bedingung, die Du einfach mit einbaust. Meine Empfehlung ist aber, die Rule leicht anders zu gestalten:

Code: Alles auswählen

rule "azimuth Sonnenstand West"
 when
    Item PositionAzimuth changed
 then
    val nPos = (PositionAzimuth.state as Number).floatValue  // Azimuth
    val nWolken = Bewoelkung.state as Number                 // Bewölkungsgrad

    var iSoll = OFF                                          // Default Befehl

    if(nPos > 241 && nPos < 242 && nWolken < 40)
        iSoll = ON

    if(EgBeschattungWest.state != iSoll) {
        EgBeschattungWest.sendCommand(iSoll.toString)
        logInfo("Azimuth","Rollo {} (Azimuth {}°, Wolken {}%)",(if(iSoll == ON) "zu" else "auf"), nPos, nWolken)
    }
end
Die Nutzung von lokalen Konstanten macht hier die Rule zum einen leichter lesbar, zum zweiten wird der Status nur einmal ausgelesen, was Taktzyklen spart. Die Bewölkung habe ich pro forma mal mit rein geschrieben.
Der größte Unterschied zu Deiner Rule ist aber, dass der Steuerbefehl nur dann gesendet wird, wenn dies auch wirklich notwendig ist. Bei Deiner version wird alle 10 Minuten (wenn das der Refresh Intervall für Astro ist) ein Befehl OFF gesendet, außer wenn die Sonne passend steht, dann wird alt immer ON gesendet.
Das logInfo() verwendet zusätzlich einen ternären Operator um die Meldung entsprechend auszugeben.

Hallo Udo, So deine Rule Funktioniert tadellos,
ich habe jetzt ein wenig gebastelt und es geschafft die absolute Position im Aktor anzusprechen.
Dies habe ich geschafft in dem ich in der things einen neuen Dimmer angelegt und jedoch nur die Gruppen Adresse der absoluten Position und Position des Aktors eingetragen habe. natürlich dazu eine entsprechende item.
Dieses habe ich zusammengefasst in eine gruppe und testweise mit einer time cron rule versucht auf direkte Position zu fahren. Funktioniert. Kannst du mir noch einmal behilflich sein, Deine Rule anzupassen so das ich bei anzimuth XXX und bei Wolken XX eine bestimmte Position anfahren kann und danach wieder zurück auf null?
Achso, vielleicht könnte man in die Regel mit aufnehmen.
Wenn das rollo eine tiefere Position hat als sie Beschattung, brauch er nix tun.
Sorry für die Arbeit, ich tue mich selber sehr schwer um diese Regeln umzusetzen.

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

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von udo1toni »

Warum nimmst Du denn einen Dimmer Channel für ein Rollo? Oder habe ich Dich da falsch verstanden?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

Code: Alles auswählen

Rollershutter   HausItemsEgKochenRollo1           "Rollo küche spüle [%s %%]"                   (eg_wohnbereich, Rollo_Morgens, test_rollo)        {channel="knx:device:bridge:generic:eg_kochen_rollo_1"}
Dimmer EgRolloSpuele                              "Eg rollo spuele"                                                          (test_rollo)                       {channel="knx:device:bridge:generic:eg_rollo_spuele"}

Code: Alles auswählen

Type rollershutter    : eg_kochen_rollo_1      "Rollo Küche Spüle"             [ upDown="1/0/4", stopMove="1/0/5", position="1/0/10+<1/0/6",autoupdate="false"  ]
 Type dimmer           : eg_rollo_spuele         ""                             [ switch=  "", position="1/0/10+<1/0/6",  increaseDecrease= "" ]
Wenn ich nur den Rollershutter verwende, fährt er nicht die absolute Position an. Ich weiss nicht warum, aber so klappt es.

franky199
Beiträge: 19
Registriert: 25. Sep 2020 14:46
Answers: 0

Re: Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von franky199 »

Problem gefunden und Dimmer wieder entfernt. Manchmal sieht man den Wald vor lauter bäumen nicht.

Code: Alles auswählen

[ upDown="1/0/4", stopMove="1/0/5", position="5.001:1/0/6+<1/0/10",autoupdate="false"  ]
Jetzt würde ich eben gern noch die rule so ändern das Rollladen bei Sonnenstand und Wolken Position x anfahren, aber sind diese schon weiter unten soll eben nix passieren.

Antworten