Erweiterung JSON Modul

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
Antworten
ChrisWe
Beiträge: 5
Registriert: Di Nov 07, 2023 10:54 am
Has thanked: 1 time

Erweiterung JSON Modul

Beitrag 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
rleidner
Beiträge: 954
Registriert: Mo Nov 02, 2020 9:50 am
Has thanked: 5 times
Been thanked: 6 times

Re: Erweiterung JSON Modul

Beitrag 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
openWB-2 Standard+ | openWB EVU Kit v2 MID| 9,9kWp mit Kostal Plenticore 8.5 plus | VW ID.3, Kia EV6, Smart EQ forfour
Benutzeravatar
mrinas
Beiträge: 2142
Registriert: Mi Jan 29, 2020 10:12 pm
Has thanked: 8 times
Been thanked: 5 times

Re: Erweiterung JSON Modul

Beitrag von mrinas »

15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Smart #1 (ersetzt den e2008), Tesla Model Y LR.
ChrisWe
Beiträge: 5
Registriert: Di Nov 07, 2023 10:54 am
Has thanked: 1 time

Re: Erweiterung JSON Modul

Beitrag 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
ChrisWe
Beiträge: 5
Registriert: Di Nov 07, 2023 10:54 am
Has thanked: 1 time

Re: Erweiterung JSON Modul

Beitrag 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};
Benutzeravatar
mrinas
Beiträge: 2142
Registriert: Mi Jan 29, 2020 10:12 pm
Has thanked: 8 times
Been thanked: 5 times

Re: Erweiterung JSON Modul

Beitrag 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.
15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Smart #1 (ersetzt den e2008), Tesla Model Y LR.
Benutzeravatar
mrinas
Beiträge: 2142
Registriert: Mi Jan 29, 2020 10:12 pm
Has thanked: 8 times
Been thanked: 5 times

Re: Erweiterung JSON Modul

Beitrag 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.
15,2kWp SMA (SB4000TL-21, SB3.0, STP6.0-SE + BYD HVS, EnergyMeter), openWB Standard+, openWB Pro, Smart #1 (ersetzt den e2008), Tesla Model Y LR.
Antworten