Neuvorstellung und Probleme eines OH3 Anfängers

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Eierheinz
Beiträge: 5
Registriert: 6. Jan 2022 15:17
Answers: 0

Neuvorstellung und Probleme eines OH3 Anfängers

Beitrag von Eierheinz »

Hallo ich heisse Martin und bin schon seit einigen Jahren im Thema Hausautomation unterwegs.
Ich nutze Openhab3 auf einem Raspberry Pi 4, die verwendeten Aktoren und Sensoren sind hauptsächlich Z-Wave und Zigbee Devices.

Angefangen habe ich mit Domoticz welches dann zum Ende hin immer mehr Probleme machte.
Danach stieg ich auf den Iobroker um, damit war ich höchst zufrieden bin aber immer an den komplizierten Visualisierungen gescheitert, hauptsächlich aus Zeitmangel.
Nach einem ordentlichen Systemcrash wegen eines nicht mehr unterstützten z-wave Adapters habe ich auch dort in den Sack gehauen und bin nun hier bei euch.

Wenn ich ehrlich bin, ich bin total überfordert.

-Grundsystem läuft
-Geräte alle sauber inkludiert

Einige einfache zeitgesteuerte Rules laufen auch, aber dann hört es auch schon auf.

Vom Iobroker war ich gewohnt Java Skripte in Blockly umzuwandeln und umgekehrt.
Sprich ich konnte mir laufende,korrekte Blocklys in Java anzeigen lassen und diese dann auf der Festplatte speichern, oder eben durch copy+paste vervielfältigen, klar ich musste die Devices anpassen.
Gibt es das hier nicht?

Wenn ich in euren Hilfestellungen lese antwortet ihr immer in Java-Form, warum nicht in Blockly?

Warum ist das doch vereinheitlichte Google-Blockly bei Openhab komplett anders als bei Domoticz oder Iobroker?

Versteht mich bitte nicht falsch ich mag das System und bin bereit zu lernen. aber irgendwie habe ich das Gefühl ich muss um die Ecke denken..
Gibt es hier eventuell eine Leseempfehlung mit Tipps für Anfänger?

Gruß Eierheinz

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

Re: Neuvorstellung und Probleme eines OH3 Anfängers

Beitrag von udo1toni »

Willkommen im Forum!


Blockly ist ja nur eine Darstellung von Code. Welchen Code man benötigt, um gewünschte Aktionen auszulösen, ist abhängig von dem darunter laufenden System.

Was den Blockly Code betrifft, so ist der über die Main UI meines Wissens einsehbar.

Hier im Forum ist aber nach wie vor die openHAB-eigene DSL dominant (das ist nicht! Java).
Dazu musst Du wissen, dass openHAB schon seit mehr als 10 Jahren am Markt ist. Die DSL (DomainSpecificLanguage) war von Anfang an mit dabei. Sie ist auf die Anforderungen in der Automation mit openHAB optimiert.
Viele Programmierer finden die DSL bäh. Eine genaue Erklärung bleiben sie dann beim näheren Nachfragen meist schuldig, es kommen Programmbeispiele, bei denen ich mich frage, was das mit Heimautomation zu tun haben soll. Oder es werden ganz bestimmte Programmiertechniken angewendet, die halt nicht so gut funktionieren, statt das zu nutzen, was die DSL bietet.

Die DSL ist sehr einfach aufgebaut, so einfach, dass es "unter der Würde" eines "echten" Programmierers ist. ;)
Hello World:

Code: Alles auswählen

rule "my rule"                               // Kopf ist fix, erste Zeile enthält den Rule Namen. Alle Zeichen erlaubt, muss eineindeutig sein
when                                         // Beginn der Trigger Sektion
    Item myTrigger changed                   // Ein Trigger, der die Rule startet. Hier: das Item myTrigger hat den Status geändert
then                                         // Ende der Trigger Sektion, Beginn der Code Sektion. Dieser Code wird ausgeführt
    MyStringItem.postUpdate("Hello World!")  // setze den Status des Items MyStringItem auf    Hello World!
end                                          // Ende Code Sektion und Ende der Rule
Die Sprache ist grundsätzlich objektorientiert, Items sind Objekte mit Methoden und Eigenschaften.
Die wichtigsten Sprachelemente sind if() ... else ... für bedingte Verzweigung und val, var für die Definition von Konstanten und Variablen. switch ... case ist noch interessant, außerdem extrem wichtig createTimer() um Code im Scheduler einzuplanen. for und while stehen zwar zur Verfügung, sind aber im Grunde unnütz. Viel interessanter ist es, Items mittels Group Items zu gruppieren und anschließend in der Rule diese Gruppe zu nutzen:

Code: Alles auswählen

rule "Alle Rollläden öffnen" 
when
    Time cron "13 17 8 ? * SAT,SUN" // Samstag und Sonntag um 08:17:13 Uhr
then
    gAllShutters.allMembers.filter[shutter|
        shutter.name.contains("EG")
    ].forEach[myItem|
        myItem.sendCommand(0)
        logInfo("shutters","All Shutters open: commanding {}",myItem.name)
    ]
end
Es werden aus allen unmittelbar und mittelbar zugehörigen Items der Gruppe gAllShutters diejenigen herausgesucht, in deren Name die Buchstabenkombination EG auftritt. Diese Items erhalten alle den Befehl 0, für jedes einzelne Item wird außerdem die Info ausgegeben, dass der Befehl gesendet wurde.

Erschwerend (was die Beliebtheit der DSL betrifft) kommt noch hinzu, dass mit VSCode ein Editor zur Verfügung steht, der ein Plugin für openHAB mitbringt, mit dem man sogar eine IDE zum Programmieren an die Hand bekommt, inklusive Fehlererkennung, Code Completion, Kontexthilfe, Online Zugriff auf Things und Items... Da macht es durchaus Spaß, kleine Regeln zu schreiben...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Eierheinz
Beiträge: 5
Registriert: 6. Jan 2022 15:17
Answers: 0

Re: Neuvorstellung und Probleme eines OH3 Anfängers

Beitrag von Eierheinz »

Hallo Forum hallo Udo1toni,

vielen Dank für deine sehr gute Hilfe!
Mit deinen Erklärungen bin ich schon eine ganze Ecke weiter gekommen.
Danke,Martin

Antworten