Sonnen Azimuth zum schalten benutzen, aber wie ???

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Orakel
Beiträge: 24
Registriert: 30. Jul 2018 05:56
Answers: 0

Sonnen Azimuth zum schalten benutzen, aber wie ???

Beitrag von Orakel »

:?:

ich würde mir gerne eine lampe einschalten wenn der Azimuth der Sonne größer als 270 beträgt.
der Azimzuth wir mir in der LogDatei angezeigt und auch in der Sitemap dargestellt, aber die Rule löst nicht aus.

Code: Alles auswählen

rule "azimuth"

when
Item PositionAzimuth received update
then

if(PositionAzimuth.state > 275)

{
    logInfo("Azimuth", "Azimuth "+PositionAzimuth.state)
    sendPushoverMessage (pushoverBuilder("Azimuth "+PositionAzimuth.state))
    Kuechenschrankleuchte.sendCommand(ON)
}
end

wo liegt denn jetzt wohl bei meiner Rule der Fehler ?

gruß
Andreas

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag von peter-pan »

Hallo Andreas,
das Astro-Binding benutzt UoM. D.h. im Status wird auch der Postfix mitgegeben. Dein Item dürfte etwa so aussehen:

Code: Alles auswählen

Number:Angle          Sun_Azimuth                     "Azimuth"                                                             <incline>                 (gAstro)      {channel="astro:sun:local:position#azimuth"}
Deshalb musst du die If-Bedingung etwas modifizieren.
Z.B.so :

Code: Alles auswählen

if( (PositionAzimuth.state as Number).floatValue > 270)
oder so:

Code: Alles auswählen

if(PositionAzimuth.state > 270 | °)
Es gibt sicherlich auch noch andere Möglichkeiten des Vergleichs.

Die Doku zu UoM findest du hier
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Orakel
Beiträge: 24
Registriert: 30. Jul 2018 05:56
Answers: 0

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

Beitrag von Orakel »

danke dir, nun funktioniert es

nun muss ich nur noch herausfinden wie man bei z.B. >270 und >300 wieder ausschaltet ohne dabei zwei getrennt Regeln erstellen zu müssen :-)

gruß
Orakel

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag von peter-pan »

Was willst du denn genau machen ? Wann soll denn wieder ausgeschaltet werden?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Orakel
Beiträge: 24
Registriert: 30. Jul 2018 05:56
Answers: 0

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

Beitrag von Orakel »

erstmal will ich nur eine lampe schalten und zwar zwischen 2 Azimuth Winkeln also bei z.B. 45° ein und bei 90° aus, eventuell will ich später mal meine Rollos nachdem SOnnenverlauf schalten, weil morgens die sonne vorne ins haus scheint und ab nachmittags hinten auf die fenster scheint.
deswegen dachte ich man könnte es so regeln das wenn die sonne vorne aufs haus scheint vorne die rollos 50% runter gehen und wenn die sonne weg ist und nach hinten wandern das ganze wieder rauf und hinten runter fährt.
Das Problem ist nicht nur die Umsetzung mit der Regel für den Azimuth, ich wollte sowas eigentlich über eine Regel mit TimeCron erstellen aber meine TimeCron werden maximal 2Tage ausgeführt und dann tut sich da nix mehr, also eine Urlaubssteuerung per TimeCron fällt aus, deswegen vielleicht auch die Möglichkeit sowas über einen Sonnenstand zu regeln.

gruß
Orakel

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag von peter-pan »

Vielleicht hilft dir diese Regel (als Beispiel ) weiter. Du könntest in der ersten If-Bedingung abfragen, ob der Wert grösser/gleich 45 und (&&) kleiner/gleich 90 ist. Dann kommen die anderen Bedingungen (else if).
Hier das Beispiel :

Code: Alles auswählen

rule "HM Status Kuechenfenster"
    when
//      Item Dummy4 changed to ON or
      Item ClaudiHMIPSWDO0000DA498BDA7E_1STATECONTACT changed 
    then
      if ( Socket_Fritz_02_Dunstabzug.state != ON ) {
//          logInfo("homematic","5 gar nix passiert {} ", Socket_Fritz_02_Dunstabzug.state )
          return ;
      }
      else if (ClaudiHMIPSWDO0000DA498BDA7E_1STATECONTACT.state == OPEN && Socket_Fritz_02.state == OFF) {
          Socket_Fritz_02.sendCommand(ON)
//          logInfo("homematic","2 HM Küchenfenster AUF Steckdose an {} ", Socket_Fritz_02)
      }
      else if (ClaudiHMIPSWDO0000DA498BDA7E_1STATECONTACT.state == CLOSED && Socket_Fritz_02.state == ON) {
          Socket_Fritz_02.sendCommand(OFF)
//          logInfo("homematic","3 HM Küchenfenster AUF Steckdose aus {} ", Socket_Fritz_02 )
      }
      else {
          logInfo("homematic","4 nix passiert {} ", Socket_Fritz_02 )
      }
end
Die entsprechenden Items und Trigger musst du natürlich selber setzen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Orakel
Beiträge: 24
Registriert: 30. Jul 2018 05:56
Answers: 0

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

Beitrag von Orakel »

Hab es nun anscheinend mit dieser Rule hinbekommen eine Lampe EIN (Azimuth >290) und AUS (Azimuth <300) zuschalten

die ASTRO Things werden alle 10min aktuallisiert

Code: Alles auswählen

rule "azimuth"
    when
      Item PositionAzimuth changed 
    then
      if ((( PositionAzimuth.state as Number).floatValue <= 290) && ((PositionAzimuth.state as Number).floatValue >= 300 ))
       {   logInfo("Azimuth","> Regel < ", PositionAzimuth.state )
          return ;
      }
      else if (((PositionAzimuth.state as Number).floatValue > 290) && ((PositionAzimuth.state as Number).floatValue < 300 ))
      {
          Kuechenschrankleuchte.sendCommand(ON)
          logInfo("Azimuth","Kuechenleuchte AN ", PositionAzimuth.state as Number)
      }
   
      else {
          Kuechenschrankleuchte.sendCommand(OFF)
          logInfo("Azimuth","Kuechenleuchte AUS", PositionAzimuth.state as Number)
      }
end
Danke dir Peter-Pan für die richtigen denkanstöße und die Hilfe

gruß
Orakel

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag von peter-pan »

Freut mich, dass es geklappt hat. Die Aktualisierung der Werte kannst du ja über den Intervall variieren.
Ich habe da 300 (= 5 Minuten) eingestellt.

Vielleicht interessiert dich auch diese Regel :

Code: Alles auswählen

var Number count=1
var Number mooncount=0

rule "moondistances"
    when
        //Item Dummy2 changed to ON or
        
        Item Date_distance changed      // Item defined in astro.items  and changed every five minutes(300 sec.) by astro.things
    then
        Date_Kilometer_actual.postUpdate(Date_distance.state.format("%1$ta, %1$td.%1$tb. ") + " / " + Kilometer_distance.state.format("%.0f km").toString)
        Date_Kilometer_perigee.postUpdate(Date_perigee.state.format("%1$ta, %1$td.%1$tb. ") + " / " + Kilometer_perigee.state.format("%.0f km").toString)
        Date_Kilometer_apogee.postUpdate(Date_apogee.state.format("%1$ta, %1$td.%1$tb. ")   + " / " + Kilometer_apogee.state.format("%.0f km").toString)
        mooncount = mooncount + 1
        if (mooncount == 1 ) {   //Log every 2 hours - just to inform that rule is still alive
            logInfo("astro-rules" + '_99'," Moondistance updated every 5 Minutes by \"astro.things \" " + Date_distance.state + " / " + mooncount + " Log every 2 hours")
        }
        if (mooncount >= 24) {       //refresh counter
            mooncount = 0
       }
end
Dazu brauchst du die folgenden Items:

Code: Alles auswählen

// The actual distance to the moon                                       
DateTime              Date_distance                   "Datum aktueller Umlauf [%1$ta, %1$td.%1$tm.%1$ty,%1$tH:%1$tM]"                                               {channel="astro:moon:local:distance#date"}
Number:Length         Kilometer_distance              "Entfernung zum Mond"                                                                                         {channel="astro:moon:local:distance#distance"}  //OH 2.4
String                Date_Kilometer_actual           "aktuelle Entfernung zum Mond [%s]"                                   <orbit>                   (gAstro)      // astro-rules moondistances
// The perigee of the moon - erdnächster Punkt                                                                                                    
DateTime              Date_perigee                    "Datum erdnächster Umlauf [%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM]"                                            {channel="astro:moon:local:perigee#date"}
Number:Length         Kilometer_perigee               "Mond erdnächster Punkt"                                                                                      {channel="astro:moon:local:perigee#distance"}  //OH 2.4
String                Date_Kilometer_perigee          "erdnächster Mond-Umlauf [%s]"                                        <orbit>                   (gAstro)      // astro-rules moondistances
// The apogee of the moon - erdfernster Punkt                                                                                                     
DateTime              Date_apogee                     "Datum erdfernster Umlauf [%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM]"                                            {channel="astro:moon:local:apogee#date"}
Number:Length         Kilometer_apogee                "Mond erdfernster Punkt"                                                                                      {channel="astro:moon:local:apogee#distance"}  //OH 2.4
String                Date_Kilometer_apogee           "erdfernster Mond-Umlauf [%s]"                                        <orbit>                   (gAstro)      // astro-rules moondistances
Die jeweils ersten zwei Items sind mit den Channels des Astro-Bindings verlinkt. Die hast du sicher auch in deinem Item-Set. Das jeweils dritte Item ist ein "Dummy" bzw. virtuelles Item in dem die Werte der ersten beiden Items zusammengefasst werden und so in der Sitemap ausgegeben werden. Das ist ein kleines Beispiel wie man "konkatinieren" kann.

Das Ergebnis sieht dann so aus:
mond.png
Gruss
Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

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

Beitrag von franky199 »

Hallo zusammen, nun bin ich auch soweit meine Rolladensteuerung zu versuchen. Die things von Orakel funktioniert auch recht super nun möchte ich aber gern nicht einfach nur nach Sonnenstand fahren sonder zusätzlich Sonnenstrahlung so das eben die rolläden oben bleiben wenn eben keine sonne schein. vielleicht könnt ihr mir a bissel helfen.

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 »

Das solltest Du vielleicht noch mal etwas genauer erläutern.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten