NEWS
Test Adapter Tado v0.3.0-x (PreRelease)
-
-
Hi @HGlab
danke für das feine Update!
Beim einschalten meiner Tado AC erhalte ich leider immer nachfolgenden Error. Der Adapter wird dann gekillt und startet neu. Die AC bleibt leider aus. Hast du eine Idee?
Viele Grüße!
(31814) Request failed with status code 422 error at processTicksAndRejections (internal/process/task_queues.js:84:21) error at endReadableNT (_stream_readable.js:1241:12) error at IncomingMessage.EventEmitter.emit (domain.js:483:12) error at IncomingMessage.emit (events.js:326:22) error at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/axios/lib/adapters/http.js:260:11) error at settle (/opt/iobroker/node_modules/axios/lib/core/settle.js:17:12) error at createError (/opt/iobroker/node_modules/axios/lib/core/createError.js:16:15) error (31814) Error: Request failed with status code 422 error (31814) unhandled promise rejection: Request failed with status code 422 error (31814) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().```
-
@globe
Das Log sagt leider sehr wenig aus. Offensichtlich ruft der Adapter das API in einer Form auf, mit der der Tado-Server nicht umgehen kann.
bitte den Adapter im DebugModus starten und ein Issue inkl. dem Log auf github.com erstellen.
Ich vermute die 0.2.7 funktioniert?
Kommt der Fehler gleich beim Starten oder erst wenn du was änderst? Hast du JavaScripts die automatisch was antriggern? Mich wundert es, dass es schon beim Starten des Adapters kommt und nicht erst wenn du eine Aktion setzt. -
@hglab
Alles klar, werde gleich ein Issue samt Log erstellen.Da habe ich mich schlecht ausgedrückt, sry. Du hast recht, ich versuche hier mit einem JS die Klima bei bestimmten Bedingungen wieder ein zu schalten, nachdem sie vorher aus war und jetzt eine Tür geschlossen wurde. Der Error kommt immer kurz nachdem ich zuerst setting.power mit "ON" und anschließend overlay.clearZoneOverlay mit "wahr" gesteuert habe. Beim Start des Adapters ist noch alles fein.
-
@hglab Danke für die neue Version
Leider kann ich von der 0.3.0-3 nicht aktualisieren.
Hast du eine Idee?$ iobroker upgrade tado@0.3.0-4@undefined
Update tado from @0.3.0-3 to @0.3.0-4
NPM version: 6.14.13
npm install iobroker.tado@0.3.0-4 --loglevel error --prefix "/opt/iobroker" (System call)
npm ERR! code ETARGET
npm ERR! notarget No matching version found for iobroker.tado@0.3.0-4.
npm ERR! notarget In most cases you or one of your dependencies are requestingnpm ERR! notarget a package version that doesn't exist.
npm ERR! A complete log of this run can be found in:npm ERR! /home/iobroker/.npm/_logs/2021-06-23T19_09_13_271Z-debug.log
upload [5] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/words.js words.js application/javascript
upload [4] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/tado.png tado.png image/png
upload [3] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/style.css style.css text/css
upload [2] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/index_m.html index_m.html text/html
upload [1] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/button.png button.png image/png
upload [0] tado.admin /opt/iobroker/node_modules/iobroker.tado/admin/admin.d.ts admin.d.ts video/mp2t
Adapter "tado" updated
Process exited with code 0
-
@basti81
Die Version gibt es nur über GitHub. -
@thomas-braun das war es. Danke dir
-
Version 0.3.0 launched on iobroker latest (beta) repository
-
ich habe die gleichen error Meldungen.
Beobachtet habe ich, dass es mit dem Aktualisierungsintervall zu tun haben muss.
Wenn ich den Aktualisierungsintervall auf 30s habe, dann kommen diese errors sehr häufig.
Und zwar immer dann, wenn genau zu dem Zeitpunkt des Aktualisierungsintervalls die API angesprochen wird und gleichzeitig ein Thermostat getriggert wird.
Wenn ich das Aktualisierungsintervall z.B. auf 300 s einstelle, kommen die errors deutlich seltener.
Beispiel: Aktualisierungsintervall 300 s
Heute früh um 5 Uhr hat mein Skript alle 9 Thermostate problemlos getriggert.
Um 5:04 Uhr wurden nochmal 3 Thermostate getriggert, weil das Fenster offen war und dabei sind die errors entstanden.
Meine 9 Thermostate werden im sekundentakt über ein Skript angesprochen. Hat seither super funktioniert. Ich nutze die aktuellste Adapter Version 0.3.....(22244) Request failed with status code 422 error at processTicksAndRejections (internal/process/task_queues.js:84:21) error at endReadableNT (_stream_readable.js:1241:12) error at IncomingMessage.EventEmitter.emit (domain.js:483:12) error at IncomingMessage.emit (events.js:326:22) error at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/axios/lib/adapters/http.js:260:11) error at settle (/opt/iobroker/node_modules/axios/lib/core/settle.js:17:12) error at createError (/opt/iobroker/node_modules/axios/lib/core/createError.js:16:15) error (22244) Error: Request failed with status code 422 error (22244) unhandled promise rejection: Request failed with status code 422 error (22244) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
-
@k_o_bold
du kannst mal die Version verwenden
DrozmotiX/ioBroker.tado#87d98e9490feee5d2f1bfdd8046c80182e3285fbDa ist nun eine Funktion eingebaut, die zeitgleiche Requests verhindert wenn es keine GET Request sind.
Am besten ein paar Mal die Fenster auf und zu
Im Log sollte man dann sehen, dass die Calls serialisiert werden. -
@hglab ,
der Adapter schnurrt ja wieder wie ein Kätzchen ;-).
Er läuft wieder fehlerfrei und man sieht im log, dass manche Befehle leicht verzögert abgesetzt werden.
Besten Dank für deine schnelle Unterstützung. -
@k_o_bold
das klingt gut!
Kannst du mir bitte ein Log posten auf dem man diese Logik sieht. Nur damit ich sehe ob es so funkt wie ich es mir gedacht habe :-).
Danke! -
@hglab ,
nach etwas ausgiebigerem Test gibt es wohl doch noch ein Problem...
Im Vergleich zu vorher kommt jetzt nur noch ein error und der Adapter startet neu.tado.0 2021-10-08 07:28:54.247 error (20483) Issue at setZoneOverlay: 'Error: Request failed with status code 422'. Based on config {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedAp tado.0 2021-10-08 07:28:53.357 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '6' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 07:28:53.356 info (20483) Temperature changed for room '6' in home '421159' to '22' tado.0 2021-10-08 07:28:45.724 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '4' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":5}},"termination":{"typeSkillBasedApp":"MANUAL","durationInS tado.0 2021-10-08 07:28:45.724 info (20483) Temperature changed for room '4' in home '421159' to '5' tado.0 2021-10-08 07:28:38.342 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '11' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":18}},"termination":{"typeSkillBasedApp":"TADO_MODE","durati tado.0 2021-10-08 07:28:38.342 info (20483) Temperature changed for room '11' in home '421159' to '18' tado.0 2021-10-08 07:28:37.355 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '10' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21}},"termination":{"typeSkillBasedApp":"TADO_MODE","durati tado.0 2021-10-08 07:28:37.354 info (20483) Temperature changed for room '10' in home '421159' to '21' tado.0 2021-10-08 07:28:36.343 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '9' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":19}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 07:28:36.343 info (20483) Temperature changed for room '9' in home '421159' to '19' tado.0 2021-10-08 07:28:35.340 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '8' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 07:28:35.340 info (20483) Temperature changed for room '8' in home '421159' to '22' tado.0 2021-10-08 07:28:34.341 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '7' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 07:28:34.341 info (20483) Temperature changed for room '7' in home '421159' to '21' tado.0 2021-10-08 07:28:32.373 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '4' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":19}},"termination":{"typeSkillBasedApp":"MANUAL","durationIn tado.0 2021-10-08 07:28:32.373 info (20483) Temperature changed for room '4' in home '421159' to '19' tado.0 2021-10-08 07:28:31.344 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '3' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 07:28:31.343 info (20483) Temperature changed for room '3' in home '421159' to '22' tado.0 2021-10-08 07:28:30.359 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '2' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":18}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 07:28:30.358 info (20483) Temperature changed for room '2' in home '421159' to '18' scenes.0 2021-10-08 07:28:29.542 info (1205) State value to set for "scene.0.0_Szene_Heizplan_Tag" has to be type "boolean" but received type "string" tado.0 2021-10-08 07:28:29.358 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '1' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":23}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 07:28:29.357 info (20483) Temperature changed for room '1' in home '421159' to '23'
-
@k_o_bold sagte in Test Adapter Tado v0.3.0-x (PreRelease):
Meine 9 Thermostate werden im sekundentakt über ein Skript angesprochen.
Ist vielleicht auch etwas häufig. Warum spricht man die Heizung sekündlich an?
-
Ist vielleicht auch etwas häufig. Warum spricht man die Heizung sekündlich an?
Ich denke auch, dass man da an den Scripts was machen sollte. Ich denke das hier wirklich schon der Tado-Server auf DoS schaltet. Im Adapter das zu vermeiden ist natürlich auch irgendwie möglich, aber schon recht kompliziert. Den 2 Calls hintereinander innerhalb von 1 bis 2 Sekunden ist wohl in Ordnung, wenn es dann aber 10 Calls sind mit jeweils einer Sekunde dann nicht mehr...
Was nun im Adapter abgefangen ist, dass immer nur EIN PUT/POST/DELETE zugleich gemacht werden kann. GET können weiterhin parallel gemacht werden.Um nochmals sicher zu gehen! Du nutzt die Insgtallation über:
DrozmotiX/ioBroker.tado#87d98e9490feee5d2f1bfdd8046c80182e3285fb
-
@hglab ,
ich habe jetzt eine Verzögerung von 5 s pro Thermostat definiert. ( 5 s Takt ).
Ich nutze die von dir empfohlene Version und habe sie so wie du im Screenshot dargestellt installiert.tado.0 2021-10-08 08:12:26.386 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '7' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":5}},"termination":{"typeSkillBasedApp":"TADO_MODE","duration tado.0 2021-10-08 08:12:26.386 info (20483) Temperature changed for room '7' in home '421159' to '5' tado.0 2021-10-08 08:12:25.229 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '11' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":18}},"termination":{"typeSkillBasedApp":"TADO_MODE","durati tado.0 2021-10-08 08:12:25.229 info (20483) Temperature changed for room '11' in home '421159' to '18' tado.0 2021-10-08 08:12:20.225 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '10' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21}},"termination":{"typeSkillBasedApp":"TADO_MODE","durati tado.0 2021-10-08 08:12:20.224 info (20483) Temperature changed for room '10' in home '421159' to '21' tado.0 2021-10-08 08:12:15.227 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '9' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":19}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 08:12:15.227 info (20483) Temperature changed for room '9' in home '421159' to '19' tado.0 2021-10-08 08:12:10.224 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '8' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 08:12:10.223 info (20483) Temperature changed for room '8' in home '421159' to '22' tado.0 2021-10-08 08:12:05.206 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '7' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":21}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 08:12:05.206 info (20483) Temperature changed for room '7' in home '421159' to '21' tado.0 2021-10-08 08:12:01.118 error (20483) Issue at setZoneOverlay: 'Error: Request failed with status code 422'. Based on config {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedAp tado.0 2021-10-08 08:12:00.223 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '6' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 08:12:00.222 info (20483) Temperature changed for room '6' in home '421159' to '22' tado.0 2021-10-08 08:11:56.103 error (20483) Issue at setZoneOverlay: 'Error: Request failed with status code 422'. Based on config {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":19}},"termination":{"typeSkillBasedAp tado.0 2021-10-08 08:11:55.221 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '4' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":19}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 08:11:55.220 info (20483) Temperature changed for room '4' in home '421159' to '19' tado.0 2021-10-08 08:11:51.102 error (20483) Issue at setZoneOverlay: 'Error: Request failed with status code 422'. Based on config {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedAp tado.0 2021-10-08 08:11:50.216 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '3' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":22}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 08:11:50.215 info (20483) Temperature changed for room '3' in home '421159' to '22' tado.0 2021-10-08 08:11:45.218 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '2' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":18}},"termination":{"typeSkillBasedApp":"TADO_MODE","duratio tado.0 2021-10-08 08:11:45.217 info (20483) Temperature changed for room '2' in home '421159' to '18' scenes.0 2021-10-08 08:11:40.404 info (1205) State value to set for "scene.0.0_Szene_Heizplan_Tag" has to be type "boolean" but received type "string" tado.0 2021-10-08 08:11:40.205 info (20483) Call API 'ZoneOverlay' for home '421159' and zone '1' with body {"setting":{"type":"HEATING","power":"ON","temperature":{"celsius":23}},"termination":{"typeSkillBasedApp":"NEXT_TIME_BLOCK","d tado.0 2021-10-08 08:11:40.205 info (20483) Temperature changed for room '1' in home '421159' to '23'
-
weil es schon mal funktioniert hat. Ich habe zwei Heizpläne "home" / "away" , diese werden über den Scene Adapter ausgeführt und mit der V 0.2... hat das genau so noch funktioniert.
-
@k_o_bold sagte in Test Adapter Tado v0.3.0-x (PreRelease):
weil es schon mal funktioniert hat.
Das heißt ja nix. Wenn z.B. tado jetzt ihre Server anders eingestellt hat funktioniert es nicht mehr in der Häufigkeit wie du da anklingelst.
Wobei ich immer noch nicht die Notwendigkeit für einen Takt im einstelligen Sekundentakt sehe. Ich hab bei mir 30 Sekunden im Adapter drin. Schont dein Netz und die Server bei tado.
-
@thomas-braun sagte in Test Adapter Tado v0.3.0-x (PreRelease):
Ich hab bei mir 30 Sekunden im Adapter drin.
sprichst du jetzt von dem Aktualisierungsintervall im Adapter?
Da habe ich auch 30 s drin.Mag sein, das das sekündliche Beschießen der API mittlerweile grenzwertig ist und der Tado Server hier blockiert, aber selbst mit 5 s. habe ich Probleme ( Siehe mein letzter Post ). Das sollte doch machbar sein, alle 5 Sekunden ein Thermostat zu regeln.
Über die Notwendigkeit im Sekundentakt die Thermostate zu regeln kann man sich streiten.
-
ich habe jetzt eine Verzögerung von 5 s pro Thermostat definiert. ( 5 s Takt )
Wenn die Calls einzeln durchgehen jedoch nicht in der Taktung dann kann der Adapter nichts mehr dazu beitragen. Wenn es in der v0.2.x funktioniert hat und jetzt nicht dann hat das keinen kausalen Zusammenhang, denn der REST-Call hat sich nicht verändert.
Tado ist sicher sensibler geworden in der externen Verwendung der API. Tado "duldet" die Verwendung der API durch dritte, kann und wird aber dementsprechende Maßnahmen ergreifen, damit ihre Server nicht unnötig beansprucht werden. Und da kann dann schon auch mal ein sinnvoller UseCase betroffen sein.Im Adapter wurden nun zwei Themen optimiert:
- wenn es zu dem Fehler kommt wird er "sauber" angefangen
- wenn Calls parallel abgesetzt werden, dann wird gewartet bis der erste Call durch ist bevor der zweite Call durchgereicht wird; die Calls werden also serialisiert