NEWS
Steuerung Gecko in Touch 2 per iob möglich? (Wellis)
-
@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.
-
@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.
-
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
-
@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?
-
@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.
-
@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 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.
-
@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. -
@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!!
-
@rrov1 für das Licht, werde ich die neuese Version ziehen.
Versuch A:
31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:14:15.874 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** setting state of:javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI.Switch to old value: true 31288 2023-02-23 09:14:15.873 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 2023-02-23 09:14:05,767> INFO Found 1 spas ... [Wellness(SPAe8:eb:1b:1c:5e:46)] 2023-02-23 09:14:15,772> 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_toggleLight.py", line 103, 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_toggleLight.py", line 55, in main if len(spaman.facade.lights) > 0: AttributeError: 'NoneType' object has no attribute 'lights' 31288 2023-02-23 09:14:15.872 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** 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 Total arguments passed: 5 Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2 Connecting to spa id SPAe8:eb:1b:1c:5e:46 Switching light: LI Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI Looking for spas on your network ... *** connecting to spa 31288 2023-02-23 09:14:01.016 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:14:01.016 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** light key: LI 31288 2023-02-23 09:14:01.016 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** spaId: SPAe8:eb:1b:1c:5e:46 31288 2023-02-23 09:14:01.015 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** clientId: 916b0096-ab56-4344-8728-43a8259c63c2
Versuch B:
31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:12:48.661 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: python3 spa_toggleLight.py 916b0096-ab56-4344-8728-43a8259c63c2 SPAe8:eb:1b:1c:5e:46 LI javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI 31288 2023-02-23 09:15:34.232 info script.js.common.Draussen.Wellis_Whirlpool.LightToggle: *** 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 Total arguments passed: 5 Connecting using client id 916b0096-ab56-4344-8728-43a8259c63c2 Connecting to spa id SPAe8:eb:1b:1c:5e:46 Switching light: LI Got channel for update: javascript.0.Datenpunkte.SwimSpa.0.Lichter.LI Looking for spas on your network ... *** connecting to spa *** light count: 1 *** found light with key LI and name: Lights with state True *** switching light off *** light mode is now: False *** end
-
@tklein Na sieht doch gut aus. Ich habe mir die beiden Fehler angeschaut, da kannst du momentan nichts machen, die passieren ggf. in allen *.py-Skripten. Hier muss ich noch das Fehlerhandling verbessern, steht auf der ToDo Liste als nächstes, weil mich das auch nervt. Ich würde dieses WE aber erst mal das Ändern des Wasserpflegemodus noch fertig machen, weil das schon halbfertig rumliegt und ich dann glaub ich erst mal alle grundsätzlichen Sachen die man man so können muss fertig habe.
-
@rrov1 ok, bei den remindern gibt es auch noch herausforderungen bei mir. da kommt immer anzahl 0
Es wird nicht langweilig.
Was hälst du von Versionsnummern in den Skripten?LG
Thomas -
@tklein Dringe
@tklein said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
@rrov1 ok, bei den remindern gibt es auch noch herausforderungen bei mir. da kommt immer anzahl 0
Es wird nicht langweilig.
Was hälst du von Versionsnummern in den Skripten?Jup, dringend nötig :-), sowohl auf Javascript als auch auf Python Ebene.
-
@rrov1 So, den Wasserpflegemodus kann man jetzt auch setzen:
- Im Javascript Adapter: WatercareMode.js hinzufügen
- Neues Script: spa_setWatercareMode.py (Parameter: ClientGUID SpaId waterCareModeIdx DevicePath) bereitstellen und die IP vom ioBroker nicht vergessen dort einzutragen.
Wichtig: Ich habe gesehen, das es eine neue Version 0.4.8 der geckolib gibt. Ich werde diese einsetzen (ab nächste Woche), bitte mal aktualisieren. Bei mir war ein:
pip install geckolib --upgrade
fällig, bei Dir evtl. mit vorangestellten "sudo"...
Ich werde
-
@rrov1 said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
pip install geckolib --upgrade
thx, das update hat geklappt. Habe jetzt auch die 0.4.8 Version. WaterCareMode werde ich wahrscheinlich erst später mal mit einer PV Anlage nutzen.
Kannst du mir bitte dennoch einen exemplarischen Aufruf zum Wassermode posten? Das kann ich nicht so richtig greifen?
--> "waterCareModeIdx" Wäre das z.B. Energy Saving. Müssen die in "" stehen?
--> ist das der korrekte/angedachte Devicepath? javascript.0.Datenpunkte.SwimSpa.0.WasserpflegeSwitchsudo pip3 install geckolib --upgrade Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting geckolib Downloading https://files.pythonhosted.org/packages/95/b5/6b1293493ddbcef8c576a68adf05cdcc40b9387619507179d3b4607beabd/geckolib-0.4.8-py3-none-any.whl (1.2MB) 100% |████████████████████████████████| 1.2MB 341kB/s Requirement already satisfied, skipping upgrade: python-version>="3.7" in /usr/local/lib/python3.7/dist-packages (from geckolib) (0.0.2) Installing collected packages: geckolib Found existing installation: geckolib 0.4.7 Uninstalling geckolib-0.4.7: Successfully uninstalled geckolib-0.4.7 Successfully installed geckolib-0.4.8
-
Der Teufel steckt im Detail.
Wenn ich die Zeiltemp per DP ändere, wird der immer mit dem Ergebnis aus dem API Call überschrieben. (A,B,D)
Wenn die Zieltemp per Kommandozeile geändert wird, bleibt der Wert. (C)Dann muss ich noch die Herausforderung meistern, dass Alexa den Temeperaturwert (per iot Adapter als Thermostat) nicht korrekt übernimmt. Wert sollte z.B. 38 Grad sein, dann wird der auf 24,5 gesetzt. Das hat aber ja nix mit deinem Code zu tun.
-
@tklein said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
Kannst du mir bitte dennoch einen exemplarischen Aufruf zum Wassermode posten? Das kann ich nicht so richtig greifen?
waterCareModeIdx: Schau mal in den Datenpunkt "WasserpflegeModi". Dort sollten 5 Werte drinnen stehen, das sind die wählbaren Wasserpflegemodi. Der Index ist praktisch 0 basiert, also der erste Wert "Away from Home" == 0, die weiteren dann 1-4.
devicePath: Schau mal im Objektbaum die Spalte Type an, das Device ist der Pfad: javascript.0.Datenpunkte.SwimSpa.0
ioBroker kennt da einige Typen, bei mir kommen 4 vor:
folder - einfach nur eine Ebene im Baum
device - der Pfad zum Spa Controller Gerät
channel - ein Pfad unter dem einige states gleichen Typs gruppiert werden, z.B. Pumpen, Erinnerungen, Lichter, ...
state - der Datenpunkt der einen tatsächlichen Wert enthält.Manchmal, wenn ich in meinen Scripten mehrere States auf einmal setzen möchte (in dem Fall die DP Wasserpflege und WasserpflegeSwitch), dann übergebe ich dem Script den übergeordneten Pfad und ergänze dann nur noch die Namen der Datenpunkte. Wenn ich nur einen Datenpunkt aktualisieren will (Zieltemperatur), dann übergebe ich dem Skript den Namen des Datenpunktes.
-
@tklein said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
Wenn ich die Zeiltemp per DP ändere, wird der immer mit dem Ergebnis aus dem API Call überschrieben. (A,B,D)
Wenn die Zieltemp per Kommandozeile geändert wird, bleibt der Wert. (C)Ich bin mir gerade nicht sicher ob ich dich richtig verstehe. Meine Vermutung ist, das du beim setzen des Datenpunktes zusätzlich ack=true mitgibst (zumindest die Fälle A&D). Da passiert aber nichts. Ich halte mich an die ioBroker Logik, nach der ein "GUI"-Element den Datenpunkt setzt mit ack=false (das ist der Default, wenn man nichts mitgibt). Nur in dem Fall wird über die on()-Subscription ein Script ausgelöst, was tatsächlich eine Aktion auf dem Zielgerät (Spa Controller) auslöst und, wenn erfolgreich, den Datenpunkt noch mal mit dem neuen Wert und ack=true setzt.
Prüfe bitte auch im Protokoll, ob mein Script nach setzen der neuen Zieltemperatur wirklich aufgerufen wird.
Alexa igrnoriere ich seit über einen Jahr, die ist so umständlich und versteht mich nicht zuverlässig genug.
-
@rrov1 ja es war ack = true das Problem. Wie immer sehr gut und verständlich erklärt.
-
@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):
Kannst du mir bitte dennoch einen exemplarischen Aufruf zum Wassermode posten? Das kann ich nicht so richtig greifen?
waterCareModeIdx: Schau mal in den Datenpunkt "WasserpflegeModi". Dort sollten 5 Werte drinnen stehen, das sind die wählbaren Wasserpflegemodi. Der Index ist praktisch 0 basiert, also der erste Wert "Away from Home" == 0, die weiteren dann 1-4.
devicePath: Schau mal im Objektbaum die Spalte Type an, das Device ist der Pfad: javascript.0.Datenpunkte.SwimSpa.0
ioBroker kennt da einige Typen, bei mir kommen 4 vor:
folder - einfach nur eine Ebene im Baum
device - der Pfad zum Spa Controller Gerät
channel - ein Pfad unter dem einige states gleichen Typs gruppiert werden, z.B. Pumpen, Erinnerungen, Lichter, ...
state - der Datenpunkt der einen tatsächlichen Wert enthält.Manchmal, wenn ich in meinen Scripten mehrere States auf einmal setzen möchte (in dem Fall die DP Wasserpflege und WasserpflegeSwitch), dann übergebe ich dem Script den übergeordneten Pfad und ergänze dann nur noch die Namen der Datenpunkte. Wenn ich nur einen Datenpunkt aktualisieren will (Zieltemperatur), dann übergebe ich dem Skript den Namen des Datenpunktes.
ach so, quasi ein batchänderung wobei der passenste "root"-ordner übergeben wird.
Fühl dich eingeladen, wenn du mal im Raum MS/OS unterwegs bist. Lege gerne etwas auf den Grill oder es gibt einen Cappuchino etc. Danke für die unzähligen erstklassigen Hilfestellungen!