Frage: wie programmiert ihr in OH3?

  • Hallo liebes Forum!


    Ich bin ja noch nicht lange bei der OH3-Fraktion, aber ich quäle mich wirklich durch diese schlechten Programmiermöglichkeiten.

    Auch wenn man andere objektorientierte Sprachen beherrscht, so ist doch JavaScript und DSL wirklich was anderes. Leider gibt es auch keine wirklichen Hilfen. Die Foren sind meist nur die Oldschool-OH-2.x Programmierer, die mangels damaligen Editors meist mit VSC textbasiert programmieren. Leider hilft mir das auch nicht.

    Auch die Blockly-Programmierung ist für mich nichts… weil das was ich brauche, geht damit nicht. :)


    Ich bin auf der Suche nach einer ordentlichen Beschreibung von Java/DSL-Routinen für die Programmierung der Smarthome-Komponenten. Eigentlich geht es meistens um „if-then-else“, items auslesen, items mit Daten/Status versehen, Timer, Variablen definieren und Mail/OHB/WhatsApp-Messages.


    Daher mal die Frage: womit programmiert ihr und wie habt ihr es gelernt bzw. Wo habt ihr euch in die Sprache eingelesen?


    Danke, Gruß und euch allen einen schönen Abend.


    Frank

  • Also ich verwende Rules-DSL mit Visual-Studio Code und der OpenHAB-Extension. Bisher gab es nichts, was ich damit nicht programmieren konnte.


    Das OH-Forum ist voll mit Beispielen und die Dokumentation ist meines Erachtens verständlich und übersichtlich.

  • Ich habe es wirklich versucht mit VSC, aber ich bekomme es nicht hin. In VSC habe ich meinen Meister gefunden. :) Mein IQ reicht nicht für diesen Editor.


    Eigentlich möchte ich meine Rules direkt in der UI haben und nicht extern, auch wenn es einfacher wäre, nur regelmässig ein Backup der OpenHAB-config zu machen als ein ganzes Backup.


    Aber leider muss ich mich da echt der fehlenden Dokumentation/Anleitung von VSC geschlagen geben. Ich habe bisher zwar einiges gefunden, wie man VSC einrichtet auch mit der OH-Erweiterung. DAs habe ich. Aber wie baut man eine Rule in VSC auf? Ich habe es auch mit Beispielen aus dem OH-Forum ausprobiert, aber irgendwie ist da immer ein Fehler drin, den ich nicht finde und damit funktionieren die auch nicht in OH.


    Wo findet man nun Infos zur Programmierung in DSL? Sie scheint einfacher zu sein als Java.

  • Also ich benutze auch schon seit mehren Jahren VSC mit der OH-Extension. Wobei ich neulich feststellen musste, das ich ein Problem, was ich einfach nicht mit VSC lösen konnte recht einfach mit Blockly in der RulesDSL umsetzen konnte. Wer mit VSC nicht so richtig klar kommt dem empfehle ich mal ein Blockly Tutorial, Blockly ist meiner Meinung nach auch nicht gerade selbst erklärend - aber wenn mal es erst einmal verstanden hat ein mächtiges Tool.

  • Also ich benutze auch schon seit mehren Jahren VSC mit der OH-Extension. Wobei ich neulich feststellen musste, das ich ein Problem, was ich einfach nicht mit VSC lösen konnte recht einfach mit Blockly in der RulesDSL umsetzen konnte. Wer mit VSC nicht so richtig klar kommt dem empfehle ich mal ein Blockly Tutorial, Blockly ist meiner Meinung nach auch nicht gerade selbst erklärend - aber wenn mal es erst einmal verstanden hat ein mächtiges Tool.

    Vielen Dank. Das Problem ist, dass Blockly nur nach Javascript übersetzt, nicht nach DSL. Daher habe ich mir versucht, trotz "nicht selbsterklärend" hier mal was zusammenzuflicken, damit ich die Syntax rausbekommen und versuche dann, das ganze in eigene Rules in Java einzubauen.


    So versuche ich gerade JavaScript zu lernen.

    Habe gestern 4 Stunden daran gesessen, eine if then else Anweisung zu bauen, die auch funktioniert.

    Leider ist es so, dass immer nur die if-then Anweisung ausgeführt wird, die else leider nicht.

    Wenn ich das per Blockly dann mache, geht es. Wenn ich das dann mit copy-paste übernehme geht es.

    Wenn ich den Code ZEICHEN FÜR ZEICHEN manuell eintrage in ein Script, geht wieder nur die if then.... else nicht.

    Da muss doch ein Fehler drin sein.... Ich habe in keiner Programmiersprache so lange gebraucht, um einfache Programmcodes zu schreiben wie in java oder DSL.


    Auch ist einfach für mich nicht klar, wann man etwas in Hochkomma, in Anführungszeichen oder auch mal ohne setzen muss.

    Da gibt es wohl keine Durchgängen Regeln.

    Mal wird ein Item ohne Hochkomma angegeben (z. b. beim Auslesen der Daten), wenn ich aber ein Wert in ein Item schreiben will, muss man das item in ' einbinden.


    HANK_J

    HANK_J:

  • Danke...Hilft leider nicht weiter. Meine Probleme liegen nicht da drin.

    Das, was dort beschrieben wird, ist ein ganz einfache ding. Darüber bin ich ja schon lange hinaus.


    Ich glaube auch, dass es auch nicht so einfach ist, meine Probleme zu beschreiben, bzw. alle wissen wie es geht, aber keiner kann es mir erklären. :)


    Für mich ist doch eine Rule eine Regel. Die baue ich in der UI. Ich lege den Trigger fest.

    (Beispiel: Tastendruck auf Wandtaster)

    Dann kommt das Script - also die Anweisungen - was passieren soll, wenn der Trigger ausgelöst hat.

    (Beispiel: Wenn der Zustand_Alarmanlage = OFF dann setze den Zustand_Alarmanlage auf ON, wenn der Zustand_Alarmanlage = ON dann setze den Zustand_Alarmanlage auf OFF.


    Allein hieran sitze ich etliche Stunden, weil immer nur die erste Anweisung ausgeführt wird, die zweite wird grundsätzlich ignoriert.


    Ich werde mir wohl mal jemanden suchen müssen, der hier in der Gegend sitzt, der mir mal das VSC zeigen kann. Werde mich wohl doch mal bei Facebook anmelden müssen, um Hilfe zu bekommen. Ich kenne niemanden im Verwandten, Bekannten, Kollegenkreis der das macht, was wir hier machen. :) :)


    Update: Ich habe es gerade das erste mal geschafft, eine Rule in DSL mit VSC zu erstellen. War ein langer und steiniger Weg.... aber das ist glaube ich mein Erfolgserlebnis für das Jahr 2023.... da kann nicht mehr viel besseres kommen. :)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!