NEWS
Steuerung Gecko in Touch 2 per iob möglich? (Wellis)
-
@rrov1
Das hätte ich aber auch sehen können das die IP da rein kommtfrom geckolib import GeckoShell GeckoShell.run(["logfile client.log", "192.168.188.68"]) >>> >>> GeckoShell.run(["logfile client.log", "192.168.188.68"]) <Disclaimer> ----------------------------- USE AT YOUR OWN RISK ---------------------- ------- This code will allow you to make changes to your spa configuration that i s outside of what the app, top panel and side panel settings allow. I've no t tested every setting and it might be that you prevent your spa pack from operating as it used to do. I strongly suggest dumping the configuration values with the "config" com mand and recording them somewhere safe. </Disclaimer> *** Unknown syntax: 192.168.188.68 Starting discovery process...Found 0 spas LOG> WARNING Try using the iOS or Android app to confirm they are functioning cor rectly
Sieht irgendwie nicht gut aus das er ein findet. Aber vielleicht nicht richtig da ja syntax Error kommt :
*** Unknown syntax: 192.168.188.68 -
@stefan-berlin1 Wir kommen der Sache näher, vor die IP muss noch: "discover " (mit Leerzeichen).
-
@rrov1
JAAAAAAAA er hat Ihn gefunden. Du bist ein Genie.from geckolib import GeckoShell GeckoShell.run(["logfile client.log", "discover 192.168.188.68"]) Starting discovery process...Found 1 spas Connecting to spa `Kirschpool ??` at 192.168.188.68 ... connected! Heater: Temperature 38.0°C, SetPoint 38.0°C, Real SetPoint 26.9°C, Operation Cool ing Pump 1: OFF Waterfall: OFF Pump 2: OFF Lights: OFF WaterCare: Waiting... Suche 192.168.188.224, 172.30.32.1, 172.30.232.1 Starting discovery process...Found 1 spas Connecting to spa `Kirschpool ??` at 192.168.188.68 ... connected! Heater: Temperature 38.0°C, SetPoint 38.0°C, Real SetPoint 26.9°C, Operation Cool ing Pump 1: OFF Waterfall: OFF Pump 2: OFF Lights: OFF WaterCare: Waiting... Smart Winter Mode:Risk: NO Circulating Pump: OFF Ozone: OFF Smart Winter Mode:Active: False Filter Status:Clean: False Filter Status:Purge: False Economy Mode: True Error Sensor: VSP1CommLost, VSP2CommLost Welcome to the Gecko shell. Type help or ? to list commands. (Gecko) (Gecko) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.11/dist-packages/geckolib/utils/shared_command.py" , line 36, in run cmd.cmdloop() File "/usr/lib/python3.11/cmd.py", line 126, in cmdloop line = input(self.prompt) ^^^^^^^^^^^^^^^^^^ KeyboardInterrupt
-
@stefan-berlin1
OK, dann funktioniert erst mal die geckolib Installation bei dir im Container. Ich muss mir mal Gedanken machen wie ich die Scripte so anpasse, das es auch mit der IP-Adresse funktioniert. Außerdem brauche ich noch eine ioBroker Testinstanz im Container bei mir. Gib mir bitte mal ein paar Tage Zeit. -
@rrov1
Danke Dir vielmals. Ich glaube das es immer mehr werden die es im Docker laufen lassen.
Na klar verständlich das Du dafür Zeit brauchst. Aber das wäre wirklich sehr toll wenn Du das hinbekommst.Ich hab als erstes beim Pool geschaut ob es eine Schnittstelle gibt lach
-
@stefan-berlin1 Hallo Stefan,
ich habe einen ersten Wurf an Änderungen erstellt, damit das auch in einem ioBroker der in einem Docker Container läuft geht. Perfekt ist es noch nicht, an einer Stelle muss du momentan in einem Python Skript noch direkt was ändern. Praktisch ist ein Komplettupdate fast aller Skripte nötig (im Javascript Adapter, aber auch der Python Skripte) nötig. Bitte gehe wie folgt vor:- Alle Skripte im Ordner Spa pausieren (schalten wir nach und nach wieder an)
- im ioBroker anmelden, ins Verzeichnis SwimSpa wechseln und "git pull" aufrufen. Der git-Client sollte einige Skripte aktualisieren
- Python Skripte aktualisieren: "cp ./Python/*.py /SpaController/"
- Skript: spa_config.py anpassen, es muss an einer Stelle die IP des SpaController ergänzt werden (tausche einfach den ganzen Text aus und trage die IP von deinem SpaController ein):
- Zeile 34: async with SampleSpaMan(CLIENT_ID, spa_address="Deine.Spa.Controller.IP") as spaman:
- Damit wären wir mit den Python Skripten fertig, ab jetzt passiert alles im Javascript Adapter
- Als erstes muss ein neuer Datenpunkt für die IP-Adresse angelegt werden, öffne das Skript "SpaVariablen.js", lösche es komplett und füge den Inhalt aus SpaVariablen.js von git ein. Konfiguriere in Zeile 2 deine Werte (meist nur 1 SpaController), speichere es und führe es aus.
- Prüfe ob ein neuer Datenpunkt: javascript.0.Datenpunkte.SwimSpa.0.IPAddresse existiert, wenn ok, Skript schließen
- Skript: SpaUpdateConfig.js öffnen, Inhalt löschen und mit dem aus git: SpaUpdateConfig.js ersetzen, speichern und ausführen.
- Prüfe ob jetzt im Datenpunkt: javascript.0.Datenpunkte.SwimSpa.0.IPAddresse eine IP-Adresse hinterlegt ist, wenn ok, Skript schließen
- Skript: SpaUpdateValues.js öffnen, Inhalt löschen und mit dem aus git: SpaUpdateValues.js ersetzen, speichern und ausführen.
- Warten bis die nächste volle Minute angebrochen ist, dann wird es ausgeführt. Es sollten jetzt Werte wie die aktuelle Temperatur in den Datenpunkten stehen. Wenn Ok, Skript schließen.
- Jetzt das gleiche mit den restlichen Skripten im Ordner Spa machen. Ob sie funktionieren siehst du, wenn du Licht einschaltest, die Pumpen startest (meist nur OFF und HIGH, LOW geht bei mir nicht, ist aber als Option da), die Zieltemperatur anpasst oder den Wasserpflegemodus änderst.
Ich habe Ende nächster Woche Urlaub, da werde ich mich weiter mit den Anpassungen beschäftigen, damit es im Container läuft. Bis dahin sollte das aber so gehen (hoffe ich). Schreib mal ob du Erfolg hattest.
-
@rrov1
Hallo Stefan, wow so viel Dateien umgeändert. Super.den Datenpunkt IP Adresse hat er hinzugefügt. Bleibt aber auch leer der Wert.
Bekomme aber noch folgenden Fehler aus der Spa Update Value:
javascript.0 (31123) script.js.common.Spa.SpaUpdateValues: *** stderr: Error: Command failed: python3 /SpaController/spa_updateBulk.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa *** Wrong number of script arguments. *** call example: /SpaController/spa_updateBulk.py clientId ioBrSimpleRestApiUrl spaIds spaIPs dpBasePath
und aus der Spa Update Config:
javascript.0 (31123) script.js.common.Spa.SpaUpdateConfig: *** stderr: Error: Command failed: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa *** there were no spas found on your network.
bzw. der Fehler aus dem Skript ansicht debugger:
23:59:30.414 error javascript.0 (31302) script.js.common.Spa.SpaUpdateConfig: ReferenceError: BASE_ADAPTER is not defined 23:59:30.415 error javascript.0 (31302) at updateSpaConfig (script.js.common.Spa.SpaUpdateConfig:12:22) 23:59:30.415 error javascript.0 (31302) at script.js.common.Spa.SpaUpdateConfig:8:1 23:59:30.415 error javascript.0 (31302) at script.js.common.Spa.SpaUpdateConfig:49:3
Als IP übernimmt er scheinbar die Simple API aber nicht die manuelle IP aus der spa_config.py
Dort hab ich das eingetragen:
async with SampleSpaMan(CLIENT_ID, spa_address="192.168.188.68") as spaman:
-
@stefan-berlin1 Hallo Stefan,
hm, deaktiviere bitte im Javascript Adapter im Ordner Spa alle Skripte bis auf SpaUpdateConfig.js. Dieses Script ruft spa_config.py auf, welches dann (neben anderem) erst mal im Datenpunkt:javascript.0.Datenpunkte.SwimSpa.0.IPAddresse
die IP-Adresse ergänzt. Solange wie dieser Datenpunkt leer ist, werden alle anderen Skripte nicht laufen.
Den Fehler:
ReferenceError: BASE_ADAPTER is not defined
bekomme ich, wenn im Ordner "global scripts (global)" das Skript SpaGlobal.js deaktiviert ist.
Bitte prüfe dort mal ob da ein rotes Dreieck dran ist. Wenn ja aktivieren und 1 Minute warten (die Instanz des Javascript Adapters wird danach einmal neu gestartet). Danach starte das Skript SpaUpdateConfig.js. Es sollte jetzt ohne den Fehler laufen und die IP-Adresse im Datenpunkt "IPAdresse" eintragen.
Danach und nur wenn die IP im Datenpunkt ist, bitte erst SpaUpdateValues.js aktivieren und auf die nächste volle Minute warten. Wenn das läuft den Rest der Skripte aktivieren.
-
@rrov1 ich teste mal
-
@stefan-berlin1
so habs genauso gemacht:javascript.0 2024-05-06 22:54:38.970 info script.js.common.Spa.SpaUpdateConfig: end javascript.0 2024-05-06 22:54:38.970 info script.js.common.Spa.SpaUpdateConfig: *** stderr: Error: Command failed: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa *** there were no spas found on your network. javascript.0 2024-05-06 22:54:28.785 info script.js.common.Spa.SpaUpdateConfig: *** executing: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa javascript.0 2024-05-06 22:54:28.783 info script.js.common.Spa.SpaUpdateConfig: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 2024-05-06 22:54:28.783 info script.js.common.Spa.SpaUpdateConfig: start javascript.0 2024-05-06 22:54:28.730 info Start javascript script.js.common.Spa.SpaUpdateConfig javascript.0 2024-05-06 22:54:26.690 info received all states javascript.0 2024-05-06 22:54:26.654 info received all objects javascript.0 2024-05-06 22:54:26.013 info requesting all objects javascript.0 2024-05-06 22:54:26.013 info requesting all states javascript.0 2024-05-06 22:54:25.540 info starting. Version 7.8.0 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.20.2, js-controller: 5.0.19 javascript.0 2024-05-06 22:53:54.234 info terminating javascript.0 2024-05-06 22:53:53.737 info Terminated (NO_ERROR): Without reason javascript.0 2024-05-06 22:53:53.736 info terminating javascript.0 2024-05-06 22:53:53.732 info Stop script script.js.common.Spa.SpaUpdateConfig javascript.0 2024-05-06 22:53:53.731 warn Restart initiated javascript.0 2024-05-06 22:53:53.730 info Global Script script.js.global.SpaGlobal updated. Restart instance.
die global Spa ist aktiviert
hier mal die updateconfig auswertung:
23:02:01.914 info javascript.0 (4092) Debugging of script.js.common.Spa.SpaUpdateConfig was stopped, because started in normal mode 23:02:01.915 info javascript.0 (4092) Start javascript script.js.common.Spa.SpaUpdateConfig 23:02:01.935 info javascript.0 (4092) script.js.common.Spa.SpaUpdateConfig: start 23:02:01.935 info javascript.0 (4092) script.js.common.Spa.SpaUpdateConfig: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 23:02:25.699 info javascript.0 (4092) Stop script script.js.common.Spa.SpaUpdateConfig 23:03:04.144 info javascript.0 (4160) Start javascript script.js.common.Spa.SpaUpdateConfig 23:03:04.223 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: start 23:03:04.223 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 23:03:04.224 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: resetting scriptRunning, because it's false since more than 5 minutes 23:03:04.226 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: *** executing: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 23:03:14.882 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: *** stderr: Error: Command failed: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa *** there were no spas found on your network. 23:03:14.883 info javascript.0 (4160) script.js.common.Spa.SpaUpdateConfig: end
-
@stefan-berlin1 Hallo Stefan,
ärgerlich, der ReferenceError ist jetzt zwar weg, aber er findet den SpaController immer noch nicht*** there were no spas found on your network.
Bitte prüfe noch mal die Datei /SpaController/spa_config.py, ob da wirklich in Zeile 34 die Änderung drinnen steht. Ich füge hier mal eine von mir vorbereitete Version ein: spa_config.py , es wäre mir am liebsten du nimmst die mal. Ich habe die richtige IP schon eingetragen. Danach bitte SpaUpdateConfig.js noch mal ausführen und den Datenpunkt mit der IP-Adresse prüfen. Falls es nicht klappt bitte noch mal die Einträge aus dem Logfile schicken.
-
@rrov1 Hey Stefan,
alles korrekt ist eingetragen hab auch Deine Datei einmal genommen.21:52:39.504 info javascript.0 (9003) Start javascript script.js.common.Spa.SpaUpdateConfig 21:52:39.557 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: start 21:52:39.557 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 21:52:39.557 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: resetting scriptRunning, because it's false since more than 5 minutes 21:52:39.558 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: *** executing: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 21:52:49.791 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: *** stderr: Error: Command failed: python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa *** there were no spas found on your network. 21:52:49.791 info javascript.0 (9003) script.js.common.Spa.SpaUpdateConfig: end
Er findet Ihn nicht die IP (http://172.17.0.4:8087) die er aufruft ist die aus der Simple API
-
@stefan-berlin1 So was ärgerliches , die Aufrufe und die IP vom Simple API sind gut an der Stelle. Führe bitte noch mal folgendes aus dem Container heraus aus:
ping 192.168.188.68
-> sollte einfach gehen, nur als Test.
Dann, das hatten wir schon mal vor ein paar Tagen getestet:python3 from geckolib import GeckoShell GeckoShell.run(["logfile client.log", "discover 192.168.188.68"])
-> er sollte den SpaController finden
Dann noch mal:
python3 /SpaController/spa_config.py b7031c49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa
Und schick mir zumindest von den letzten beiden mal was die Ergebnisse sind.
Danke
-
Funktioniert Ping:
PING 192.168.188.68 (192.168.188.68) 56(84) bytes of data. 64 bytes from 192.168.188.68: icmp_seq=2 ttl=63 time=1.36 ms 64 bytes from 192.168.188.68: icmp_seq=3 ttl=63 time=1.20 ms 64 bytes from 192.168.188.68: icmp_seq=4 ttl=63 time=1.40 ms 64 bytes from 192.168.188.68: icmp_seq=5 ttl=63 time=1.35 ms 64 bytes from 192.168.188.68: icmp_seq=6 ttl=63 time=1.34 ms
2te python3 from geckolip... geht auch findet er:
Starting discovery process...Found 1 spas Connecting to spa `Kirschpool ??` at 192.168.188.68 ... connected! Heater: Temperature 36.0°C, SetPoint 36.0°C, Real SetPoint 24.9°C, Operation Cool ing Pump 1: OFF Pump 2: OFF Waterfall: OFF Lights: OFF WaterCare: Waiting... Smart Winter Mode:Risk: NO Circulating Pump: OFF Ozone: OFF Smart Winter Mode:Active: False Filter Status:Clean: False Filter Status:Purge: False Economy Mode: True Error Sensor: VSP1CommLost, VSP2CommLost Welcome to the Gecko shell. Type help or ? to list commands.
Das letzte klappt nicht:
root@buanet-iobroker-1:/opt/iobroker# python3 /SpaController/spa_config.py b7031c 49-70a1-4f9b-917b-24df54c20973 http://172.17.0.4:8087 javascript.0.Datenpunkte.Sw imSpa /SpaController/spa_config.py Version: 0.2.4 total arguments passed: 4 Connect using client id: b7031c49-70a1-4f9b-917b-24df54c20973 ioBroker Simple Rest API URL: http://172.17.0.4:8087 Base path to datapoints: javascript.0.Datenpunkte.SwimSpa *** looking for spas on your network ... *** there were no spas found on your network.
-
@stefan-berlin1
Hat es was mit der Simple Api vielleicht zu tun und den Ports? -
@stefan-berlin1 Hallo Stefan,
leider nein. Das Skript spa_config.py ist recht simpel gestrickt:- Parameteranzahl prüfen und Parameter in Variablen merken
- Verbindung zum SpaController herstellen (Zeile 34 die du angepasst hast)
- Diverse Werte vom SpaController abrufen und merken
- Werte aufbereiten und per HTTP-Request dem Simple API übergeben.
Wenn bei Punkt 2 keine Verbindung aufgebaut werden kann endet das Skript an der Stelle (es hat ja sowieso nix was es dem Simple API übergeben könnte).
Blöd ist, das es in meinem Testcontainer läuft und die beiden Tests die du ausgeführt hast sind klare Indikatoren dafür das es keine grundsätzlichen Probleme bei dir gibt.
Ich habe leider heute und morgen keine Zeit mehr, am Wochenende bin ich unterwegs in den Urlaub. Ich baue, wenn ich Zeit habe nächst Woche das spa_config.py ordentlich um, so dass du da nicht mehr drin rumändern musst und melde mich noch mal.
-
@rrov1
Mach ganz ruhig, kommt ja nicht auf'n paar Tage an.
Genieß den Urlaub. Ich teste mal nochmal paar Variation -
@stefan-berlin1 Hallo Stefan,
ich habe jetzt die Skripte angepasst, so dass auch von meinem Docker Test Container aus SpaController erkannt werden. Es gibt jetzt einen Datenpunkt in dem du die IP-Adresse vom SpaController hinterlegen musst, damit dieser gefunden wird. Bitte wie folgt vorgehen:- im ioBroker anmelden, ins Verzeichnis SwimSpa wechseln und "git pull" aufrufen. Der git-Client sollte einige Skripte aktualisieren
- Python Skripte aktualisieren: "cp ./Python/*.py /SpaController/"
- Skript: SpaVariablen.js öffnen, Inhalt löschen und mit Inhalt von SpaVariablen.js ersetzen und 1x laufen lassen (Achtung: Aufruf in Zeile 4 ggf. anpassen), Am Ende sollte ein neuer Datenpunkt: javascript.0.Datenpunkte.SwimSpa.discoverIP vorhanden sein.
- Jetzt die IP-Adresse des SpaController im neuen Datenpunkt: javascript.0.Datenpunkte.SwimSpa.discoverIP manuell eintragen.
- Skript: SpaUpdateConfig.js öffnen, Inhalt löschen und mit dem aus git: SpaUpdateConfig.js ersetzen, speichern und ausführen.
Das ist jetzt die spannende Stelle, wenn bei dir alles klappt, sollte der SpaController nun gefunden werden auf Basis seiner IP-Adresse. Es sollten Datenpunkte wie:
- ID
- IPAdresse
- Name
- U_ID
- ....
unterhalb von javascript.0.Datenpunkte.SwimSpa.0 gesetzt sein.
Schreibe mal ob das erfolgreich war.
-
Hallo hoffe Du hattest ein angenehmen Urlaub. Ich hab dies mal getestet und auch nochmal komplett neu gemacht.
Im Datenpunkt taucht es auf. Wenn ich die Spa Update Config Starte kommt noch ein Fehler:
javascript.0 01:58:42.668 info Stopping script script.js.common.Spa.SpaUpdateConfig javascript.0 01:59:07.571 info Stopping script script.js.common.Spa.SpaUpdateConfig javascript.0 01:59:13.261 info Start JavaScript script.js.common.Spa.SpaUpdateConfig (Javascript/js) javascript.0 01:59:13.302 info script.js.common.Spa.SpaUpdateConfig: start javascript.0 01:59:13.302 info script.js.common.Spa.SpaUpdateConfig: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 01:59:13.303 info script.js.common.Spa.SpaUpdateConfig: *** IP(s) to disover: 192.168.188.68 javascript.0 01:59:13.303 info script.js.common.Spa.SpaUpdateConfig: resetting scriptRunning, because it's false since more than 5 minutes javascript.0 01:59:13.303 info script.js.common.Spa.SpaUpdateConfig: *** discovering IP: 0 => 192.168.188.68 javascript.0 01:59:13.304 info script.js.common.Spa.SpaUpdateConfig: *** executing: python /SpaController/spa_config.py 4d9a30ec-aea3-4a77-af1a-01d1ea71c336 http://172.17.0.6:8087 javascript.0.Datenpunkte.SwimSpa 0 192.168.188.68 javascript.0 01:59:13.313 info script.js.common.Spa.SpaUpdateConfig: *** stderr: Error: Command failed: python /SpaController/spa_config.py 4d9a30ec-aea3-4a77-af1a-01d1ea71c336 http://172.17.0.6:8087 javascript.0.Datenpunkte.SwimSpa 0 192.168.188.68 /bin/sh: 1: python: not found javascript.0 01:59:13.313 info script.js.common.Spa.SpaUpdateConfig: end
Ich hab nochmal die befehle ausgeführt und er findet den Spa:
python3 from geckolib import GeckoShell GeckoShell.run(["logfile client.log", "discover 192.168.188.68"])
Gruß Stefan
-
@stefan-berlin1 Hallo Stefan,
ja, der Urlaub war schon gut, nur das Wetter war dieses Jahr an der Costa Brava nicht so gut, ich musste die Tagesaktivitäten etwas aktiver gestalten .Die Shell sagt: /bin/sh: 1: python: not found
Der Python Interpreter sollte auf den Namen "python3" hören (vgl. dein manueller Test). Bitte prüfe in SpaGlobal.js noch mal die Zeile 4, Variable: SPA_EXECUTEABLE, dort sollte "python3" drinnen stehen.