NEWS
Steuerung Gecko in Touch 2 per iob möglich? (Wellis)
-
@bernie Schön, dann hat sich der Aufwand ins aufhübschen der Anleitung ja schon gelohnt . Bis letztes Jahr dachte ich noch, ich wäre der Einzige hier der so eine Steuerung hat/nutzt, denn auch bei den Adapter Requests auf github (https://github.com/ioBroker/AdapterRequests/issues/720) haben bisher nur 3 den Daumen hochgehoben.
-
@rrov1 Hallo, sehr gerne. Es sollten jetzt mehr Daumen sein
Ich habe gerade gesehen, dass ich relativ viele (jede Minute) einen Fehlereintrag im LOG sehe:
State value to set for "javascript.0.Datenpunkte.SwimSpa.0.WasserpflegeSwitch" has to be type "string" but received type "number"
Kannst Du damit was anfangen?
Und noch eine Frage: kann ich den Wasserpflegeindex per Script ändern z.B. von 3 auf 1 oder so?
Das hat bei mir bisher nicht geklappt. Muss ich da noch irgendein Script zusätzlich irgendwo reinpacken?Herzliche Grüße
Bernd -
@bernie Hallo,
ja, mit der Meldung kann ich was anfangen und ich muss gerade feststellen, das du einen Bug gefunden hast :-(.Ist aber ganz leicht zu beheben für dich:
- suche den Datenpunkt in den Objekten raus und klicke rechts auf den Stift zum bearbeiten
- wechsle bitte den Datentyp auf "number" so wie hier:
- danach speichern
Ab diesem Zeitpunkt sollte der Fehler nicht mehr auftauchen.
Ich werde eine neue Version des Skriptes SpaVariablen.js zum anlegen/updaten der Datenpunkte in github hochladen die das behebt. Ist mir glatt peinlich, das ich das übersehen habe.
Zu deiner zweiten Frage:
Nein, der Datenpunkt Wasserpflegeindex ist kein Datenpunkt um eine Steuerungsfunktion auszulösen, es ist ein read-only Datenpunkt. Den Wasserpflegemodus kannst du nur über den Datenpunkt "WasserpflegeSwitch" (was ein denglich von mir) ändern, weil nur auf diesen Datenpunkt ein Skript achtet und dem SpaController Bescheid gibt. Wenn du diesen Datenpunkt per Skript änderst sollte das ganz normal mit setState() gehen, achte bitte darauf, dass ack=false mitgegeben wird (nur dann reagiert mein Skript).
Beispiel:setState("javascript.0.Datenpunkte.SwimSpa.0.WasserpflegeSwitch", {val: 3, ack: false});
Ich hoffe das hilft Dir weiter.
rrov1
-
@rrov1 Hallo,
ja, das Thema mit den Fehlermeldungen im LOG ist weg - Danke dafür
Das mit dem WasserpflegeSwitch hab ich noch nicht verstanden.
Ich versuche mal ein Bild hochzuladen, sodass wir vom gleichen sprechen:wenn ich hier z.B. auf 1 per Auswahlfeld ändere, dann dauert es ein wenig (das Feld ist rot) und dann wird es grün und die Anzeige springt auf - in meinem Fall 2 - zurück.
Muss ich noch irgend etwas einstellen? Die Temperaturverstellung und Pumpen und Licht funktionieren einwandfrei.
LG
Bernd -
@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
-
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