Da habe ich ja was losgetreten...
fmmephisto hat geschrieben: ↑9. Jan 2023 06:48
Ich komme von RWE/innogy/Livisi Smarthome. Da hat man die Regeln alle direkt in der App erstellt.
ok, ich korrigiere... alle ernsthaften Programmierumgebungen...
fmmephisto hat geschrieben: ↑9. Jan 2023 06:48
Zudem habe ich, wenn mich nicht alles täuscht, weder von COBOL, Pascal, Delphi, BASIC, VBA jemals einen externen Editor zum programmieren benutzt.
Und genau da liegt ein Irrtum vor. Sobald Du ein Programm schreibst, nutzt Du einen Editor. Visual Studio z.B. ist eine komplette Entwicklungsumgebung für diverse Programmiersprachen und selbstverständlich hat sie einen ausgewachsenen Editor mit dabei, das ist aber - wie gesagt - ein abgetrenntes Programm.
fmmephisto hat geschrieben: ↑9. Jan 2023 06:48
Da ich einen Apple habe, ist das nicht ganz so einfach...
Na, VS Code steht ja auch für den Apple zur Verfügung und die Plugins sollten ohne Einschränkungen funktionieren.
fmmephisto hat geschrieben: ↑9. Jan 2023 06:48
Ich glaube, die meisten arbeiten mit Windows Rechnern und da ist es sicher einfacher.
Da muss das Plugin genauso konfiguriert werden wie auf jedem anderen System
Nun hast du ja schon herausgefunden, wie das mit der Kontaktaufnahme korrekt funktioniert...
Um die Dateien bearbeiten zu können, brauchst Du natürlich Zugriff auf das Dateisystem des openHAB Systems. Wenn Du openHABian zum Aufsetzen des Raspberry verwendet hast, hat openHABian auch schon drei Shares eingerichtet, die Du mit
smb://openhabian/ erreichen kannst,
conf/,
userdata/ und
addons/ sollten dort vorhanden sein. Zugangsdaten wären
openhabian:openhabian, wenn Du kein anderes Passwort vergeben hast.
Ich für meine Teil bin von den SMB Freigaben weg, weil mich die Rechteprobleme immer schon genervt haben. Stattdessen nutze ich die Remote Extension in VS Code. Das Ganze läuft so, dass ich VS Code starte und gegebenenfalls den Befehl gebe, dass VS Code sich mit dem Remote System verbindet (die Verbindungsdaten sind in einer Konfigurationsdatei hinterlegt). Anschließend arbeite ich remote auf dem System, im Editor merke ich davon aber nichts.
Das Plugin heißt Remote Development und stammt direkt von Microsoft. Es handelt sich um ein Metapaket, installiert also mehrere andere Plugins (drei Stück). Danach richtet man eine ssh Verbindung ein (Rechtsklick ganz unten ganz links auf das Symbol ><, dann erst mal Konfigurationsdatei öffnen und einen Zugang anlegen, sieht bei mir so aus:
Code: Alles auswählen
Host 192.168.178.55
HostName openhabian
User openhab
IdentityFile C:\Users\udo1toni\.ssh\openhab_rsa
Das IdentityFile ist der Private Key eines Schlüsselpaares, dessen Public Key auf dem openHAB-System im Verzeichnis
/usr/shar/openhab/.ssh/ in der Datei
authorized_keys gespeichert ist. Da ich beim Erzeugen des Schlüsselpaares kein Passwort für den Private Key angegeben habe, wird die Verbindung Beim Aufruf des Befehls (Verbindung mit Host herstellen...) direkt aufgebaut, ohne weitere Nachfragen.
VS Code installiert auf dem Remote System beim ersten Kontakt ein paar Dateien, damit der Remote Zugriff auch mit VS Code funktioniert. Die gesamte Konfiguration, das openHAB Plugin betreffend, ist ebenfalls auf dem Remote System gespeichert, so dass es gleichgültig ist, ob ich vom Desktop aus oder vom Notebook auf arbeite. Das funktioniert sogar über einen ssh Tunnel von meiner Arbeit aus, weil ich eben keine Samba Freigabe brauche.
Was die Fixierung auf Old-School Konfiguraiton über Textdateien betrifft, so liegt das zum Teil daran, dass viele User schon recht lange mit openHAB arbeiten (ich z.B. seit 2012 - seit Version openHAB1.0). Zu der Zeit gab es überhaupt keine grafische Oberfläche, es stand nur der openHAB Designer zum Bearbeiten der Konfiguration zur Verfügung, dafür aber mit den wesentlichen Funktionen, die so eine Entwicklungsumgebung braucht.
VS Code war ein großer Sprung, der Vieles einfacher gemacht hat.
Aber es steigen auch immer wieder neue User auf Textkonfiguration um, weil sie einfach flexibler ist. Außerdem kann man manche Dinge über Textdateien schneller erledigen. Und ein ganz wichtiger Punkt: In openHAB ist es nicht möglich, die ID eines Elements zu ändern (sei es nun ein Item, ein Channel, ein Thing, eine Rule...). Aber in einer Textdatei lässt es sich nicht verhindern, dass ich IDs ändere.

Es ist natürlich so, dass ich damit streng genommen das vorhandene Element lösche und ein neues anlege, welches - bis auf die ID - identisch mit dem alten Element ist.
Du arbeitest mit JavaScript, was vollkommen in Ordnung ist

aber tatsächlich ist die DSL halt nativ verfügbar. in openHAB4 wird sie wohl nicht mehr automatisch installiert sein, aber es wird sie weiter geben, und das ist auch gut so, kann ich doch ohne weiteres Zutun einfach auf alle Items zugreifen, einfach, indem die die ID des Items hinschreibe. Ich muss nicht in der Itemregistry danach suchen, ich verwende es einfach. Solange ein Hello World in jeder angebotenen Programmiersprache ca. das zehnfache des DSL Codes einnimmt, sehe ich keinen Vorteil darin

Beispiel:
Fertig, das ist der ganze Code.
Wenn ich das über die UI erstelle, ist diese Zeile alles, was ich in der Rules-Action eintrage. erstelle ich die Rule hingegen über eine .rules Datei, braucht es noch den Rahmen, der sonst eben über die UI dazu kommt:
Code: Alles auswählen
rule "Hallo Welt"
when
Item MeinSwitch received command
then
stringItem.postUpdate("Hello World!")
end
Sobald das Item MeinSwitch über die UI geschaltet wird, wird das Item stringItem mit dem Gruß "Hello World!" gefüllt.
Sämtliche Codebeispiele aus dem Forum lassen sich mit einfachsten Mitteln auch über die UI verwenden, solange sie keinen Gebrauch von globalen Variablen oder globalen Konstanten machen. Du strippst einfach alles vor (einschließlich) then und setzt das, was übrig bleibt (ohne das abschließende end) als Code ein, fertig. Der Teil nach when beschreibt alle Trigger, die Du dann einfach über die UI erstellst.
Die Rules DSL kennt keinen "But only if" Zweig, der bleibt also leer. Stattdessen werden entsprechende Einschränkungen direkt im Code angegeben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet