Seite 1 von 1
Erweiterung JSON Modul
Verfasst: Mi Nov 13, 2024 2:24 pm
von ChrisWe
Hallo openWB Team und Foren-Kollegen,
Nachdem ich länger versucht habe selbst ein Modul für eine Integration für openWB 2.0 zu schreiben und es mir mangels Dokumentation und Beispielen nicht möglich ist, möchte ich folgende Erweiterung des JSON Moduls erbitten:
1. Die Möglichkeit HTTP POST und nicht nur HTTP GET requests durchzuführen
2. Die Möglichkeit eigene Header für den HTTP Request hinzuzufügen
Generell denke ich, dass ein umfangreicheres JSON Modul die Intergration mit sehr vielen Komponenten erlaubt. Dies wäre also sicher auch anderen Nutzern hilfreich.
Ich habe dies bereits auf meiner openWB 2.0 Entwicklungsumgebung hart in den Code geschrieben und dies hat funktioniert. Um allerdings die Parameter per UI als Eingabe zuzulassen muss ich tief im Javascript kryptische Dateien anpassen und die Felder mit Namen und Beschreibung zu versehen und dazu sehe ich mich ohne entsprechende Anleitungen nicht in der Lage.
Noch eine Anmerkung zu dem "open" Gedanke welcher hinter openWB steckt. Ich persönlich finde die Idee prima, die breite Community zur Entwicklung einzubinden um ein umfangreiches Erlebnis herstellen zu können. Dies bedingt aus meiner Sicht aber, dass der Code und die Kommentare auf Englisch sind (ich habe mir aus meiner Firma Entwickler hinzugezogen um den Code Reverse-zu-Engineeren, die aber alle nicht aus deutschland kommen) und eben auch eine entsprechende Dokumentation vorhanden ist. Ich wäre damit in der Lage entsprechende Integrationen/Module selbst zu schreiben oder schreiben zu lassen und diese der Allgemeinheit zur Verfügung zu stellen, was ich auch gerne machen würde.
Danke und liebe Grüße
Re: Erweiterung JSON Modul
Verfasst: Mi Nov 13, 2024 2:48 pm
von rleidner
ChrisWe hat geschrieben: ↑Mi Nov 13, 2024 2:24 pm
Um allerdings die Parameter per UI als Eingabe zuzulassen muss ich tief im Javascript kryptische Dateien anpassen und die Felder mit Namen und Beschreibung zu versehen und dazu sehe ich mich ohne entsprechende Anleitungen nicht in der Lage.
Da ist nichts wirklich "kryptisch"; Das Konfigurations-UI wird hier gepflegt:
https://github.com/openWB/openwb-ui-settings
Re: Erweiterung JSON Modul
Verfasst: Mi Nov 13, 2024 3:27 pm
von mrinas
Re: Erweiterung JSON Modul
Verfasst: Fr Nov 15, 2024 10:02 am
von ChrisWe
Vielen Dank für die Guides. So etwas habe ich gesucht aber nicht gefunden.
Dann mache ich mich wieder einmal an die Entwicklung.
Eine Anmerkung zum Installationsskript
https://raw.githubusercontent.com/openW ... install.sh:
Ich bin bereits bei mehreren Installationen in einen Fehler "error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function." gelaufen. Dieser lässt sich einfach beheben indem der Parameter --depth=1 zum git clone hinzugefügt wird:
Code: Alles auswählen
sudo -u "$OPENWB_USER" git clone --depth=1 https://github.com/openWB/core.git --branch master "$OPENWBBASEDIR"
Liebe Grüße
Re: Erweiterung JSON Modul
Verfasst: Fr Nov 15, 2024 10:09 am
von ChrisWe
rleidner hat geschrieben: ↑Mi Nov 13, 2024 2:48 pm
ChrisWe hat geschrieben: ↑Mi Nov 13, 2024 2:24 pm
Um allerdings die Parameter per UI als Eingabe zuzulassen muss ich tief im Javascript kryptische Dateien anpassen und die Felder mit Namen und Beschreibung zu versehen und dazu sehe ich mich ohne entsprechende Anleitungen nicht in der Lage.
Da ist nichts wirklich "kryptisch"; Das Konfigurations-UI wird hier gepflegt:
https://github.com/openWB/openwb-ui-settings
Wenn ich nach einem Beispieltext auf der UI suche, komme ich leider nicht auf die Konfigurations-UI sondern nur in kryptische JavaScript Dateien. Daher meine Aussage vom initialen Post.
Code: Alles auswählen
root@openwb:/home/pi# grep -rnw /var/www/html/openWB/ -e 'Es wird eine komplette URL erwartet mit Angaben zum Protokoll'
/var/www/html/openWB/web/settings/assets/device-335438c4.js:1:import{D as l}from"./HardwareInstallation-2c646227.js";import{_ as d,u as t,k as m,l as u,G as i,E as s,y as o,x as c}from"./vendor-f90150d8.js";import"./vendor-fortawesome-8488187c.js";import"./index-0eaa3ed7.js";import"./vendor-bootstrap-99f0c261.js";import"./vendor-jquery-99ccf6d7.js";import"./vendor-axios-871a0510.js";import"./vendor-sortablejs-cfc19546.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default};
Re: Erweiterung JSON Modul
Verfasst: Fr Nov 15, 2024 10:10 am
von mrinas
ChrisWe hat geschrieben: ↑Fr Nov 15, 2024 10:02 am
Vielen Dank für die Guides. So etwas habe ich gesucht aber nicht gefunden.
Dann mache ich mich wieder einmal an die Entwicklung.
Eine Anmerkung zum Installationsskript
https://raw.githubusercontent.com/openW ... install.sh:
Ich bin bereits bei mehreren Installationen in einen Fehler "error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function." gelaufen. Dieser lässt sich einfach beheben indem der Parameter --depth=1 zum git clone hinzugefügt wird:
Code: Alles auswählen
sudo -u "$OPENWB_USER" git clone --depth=1 https://github.com/openWB/core.git --branch master "$OPENWBBASEDIR"
Liebe Grüße
erstell' einen PR mit der Anpassung, das ist vermutlich der direkteste Weg das zu korrigieren.
Re: Erweiterung JSON Modul
Verfasst: Fr Nov 15, 2024 10:11 am
von mrinas
ChrisWe hat geschrieben: ↑Fr Nov 15, 2024 10:09 am
rleidner hat geschrieben: ↑Mi Nov 13, 2024 2:48 pm
ChrisWe hat geschrieben: ↑Mi Nov 13, 2024 2:24 pm
Um allerdings die Parameter per UI als Eingabe zuzulassen muss ich tief im Javascript kryptische Dateien anpassen und die Felder mit Namen und Beschreibung zu versehen und dazu sehe ich mich ohne entsprechende Anleitungen nicht in der Lage.
Da ist nichts wirklich "kryptisch"; Das Konfigurations-UI wird hier gepflegt:
https://github.com/openWB/openwb-ui-settings
Wenn ich nach einem Beispieltext auf der UI suche, komme ich leider nicht auf die Konfigurations-UI sondern nur in kryptische JavaScript Dateien. Daher meine Aussage vom initialen Post.
Code: Alles auswählen
root@openwb:/home/pi# grep -rnw /var/www/html/openWB/ -e 'Es wird eine komplette URL erwartet mit Angaben zum Protokoll'
/var/www/html/openWB/web/settings/assets/device-335438c4.js:1:import{D as l}from"./HardwareInstallation-2c646227.js";import{_ as d,u as t,k as m,l as u,G as i,E as s,y as o,x as c}from"./vendor-f90150d8.js";import"./vendor-fortawesome-8488187c.js";import"./index-0eaa3ed7.js";import"./vendor-bootstrap-99f0c261.js";import"./vendor-jquery-99ccf6d7.js";import"./vendor-axios-871a0510.js";import"./vendor-sortablejs-cfc19546.js";import"./dynamic-import-helper-be004503.js";const _={name:"DeviceJson",mixins:[l]},f={class:"device-json"};function b(n,e,v,g,w,x){const r=t("openwb-base-heading"),a=t("openwb-base-text-input");return m(),u("div",f,[i(r,null,{default:s(()=>e[1]||(e[1]=[o(" Einstellungen für JSON ")])),_:1}),i(a,{title:"URL",subtype:"url",required:"","model-value":n.device.configuration.url,"onUpdate:modelValue":e[0]||(e[0]=p=>n.updateConfiguration(p,"configuration.url"))},{help:s(()=>e[2]||(e[2]=[o(" Es wird eine komplette URL erwartet mit Angaben zum Protokoll, IP oder Hostnamen, optional einem Port und einem Pfad. Die Antwort muss ein json-Objekt sein."),c("br",null,null,-1),o(" Beispiel: http://192.168.1.1:8080/json?data=1 ")])),_:1},8,["model-value"])])}const $=d(_,[["render",b],["__file","/opt/openWB-dev/openwb-ui-settings/src/components/devices/generic/json/device.vue"]]);export{$ as default};
Ja das ist grundsätzlich richtig.
Die UI der Einstellungen wird in einem separaten repo gepflegt. Dort ist auch beschrieben wie man das live testen kann (npm run dev). Sobald das alles fertig ist, PR erstellen wie gehabt.
Aus diesem Repo werden dann die .js dateien kompiliert und ins main Repo übernommen und so ausgeliefert.