Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Gelöst / Bash-Befehl in javaScript

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Gelöst / Bash-Befehl in javaScript

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Schorsch last edited by Homoran

      @schorsch sagte in Bash-Befehl in javaScript:

      Wenn ich es im exec-Block eingebe, funktioniert gar nichts.

      hast du exec in der Konfiguration der js-Instanz freigegeben?

      @schorsch sagte in Bash-Befehl in javaScript:

      Für den SSH-Zugriff habe ich einen extra User angelegt

      gut so!

      @schorsch sagte in Bash-Befehl in javaScript:

      ich arbeite nicht als User iobroker.

      kannst du auch gar nicht!

      Aber dein User sollte in der Gruppe iobroker drin sein.

      1 Reply Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @Schorsch last edited by

        @schorsch

        sudo -H -u iobroker BEFEHL
        
        1 Reply Last reply Reply Quote 0
        • S
          Schorsch last edited by

          Vielen Dank für eure schnellen Antworten.

          @homoran
          In der JS-Instanz sind die Einstellungen wie folgt (bekomme zur Zeit keinen Screenshot eingebaut):
          Kommando "setObject" erlauben = aus
          Kommando "exec" erlauben = an
          Kommando "sendToHost" erlauben = aus
          Nicht alle Zustände beim Start abonnieren = aus

          Mein User ist in der Gruppe "iobroker" enthalten. Bei dem User funktioniert es ja. Im Blockly-Script bleibt der Text leer.
          Muss "sendToHost" aktiviert sein?

          @Thomas-Braun das Ergebnis ist:

          sudo -H -u iobroker hoymiles-wifi --host xxx.xxx.xxx.xxx get-version-info
          Traceback (most recent call last):
            File "/usr/local/bin/hoymiles-wifi", line 5, in <module>
              from hoymiles_wifi.__main__ import run_main
          ModuleNotFoundError: No module named 'hoymiles_wifi'
          

          Als SSH-User erhalte ich folgendes bei diesem Befehl:

          hoymiles-wifi --host xxx.xxx.xxx.xxx get-version-info
          No response or unable to retrieve response for get-version-info
          

          Die Antwort ist in soweit richtig, weil sich der hoymiles bei Dunkelheit aus dem WLAN verabschiedet und morgen bei Tageslicht wieder einbindet.

          Der Inhalt der Datei hoymiles-wifi lautet:

          #!/usr/bin/python3
          # -*- coding: utf-8 -*-
          import re
          import sys
          from hoymiles_wifi.__main__ import run_main
          if __name__ == '__main__':
              sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
              sys.exit(run_main())
          

          Vielleicht hilft euch dies weiter.

          Thomas Braun paul53 3 Replies Last reply Reply Quote 0
          • Thomas Braun
            Thomas Braun Most Active @Schorsch last edited by

            @schorsch

            echad@chet:~ $ sudo -H -u iobroker pipx install hoymiles-wifi
              installed package hoymiles-wifi 0.2.7, installed using Python 3.12.7
              These apps are now globally available
                - hoymiles-wifi
            ⚠  Note: '/home/iobroker/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run
                `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (e.g. ~/.bashrc).
            done! ✨ 🌟 ✨
            echad@chet:~ $ sudo -H -u iobroker /home/iobroker/.local/bin/hoymiles-wifi 
            usage: hoymiles-wifi [-h] --host HOST [--local_addr LOCAL_ADDR] [--as-json]
                                 {get-real-data-new,get-real-data,get-config,network-info,app-information-data,app-get-hist-power,set-power-limit,set-wifi,firmware-update,restart-dtu,turn-on-inverter,turn-off-inverter,get-information-data,get-version-info,heartbeat,identify-dtu,identify-inverters,identify-meters,get-alarm-list}
            hoymiles-wifi: error: the following arguments are required: --host, command
            echad@chet:~ $ 
            

            Wenn der user iobroker das Programm nur nutzen soll würde ich es so machen.

            S 1 Reply Last reply Reply Quote 0
            • Thomas Braun
              Thomas Braun Most Active @Schorsch last edited by

              @schorsch

              Und wenn es global für alle user verfügbar sein soll:

              sudo pipx install hoymiles-wifi --global
              
              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Schorsch last edited by paul53

                @schorsch sagte: Der Inhalt der Datei hoymiles-wifi lautet:

                Das ist doch kein Bash-Skript, sondern ein Python-Skript. Rufe es mal im exec() mit python3 auf.
                "python3 hoymiles-wifi --host 111.111.111.111 get-real-data-new"

                Thomas Braun 1 Reply Last reply Reply Quote 1
                • Thomas Braun
                  Thomas Braun Most Active @paul53 last edited by

                  @paul53 sagte in Bash-Befehl in javaScript:

                  Rufe es mal im exec() mit python3 auf.
                  "python3 hoymiles-wifi --host 111.111.111.111 get-real-data-new

                  Wenn es 'ordentlich' per pipx installiert wurde (und dann dadurch im $PATH des users 'iobroker' liegt) dann sollte der Aufruf von
                  hoymiles-wifi
                  per exec-Block reichen.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Schorsch @Thomas Braun last edited by

                    @thomas-braun Hi, ich habe den Befehl so eingegeben, erhalte jedoch eine Fehlermeldung.
                    5d00c3e6-e22c-4731-ad7c-ec011b032121-grafik.png

                    Kann es sein, dass durch die Installation mit pip und anschließend mit pipx etwas durcheinander gekommen ist?
                    Die PATH-Variable habe ich mit export PATH angepasst.
                    f5b454e0-9b04-4a16-a34f-dfa515c83a8a-grafik.png

                    Wie muss ich vorgehen, um hoymiles-wifi komplett zu deinstallieren, um es dann neu zu installieren?

                    @paul53 Der Aufruf mit dem Vorangestellten "python3" führt auch zu keinem Erfolg.

                    Gruß Schorsch

                    Thomas Braun 1 Reply Last reply Reply Quote 0
                    • Thomas Braun
                      Thomas Braun Most Active @Schorsch last edited by

                      @schorsch

                      Bilidchen kann und will ich nicht entziffern.
                      Text immer in CodeTags eingebettet hier rein.

                      1 Reply Last reply Reply Quote 0
                      • S
                        Schorsch last edited by

                        @Thomas-Braun Sorry, mach ich n atürlich.

                        Folgend der Befehl und das Ergebnis zur Installation von hoymiles-wifi gemäß deinen Angaben.

                        sudo -H -u iobroker pipx install hoymiles-wifi
                        ^ File exists at /home/iobroker/.local/bin/hoymiles-wifi and points to /home/iobroker/.local/pipx/venvs/hoymiles-wifi. Not modifying. installed package hoymiles-wifi 0.2.7, installed using Python 3.11.2
                        -hoymiles-wifi (symlink missing or pointing to unexpected location)
                        ^ Note: '/home/iobroker/.local/bin is not on your PATH environment variable. These apps will not be globally accessibleuntil your PATH is updatet. Run 'pipx ensurepath' to automatically add it, or manually modify your PATH in your shell`s config file (e.g. ~/.bashrc).
                        

                        Ich denke, dass ich da etwas durcheinandergebracht habe. Daher möchte ich wie folgt vorgehen:

                        1. hoymiles-wifi komplett deinstallieren. Wie mache ich es am Besten?
                        2. hoymiles-wifi wieder installieren, gemäß deiner Vorgabe
                        3. wie editiere ich die PATH-Variable des users iobroker, wie in der Antwort vorgeben oder anders?

                        Vielen Dank für deine Geduld.
                        Schorsch

                        Thomas Braun 1 Reply Last reply Reply Quote 0
                        • Thomas Braun
                          Thomas Braun Most Active @Schorsch last edited by Thomas Braun

                          @schorsch sagte in Bash-Befehl in javaScript:

                          hoymiles-wifi komplett deinstallieren. Wie mache ich es am Besten?

                          pip uninstall hoymiles-wifi
                          

                          im gleichen Verzeichnis wie bei der installation eingeben.

                          1 Reply Last reply Reply Quote 0
                          • S
                            Schorsch last edited by

                            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?

                            Thomas Braun 1 Reply Last reply Reply Quote 0
                            • Thomas Braun
                              Thomas Braun Most Active @Schorsch last edited by Thomas Braun

                              @schorsch sagte in Bash-Befehl in javaScript:

                              Ist es möglich, mit pipx das Programm hoymiles-wifi im Verzeichnis usr/local/bin zu installieren? Wenn ja, wie?

                              Ja, wenn es mit root-Rechten global installiert wird landet es dort.

                              Oder du machst es per

                              sudo -H -u iobroker pipx ensurepath
                              
                              1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO last edited by

                                @schorsch sagte in Bash-Befehl in javaScript:

                                /home/iobroker/.profile

                                was hast du da eingetragen?

                                du hättest da sowas eintragen können

                                export PATH="$PATH:/path/to/dir"
                                

                                das $PATH sorgt dafür, dsa der bisherige Pfad mit deinem /path/to/dir ergänzt wird.

                                der rechner muss auch nicht neu gestartet werden, es muss nur die aktuelle session beendet werden, also am besten ausloggen und wieder einloggen.

                                logout
                                

                                https://stackoverflow.com/questions/14637979/how-to-permanently-set-path-on-linux-unix

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  Schorsch @OliverIO last edited by

                                  @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.

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Schorsch last edited by

                                    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 ubuntuusers

                                    Jetzt funktioniert auch der Adapter von @Michael-6.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate
                                    FAQ Cloud / IOT
                                    HowTo: Node.js-Update
                                    HowTo: Backup/Restore
                                    Downloads
                                    BLOG

                                    999
                                    Online

                                    31.6k
                                    Users

                                    79.5k
                                    Topics

                                    1.3m
                                    Posts

                                    6
                                    19
                                    737
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo