Openhab Performance erhöhen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Openhab Performance erhöhen

Beitrag von udo1toni »

Nein, "Befehle" werden ohnehin asynchron abgearbeitet. Du kannst die Anzahl der Threads erhöhen, die für die Abarbeitung der Rules zur Verfügung stehen, so dass dann mehr als 5 + 2 Rules zeitgleich abgearbeitet werden können. Nun kommt es aber extrem auf Deine Rules an, und es ist auch nicht gesagt, dass die Verzögerungen damit weg gehen.
Ich bin jetzt grade zu faul, nachzuschauen, ob ich das hier schon geschrieben habe... also vielleicht doppele ich mich selbst...

Wichtigste Regel beim Rule erstellen:

NIEMALS identische Time cron Ausdrücke in mehreren Rules verwenden! Falls viele Time cron Trigger verwendet werden, auch darauf achten, dass diese sich möglichst NIE überschneiden (z.B. indem alle zu unterschiedlichen Zeitpunkten innerhalb der vollen Minute auslösen)
Vermeide UNBEDINGT mehrere Rules mit System started als Trigger.
Vermeide grundsätzlich Rules mit identischem Trigger

Also keinesfalls so:

Code: Alles auswählen

rule "Zeit 1"
when
    Time cron "0 * * * * ?"
then
// Code 1
end

rule "Zeit 2"
when
    Time cron "0 0/5 * * * ?"
then
// Code 2
end
sondern lieber so:

Code: Alles auswählen

rule "Zeit 1"
when
    Time cron "0 * * * * ?"
then
// Code 1
end

rule "Zeit 2"
when
    Time cron "5 0/5 * * * ?"
then
// Code 2
end
nicht so:

Code: Alles auswählen

rule "Rule 1"
when
    Item myItem1 changed to ON
then
// Code 1
end

rule "Rule 2"
when
    Item myItem1 changed to OFF
then
// Code 2
end
sondern so:

Code: Alles auswählen

rule "Rule 1"
when
    Item myItem1 changed
then
    if(newState == ON) {
        // Code 1
    } esle if(newState == OFF) {
        // Code 2
    }
end
NIEMALS Thread::sleep() mit Werten weit über 500 verwenden. NIEMALS Thread::sleep() mit hohen Werten innerhalb einer längeren Iteration verwenden!
while und for Blöcke möglichst vermeiden.

Vermeide wo immer möglich Rules, die zyklsich ausgeführt werden. Es gibt fast immer die Möglichkeit, auf ein anderes Ereignis zu reagieren.

Eine gute (komplexe) Rule sollte, wenn sie getriggert wurde, maximal nur wenige 100 Millisekunden laufen. Eine einfache Rule läuft eher einige 1/100 Sekunden...

Es gibt auch noch andere Ursachen für starke Verzögerungen, da wäre die Frage, welche Addons Du einsetzt.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

dirkspostbox
Beiträge: 41
Registriert: 9. Sep 2020 12:58
Answers: 1

Re: Openhab Performance erhöhen

Beitrag von dirkspostbox »

Aktuell habe ich folgende AddOns installiert:
Buienradar Binding
Exec Binding
Expire Binding
Homematic Binding
Mail Binding
MQTT Binding
Network Binding
NTP Binding
OpenWeatherMap Binding
Samsung TV Binding
Shelly Binding
Weather Binding
Pushover Action
MQTT Broker Moquette
openHAB Cloud Connector
MapDB Persistence
RRD4j Persistence
Map Transformation
Systeminfo Binding systeminfo

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

Re: Openhab Performance erhöhen

Beitrag von udo1toni »

