Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ungewollte Temperaturänderung OHNE Interaktion #43

Open
Predator83 opened this issue Jan 13, 2022 · 8 comments
Open

ungewollte Temperaturänderung OHNE Interaktion #43

Predator83 opened this issue Jan 13, 2022 · 8 comments

Comments

@Predator83
Copy link

hallo eq3 community,

Mir ist seit einiger Zeit aufgefallen, dass die Temperatur einiger meiner eq3 Thermostate OHNE Benutzer Interaktion geändert wird. Ich versuche das beobachtet Verhalten mal zu beschreiben:

  • Es scheint als würde die Temperatur auf die Standard Temperatur (ich vermute die ECO Temperatur) geändert, die im Thermostat hinterlegt ist.
  • Konkret ändert sich die Temperatur in dem iobroker Objekt des betroffenen Thermostats; im LOG von Iobroker wird die Änderung nicht protokolliert und es werden auch keine Change State Events getriggert.
  • Die Temperatur am Thermostat selbst wird zunächst nicht geändert, das passiert mit Zeitverzögerung (ich nehme an, wenn der Adapter das nächste Mal das expect skript ausführt und das Thermostat auch per Bluetooth erreicht)
  • Es scheinen nur schlecht per Bluetooth zu erreichende Thermostate betroffen zu sein
  • Der Effekt tritt typischerweise innerhalb einer Stunde auf, aber nicht regelmäßig
  • Der Effekt tritt nicht auf, wenn der eq3 Adapter deaktiviert ist (Temperatur State ändert sich dann nicht; war ein Check um rauszufinden ob andere Adapter ungewollt auf den state zugreifen)
  • Ich bin mir nicht 100% sicher, glaub aber dass das Verhalten seit dem Wechsel auf das expect skript auftritt

Ich nutze die aktuellste Version des Adapter (2.0.5)

Beobachtet jemand von euch ein ähnliches Verhalten oder habe ihr Ideen, an was es liegen könnte?

@Predator83
Copy link
Author

Noch eine Ergänzung zu der Auflistung oben.

mir ist aufgefallen, dass dieses Verhalten (auch) bei der „Fenster auf“ Funktion auftritt. Ein Beispiel:

  1. eq3 auf 23 Grad eingestellt
  2. Fenster geöffnet und dadurch Fenster auf Funktion ausgelöst
  3. eq3 Temperatur über ioBroker auf 23 grad geändert bevor die Temperatur wieder vom Thermostat automatisch höher gestellt wurde —> Thermostat stellt die Temperatur auf die eco Temperatur
  4. eq3 Temperatur wieder über ioBroker höher gestellt —> gleiches Verhalten wie unter 3)
  5. irgendwann bleibt dann die Temperatur wieder so wie sie sein am eq3 via ioBroker eingestellt wurde.

ich bin mir ehrlich gesagt nicht sicher ob das Verhalten ein bug oder feature ist; vielleicht eine „unglücklich“ Kombi aus eq3 Adapter und eq3 Automatik bei Fenster auf?

@Schnup89
Copy link
Owner

Hey hatte deinen Eintrag vor 12Tagen irgendwie übersehen.

Ich Versuche Mal etwas zu dem Problem rauszufinden.

@Predator83
Copy link
Author

Cool, danke dir. Ist leider relativ schwer zu beschreiben bzw. Zu reproduzieren. Meld dich sehr gerne, falls du mehr Infos brauchst .

@Schnup89
Copy link
Owner

Ich würde als workaround den Status auslesen und keine Interaktion mit dem Thermostat triggern solange dieser im window Open Mode ist.
Ich schaue mir die Tage den Code an.

@Predator83
Copy link
Author

ein Update:

  • "Fenster auf" Modus verursacht auch ein nicht ganz nachvollziehbares Verhalten was Temperatur Änderungen angeht
  • das oben genannte Verhalten hat aber eine andere Ursache

Vielleicht kommen wir der Sache hier etwas näher:

  • Ich hab mir einen neuen USB Bluetooth Dongle für den Raspberry Pi gekauft ("ZEXMTE [Neues Upgrade] Bluetooth Adapter 5.1", von Amazon) der eine deutlich bessere Reichweite hat als der interne Bluetooth Chip das Raspis. Damit gelingt mir jetzt JEDER Kommunikationsversuch mit den Thermostaten über die Shell mit dem expect skript.
  • Interessanterweise tauchen aber im iobroker Log immer noch Verbindungsfehler auf.
  • Jetzt der interessante Teil: Wenn ich in 2 Shells gleichzeitig das Expect Skript starte, dann krieg ich nur eine Antwort von der Shell, in der ich das Skript zuerst gestartet habe, in der anderen krieg ich ein "Connection Failed".

Ich hab nicht nachvollzogen, wie du im Adapter das Skript aufrufst (v.a. in welchen zeitlichen Abständen), wenn du dir alle x Minuten das Update von den Thermostaten ziehst. Könnte das ne Ursache für viele gescheiterte Verbindungsversuche sein?

Was hat das ganze jetzt mit ungewollten Temperatur Änderungen zu tun? Meine These aktuell ist, dass ein gescheitertes Auslesen des Thermostats eine Temperatur Änderung im Iobroker nach sich ziehen kann.

Ich werde jetzt mal beobachten, ob mit dem neuen USB Dongle diese Temperatur Änderungen weiterhin auftreten oder ob sich das damit erledigt hat.

Ich hoffe ich hab die Situation einigermaßen verständlich rübergebracht; ich hab leider immer noch kein 100%iges Verständnis für das Verhalten sondern denk hier in dem Beitrag einfach mal laut :-)

@Schnup89
Copy link
Owner

Danke für deine ausführliche Info!

Ja, das expect Script kann nur einmal ausgeführt werden, deshalb werden Kommandos nacheinander ausgeführt. Es kann passieren das dazwischen eine Abfrage der Thermostate laut Intervall kommt, jedoch sind auch hier wie bei den kommandos Wiederholungen implementieren sollte es nicht funktionieren.

Solltest du die Thermostate mit einem Script oder per Hand schalten, sollte immer ein Versatz von mind. 30 Sekunden zwischen den Schaltungen sein.

Ich schaue Mal ob ich einen Zusammenhang finde zwischen falsch ausgelesen und Temperatur verändert

@Predator83
Copy link
Author

ok, wie machst du das dann, wenn du viele Thermostate hast? Ich hab in meinem Fall 9 Thermostate, die ich ansteuere.

Die 9 Thermostate werden alle 10 Minuten ausgelesen, mit jeweils 10 Wiederholungen. Das klingt so als ob es viele Möglichkeiten für überlappende Ausführung von expect gibt.

Mit dem alten USB Dongle (schlechtere Reichweite) hab ich übrigens auch ab und zu folgende Fehlermeldung gekriegt, wenn ich ein Thermostate über die Shell ausgelesen habe:

can't read "d": no such variable while executing "return $d" (procedure "hexToDecimal" line 3) invoked from within "hexToDecimal [lindex $raw_timer [expr 2 * $event + 1 ]]" (procedure "readTimer" line 13) invoked from within "readTimer $day" (procedure "readTimers" line 5) invoked from within "readTimers" (procedure "init" line 14) invoked from within "init $INIT(timer)" ("^timers$" arm line 2) invoked from within "switch -regexp $c { ^sync$ { init $INIT(mode) } ^comforteco.* { checkArgs $c 2 "comforteco" {^comforteco [0-9]{1,2}\.?[05]? [0..." (procedure "doCommand" line 10) invoked from within "doCommand" (file "/opt/iobroker/node_modules/iobroker.eq3-thermostat/eq3.exp" line 1265)

Kann das zu ner Fehlinterpreation führen im Sinne von setzt die Temperatur auf Eco?

@Predator83
Copy link
Author

Hier noch in sinnvoll formatiert als Datei:

ResponseThermostat.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants