Vielen Dank, so etwas habe ich gesucht.
NEWS
Latest posts made by Schorsch
-
RE: gelöst / Rechenoperation in HTML
-
gelöst / Rechenoperation in HTML
Hey,
ich möchte in VIS2 ein HTML-widget benutzen, um die Bezeichnung und den Wert von Datenpunkten in tabellarischer Weise auszugeben. Soweit funktioniert es.
Jetzt habe ich einen Datenpunkt, dessen Wert mit 0,1 multipliziert werden muss.
Im Internet kann ich leider keinen Weg zur Umsetzung in HTML finden. Ich finde keine Lösung, den Wert der Variablen power in HTML darzustellen.
Ich habe für das Widget folgenden Text geschrieben (bitte nur erste Zeile der Tabelle beachten):<html> <script language="JavaScript"> <!-- var power = {hoymiles-wifi.0.get_real_data_new.sgsData.0.activePower} * 0.1; // --> </script>; <table> <tr> <td>Leistung: </td> <td align="right"><b><var>power</var> W</b></td> </tr> <tr> <td>Tageswert</td> <td align="right"><b>{hm-rpc.1.000EDD89B3A2D5.1.HUMIDITY} %</b></td> </tr> </table>
-
RE: Gelöst / Bash-Befehl in javaScript
Lösung gefunden.
Die Variable $PATH des Users iobroker konnte ich nicht editieren.
Ich habe jetzt einen Softlink im Verzeichnis /usr/local/bin mit dem Namen hoymiles-wifi gesetzt, der auf die Datei hoymiles-wifi im Verzeichnis /home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin zeigt. Mit Blockly kann dann die Pfadangabe entfallen.
Erklärung auf den Seiten von ubuntuusersJetzt funktioniert auch der Adapter von @Michael-6.
-
RE: Hoymiles hms-800w-2t
@michael-6 Hey, ich habe mir auch deine Seiten in github angesehen und die gleiche Fehlermeldung "externally-managed-environment" erhalten. Soweit ich es überblicke, muss bei bookworm nicht pip install sondern pipx install verwendet werden. Ebenso habe ich die Installation als User "iobroker" durchgeführt.
sudo -H -u iobroker pipx install hoymiles-wifi
Vielleicht willst du es einmal überprüfen und dein github ggf. aktualisieren.
Vielen Dank für den Adapter. -
RE: Hoymiles hms-800w-2t
So, ich habe eine Lösung gefunden.
Ich habe es nicht hinbekommen, die $PATH-Variable für den User "iobroker" zu editieren. Somit musste ich aus Blockly immer den kompletten Pfad angeben und der Adapter von @Michael-6 funktionierte nicht (siehe github).
In der $PATH - Variablen von iobroker ist das Verzeichnis /usr/local/bin enthalten. Dort habe ich einen Softlink mit dem Namen hoymiles-wifi platziert, der auf die Datei hoymiles-wifi im Verzeichnis /home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin zeigt.
Erklärung auf den Seiten von ubuntuusersJetzt funktioniert auch der Adapter.
-
RE: Gelöst / Schwierigkeiten mit JS-Funktionen mit Ergebnis
Hey, vielen Dank für die Infos. werde dann mal schauen, wie ich es mache.
-
RE: Gelöst / Schwierigkeiten mit JS-Funktionen mit Ergebnis
@codierknecht Hab ich gemacht. Danke für den Hinweis.
-
Gelöst / Schwierigkeiten mit JS-Funktionen mit Ergebnis
Hallo,
ich verstehe den Einsatz von Funktionen nicht so ganz.Folgendes Problem:
Ich benutze einen Wechselrichter Hoymiles HMS 800W-2T. Zum Abruf der Daten verwende ich das Python-Programm hoymiles-wifi. Mit diesem Programm gibt es mehrere programmspezifische Befehle. Damit der Aufruf (bei mir) funktioniert, muss ich den kompletten Pfad angeben (anderes Problem).
Jetzt hatte ich mir vorgestellt, dass ich eine Funktion zum Abrufen der Daten schreibe. In dieser Funktion hinterlege ich alles, was ich zum Abrufen der daten benötige. Zum Aufruf der Funktion gebe ich in einer Variablen den Befehl als Text-Variable mit und erhalte als Antwort die entsprechenden Daten.Dazu habe ich folgendes Blockly-Programm geschrieben. In den Debug-Blöcken habe ich zur besseren Unterscheidungen die Einstufung "Info" und "Warnung" ausgewählt und benenne sie auch entsprechend.
Im Debug-Fenster erhalte ich zuerst die Ausgabe vom debug-Block "Info" mit dem Ergebnis "undefined". Danach wird der debug-Block "Warnung" mit den Daten ausgegeben.
Nach meinem Verständnis ruft der debug-Block "Info" die Funktion auf. Somit sollte erst der debug-Block "Warnung" ausgegeben werden. Danach der debug-Block "Info".
Ich habe mir ein test-Blockly mit den JS-Funktionen ohne und mit Ergebnis erstellt und dort kleine Rechenoperationen durchgeführt. Das Script funktioniert nach meiner Vorstellung.Wo ist mein Denkfehler?
Wie muss ich mit der JS-Funktion mit Ergebnis arbeiten?Vielen Dank.
-
RE: Gelöst / Bash-Befehl in javaScript
@oliverio Da ich mich noch zu den Anfängern zähle, habe ich einfach vorhandene PATH-Zuweisungen ergänzt.
So z. B. in der Datei /etc/profile. Da habe ich hinten ":/home/iobroker/.local/bin" angehängt:if [ "$(id -u)" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/iobroker/.local/bin" else PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/iobroker/.local/bin:/usr/local/games:/usr/games" fi export PATH
Ich bin davon ausgegangen, dass entweder der eine oder andere Teil der if-Anweisung durchlaufen wird. Daher habe ich in beiden die PATH-Angabe hinten ergänzt. Meine Erwartung war, dass dann für den User iobroker in der PATH-Anweisung hinten die Ergänzung erscheint.
Ich gehe davon aus, dass die Variable $PATH des Users "iobroker" mit folgendem Befehl mit ausgegeben wird:
sudo -H -u ioproker printenv
In der Ausgabe ist dann unter PATH folgendes zu lesen (siehe auch meinen vorherigen Beitrag):
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
In der Datei /home/iobroker/.profile hat pipx nach Eingabe des folgenden Befehls
sudo -H -u iobroker pipx ensurepath
folgenden Eintrag hinterlassen
# Created by `pipx` on 2024-11-15 17:24:05 export PATH="$PATH:/home/iobroker/.local/bin"
Auch diese Zeichenkette erschien nicht. Ich habe danach die Ergänzung von pipx mit nano auskommentiert und folgende Zeilen eingefügt:
# set PATH so it includes hoymiles-wifi if [ -d "$HOME/.local/pipx" ] ; then PATH="$HOME/.local/pipx/venvs/hoymiles-wifi/bin" fi
Auch ohne Erfolg.
Entweder zeigt der Befehl "sudo -H -u iobroker printenv" nicht die Variable $PATH vom User iobroker an oder die Zuweisung erfolgt irgendwie anders.Der User, mit dem ich über SSH auf den Raspi zugreife, ist folgenden Gruppen zugeordnet:
USER@ioBrokerPi:~ $ id USER uid=1000(USER) gid=1000(USER) Gruppen=1000(USER),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),102(input),105(render),106(netdev),995(spi),994(i2c),993(gpio),1001(iobroker)
Der Gruppe root ist kein User zugeordnet.
-
RE: Gelöst / Bash-Befehl in javaScript
So, nach mehreren Tagen lesen und probieren bekomme ich es jetzt halbwegs hin.
Was nicht funktioniert, ist die Variable PATH für iobroker zu verändern.Bei der Installation mit pipx wurde hoymiles-wifi im Verzeichnis "/home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin/" installiert.
Mit folgendem Aufruf aus der bash erhalte ich Daten vom Wechselrichter
sudo -H -u iobroker /home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin/hoymiles-wifi --host xxx.xxx.xxx.xxx get-real-data-new
Wenn ich den Befehl in einem exec-Block von Blockly eingebe, erhalte ich auch Daten zurück.
/home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin/hoymiles-wifi --host xxx.xxx.xxx.xxx get-real-data-new
Was ich nicht hinbekomme, ist die PATH-Variable so zu ändern, dass iobroker im Verzeichnis /home/iobroker/.local/pipx/venvs/hoymiles-wifi/bin sucht. Ich habe testweise mit nano folgende Dateien editiert und danach wieder in den ursprung gesetzt:
- /etc/profile
- /home/iobroker/.profile
und den RasPi danach jeweils neu gestartet.
Als User dann mit folgenden Befehl die PATH-Variable geprüft:
sudo -H -u iobroker printenv
Ergebnis war immer:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAIL=/var/mail/iobroker LOGNAME=iobroker USER=iobroker HOME=/home/iobroker
Fragen:
-
Ist es möglich, mit pipx das Programm hoymiles-wifi im Verzeichnis usr/local/bin zu installieren? Wenn ja, wie?
-
Wie kann ich die PATH-Variable so anpassen, dass iobroker das Programm hoymiles-wifi selber findet und ich mir die Pfadangaben im Befehl sparen kann?