NEWS
Steuerung Gecko in Touch 2 per iob möglich? (Wellis)
-
hey, ist ja schön, dass die software ja doch noch von weiteren usern benutzt wird und sind diene bemühungen lohnen @rrov1
-
@rrov1 said in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
@bernie Hallo,
hm, also das von dir geschilderte Verhalten kann, geschuldet der Art und Weise wie ich das implementiert habe, tatsächlich auftreten. Ich hole mal kurz aus, damit du das nachvollziehen kannst, danach musst du mal ins Protokoll schauen und einen Auszug bereitstellen.
- Die Implementierung nutzt ja die geckolib im Hintergrund. Mit jedem Aufruf eines Skriptes muss eine Verbindung zum SpaController aufgebaut werden. Das dauert bei mir so ca. 14 Sekunden, die eigentliche Aktion (Status auslesen oder etwas Schalten) ca. 1 Sekunde.
- Exakt jede Minute läuft das Skript: SpaUpdateValues.js, zur Aktualisierung der Datenpunkte, d.h. die ersten 15 Sekunden einer jeden Minute sind grundsätzlich von dem Skript blockiert.
- Wenn du jetzt den Datenpunkt "WasserpflegeSwitch" veränderst, dann wird richtiger Weise zuerst mal der neue Wert in der Farbe rot dargestellt (rot, weil ack=false, also von dir manuell oder per VIS wurde der Datenpunkt geändert). Jetzt kommt es darauf an, wann du den Datenpunkt geändert hast:
A) Zwischen Sekunde 0 und 15: Dann muss das Skript zum ändern des Wasserpflegemodus erst mal warten bis das minütliche Update durch ist, welches blöder Weise auch noch den aktuellen Wert des SpaControllers einstellt (und in grün, weil dieses Skript darf ack=true setzen). Erst danach kann das Skript zum ändern des Wasserpflegemodus loslaufen und diesen verändern und sollte, wenn es sauber läuft auch den von dir gewünschten Wasserpflegemodus im SpaController aktivieren und im Datenpunkt setzen.
B) Zwischen Sekunde 16 und 59: Dann läuft das Skript zum ändern des Wasserpflegemodus halt sofort los, braucht ca. 15 Sekunden um dies am SpaController zu setzen und im Datenpunkt einzustellen.
Das wie es "normal" tickt. Das ist nicht so prickelnd, weil man wirklich 15 Sekunden warten muss, aber es geht erst mal nicht besser, weil ich sonst irgendwie dauerhaft eine Verbindung mit der geckolib zum SpaController aufrecht erhalten müsste. Das muss ich aber erst mal erforschen, ganz ehrlich, Python ist nicht die Programmiersprache.
Aber egal, um herauszubekommen was passiert brauche ich vom ioBroker-Protokoll mal einen Auszug. Stelle mal folgenden Filter ein:
und poste mal den Auszug aus dem Protokoll hier, also + - 2 Minuten herum um das ändern vom Wasserpflegemodus.rrov1
Hallo rrov1,
ich hab jetzt eine ganze Zeit rumprobiert aber bisher keine Werte vom Spa gesehen. In deinem Skript sind die Zeilen //console.log("*** pyScriptFolder: " + pyScriptFolder); ja noch auskommentiert. Muss ich die aktivieren?
Mit einem kleinen Blockly Script hab ich es probiert. Der Wert ändert sich auf z.B. 3 - aber bleibt die ganze Zeit rot. WIrd also anscheinend nicht verarbeitet.
LG
Bernd -
@bernie Ok, bitte prüfe mal ob die wie in der Anleitung unter Schritt 4 beschrieben das Skript: WatercareMode.js in JavaScript Adapter importiert und auch aktiviert hast. Das Skript ist dafür zuständig, auf die Änderung des Datenpunktes zu reagieren (Zeile 2-4). Evtl. kannst du mal einen Screenshot aus dem JavaScript Adapter beilegen, es müsste so aussehen:
Die Kommentare kannst du gerne entfernen (also Zeilen 12, 15, 17 und auch 22), allerdings ist schon in Zeile 8 ein console.log()-Aufruf drinnen der, wenn der Trigger auf Zeile 2 funktioniert zu einer Protokollausgabe der Form: "script.js.Spa.WatercareMode: start" führen sollte.
-
@rrov1 Hallo, Asche auf mein Haupt..... Ich hatte das Skript natürlich nicht angelegt
Nachdem ich es lt. Anleitung angelegt habe, funktionierte es auf Anhieb.
Also ein großes Sorry wenn ich Dir Kopfzerbrechen bereitet habe.
Nochmals vielen Dank für die Skripte und die Zeit die Du dafür und jetzt auch noch für meine Fragen aufgewendet hast.
Viele herzliche Grüße
Bernd -
@bernie Kein Problem, sowas bereitet mir noch nicht ansatzweise Kopfschmerzen, da habe ich schlimmeres erlebt .
Momentan sieht's leider so aus, als das ich es bei der bestehenden Logik und damit etwas behäbigen "Schaltgeschwindigkeit" belasse. Ich habe am letzten WE mal MQTT geckoclient ausprobiert, welcher auch grundsätzlich funktioniert und schneller schaltet bei mir aber auch erheblich mehr CPU Last verursacht als meine Skripte. Warum kann ich mir ad hoc nicht erklären, aber das Jahr hat ja noch ein paar Wochenenden, vielleicht kann ich da mal noch Licht ins Dunkel bringen.
-
@rrov1 Ich hatte wieder mal etwas Zeit zum experimentieren und habe an der Performanceschraube der Skripte erfolgreich gedreht. Alle aktualisierten Python-Skripte laufen jetzt erheblich schneller (unter 12 Sekunden bei mir), so dass die Reaktionsgeschwindigkeit auf Schaltbefehle jetzt in einem brauchbareren Rahmen liegt. Nebenbei konnte ich auf meinem System auch 50% weniger CPU-Last für die Python-Skripte beobachten (von 5% auf ~2,5%).
Ein Update (Quelle: github) lohnt sich denk ich.
Vorgehensweise beim Update siehe: github, die Kurzversion:
- SpaVariablen.js ersetzen und laufen lassen (aufpassen auf die Parameter)
- alle Python-Skripte ersetzen
Breaking changes: - Die read only Datenpunkte: WasserpflegeIndex und Wasserpflege sind entfallen. Als Ersatz dient: WasserpflegeSwitch. Wenn die DP irgendwo verwendet wurden, muss das umgestellt werden.
-
konnte ich hier nicht die zirkulationspumpe schalten? ist bei mir read only.
ist a bissl her. habe auch nicht die aktuelleste version. sollte aber eigenlich doch klappen oder?
Brauche das, da ich nur dann den Gasdurchlauferhitzer anschalten kann.
-
ah sehe gearde, man konnte licht und die pumpen schalten. bis jetzt nicht die zirkulationspumpe.
@rrov1 ist das geplant/möglich? -
@tklein Die Zirkulationspumpe kann man leider überhaupt nicht einzeln schalten. Die geckolib, welche als Basis dient hat keine Funktion dafür und mir ist aus meiner in.touch 2 App auch keine Funktion dafür bekannt. Aus dem Grund ist der Datenpunkt auch nur read only.
-
@rrov1 ja, habe ein issue auf github bei der geckolib aufgemacht. Ich kann die bei mir per App separat schalten.
Bei einem Adapterentwickler ist der entsprechende Adapter auf Platz 4. Ich hoffe, dass wir demnächst den Adapter direkt nutzen können. Wobei deren Gecko-Api nicht so pralle sein sollen. -
@tklein Moin,
lange nichts passiert hier. Bekomme demnächst meine Gecko in touch 2 und würde die natürlich gerne iobrokern.
Gibr's was Neues zum Thema Adapter?
Thomas -
Hallo Zusammen,
ich bin ein kompletter Neueinsteieger im iobroker. Ich kenne mich weder mit Linux, noch mit Phyton aus, rudimentär mit JavaScript.
Ich habe auch einen in touch 2 Adapter. Weiterhin habe ich eine PV. Ziel soll sein, die Temperatur hochzusetzen (aufheizen) wenn Überschussstrom in der PV existiert und Heizen ausschalten wenn die Sonne wieder weg ist. Ich habe meine PV bereits abfragen können und die aktuellen Werte im VIS anzeigen können. die Datenpunkte werden ständig aktualisiert. Bei diesem Adapter (in touch 2) bin ich nur zu dem Punkt gekommen, dass ich mit eurem Script die leeren Datenpunkte anlegen konnte, sie werden allerdings nicht befüllt.- Wie kann ich die Datenpunkte mit aktuellen Werten aus der In touch 2 aktualisieren? Ich habe leider mit der Suche noch nichts passendes gefunden.
- Wie kann ich Werte in eine Datenbank schreiben und wieder abrufen (welche DB ist da zu empfehlen? influxDB?)
Ich hoffe ich stelle mich nicht zu dumm an und ihr könnt mir helfen, bzw. einen Tipp geben wo ich weitere Infos finden kann.
VG -
@iobroker-neuling hi, willkommen im club
welchen "in touch 2 Adapter" meinst du genau?
Meinst du evtl. diese DP?
-
@tklein Herzliches Dankeschön für das Willkommen
ich habe den Gecko in touch 2und genau diese DPs meine ich:
-
@iobroker-neuling
was hast du bisher genau gemacht? In de Readme steht das schon ziemlich gut beschrieben.zu deinen Punkten:
- du kannst zyklisch (jede Minute) ein fertiges Skript aufrufen. Damit werden die Werte "abgeholt" und in den iob geschrieben
- was genau möchtest du machen? Nur eine Historie oder auch die historischen Daten verändern können?
VG
Thomas -
@iobroker-neuling Wenn du die Datenpunkte schon erstellt hast, dann solltest du jetzt mit Schritt 3 der Anleitung weitermachen. Es müssen wie beschrieben 2 Skripte im Javascript Adapter laufen, eins was aller paar Stunden sich eher selten ändernde Werte ausliest und eins was jede Minute ein paar Werte holt.
Wenn du nicht damit zurecht kommst kannst du mir auch ein Nachricht schicken, dann helfe ich dir. Ich gebe zu das mit den Skripten ist komplizierter wie ein Adapter, aber auch nicht so kompliziert. Wenn's einmal läuft musst du nicht mehr viel dran machen, danach dann die Themen wie Historie und Überschussstromsteuerung .
-
Hallo,
ich bin nun auch stolzer Besitzer eines Wellis Whirlpools mit in Touch 2.
Ich benutze eine Synology mit IO Broker im Docker. Node 18.20.2 NPM10.5.0
Die Skripte und Datenpunkte haben Problemlos geklappt.
Python ist auch installiert.
Ich hab jedoch ein Problem das ich Pip nicht installiert bekomme:
Im Terminal sagt er mir dann folgendes:root@buanet-iobroker-1:/opt/iobroker# pip install geckolib bash: pip: command not found
wenn ich über den Github installer gehe kommt folgendes:
$ iobroker url https://github.com/gazoodle/geckolib --host buanet-iobroker-1 --debug Installing gazoodle/geckolib#973b04d56e93fa66dad95bfac8f00dc36d8057f1... (System call) npm WARN tarball tarball data for github:gazoodle/geckolib#973b04d56e93fa66dad95bfac8f00dc36d8057f1 (null) seems to be corrupted. Trying again. npm WARN tarball tarball data for github:gazoodle/geckolib#973b04d56e93fa66dad95bfac8f00dc36d8057f1 (null) seems to be corrupted. Trying again. npm ERR! syscall opennpm ERR! path /opt/iobroker/.npm/_cacache/tmp/git-cloneNuRZZ9/package.json host.buanet-iobroker-1 Cannot install gazoodle/geckolib#973b04d56e93fa66dad95bfac8f00dc36d8057f1: 254 ERROR: Process exited with code 25
Ansonsten sagt er mir beim Script Spa Update ausführen folgendes.
01:21:19.552 info start 01:21:19.557 info *** executing: python3 /SpaController/spa_config.py 7a1a567f-b6d9-411c-bff5-f81387a86134 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 01:21:19.665 info *** stderr: Error: Command failed: python3 /SpaController/spa_config.py 7a1a567f-b6d9-411c-bff5-f81387a86134 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa Traceback (most recent call last): File "/SpaController/spa_config.py", line 4, in <module> import requests ModuleNotFoundError: No module named 'requests' 01:21:19.666 info end
Ich würde mich sehr freuen wenn ich es zum laufen bekomme da ich gerne Sonnenüberschuss der PV gern steuern würde
Gruß Stefan
-
@stefan-berlin1 Hallo Stefan,
ich würde mich der Einfachheit halber darauf konzentrieren, das wir pip ans laufen bekommen. Führe mal bitte mal folgendes aus (Quelle) :python3 --version python3 -m pip --version
aus und stelle das Ergebnis mal bereit.
-
@rrov1 sagte in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
python3 --version
Na klar das denke ich auch das dies erst laufen muss.
root@buanet-iobroker-1:/opt/iobroker# python3 --version Python 3.11.2 root@buanet-iobroker-1:/opt/iobroker# python3 -m pip --version pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)
Ich hoffe dies hilft?
hab auch nochmal probiert geckolib zu installieren
root@buanet-iobroker-1:/opt/iobroker# pip install geckolib error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.11/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation o r OS distribution provider. You can override this, at the risk of breaking your P ython installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification.
-
@stefan-berlin1 sagte in Steuerung Gecko in Touch 2 per iob möglich? (Wellis):
error: externally-managed-environment
der Fehler ist aufzuheben mit:
sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED
nun geht es auch geckolib lässt sich installieren.
So nun die IoBroker Logfile da hab ich noch 1 Fehler:
2024-04-29 22:19:00.062 - info: host.buanet-iobroker-1 instance system.adapter.javascript.0 started with pid 2577 2024-04-29 22:19:01.237 - info: javascript.0 (2577) starting. Version 7.8.0 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.20.2, js-controller: 5.0.19 2024-04-29 22:19:01.881 - info: javascript.0 (2577) requesting all states 2024-04-29 22:19:01.882 - info: javascript.0 (2577) requesting all objects 2024-04-29 22:19:02.453 - info: javascript.0 (2577) received all objects 2024-04-29 22:19:02.456 - info: javascript.0 (2577) received all states 2024-04-29 22:19:04.540 - info: javascript.0 (2577) Start javascript script.js.common.Spa.SpaVariablen 2024-04-29 22:19:04.563 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** start: createDatapoints(nDevCnt: 1, nPumpCnt: 3, createWaterfall: true) v0.2.5 2024-04-29 22:19:04.567 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** end: createDatapoints 2024-04-29 22:19:04.567 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.581 - info: javascript.0 (2577) Start javascript script.js.common.Spa.LightToggle 2024-04-29 22:19:04.583 - info: javascript.0 (2577) script.js.common.Spa.LightToggle: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.589 - info: javascript.0 (2577) Start javascript script.js.common.Spa.PumpSwitches 2024-04-29 22:19:04.591 - info: javascript.0 (2577) script.js.common.Spa.PumpSwitches: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.592 - info: javascript.0 (2577) Start javascript script.js.common.Spa.SpaMoveTargetTemp 2024-04-29 22:19:04.629 - info: javascript.0 (2577) script.js.common.Spa.SpaMoveTargetTemp: registered 1 subscription, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.629 - info: javascript.0 (2577) Start javascript script.js.common.Spa.SpaUpdateConfig 2024-04-29 22:19:04.633 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateConfig: start 2024-04-29 22:19:04.634 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateConfig: registered 1 subscription, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.636 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateConfig: *** executing: python3 /SpaController/spa_config.py 7a1a567f-b6d9-411c-bff5-f81387a86134 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 2024-04-29 22:19:04.647 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** leaving guid unchanged 2024-04-29 22:19:04.649 - info: javascript.0 (2577) Start javascript script.js.common.Spa.SpaUpdateValues 2024-04-29 22:19:04.657 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateValues: registered 1 subscription, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.658 - info: javascript.0 (2577) Start javascript script.js.common.Spa.SpaVariablen 2024-04-29 22:19:04.660 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** start: createDatapoints(nDevCnt: 1, nPumpCnt: 3, createWaterfall: true) v0.2.5 2024-04-29 22:19:04.662 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** end: createDatapoints 2024-04-29 22:19:04.662 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.662 - info: javascript.0 (2577) Start javascript script.js.common.Spa.TargetTemp 2024-04-29 22:19:04.665 - info: javascript.0 (2577) script.js.common.Spa.TargetTemp: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.717 - info: javascript.0 (2577) Start javascript script.js.common.Spa.WatercareMode 2024-04-29 22:19:04.719 - info: javascript.0 (2577) script.js.common.Spa.WatercareMode: registered 2 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2024-04-29 22:19:04.751 - info: javascript.0 (2577) script.js.common.Spa.SpaVariablen: *** leaving guid unchanged 2024-04-29 22:19:13.132 - info: admin.0 (142) <== Disconnect system.user.admin from ::ffff:172.17.0.1 javascript 2024-04-29 22:19:14.933 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateConfig: end 2024-04-29 22:20:00.012 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateValues: start 2024-04-29 22:20:00.022 - info: host.buanet-iobroker-1 instance system.adapter.dwd.0 started with pid 2594 2024-04-29 22:20:00.019 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateValues: *** executing: python3 /SpaController/spa_updateBulk.py 7a1a567f-b6d9-411c-bff5-f81387a86134 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 2024-04-29 22:20:00.253 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateValues: *** stderr: Error: Command failed: python3 /SpaController/spa_updateBulk.py 7a1a567f-b6d9-411c-bff5-f81387a86134 http://172.17.0.4:8087 javascript.0.Datenpunkte.SwimSpa 2024-04-29 22:20:00.253 - info: javascript.0 (2577) script.js.common.Spa.SpaUpdateValues: end
Dort macht er
python3 /SpaControllerEin Leerzeichen nach dem phyton3 hab in der SpaGlobal kein Leerzeichen drin:
// Pfade für die Datenpunkablage const BASE_ADAPTER = "javascript.0"; const BASE_FOLDER = "Datenpunkte.SwimSpa"; const SPA_EXECUTEABLE = "python3" const PY_SCRIPTS_FOLDER = "/SpaController"
wo ist noch etwas konfiguriert?
wie verbindet er sich mit dem Pool?