Seite 1 von 1

Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 18:20
von JuergenA
Hallo zusammen,

da ich jetzt schon ein paar Tage mit Openhab am programmieren bin und diverse Problemchen gehabt habe und immer noch habe, mal die Frage zum Verständnis von mir.

Kann Openhab immer nur Ereignisgesteuert eine rule abarbeiten oder kann ich auch etwas zyklisch bearbeiten? Ich komme aus der Welt der Automatisierungstechnik und bin dort auch sehr viel zyklische Bearbeitung gewohnt. Hier muss ich mit Tricks arbeiten um diverse variablen mit "und" oder "oder" zusammenfügen um z.b. ein Item sichtbar oder unsichtbar zu machen. Es ist etwas anstrengend. Wie macht ihr Profis in Openhab so etwas? Als nächstes will ich mich auch an die Visualisierung dran machen und nicht nur Textuell das ganze in der Openhab App oder im Browser haben, ich denke da wird auch noch einiges kommen. Ich denke wenn man das System mal kapiert hat wird es bestimmt auch leichter, mir fehlt halt auch in letzter Zeit wieder die Übung in Java und C++. Da habe ich die letzten 20 Jahre nichts mehr gemacht.

Gruß

Jürgen

Re: Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 18:35
von Pepe1907
Zyklisch kann man natürlich auch regeln ablaufen lassen dazu einfach time cron verwenden :)

Gesendet von meinem SM-G981B mit Tapatalk


Re: Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 22:03
von JuergenA
Und wie muss man sich das genau vorstellen? Ich mache dann z.b. eine rules mit trigger auf die Zeit von z.b. 1min und in diese packe ich dann alles rein was z.b. zyklisch bearbeitet werden muss/soll?

Gesendet von meinem SM-G975F mit Tapatalk


Re: Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 22:17
von harteknut
Achte aber drauf, dass openhab mit der Quartz-Engine arbeitet. Da gibt es Unterschiede zu dem Syntax, den ich von Debian-Rechnern kenne, ich guck einfach immer hier.

Als Beispiel hier mein zentraler Licht-aus-Schalter, den ich manuell bedienen kann, der aber auch abends im Haus das Licht löscht, je nach Wochentag zu unterschiedlichen Zeiten:

Code: Alles auswählen

rule "zentral_aus"
	when 
		Item zentral_AUS received command OFF or	// Bedienung manuell
		Time cron "0 0 1 ? * MON-FRI" or		// Automatik Wochentag
		Time cron "0 30 2 ? * SAT-SUN"			// Automatik WE
	then
		....
	end

Im Gegensatz dazu die Regel für den Sonnenuntergang, die auf ein Event reagiert:

Code: Alles auswählen

rule "Sonnenuntergang"
	when
		Channel 'astro:sun:local:civilDusk#event' triggered START
	then
		.....
	end
Viel Erfolg!
Simon

Re: Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 22:20
von harteknut
... oder z.B. meine Umwälzpumpe:

Code: Alles auswählen

rule "Umwälzpumpe" // ...takten: zw. 4 und 23 alle 10min für 90s 
    when
        Time cron "40 0/10 4-22 * * ?"
    then
    ...
    end

Re: Verständnis frage zu Openhab 2

Verfasst: 31. Jul 2020 22:54
von JuergenA
Hallo Simon,

Quarz-engine heißt? Ich muss das Astro Paket installieren?

Gesendet von meinem SM-G975F mit Tapatalk


Re: Verständnis frage zu Openhab 2

Verfasst: 1. Aug 2020 16:12
von udo1toni
openHAB verwendet Quartz cron (im Gegensatz zum "normalen" cron unter GNU/Linux). Installiert werden muss dazu nichts, das ist mit drin. Der Unterschied zwischne den beiden Paketen besteht darin, dass Quartz cron sekundengenau triggert, während das normale cron nur auf die Minute triggern kann. Entsprechend hat das Time cron Statement einen Parameter mehr. Das führt immer mal wieder zu Verwirrung...

Grundsätzlich möchte ich Dir aber den Tipp geben, Dich von zyklischen Rules, wo immer möglich, zu verabschieden. Es gibt schlicht keinen Grund dafür. openHAB selbst ist stateless, aber natürlich brauchst Du innerhalb einer Rule immer irgendwelches Status, die bekommst Du vom openHAB Bus, der die Status aller Items hält. Eine Rule sollte nur dann ausgeführt werden, wenn dies auch notwendig ist, heißt, wenn es (mindestens) ein Update des Status gab, gewöhnlich wird es eher um Statusänderungen gehen.
zyklische Ausführung einer Rule ist allenfalls sinnvoll, um z.B. externe Geräte abzufragen, welche nicht in der Lage sind, ihren Status aktiv an openHAB zu melden.

Über Binding angebundene Geräte sollten hiervon ausgenommen sein, da sich üblicherweise das Binding darum kümmert solche Status zu pollen.
Wenn Du selbst Hardware baust (und natürlich auch die Anbindung in Richtung openHAB selbst realisierst) solltest Du immer versuchen, die Kommunikation aktiv zu gestalten. z.B. sollte ein Kontakt, der seinen Zustand ändert, das aus selbst an openHAB melden (das ginge über die REST API oder (eleganter) über mqtt - es gibt für Arduino und Konsorten Libraries, um mqtt komfortabel einzubinden.