Seite 1 von 1

openHAB und Theia

Verfasst: 12. Aug 2021 10:31
von Michdo93
Hi,

ich habe da eine mehr oder weniger zufriedenstellende Lösung, dies lässt sich sicherlich noch ein wenig optimieren. Die meisten verwenden sicherlich Visual Studio Code und Samba. So wird es in der openHAB-Dokumentation bspw. empfohlen. Theia ist jetzt nicht wirklich anders als Visual Studio Code. Es ist ein Online-Editor bzw. eine IDE, die auf Webservern läuft.

https://theia-ide.org/

Ich habe zugegeben über GitHub es geklont und lasse das Beispiel theia/examples/browser laufen. Da gibt es dann eine Menüspalte mit Sample Menu zu viel. Man kann es natürlich auch selbst konfigurieren:

https://theia-ide.org/docs/composing_applications/

Ich weiß jetzt nicht mehr, wo da genau das Problem war. Hatte aber auch Probleme dann in Theia den openHAB-Konfigurationsordner zu öffnen. Ich blieb dann einfach bei dem Beispiel aus dem GitHub-Repository.

Ich habe mir folgenden systemd-Dienst erstellt:

Code: Alles auswählen

cat nodejs_theia.service
[Unit]
Description=theia nodejs
Documentation=https://example.com
After=network.target

[Service]
Type=simple
User=openhabvm
ExecStart=/usr/bin/yarn run start --hostname 0.0.0.0 --port 3000
WorkingDirectory=/home/<user oder /path/to/theia>/theia/examples/browser
Restart=on-failure

[Install]
WantedBy=multi-user.target
So kann ich von jedem Rechner aus im Netzwerk openHAB konfigurieren, ohne dass ich einen Netzwerk-Ordner auf diesem Rechner hinzufügen muss. Spart wenn man kleinere Änderungen vornehmen will, sicherlich auch Zeit. Oder man müsste nicht jedesmal zu einem Rechner wechseln, wo alles entsprechend konfiguriert ist.

Man kann das ganze natürlich mit einem Passwort absichern. Eventuell über htaccess oder andere Möglichkeiten. Lass ich mal weg. Man verwendet auch gerne pm2 um eine NodeJS-Anwendung automatisiert zu starten. Gibt viele kleinere Dinge.

Adressieren kann ich den Projektordner bspw. über die URL:

Code: Alles auswählen

http://<ip>:3000/#/etc/openhab2
Die würde dann den Ordner /etc/openhab2 öffnen. Funktioniert natürlich bei openHAB 3 dann genau gleich, nur mit /etc/openhab. Wenn ich den Ordner /etc öffnen wollen würde, hätte ich folgende URL:

Code: Alles auswählen

http://<ip>:3000/#/etc
In openHAB habe ich es über eine neue Sitemap eingebunden. Die ist aber quasi nicht mit 100% gezoomt, sondern weil openHAB dies nicht zulässt verkleinert:

Code: Alles auswählen

sitemap Theia label="Theia"
{

    Webview url="https://<ip>/static/theia/theia.html" icon=none height=18

    Frame label="Fullscreen"
    {
        Text item=LINK_SITEMAP
    }
}

Hierzu dann die einfache HTML-Seite:

Code: Alles auswählen

<!DOCTYPE html>
<html>
    <head>
        <style>
            @import url('https://fonts.googleapis.com/css?family=VT323');

            body {
              font-size: 14px;
              font-family: Helvetica, sans-serif;
              background: #fff;
              color: #000;
            }
                    </style>
                    <script type="text/javascript">
                        /*
            Disables the border and scrolling of the Webview sitemap iframe in the openhab.app webpage.
            */
            function formatIframe() {
              var iframe = window.frameElement;
              if (iframe) {
                iframe.style.border = "0px";
                iframe.scrolling = "no";
                iframe.style.height = "350px";
              }
            }

                    </script>
    </head>
    <body style="margin:0px;padding:0px;overflow:hidden" onload="formatIframe()">

        <iframe src="http://<ip>/#/etc/openhab2" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe>

    </body>


</html>
Theoretisch sollte ich ein CSS- und JS-Code nutzen, der mir den Fullscreen ermöglichen sollte.

Der Link in der Sitemap funktioniert leider auch nicht, dass Item wäre:

Code: Alles auswählen

String LINK_SITEMAP "<a href='http://<ip>:3000/#/etc/openhab2'>Fullscreen</a>"
Hab dies mal als Beispiel gesehen, wie man in openHAB angeblich Links in Sitemaps einbinden können sollte.