Frohe Weihnachten!
  • Buienradar Binding - kenne ich nicht...
  • Exec Binding - erst mal unverdächtig, kommt aber auch auf die Menge Items und die aufgerufenen Scripte an (wie lange laufen die scripte? wie häfig?
  • Expire Binding - sollte keine Rolle spielen.
  • Homematic Binding - sollte keine Probleme bereiten
  • Mail Binding - unverdächtig
  • MQTT Binding - unverdächtig
  • Network Binding - unverdächtig, kommt aber auch etwas auf die Menge Geräte an
  • NTP Binding - unverdächtig
  • OpenWeatherMap Binding - unverdächtig
  • Samsung TV Binding - unverdächtig
  • Shelly Binding - unverdächtig
  • Weather Binding - V1, bitte ersetzen (vielleicht ohnehin wg. owm obsolet?)
  • Pushover Action - unverdächtig
  • MQTT Broker Moquette - deprecated und bekannte Fehler, bitte auf mosquitto umsteigen
  • openHAB Cloud Connector - könnte evtl. Verzögerungen hervorrufen
  • MapDB Persistence - unverdächtig
  • RRD4j Persistence - unverdächtig
  • Map Transformation - unverdächtig
  • Systeminfo Binding - kann Systemlast erzeugen
Kannst Du irgendwie Verzögerungen an bestimmten Items festmachen?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

dirkspostbox
Beiträge: 41
Registriert: 9. Sep 2020 12:58
Answers: 1

Re: Openhab Performance erhöhen

Beitrag von dirkspostbox »

Frohe Weihnachten ;-)

Exec Binding - erst mal unverdächtig, kommt aber auch auf die Menge Items und die aufgerufenen Scripte an (wie lange laufen die scripte? wie häfig?
--> Werde ich wieder löschen, ist nicht mehr notwendig

Network Binding - unverdächtig, kommt aber auch etwas auf die Menge Geräte an
--> Frage hier nur die Verfügbarkeit zweier Server ab

Weather Binding - V1, bitte ersetzen (vielleicht ohnehin wg. owm obsolet?)
--> Lösche ich, ist noch eine Altlast, nutze nun OWM

MQTT Broker Moquette - deprecated und bekannte Fehler, bitte auf mosquitto umsteigen
--> ok, habe schon von mosquitto gehört, finde es aber nicht in der UI, wie kann ich das installieren?

openHAB Cloud Connector - könnte evtl. Verzögerungen hervorrufen
--> Welche Alternative habe ich denn, wenn ich via Internet steuern möchte?

Systeminfo Binding - kann Systemlast erzeugen
--> Frage aktuell nur die Temp des RP4 ab und dessen Auslastung

Kannst Du irgendwie Verzögerungen an bestimmten Items festmachen?
--> Eigentlich nicht

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

Re: Openhab Performance erhöhen

Beitrag von udo1toni »

mosquitto ist ein mqtt Broker. Moquette ist ebenfalls ein mqtt Broker, aber eine embedded Version, das heißt, es wird als Bestandteil einer anderen Software eingerichtet, während mosquitto standalone ist. Wenn Du mit openHABian installiert hast, so findest Du mosquitto als 3rd party Software in openhabian-config (menu 23).
Wenn Du openHAB "konventionell" installiert hast, kannst Du mosquitto auch einfach über apt installieren (sudo apt install mosquitto). mosquitto ist ein vollwertiger mqtt Broker, der als solcher auf Port 1883 läuft - entsprechend darf Moquette nicht installiert sein (oder muss auf einen anderen Port konfiguriert sein als mosquitto, aber Du brauchst ja keine zwei laufenden Broker...)

Aber mit Deiner Konfiguration solltest Du eigentlich keine Probleme haben. Vielleicht sind Deine Rules insgesamt unglücklich gestaltet.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

dirkspostbox
Beiträge: 41
Registriert: 9. Sep 2020 12:58
Answers: 1

Re: Openhab Performance erhöhen

Beitrag von dirkspostbox »

Ok, vielen Dank, werde ich dann umsetzen.

Welche Alternativen gibt es denn zu Openhab Cloud Connector?

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

Re: Openhab Performance erhöhen

Beitrag von udo1toni »

Ich nutze diesen Cloud Connector nicht, stattdessen habe ich bei mir wireguard eingerichtet, das heißt, mein Smartphone usw. baut bei Bedarf einen VPN Tunnel in mein LAN auf, die Bedienung ist dann genauso, wie wenn ich tatsächlich im LAN angemeldet bin.
openHABian bringt auf Wunsch auch wireguard auf den Raspberry, wobei diese Variante sicherlich nicht ideal ist (aus Security Sicht). Ich habe wireguard bei mir direkt im Router mit drin ;)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten