Seite 2 von 3

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 16:25
von framp
Nachtrag: pilight reagierte nicht von openHAB bei mir da ich dachte der HTTP Port wird per REST zum Steuern benutzt - also 5001. Es muss aber in der pilight config der Port 5000 explizit als Steuerport definiert werden da er ansonsten random gewaehlt wird. Danach funktioniert das Schalten perfekt.

Jetzt muss ich rausbekommen wie man
1) mit Rules die Schaltdosen zu bestimmten Zeitpunkten ein- bzw ausschaltet :roll:
2) mit Rules die Schaltdosen relativ zum Sonnenauf- und -untergang zu schalten. Scheint so als muesste ich da das Astrobinding irgendwie benutzen :roll:

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 17:11
von udo1toni
Relativ zum Sonnenstand: Dafür nutzt Du in der Tat das Astro Binding. Hast Du den Standort des openHAB Systems in Paper UI schon festgelegt, wird beim Installieren des Astro Bindings automatisch ein Thing "Lokale Sonnendaten" erzeugt. Ansonsten musst Du das Thing halt von Hand erzeugen - oder in einer *.things Datei, da Astro ein v2 Binding ist.
Sieht dann so aus:

Code: Alles auswählen

Thing astro:sun:home "Sonne" [
    geolocation="breite,länge,höhe", 
    interval=300
]
breite, länge und höhe sind natürlich durch die entsprechenden Zahlen zu ersetzen.
Das interval ist in Sekunden angegeben und bestimmt, wie oft die Werte aktualisiert werden. Für die Zeitpunkte reicht eine Berechnung um Mitternacht, auch die Trigger werden immer ausgeführt. Wer aber den Sonnenstand in Azimuth und Elevation sehen möchte, braucht eine ständige Aktualisierung der Daten.

Alle Channel werden automatisch mit Default Werten angelegt. Möchtest Du abweichende Werte definieren, so musst Du die Definition nur um die Channel mit abweichenden Werten ergänzen, z.B. so:

Code: Alles auswählen

Thing astro:sun:home "Sonne" [
    geolocation="breite,länge,höhe", 
    interval=300
] {
    Channels:
        Type start : civilDawn#start [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type rangeEvent : civilDawn#event  [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type start : civilDusk#start [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
        Type rangeEvent : civilDusk#event  [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
}
Hier werden sowohl die Anzeige (#start) als auch der Rule Trigger (#event) für die bürgerliche Dämmerung (Auf- und Untergang) manipuliert. Ein Offset von 10 bedeutet, dass das Ereignis zehn Minuten später stattfindet, earliest und latest sind Unter- und Obergrenze. Wenn also um 5 Uhr Sonnenaufgang ist, triggert eine passende Rule dennoch erst um 6 Uhr. Ist um 5:55 Uhr Sonnenaufgang, triggert die Rule um 6:05 Uhr. Ist um 8:30 Sonnenaufgang, triggert die Rule dennoch schon um 8:00 Uhr.
Entsprechendes gilt dann für den Sonnenuntergang.

Um eine Rule triggern zu lassen, musst Du das Event nutzen:

Code: Alles auswählen

rule "Sonnenuntergang"
when
    Channel "astro:sun:home:civilDusk#event" triggered START
then
    Steckdose_01.sendCommand(ON)
end
Diese Rule triggert, sobald der bürgerliche Sonnenuntergang beginnt (das heißt, die Sonne beginnt, die gedachte -6° Linie zu berühren).
Die Rule sendet zu diesem Zeitpunkt das Kommando ON an das Item Steckdose_01.
Beim Trigger END beendet die Sonne die Berührung, das ist also wenige Minuten später).

Eine Zeitsteuerung realisierst Du über den Time cron Trigger:

Code: Alles auswählen

when
    Time cron "0 0 12 * * ?" // täglich 12:00:00 mittags
then
Für die exakte Schreibweise suche nach quartz cron. In Kürze: die erste Stelle ist die Sekunde, die zweite Stelle ist die Minute, die dritte Stelle ist die Stunde, die vierte Stelle ist der Tag im Monat, die fünfte Stelle ist der Monat im Jahr, die sechste Stelle ist der Wochentag (1 - 7, entspricht Sonntag bis Samstag). Man kann optional auch das Jahr an siebter Stelle angeben.
Felder, die keine Rolle spielen, werden mit einem * markiert (im Beispiel Tag und Monat). Ein gültiger Cron-Ausdruck muss exakt ein Fragezeichen enthalten, und zwar entweder für den Tag im Monat oder für den Wochentag. Damit fällt die Möglichkeit flach, eine Steckdose nur dann einzuschalten, wenn gerade Freitag der 13. ist :) aber man kann diesen "Mangel" natürlich anders umgehen ;)
Man darf auch Bereiche (1-5) oder Mengen (1,3,7,15,17-25) angeben sowie bei den Wochentagen alternativ MON,TUE,WED,THU,FRI,SAT,SUN sowie MON-FRI oder auch SAT,SUN (oder natürlich auch beliebige Kombi) angeben, das funktioniert entsprechend auch für die Monate. Abstände sind auch möglich, z.B. 0/5 an zweiter Stelle für alle 5 Minuten, beginnend mit 00. Auch Sonderfunktionen wie der letzte Sonntag im März sind einfach machbar.

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 18:56
von framp
Whow - vielen Dank. Das hatte ich eigentlich nicht erwartet denn genaugenommen ist es ja OT - aber ich bin nicht boese drum :D Da hast Du mir gleich die entsprechenden Pointer gegeben dass ich zu dem Thema gezielter lesen und suchen kann. Gerade wenn man in etwas neu einsteigt fehlen einem auch oft die richtigen Suchargumente bzw Fachtermini.

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 20:05
von framp
Kleiner Update:

Per cron rule (die Syntax ist ja fast die Linux cron Syntax) kann ich nun eine Lampe alle 5 Sekunden ein- und ausschalten. :thumbsup:

Das Astro Thing habe ich zuerst per Paper UI angelegt. Da kann man ja auch recht leicht die Laengen- und Breitengrade errechnen lassen. Irgendwie wird die Config wohl in einer internen DB abgelegt - jedenfalls fand ich keine generierte Datei im Items Folder. Daraufhin habe ich die obige Config genommen, die entsprechenden Koordinaten eingegeben (Hoehe wird uebrigends angemeckert) und nun habe ich zwei Astro Things. Eine mit einem generierten Namen und eine mit Namen home. Eine Rule die die Lampe bei Sonnenuntergang von home einschaltet hab ich auch erstellt. Jetzt muss ich warten bis die Sonne untergeht um das zu testen :roll: .

D.h. ich muss jetzt immer zwei Rules erstellen wenn ich moechte dass eine Lampe zum Sonnenuntergang eingeschaltet wird und zu einer bestimmten Zeit wieder ausgeschaltet wird. Das finde ich unpraktische denn ich wuerde gerne alle rules zu einer Lampe in einer rules Config zusammenfassen. Geht das irgendwie?

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 22:13
von framp
Es ist dunkel und die Lampe ist noch nicht an :cry: Irgendwas stimmt noch nicht. Anyhow - vielen Dank fuer die Hilfe. Ich suche jetzt mal weiter und eroeffne einen weiteren Thread wenn ich nicht weiterkomme ;)

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 22:13
von Darkwin101
Klar du kannst auch auf zwei Cron Ausdrücke oder auch veschiede Events reagieren indem und einfach
cron Time XXX or
cron Time XXX or
Sonnenuntergang
schreibst.
Innerhalb der rule musst du dann entscheiden was wann passieren soll

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 10. Jun 2020 22:38
von udo1toni
Rules sind eventgesteuert.
Sonnenaufgang und Sonnenuntergang sind zwei unterschiedliche Events, also braucht es auch zwei Rules.
Es gibt ein Modell, was sich im englischen Forum Time Of Day nennt. Der Kern ist ein Item, welches je nach Tageszeit unterschiedliche Werte annimmt.
Wann und wie das Item seinen Wert ändert, wird durch eine Rule gesteuert.
Nun kannst Du eine Rule anlegen, welche das Licht steuert und von dem Time-Of-Day Item getriggert wird.

Allerdings lohnt sich der Aufwand erst, wenn man in diversen Rules den Zustand des Time-Of-Day Items nutzt. Es geht dabei ausdrücklich nicht darum, das Item als Trigger zu verwenden.
Man sollte immer darauf achten, identische Trigger zu vermeiden, denn openHAB kann nur 5 Rules gleichzeitig ausführen. Wenn man also Rules an den zu schaltenden Geräten orientiert und 10 Lampen über eigene Rules bei Sonnenuntergang einschalten will, wird das schief gehen, weil 10 Rules auf einmal getriggert werden.

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 11. Jun 2020 10:12
von framp
udo1toni hat geschrieben: 10. Jun 2020 22:38 Man sollte immer darauf achten, identische Trigger zu vermeiden, denn openHAB kann nur 5 Rules gleichzeitig ausführen. Wenn man also Rules an den zu schaltenden Geräten orientiert und 10 Lampen über eigene Rules bei Sonnenuntergang einschalten will, wird das schief gehen, weil 10 Rules auf einmal getriggert werden.
Das ist eine wichtige Information. An verschiedenen Stellen habe ich im Netz zu openHAB gelesen dass mal Rules funktionieren und mal nicht. Ich denke das ist diesem Limit geschuldet. Ehrlich gesagt finde ich das Limit ziemlich klein. Aber ich habe verstanden dass ich besser alle Lampen die zum Sonnenuntergang angehen sollen in einer Rule schalte.

Leider hat ja meine Rule bzgl eines Sonnenunterganges gestern Abend nicht funktioniert. Wie kann ich rausfinden warum nicht? Kann ich Events zum Debuggen manuell triggern um zu testen ob Rules greifen? Ich kann ja nicht immer einen Tag warten bis ich wieder testen kann ob meine Aenderung was bewrikt hat :?

Folgende Rules habe ich fuer eine Lampe definiert:

Code: Alles auswählen

rule "Sonnenuntergang"
when
    Channel "astro:sun:home:civilDusk#event" triggered START
then
    OGL.sendCommand(ON)
end

Code: Alles auswählen

rule "Sleep"

when
    Time cron "0 0 23 * * ?" 
then
    OGL.sendCommand(OFF)
end
sowie folgenes Thing (xx und x sind natuerlich Zahlen. Nur muss ja nicht jeder wissen wo ich genau wohne :lol: )

Code: Alles auswählen

Thing astro:sun:home "Sonnenschein" [
    geolocation="xx.77429157753474,x.934700634884127",
    interval=300
] {
    Channels:
        Type start : civilDawn#start [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type rangeEvent : civilDawn#event  [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type start : civilDusk#start [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
        Type rangeEvent : civilDusk#event  [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
}
Das Ausschalten habe ich jetzt nicht getestet aber ein anderer Crontest gestern Abend war OK. D.h. ich muss jetzt noch rausfinden warum der Sonnenuntergang event nicht getriggered wird :?

Im Log von gestern Abend habe ich folgendes zu der Zeit wo die Sonne untergeht gefunden:

Code: Alles auswählen

2020-06-10 21:28:00.008 [vent.ItemStateChangedEvent] - astro_sun_f281c495_phase_name changed from SUN_SET to CIVIL_DUSK
2020-06-10 21:28:00.011 [vent.ChannelTriggeredEvent] - astro:sun:f281c495:civilDusk#event triggered START
2020-06-10 21:28:00.015 [vent.ChannelTriggeredEvent] - astro:sun:home:set#event triggered END
2020-06-10 21:28:00.018 [vent.ChannelTriggeredEvent] - astro:sun:f281c495:set#event triggered END
Es taucht aber kein astro:sun:home:civilDusk#event triggered START auf :?:

Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 11. Jun 2020 14:19
von udo1toni
Hast Du openHAB nach dem Anlegen des Thinhs mal durchgestartet?
Dein Time Cron ist sehr ungünstig, und ich glaube auch nicht, dass Du möchtest, dass diese Rule 3600 mal triggert (in der Zeit von 23 Uhr bis 0 Uhr einmal pro Sekunde)

Gesendet von meinem SM-G973F mit Tapatalk


Re: Gibt es ein Console Configuration Tutorial fuer openHAB?

Verfasst: 11. Jun 2020 14:29
von framp
Oha ... danke fuer den Hinweis. Ich habe es jetzt geaendert.

Bzgl restart weiss ich nicht. Ich habe es eben noch mal restartet. Mal sehen was heute Abend passiert. Aber noch mal zu meiner Frage: Wie kann man das Problem debuggen? Immer einen ganzen Tag zu warten ist nicht gerade die effizienteste Methode :roll: