Neues Modul: EQ3 Bluetooth Thermostat (10_EQ3BT)

Begonnen von dominik, 12 November 2016, 11:45:15

Vorheriges Thema - Nächstes Thema

dominik

@mele, danke, das sind hilfreiche Infos! Schaue ich mir am Abend an.

@Master, zu der Geschwindigkeit, setze mal alle auf keep_connected=on und starte dann FHEM neu. Nach dem FHEM Neustart dann die einzelnen Remotes neu starten.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

#526
Moin,

das ist schon geschehen - habe gerade einen lustigen Effekt - Thermostat gilt als Offline ich kann es aber zu 100% steuern :-D
Habe gerenell mal alles neu gestartet. Und das keep_connected hab ich ja bereits schon an bei allen.


- Es wird als offline aufgeführt ich setze eine Temperatur - die wird gesetzt und danach geht es wieder auf das was vorher war 20.5 (denke mal weil der status offline ist)


Zitat2020-10-17 13:32:44 PythonModule Arbeitszimmer_Thermostat desiredTemperature 15.0
2020.10.17 13:32:45 4 : BindingsIo: start PythonFunction: Arbeitszimmer_Thermostat => Set (34106502)
2020.10.17 13:32:45 4 : BindingsIo: <<< WS: {"argsh":{},"defargsh":{},"defargs":["Arbeitszimmer_Thermostat","PythonModule","eq3bt","00:1A:22:0C:E8:EA"],"function":"Set","args":["Arbeitszimmer_Thermostat","desiredTemperature","20.5"],"msgtype":"function","NAME":"Arbeitszimmer_Thermostat","id":34106502,"PYTHONTYPE":"eq3bt"}
2020.10.17 13:32:45 5 : SW: 7b226172677368223a7b7d2c226465666172677368223a7b7d2c2264656661726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c22507974686f6e4d6f64756c65222c226571336274222c2230303a31413a32323a30433a45383a4541225d2c2266756e6374696f6e223a22536574222c2261726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c226465736972656454656d7065726174757265222c2232302e35225d2c226d736774797065223a2266756e6374696f6e222c224e414d45223a22417262656974737a696d6d65725f546865726d6f73746174222c226964223a33343130363530322c22505954484f4e54595045223a226571336274227d
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead WithTimeout
2020.10.17 13:32:45 4 : BindingsIo: >>> WS: {"argsh": {}, "defargsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "function": "Set", "args": ["Arbeitszimmer_Thermostat", "desiredTemperature", "20.5"], "msgtype": "function", "NAME": "Arbeitszimmer_Thermostat", "id": 34106502, "PYTHONTYPE": "eq3bt", "finished": 1, "returnval": ""}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: start handling - 1
2020.10.17 13:32:45 5 : processMessage: {"argsh": {}, "defargsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "function": "Set", "args": ["Arbeitszimmer_Thermostat", "desiredTemperature", "20.5"], "msgtype": "function", "NAME": "Arbeitszimmer_Thermostat", "id": 34106502, "PYTHONTYPE": "eq3bt", "finished": 1, "returnval": ""}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: finished handling - 0
2020.10.17 13:32:45 4 : BindingsIo: end PythonFunction: Arbeitszimmer_Thermostat => Set (34106502) - result:
2020.10.17 13:32:45 4 : BindingsIo: start PythonFunction: Arbeitszimmer_Thermostat => Set (78641639)
2020.10.17 13:32:45 4 : BindingsIo: <<< WS: {"NAME":"Arbeitszimmer_Thermostat","args":["Arbeitszimmer_Thermostat","?"],"function":"Set","msgtype":"function","id":78641639,"PYTHONTYPE":"eq3bt","argsh":{},"defargsh":{},"defargs":["Arbeitszimmer_Thermostat","PythonModule","eq3bt","00:1A:22:0C:E8:EA"]}
2020.10.17 13:32:45 5 : SW: 7b224e414d45223a22417262656974737a696d6d65725f546865726d6f73746174222c2261726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c223f225d2c2266756e6374696f6e223a22536574222c226d736774797065223a2266756e6374696f6e222c226964223a37383634313633392c22505954484f4e54595045223a226571336274222c226172677368223a7b7d2c226465666172677368223a7b7d2c2264656661726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c22507974686f6e4d6f64756c65222c226571336274222c2230303a31413a32323a30433a45383a4541225d7d
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead WithTimeout
2020.10.17 13:32:45 4 : BindingsIo: >>> WS: {"NAME": "Arbeitszimmer_Thermostat", "args": ["Arbeitszimmer_Thermostat", "?"], "function": "Set", "msgtype": "function", "id": 78641639, "PYTHONTYPE": "eq3bt", "argsh": {}, "defargsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "finished": 1, "returnval": "Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off"}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: start handling - 1
2020.10.17 13:32:45 5 : processMessage: {"NAME": "Arbeitszimmer_Thermostat", "args": ["Arbeitszimmer_Thermostat", "?"], "function": "Set", "msgtype": "function", "id": 78641639, "PYTHONTYPE": "eq3bt", "argsh": {}, "defargsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "finished": 1, "returnval": "Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off"}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: finished handling - 0
2020.10.17 13:32:45 4 : BindingsIo: end PythonFunction: Arbeitszimmer_Thermostat => Set (78641639) - result: Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off
2020.10.17 13:32:45 4 : BindingsIo: start PythonFunction: Arbeitszimmer_Thermostat => Set (94869377)
2020.10.17 13:32:45 4 : BindingsIo: <<< WS: {"function":"Set","args":["Arbeitszimmer_Thermostat","?"],"msgtype":"function","NAME":"Arbeitszimmer_Thermostat","PYTHONTYPE":"eq3bt","id":94869377,"defargsh":{},"argsh":{},"defargs":["Arbeitszimmer_Thermostat","PythonModule","eq3bt","00:1A:22:0C:E8:EA"]}
2020.10.17 13:32:45 5 : SW: 7b2266756e6374696f6e223a22536574222c2261726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c223f225d2c226d736774797065223a2266756e6374696f6e222c224e414d45223a22417262656974737a696d6d65725f546865726d6f73746174222c22505954484f4e54595045223a226571336274222c226964223a39343836393337372c226465666172677368223a7b7d2c226172677368223a7b7d2c2264656661726773223a5b22417262656974737a696d6d65725f546865726d6f73746174222c22507974686f6e4d6f64756c65222c226571336274222c2230303a31413a32323a30433a45383a4541225d7d
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead
2020.10.17 13:32:45 5 : BindingsIo: DevIo_SimpleRead WithTimeout
2020.10.17 13:32:45 4 : BindingsIo: >>> WS: {"function": "Set", "args": ["Arbeitszimmer_Thermostat", "?"], "msgtype": "function", "NAME": "Arbeitszimmer_Thermostat", "PYTHONTYPE": "eq3bt", "id": 94869377, "defargsh": {}, "argsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "finished": 1, "returnval": "Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off"}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: start handling - 1
2020.10.17 13:32:45 5 : processMessage: {"function": "Set", "args": ["Arbeitszimmer_Thermostat", "?"], "msgtype": "function", "NAME": "Arbeitszimmer_Thermostat", "PYTHONTYPE": "eq3bt", "id": 94869377, "defargsh": {}, "argsh": {}, "defargs": ["Arbeitszimmer_Thermostat", "PythonModule", "eq3bt", "00:1A:22:0C:E8:EA"], "finished": 1, "returnval": "Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off"}
2020.10.17 13:32:45 5 : BindingsIo: QUEUE: finished handling - 0
2020.10.17 13:32:45 4 : BindingsIo: end PythonFunction: Arbeitszimmer_Thermostat => Set (94869377) - result: Unknown argument ?, choose one of on:noArg off:noArg desiredTemperature:slider,4.5,0.5,30,1 updateStatus:noArg boost:on,off mode:manual,automatic eco:noArg comfort:noArg childlock:on,off
2020-10-17 13:32:45 PythonModule Arbeitszimmer_Thermostat desiredTemperature 20.5
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

#527
Bei dem Phänomen reichte ein Neustart der Remotes - hab mir dafür nun ein DOIF gebaut :-)

([global:"INITIALIZED"]) (({system("ssh touchpanel sudo systemctl restart fhem_pythonbinding.service &")})) (({system("ssh server sudo systemctl restart fhem_pythonbinding.service &")}))

Beim Start von FHEM starten die einmal neu.



Fazit - ich halte mich jetzt mal was zurück und schaue wie es läuft :-)
Bisher läuft es nun wieder sehr sauber - hab nun solange ich meine Heizungen steuern will aktiv - das keep_connected drin - schalte ich meine Steuerung ab wird das auf off gesetzt bei allen.
Mal sehen wie das damit Batterie zerrt.
Sollte ich dann was finden, das mir irgendwie klar als Fehler auffällt oder eine Kombination die zu etwas komischen führt mach ich piep.

Soweit läuft es wohl alles... manchmal kann der Neustart der Remotes echt helfen um es wieder sauber zu bekommen.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Mir ist noch nicht klar wo die Ursache fuer den "ConnectionClosedError" ist. Laut websockets Doku liegt das an Netzwerkproblemen, das kann ich mir aber nicht vorstellen, da ich den Fehler auch auf localhost heute hatte.

Ich habe noch einen kleinen Bug gefunden der hoffentlich ein Reconnect ermoeglicht um aktuell notwendigen Restarts zu vermeiden. Ich teste es mal bei mir...
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

#529
Moin,

ich hab gerade festgestellt dass alle meine Thermostate offline sind.
Der Grund liegt hier aber woanders :-D

An meinem Pi3b+ sagt

bluetoothctl scan on
"No default controller available"

:-D wtf ;D Sind 7 Thermostate doch zuviel für einen Controller dauerhaft? :-D

Mal sehen ob ich was raus finde warum wieso...
*Edit.. tja hab dann das Logging mal wieder eingeschaltet auf dem Pi :-D


Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Hast du im Log was dazu gefunden? 7 Thermostate auf einem RPi? Ich meine mal gelesen zu haben, dass max. 5 BLE Verbindungen aktiv sein koennen.

Hier ein guter Artikel dazu:
https://dev.classmethod.jp/articles/raspberry-pi-3b-plus-max-ble-connection-en/
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

#531
 ;D ;D ;D ;D

Ah schön, dann war es ja das direkt :-D

Ne hatte leider das Logging aus um die SD Card zu schonen - ich schau jetzt nochmal (ich vermute es ist wieder soweit), ob etwas sichtbar ist.

*edit net diese Nacht lief es sauber durch - hab es aber nun dennoch wieder auf 2 Geräte aufgeteilt :-) einmal 4 einmal 3 Thermostate.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Ich glaube den Connection Closed Error nun endlich gefunden zu haben. Update mit Fix ist online.

Folgendes habe ich auch eingebaut, wenn die Connection verloren geht, macht das fhem_pythonbinding ein exit und wird dann durch FHEM (am Remote durch systemd) neu gestartet. Das sollte eigentlich nicht mehr auftreten, aber sicher ist sicher.

Zu den Bluetooth issues:
Hatte heute auch auf einem Pi das Problem, dass keine Verbindung mehr moeglich war. Hatte dann ein
sudo systemctl restart bluetooth
sudo hciconfig hci0 reset

ohne Neustart von irgendwas gemacht und danach ging alles wieder. Ich koennte das auch im Code integrieren (pygatt macht das), dass eventuell alle 24h oder so ein Reset gemacht wird. Was haltet ihr davon?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

Eine gute Idee! Mit dem restart und reset.

Das schadet ja null und man nutzt die Bluetooth Stacks ja eh nicht noch für etwas weiteres (so wäre mein Ansatz).
Aber lass doch einfach das mittels Attribut in den jeweiligen remotes oder main einfach schalten ;-)


Direkt mal updaten :-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Nachdem das BLE Thema eher unabhaengig von eq3bt ist (da es fuer alle BLE Module gilt), habe ich ein extra Modul dafuer gemacht:
define py_ble_reset PythonModule ble_reset

Dort kann man dann die Stunden einstellen wann in welchen Intervallen das Reset passieren soll oder auf manual stellen und mit "set ... resetnow" zu beliebigen Zeiten ein Reset machen.

Das Modul macht nichts anderes als die beiden Befehle per sudo auszufuehren:
sudo systemctl restart bluetooth
sudo hciconfig hci0 reset
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

mhh wie macht man das dann mit den remotes?

also mein main hat ja kein BT aber zwei remotes  ;D

Müsste ja dann irgendwie  über die python verbindung an den remote gehen... ist das so?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Genau, so ist es.

Einfach beim IODev das passende BindingsIo Device auswaehlen, dann geht das Remote oder Lokal, wo man es will. Wenn man es Remote UND Lokal haben moechte, muss man 2 Devices definieren.

Das ist das coole am fhem_pythonbinding, JEDES Modul geht Remote und Lokal, man muss dafuer nichts spezielles entwickeln. :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

Ah also pro reset für einen remote einen device.

Joa das ist nice mit dem Python ;-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

dominik

Genau, pro Remote ein Device. Wo es läuft wird über IODev definiert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Master_Nick

 :) Sieht bisher traumhaft aus:

- 2 remotes mit 7 Thermostaten (einmal 4 und einmal 3 am jeweiligen remote [Pi + Ubuntu LTS])
- keep_connected = off (dennoch unfassbar gute Response Zeit - eigentlich - nein nicht eigentlich sondern instant)
- kein Thermostat offline bisher
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)