Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Steuerung Gecko in Touch 2 per iob möglich? (Wellis)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Steuerung Gecko in Touch 2 per iob möglich? (Wellis)

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tklein @rrov1 last edited by

      @rrov1 ich rufe derzeit immer direkt die dp auf- habe noch keine vis.

      Danke für deine Top-Hilfe, aber das Problem liegt glaube ich eher beim Aufruf der Skripte. Selbst so kann ich die nicht starten.
      fc19a1e7-e276-4caa-bb17-47b35814558a-grafik.png

      Andere *.py kann ich per blockly ausführen. Ich muss erst schauen, was da im argen ist.

      rrov1 1 Reply Last reply Reply Quote 0
      • rrov1
        rrov1 @tklein last edited by

        @tklein Hm, die Lösung würde mich interessieren, auch wenn ich eher nicht mit Blockly arbeite, aber soweit ich weiß wird das auch nur in Javascript umgesetzt. Ich hätte ja spontan gesagt, das im Javascript Adapter "exec ausführen" nicht aktiv ist, aber das widerspricht ja dem, das du manche Python-Skripte ausführen kanns.

        T rrov1 2 Replies Last reply Reply Quote 0
        • T
          tklein @rrov1 last edited by

          @rrov1 es sieht so aus, als wenn ich per blockly nicht python3.10 aufrufen kann. die datei spa_updateBulk.py kann ich mit python fehlerlos aufrufen. bei den steuerungen skripten bekomme ich bei der 3er version immer errors

          1 Reply Last reply Reply Quote 0
          • rrov1
            rrov1 @rrov1 last edited by

            @rrov1 Aber warum gehen dann einige der Scripte!?
            Ruf mal:

            which python3.10
            

            auf, dann hast du den vollständigen Pfad. Dann bau mal ein Blockly mit einem exec wie folgt zusammen:

            /vollständiger/pfad/zu/python3.10 -c "print('hello world.')"
            

            Im Ergebnis müsstest als Ausgabe in der Blockly Variable result dann "hello world" ausgegeben bekommen.

            Wenn das funktioniert, dann könnte er die py-Skripte nicht finden, da könntest du vor den Skriptnamen auch noch den vollständigen Pfad einfügen.

            T 2 Replies Last reply Reply Quote 0
            • T
              tklein @rrov1 last edited by tklein

              @rrov1

              Zwischenupdate:
              es wird immer besser 🙂 an den Pfad habe ich gar nicht gedacht. Hatte eine Shebang am Anfang der PY-Dateien ohne Erfolg hinzugefügt gehabt.

              Das klappt. Juhu!
              30a30143-8bc0-462d-a744-ad9c15209c44-grafik.png

              Aufrufen kann ich die Skripte immer noch nicht aus dem blockly. Mal sehen was es noch ist

              Derzeit sieht es so aus inkl. vollständigen Pfad zur Datei:

              8d2f3784-cf27-4802-80f2-c7ee7111edfd-grafik.png

              pi@raspberrypi-iob:~/wellis/v4 $ python3.10 spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 1 0 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
              Total arguments passed: 6
              Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2
              Connecting to spa id SPAe8:eb:1b:1c:5e:46
              Switching pump id 1
              Switching pump to state id 0
              Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
              Looking for spas on your network ...
              2023-02-19 11:04:01,189> INFO Found 1 spas ... [Wellness(SPAe8:eb:1b:1c:5e:46)]
              *** connecting to spa
              *** pump name: Pump 2
              *** pump modes: ['OFF', 'LO', 'HI']
              *** current pump mode: HI
              *** new pump state name: OFF
              *** found: 3 pumps
              2023-02-19 11:04:11,461> INFO Value for UdP2 changed from HI to OFF
              2023-02-19 11:04:11,464> INFO Value for P2 changed from HIGH to OFF
              2023-02-19 11:04:11,467> INFO Value for UdPumpTime changed from 14 to 0
              *** pump mode is now: OFF
              *** end
              pi@raspberrypi-iob:~/wellis/v4 $ pwd
              /home/pi/wellis/v4
              
              
              1 Reply Last reply Reply Quote 0
              • T
                tklein @rrov1 last edited by

                @rrov1 habe den pythonpath in den *.py dateien erweitert.

                Dennoch bekomme ich folgenden Log beim Update eines DP:

                31288	2023-02-19 12:53:22.178	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4 spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 0 2 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1 /usr/local/bin/python3.10: can't find '__main__' module in '/home/pi/wellis/v4'
                
                

                Zugriff auf diesen Ordener ist möglich. Rufe per blockly cron minütlich spa_updateBulk.py auf. jedoch mit python3

                rrov1 1 Reply Last reply Reply Quote 0
                • rrov1
                  rrov1 @tklein last edited by

                  @tklein Hallo, also ich würde sagen, dass die Ursache das Leerzeichen zwischen Pfad zum Skript und dem Skriptnamen ist. Der Aufruf müsste so lauten:

                  /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 0 2 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1
                  

                  Du kannst nicht den Pfad zum Skript vom Skriptnamen durch ein Leerzeichen trennen, damit bekommt python3.10 2 Parameter und interpretiert den Verzeichnisnamen als aufzurufendes Skript - was zu der aus meiner Sicht unpassenden und irreführenden Fehlermeldung führt.

                  Hinweis zum Blockly Screenshot:
                  Das "-c" funktioniert so nicht, das "-c" sagt dem Python Interpreter, das im nächsten Parameter Python-Quellcode kommt (siehe auch hier). Du hast aber ein Skript.

                  Wahrscheinlich kannst du dir den vollständigen Pfad zu python3.10 wieder sparen.
                  Prüfe auch mal ob nicht python3 und python3.10 nicht auf das gleiche zeigen:

                  ls -la /usr/local/bin/python3*
                  

                  Bei mir sieht das Ergebnis so aus:

                  ls -la /usr/bin/python3*
                  lrwxrwxrwx 1 root root       9 Apr  5  2021 /usr/bin/python3 -> python3.9
                  -rwxr-xr-x 1 root root 5479736 Feb 28  2021 /usr/bin/python3.9
                  

                  python3 ist nur ein Link der auf python3.9 zeigt. Ich benutze den Link, denn wenn bei meiner Distro doch mal Python auf eine höhere Version aktualisiert, dann wird python3 immer noch funktionieren, wohingegen python3.9 dann nicht mehr geht.

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    tklein @rrov1 last edited by tklein

                    @rrov1 ok, jetzt sieht es so im log aus hne den blank:

                    script.js.common.Draussen.Wellis_Whirlpool.TargetTemp_js: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 37 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur Traceback (most recent call last): File "/home/pi/wellis/v4/spa_setTargetTemp.py", line 5, in <module> import requests ModuleNotFoundError: No module named 'requests'
                    
                    

                    Es wir 3.10 wohl nicht aufgerufen?

                    pi@raspberrypi-iob:/usr/local/bin $ ls -la /usr/local/bin/python3*
                    -rwxr-xr-x 1 root root 17752176 Jan  7 17:21 /usr/local/bin/python3.10
                    -rwxr-xr-x 1 root root     3096 Jan  7 17:22 /usr/local/bin/python3.10-config
                    
                    

                    Anderer Ordner:

                    pi@raspberrypi-iob:/usr/local/bin $ ls -la /usr/bin/python3*
                    lrwxrwxrwx 1 root root       9 Mar 26  2019 /usr/bin/python3 -> python3.7
                    -rwxr-xr-x 2 root root 4275580 Oct 31 15:04 /usr/bin/python3.7
                    lrwxrwxrwx 1 root root      36 Oct 31 15:04 /usr/bin/python3.7-config -> arm-linux-gnueabihf-python3.7-config
                    -rwxr-xr-x 2 root root 4275580 Oct 31 15:04 /usr/bin/python3.7m
                    lrwxrwxrwx 1 root root      37 Oct 31 15:04 /usr/bin/python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
                    lrwxrwxrwx 1 root root      16 Mar 26  2019 /usr/bin/python3-config -> python3.7-config
                    lrwxrwxrwx 1 root root      10 Mar 26  2019 /usr/bin/python3m -> python3.7m
                    lrwxrwxrwx 1 root root      17 Mar 26  2019 /usr/bin/python3m-config -> python3.7m-config
                    
                    
                    rrov1 1 Reply Last reply Reply Quote 0
                    • rrov1
                      rrov1 @tklein last edited by

                      @tklein Na die Fehlermeldung ist "besser". Du hast praktisch immer noch 2 Python3 Installationen parallel auf deinem System. Die 3.10er Version hat entsprechend der Fehlermeldung das "requests"-Modul nicht installiert. Wenn ich dem hier folge, dann müsstest du:

                      python3.10 -m pip install requests
                      

                      aufrufen um auch in dieser Python-Installation das bereitzustellen. Ich vermute das dann noch andere Module fehlen, wenn dem so ist, findest du in der angenörgelten Quellcodezeile den Namen des Moduls das du noch installieren musst.

                      T 2 Replies Last reply Reply Quote 0
                      • T
                        tklein @rrov1 last edited by tklein

                        @rrov1 said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):

                        python3.10 -m pip install requests

                        Dann dürfte es doch beim Aufruf direkt über die Kommandozeile auch nicht laufen. Das klappt ja:

                        pi@raspberrypi-iob:~/wellis/v4 $ python3.10 spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 34 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur
                        Total arguments passed: 5
                        Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2
                        Connecting to spa id SPAe8:eb:1b:1c:5e:46
                        New target temp: 34
                        Got datapoint to update: javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur
                        Looking for spas on your network ...
                        2023-02-20 08:25:42,352> INFO Found 1 spas ... [Wellness(SPAe8:eb:1b:1c:5e:46)]
                        *** connecting to spa
                        *** water heater present
                        *** current target temp: 35.0
                        2023-02-20 08:25:52,609> INFO Value for SetpointG changed from 35.0 to 34.0
                        2023-02-20 08:25:52,995> INFO Value for CP changed from OFF to ON
                        2023-02-20 08:25:52,995> INFO Value for Waterfall changed from OFF to ON
                        2023-02-20 08:25:52,997> INFO Value for RealSetPointG changed from 35.0 to 34.0
                        2023-02-20 08:25:52,999> INFO Value for CheckFlo changed from False to True
                        2023-02-20 08:25:53,170> INFO Value for RhWaterTemp changed from 35.166666666666664 to 33.166666666666664
                        *** target temp is now: 34.0
                        *** end
                        
                        

                        Habe dennoch mal den Befehl aufgerufen:

                        pi@raspberrypi-iob:~ $ python3.10 -m pip install requests
                        Defaulting to user installation because normal site-packages is not writeable
                        Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
                        Requirement already satisfied: requests in ./.local/lib/python3.10/site-packages (2.28.2)
                        Requirement already satisfied: charset-normalizer<4,>=2 in ./.local/lib/python3.10/site-packages (from requests) (3.0.1)
                        Requirement already satisfied: idna<4,>=2.5 in ./.local/lib/python3.10/site-packages (from requests) (3.4)
                        Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.local/lib/python3.10/site-packages (from requests) (1.26.14)
                        Requirement already satisfied: certifi>=2017.4.17 in ./.local/lib/python3.10/site-packages (from requests) (2022.12.7)
                        
                        [notice] A new release of pip available: 22.3.1 -> 23.0.1
                        [notice] To update, run: pip3.10 install --upgrade pip
                        
                        

                        Kann man sich zur Lafzeit nicht als erstes die gerade verwendete Version von python ausgeben lassen? Habe das Gefühl, dass nicht die 3.10 genommen wird.

                        Beim Kommandozeilenaufruf mit 3.7 bekomme ich das:

                        pi@raspberrypi-iob:~/wellis/v4 $ python3.7 spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 34 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur
                        Total arguments passed: 5
                        Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2
                        Connecting to spa id SPAe8:eb:1b:1c:5e:46
                        New target temp: 34
                        Got datapoint to update: javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur
                        Traceback (most recent call last):
                          File "spa_setTargetTemp.py", line 108, in <module>
                            asyncio.run(main())
                          File "/usr/lib/python3.7/asyncio/runners.py", line 43, in run
                            return loop.run_until_complete(main)
                          File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
                            return future.result()
                          File "spa_setTargetTemp.py", line 49, in main
                            async with SampleSpaMan(CLIENT_ID, spa_identifier=SPA_ID) as spaman:
                          File "/usr/local/lib/python3.7/dist-packages/geckolib/async_spa_manager.py", line 199, in __aenter__
                            await AsyncTasks.__aenter__(self)
                          File "/usr/local/lib/python3.7/dist-packages/geckolib/async_tasks.py", line 15, in __aenter__
                            self.add_task(self._tidy(), "Tidy tasks", "ASYNC")
                          File "/usr/local/lib/python3.7/dist-packages/geckolib/async_tasks.py", line 22, in add_task
                            task = asyncio.create_task(coroutine, name=f"{key_}:{name_}")
                        TypeError: create_task() got an unexpected keyword argument 'name'
                        sys:1: RuntimeWarning: coroutine 'AsyncTasks._tidy' was never awaited
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • T
                          tklein @rrov1 last edited by

                          @rrov1 da hast du mit mir echt eine harte nuss 🙂

                          rrov1 1 Reply Last reply Reply Quote 0
                          • rrov1
                            rrov1 @tklein last edited by

                            @tklein Das bekommen wir schon noch raus, manchmal braucht es viel Geduld.

                            Mit folgenden 2 Zeilen bekommst du die Python Version und das Verzeichnis des Interpreters raus:

                            print(f"current version: {sys.version}")
                            print(f"interpreter directory: {sys.executable}")
                            

                            Füge die Zeilen im Skript deiner Wahl gleich nach der Zeile "import sys" ein, bei spa_setTargetTemp.py z.B. gleich in Zeile 2.

                            Du bekommst dann als Ausgabe sowas in der Art:

                            current version: 3.9.2 (default, Feb 28 2021, 17:03:44)
                            [GCC 10.2.1 20210110]
                            interpreter directory: /usr/bin/python3
                            

                            ausgegeben.

                            Ich bin mal gespannt. Nach der Fehlermeldung:

                            script.js.common.Draussen.Wellis_Whirlpool.TargetTemp_js: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 37 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur Traceback (most recent call last): File "/home/pi/wellis/v4/spa_setTargetTemp.py", line 5, in <module> import requests ModuleNotFoundError: No module named 'requests'
                            

                            Hätte ich schon die 3.10er Version in Verdacht gehabt.

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tklein @rrov1 last edited by

                              @rrov1 said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):

                              print(f"current version: {sys.version}")

                              da kann ich ja noch hoffen. 🙂

                              Hier der Log nach der Ergänzung:

                              31288	2023-02-20 22:36:21.615	info	script.js.common.Draussen.Wellis_Whirlpool.TargetTemp_js: *** setting state of:javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur to old value: 33
                              31288	2023-02-20 22:36:21.603	info	script.js.common.Draussen.Wellis_Whirlpool.TargetTemp_js: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 34 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur Traceback (most recent call last): File "/home/pi/wellis/v4/spa_setTargetTemp.py", line 8, in <module> import requests ModuleNotFoundError: No module named 'requests'
                              31288	2023-02-20 22:36:21.603	info	script.js.common.Draussen.Wellis_Whirlpool.TargetTemp_js: *** stdout: current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10
                              

                              Hier der Log nach dem Kommandozeilenaufruf:

                              pi@raspberrypi-iob:~/wellis/v4 $ python3.10 spa_setTargetTemp.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 34 javascript.0.Datenpunkte.SwimSpa.0.ZielTemperatur
                              current version: 3.10.9 (main, Jan  7 2023, 17:15:23) [GCC 8.3.0]
                              interpreter directory: /usr/local/bin/python3.10
                              Total arguments passed: 5
                              

                              Echt spannend warum das via Kommandozeile klappt, aber per js nicht.

                              rrov1 1 Reply Last reply Reply Quote 0
                              • T
                                tklein last edited by

                                warum das mit dem dp für das licht nicht geklappt hat, habe ich herausgefunden.

                                In meiner version stand noch das drin:
                                on({id: /^javascript.\d+.Datenpunkte.SwimSpa.\d+.Lichter.LI.Switch**$**/, change: "any", ack: false}, function (obj) {

                                Dennoch das gleiche problem wie bei den anderen skripten:

                                31288	2023-02-21 15:43:34.559	info	script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** setting state of:javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI.Switch to old value: false
                                31288	2023-02-21 15:43:34.559	info	script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI Traceback (most recent call last): File "/home/pi/wellis/v4/spa_toggleLight.py", line 7, in <module> import requests ModuleNotFoundError: No module named 'requests'
                                31288	2023-02-21 15:43:34.558	info	script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** stdout: current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10
                                
                                
                                rrov1 1 Reply Last reply Reply Quote 0
                                • rrov1
                                  rrov1 @tklein last edited by

                                  @tklein Nun, mich beschleicht das Gefühl, das Python beim Aufruf aus ioBroker evtl. von der Kommandozeile abweichende Pfade mitgegeben bekommt und deswegen das Modul requests schlicht nicht findet. Ich bin tatsächlich nicht so fit mit Python und Zusatzmodulen.

                                  Füge mal nach "import sys" folgendes ein:

                                  print(f"pfad: {sys.path}")
                                  

                                  Führe das Script einmal per Commandline aus und poste die Ausgabe nach "pfad:" hier, sowie einmal per ioBroker.

                                  Weiterhin kannst du mal folgendes ausprobieren (Quelle: hier) :

                                  • ausführen von: pip3 install requests
                                  • Ergebnis müsste (mit natürlich abweichenden Pfad) lauten:
                                  Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.25.1)
                                  
                                  • poste bitte auch mal das Ergebnis bei dir
                                  • nach "import sys" fügst du ein (natürlich mit deinem Pfad):
                                  sys.path.append("/usr/lib/python3/dist-packages")
                                  

                                  Läuft's dann vom ioBroker aus?

                                  Kann es weiterhin sein, das du ioBroker unter einem anderen Useraccount ausführst, als du dich zum Testen anmeldest?

                                  T 1 Reply Last reply Reply Quote 0
                                  • rrov1
                                    rrov1 @tklein last edited by

                                    @tklein said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):

                                    **

                                    Ok, das mit den "**$**" im regulären Ausdruck ist schlecht. Wo die herkommen kann ich mir gerade nicht erklären auf github im Skript LightToggle.js schaut es fein aus.

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      tklein @rrov1 last edited by

                                      @rrov1 Hier der Aufruf von der Kommandozeile:

                                      pi@raspberrypi-iob:~/wellis/v4 $ python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 1 0 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
                                      pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/home/pi/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/site-packages']
                                      current version: 3.10.9 (main, Jan  7 2023, 17:15:23) [GCC 8.3.0]
                                      

                                      Hier per DP:

                                      031288	2023-02-22 10:13:19.577	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** setting state of:javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch to old value: 0
                                      031288	2023-02-22 10:13:19.576	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 0 2 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1 Traceback (most recent call last): File "/home/pi/wellis/v4/spa_switchPump.py", line 8, in <module> import requests ModuleNotFoundError: No module named 'requests'
                                      031288	2023-02-22 10:13:19.576	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stdout: pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10
                                      

                                      Und noch aus dem Blockly per excec:

                                      javascript.0 (31288) script.js.common.Draussen.Wellis_Whirlpool.Pumpe_1_schalten: pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10
                                      

                                      pip3 install requests ergibt:

                                      Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
                                      Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.21.0)
                                      

                                      Welcher Pfad soll da rein? vom 3er oder 3.10?

                                      sys.path.append("/usr/lib/python3/dist-packages") 
                                      

                                      3er:

                                      Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
                                      Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.21.0)
                                      

                                      3.10

                                      pi@raspberrypi-iob:~ $ python3.10 -m pip install requests
                                      
                                      Defaulting to user installation because normal site-packages is not writeable
                                      
                                      Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
                                      Requirement already satisfied: requests in ./.local/lib/python3.10/site-packages (2.28.2)
                                      Requirement already satisfied: charset-normalizer<4,>=2 in ./.local/lib/python3.10/site-packages (from requests) (3.0.1)
                                      Requirement already satisfied: idna<4,>=2.5 in ./.local/lib/python3.10/site-packages (from requests) (3.4)
                                      Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.local/lib/python3.10/site-packages (from requests) (1.26.14)
                                      Requirement already satisfied: certifi>=2017.4.17 in ./.local/lib/python3.10/site-packages (from requests) (2022.12.7) 
                                      

                                      Das Skript rufe ich mit dem User "pi" auf. Aus iobroker wird glaube ich "iobroker" genommen. Aber per chmod 775 *.py sollte jeder darauf zugriff haben, oder?

                                      pi@raspberrypi-iob:~/wellis/v4 $ ls -la
                                      total 48
                                      drwxrwxrwx 2 pi pi 4096 Feb 22 10:08 .
                                      drwxrwxrwx 5 pi pi 4096 Feb 14 17:50 ..
                                      -rwxrwxr-x 1 pi pi  189 Feb 20 22:52 python_version.py
                                      -rwxr-xr-x 1 pi pi 4512 Feb 21 15:58 spa_config.py
                                      -rwxr-xr-x 1 pi pi 4184 Feb 20 22:34 spa_setTargetTemp.py
                                      -rwxr-xr-x 1 pi pi 4982 Feb 22 10:08 spa_switchPump.py
                                      -rwxr-xr-x 1 pi pi 3747 Feb 22 09:31 spa_toggleLight.py
                                      -rwxr-xr-x 1 pi pi 4704 Feb 14 17:55 spa_updateBulk.py
                                      
                                      
                                      rrov1 1 Reply Last reply Reply Quote 0
                                      • T
                                        tklein @rrov1 last edited by

                                        @rrov1 said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):

                                        @tklein said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):

                                        **

                                        Ok, das mit den "**$**" im regulären Ausdruck ist schlecht. Wo die herkommen kann ich mir gerade nicht erklären auf github im Skript LightToggle.js schaut es fein aus.

                                        Dann muss das "$" im Pfad mit drinstehen? die "*" sind hier vom editor gekommen. Sollte bold sein.

                                        1 Reply Last reply Reply Quote 0
                                        • rrov1
                                          rrov1 @tklein last edited by

                                          @tklein Ich glaube wir nähern uns der Lösung. Hätte ich vielleicht schon eher drauf kommen können. Die vorletzte Ausgabe ist interessant:

                                          Defaulting to user installation because normal site-packages is not writeable
                                          ...
                                          Requirement already satisfied: requests in ./.local/lib/python3.10/site-packages (2.28.2)
                                          ...
                                          

                                          in Verbindung mit den 3 ersten Ausgaben. Denn dieser Pfad zeigt im Kontext des user pi nach: /home/pi/.local/lib/python3.10/site-packages. In diesem Ordner liegt das Modul "requests" und wenn du unter dem User pi die Scripte ausführst ist auch alles fein, weil dieser Ordner im Python-Environment (sys.path) enthalten ist. Wenn ein Script unter einem anderen User (iobroker) ausgeführt wird ist dieser Pfad aber nicht enthalten.
                                          Das reparieren wir aber nicht, weil wir dann alles nur noch krummer machen als nötig.
                                          Führe doch mal mal:

                                          sudo python3.10 -m pip install requests
                                          

                                          Dann sollte er das Modul requests in den Pfad: /usr/local/lib/python3.10/site-packages installieren (poste doch mal die Ausgabe).
                                          Dann sollten auch die Aufrufe von ioBroker aus gehen.

                                          T 2 Replies Last reply Reply Quote 0
                                          • T
                                            tklein @rrov1 last edited by

                                            @rrov1 Hi, es wird immer besser.Jetzt klappt das schalten prinzipiell per DP. Nur nicht jedes mal. Kann es sein, dass es Probleme gibt, wenn gerade der minütliche Updatecron läuft?

                                            Kommandozeile (noch mit meinen Debug LOG-Ausgaben:

                                            pi@raspberrypi-iob:~/wellis/v4 $ python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 1 0 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
                                            pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/home/pi/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/site-packages']
                                            current version: 3.10.9 (main, Jan  7 2023, 17:15:23) [GCC 8.3.0]
                                            interpreter directory: /usr/local/bin/python3.10
                                            Log 1
                                            Log 2
                                            Log 3
                                            Log 4
                                            Total arguments passed: 6
                                            Log 5
                                            Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2
                                            Connecting to spa id SPAe8:eb:1b:1c:5e:46
                                            Switching pump id 1
                                            Switching pump to state id 0
                                            Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
                                            Log A
                                            Looking for spas on your network ...
                                            2023-02-23 08:40:42,631> INFO Found 1 spas ... [Wellness(SPAe8:eb:1b:1c:5e:46)]
                                            *** connecting to spa
                                            *** pump name: Pump 2
                                            *** pump modes: ['OFF', 'LO', 'HI']
                                            *** current pump mode: OFF
                                            *** new pump state name: OFF
                                            *** found: 3 pumps
                                            *** nothing to do, pump mode is already: OFF
                                            *** end
                                            

                                            DP:

                                            31288	2023-02-23 08:43:19.604	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** setting state of:javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch to old value: 2
                                            31288	2023-02-23 08:43:19.603	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stderr: Error: Command failed: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 0 0 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1 2023-02-23 08:43:08,684> INFO Found 1 spas ... [Wellness(SPAe8:eb:1b:1c:5e:46)] 2023-02-23 08:43:18,691> ERROR Exception during spa connection Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/geckolib/async_spa.py", line 367, in connect await self._connect() File "/usr/local/lib/python3.10/site-packages/geckolib/async_spa.py", line 334, in _connect if not await self.struct.get( File "/usr/local/lib/python3.10/site-packages/geckolib/driver/async_spastruct.py", line 75, in get if await request.wait_for_response(protocol): File "/usr/local/lib/python3.10/site-packages/geckolib/driver/udp_protocol_handler.py", line 143, in wait_for_response await asyncio.sleep(GeckoConstants.ASYNCIO_SLEEP_TIMEOUT_FOR_YIELD) File "/usr/local/lib/python3.10/asyncio/tasks.py", line 605, in sleep return await future asyncio.exceptions.CancelledError Traceback (most recent call last): File "/home/pi/wellis/v4/spa_switchPump.py", line 132, in <module> asyncio.run(main()) File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run return loop.run_until_complete(main) File "/usr/local/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete return future.result() File "/home/pi/wellis/v4/spa_switchPump.py", line 76, in main print(f"*** pump name: {spaman.facade.pumps[PUMP_ID].name}") AttributeError: 'NoneType' object has no attribute 'pumps'
                                            31288	2023-02-23 08:43:19.602	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stdout: pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10 Log 1 Log 2 Log 3 Log 4 Total arguments passed: 6 Log 5 Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2 Connecting to spa id SPAe8:eb:1b:1c:5e:46 Switching pump id 0 Switching pump to state id 0 Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1 Log A Looking for spas on your network ... *** connecting to spa
                                            31288	2023-02-23 08:43:03.936	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** new pump state: 0
                                            31288	2023-02-23 08:43:03.936	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** pump id: 0
                                            31288	2023-02-23 08:43:03.936	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** spaId: SPAe8:eb:1b:1c:5e:46
                                            31288	2023-02-23 08:43:03.935	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** clientId: 916b0096-ab56-4344-8728-43a8259c63c2
                                            31288	2023-02-23 08:43:00.103	info	script.js.common.Draussen.Wellis_Whirlpool.get_updates_by_cron: exec: python3 /home/pi/wellis/v4/spa_updateBulk.py
                                            31288	2023-02-23 08:42:33.054	info	script.js.common.Draussen.Wellis_Whirlpool.PumpSwitches: *** stdout: pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10 Log 1 Log 2 Log 3 Log 4 Total arguments passed: 6 Log 5 Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2 Connecting to spa id SPAe8:eb:1b:1c:5e:46 Switching pump id 0 Switching pump to state id 1 Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1 Log A Looking for spas on your network ... *** connecting to spa *** pump name: Pump 1 *** pump modes: ['OFF', 'LO', 'HI'] *** current pump mode: HI *** new pump state name: LO *** found: 3 pumps *** pump mode is now: HI *** end
                                            

                                            Hier hatte es nicht geklappt.

                                            Blockly:

                                            31288	2023-02-23 08:47:22.093	warn	script.js.common.Draussen.Wellis_Whirlpool.Pumpe_1_schalten: pfad: ['/home/pi/wellis/v4', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] current version: 3.10.9 (main, Jan 7 2023, 17:15:23) [GCC 8.3.0] interpreter directory: /usr/local/bin/python3.10 Log 1 Log 2 Log 3 Log 4 Total arguments passed: 6 Log 5 Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2 Connecting to spa id SPAe8:eb:1b:1c:5e:46 Switching pump id 1 Switching pump to state id 2 Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch Log A Looking for spas on your network ... *** connecting to spa
                                            31288	2023-02-23 08:47:07.243	info	script.js.common.Draussen.Wellis_Whirlpool.Pumpe_1_schalten: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                            31288	2023-02-23 08:47:07.242	warn	script.js.common.Draussen.Wellis_Whirlpool.Pumpe_1_schalten: exec: /usr/local/bin/python3.10 /home/pi/wellis/v4/spa_switchPump.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 1 2 javascript.0.Datenpunkte.SwimSpa.0.Pumpen.P1.Switch
                                            31288	2023-02-23 08:47:07.106	info	Start javascript script.js.common.Draussen.Wellis_Whirlpool.Pumpe_1_schalten
                                            

                                            Es wird 🙂 Juhu!!

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            793
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            167
                                            16898
                                            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