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
Neuvorstellung und Probleme eines OH3 Anfängers
-
- Beiträge: 5
- Registriert: 6. Jan 2022 15:17
- udo1toni
- Beiträge: 15241
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Neuvorstellung und Probleme eines OH3 Anfängers
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:
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:
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...
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 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
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
-
- Beiträge: 5
- Registriert: 6. Jan 2022 15:17
Re: Neuvorstellung und Probleme eines OH3 Anfängers
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
vielen Dank für deine sehr gute Hilfe!
Mit deinen Erklärungen bin ich schon eine ganze Ecke weiter gekommen.
Danke,Martin