Abschließend wie man Theia und die Beispiele baut:
https://github.com/eclipse-theia/theia/ ... eloping.md

Es ist bisher noch nicht das Gelbe vom Ei. Aber vielleicht hat hier jemand anderweitig bereits gute Erfahrungen gemacht oder es regt jemanden an, dies anständig umzusetzen, nachdem man einen Denkanstoß von mir hierzu bekommt.

Es gibt auch andere Versuche, die nach mir dies ausgetestet haben:

https://community.openhab.org/t/experim ... hab/119057
https://github.com/ghys/openhab-ide

Kann dazu nichts näheres sagen. Ist bei mir schon etliche Monate her, dass ich hierzu Versuche unternommen habe.

openHAB läuft bei mir über ein Reverse-Proxy von nginx und wäre auch per htaccess Passwort geschützt. Bei openHAB 3 gibt es ja einen Login-Mechanismus. Auch hierzu muss man vieles nicht mehr sagen.

Mein Ansatz hat deutliche Schwächen. War aber wie gesagt nur ein erster Versuch und ich habe mich nicht näher damit befasst.

Über Theia könnt ihr auch das Terminal bei entsprechender Konfiguration bedienen und openHAB beenden und neustarten. Theoretisch kann man auch Visual Studio Codes Plugins installieren. Da gibt es allgmeine jedoch Komplikationen. Ob die openHAB VS Code Extension läuft, kann ich euch auch nicht mitteilen.

Ich sag es mal so: Für viele von euch wird sicher der Aufwand nicht lohnen. Die meisten bleiben bei Samba + Visual Studio Code. Da ich einzelne Instanzen habe, wo Studenten daran arbeiten, wäre es nicht gerade unpraktisch, wenn man sich jedes Semester sparen könnte, dass Studenten einen Netzwerkordner hinzufügen. Wobei man ja wirklich sagen muss, dass dies Nuancen sind, die einen großen Aufwand nicht wert sind. Das sollten die innerhalb weniger Minuten ja wohl schaffen.

Gab ja Gründe, warum ich dies nur kurz ausprobiert und nicht weiterverfolgt habe. Der Mehrwert geht gegen null. Die Mehrheit dürfte openHAB auch nicht öffentlich im Internet verfügbar haben. Und dann reicht auch eine VPN-Verbindung, dass man von extern am System arbeitet (vorausgesetzt man hätte VPN im Heimnetzwerk installiert).

Re: openHAB und Theia

Verfasst: 12. Aug 2021 17:50
von udo1toni
Also, ein Stück weit sind Editoren natürlich immer Geschmackssache. Im Fall von VSCode ist es halt so, dass über das openHAB Plugin eine (fast) vollständige Entwicklungsumgebung zur Verfügung steht. Man hat Zugriff auf die Item und Things Registry, man sieht also z.B. welche Things online sind oder auch den aktuellen Status eines Items (in einer Baumstruktur nach Gruppenzugehörigkeit, Items können auch mehrfach auftauchen).
Man kann sich viel Tipparbeit sparen, wenn man die entsprechenden Funktionen des Plugins nutzt, angefangen vom (vollautomatischen) Erzeugen von Items zu Channels oder auch kompletten Things über die Übernahme von Itemnamen in Sitemaps oder auch Rules bis hin zu den online Ergänzungsvorschlägen beim Schreiben von Rules.

Es gibt übrigens VSCode auch als Online Version :) d.h. auch dort öffnet man den Link im Browser und arbeitet in VSCode ziemlich genau so, wie man es bei einer lokal installierten Version täte. Ist etwas umständlich beim Einrichten, ich hab das aber schon mal erfolgreich gemacht (nutze das aber gerade nicht). https://github.com/cdr/code-server ist die relevante Adresse, wenn ich mich richtig erinnere.

Re: openHAB und Theia

Verfasst: 13. Aug 2021 12:51
von Michdo93
Okay, danke. Kenne Theia aus verschiedenen Online-Plattformen und -Simulationen. Aber ja, hast wie immer mal wieder mit allem recht.

Re: openHAB und Theia

Verfasst: 13. Aug 2021 14:01
von BOP
Michdo93 hat geschrieben: 12. Aug 2021 10:31 ... ohne dass ich einen Netzwerk-Ordner auf diesem Rechner hinzufügen muss.
Wobei man unter Windows keinen Netzwerkordner hinzufügen muss. Das geht auch mit einem Direktzugriff über die IP/Hostname.