mrbungle64 / ioBroker.ecovacs-deebot

Control your Ecovacs Deebot and yeedi vacuum cleaner with ioBroker
MIT License
62 stars 11 forks source link

Connection Status vs Connection Timeout #182

Open krobipd opened 2 years ago

krobipd commented 2 years ago

Is there an existing issue for this?

The problem

Hallo

aufgrund der vielen Serverprobleme in letzter zeit mit meinem Ozmo 950 ist mir folgendes aufgefallen.

Im Adapter wird das Gerät unter "connection" als "true" angezeigt. aber gleichzeitig steht unter "Error" "Connection Timeout".

in der App wird dann der Roboter auch als Offline angezeigt.

Vl wäre es möglich hier den Connection Status mit dem Error code zu verknüpfen. Da der Sauger ja nicht online sein kann wenn er gleichzeitig keine Verbindung hat.

ich hoffe das war jetzt verständlich.

Bildschirmfoto 2021-10-19 um 21 38 04 Bildschirmfoto 2021-10-19 um 21 37 57

With which model does the problem occur?

Deebot OZMO 950

From which source you have installed the adapter?

Beta (latest)

Version of the ioBroker adapter ("info.version")

1.2.4

Version of the ecovacs-deebot.js library ("info.library.version")

0.6.8

Version of the JS controller

3.3.18

Version of Node.js

14.18.1

Operating system

Linux

Anything in the logs that might be useful?

No response

Additional information

No response

Which "other" models are you using?

No response

Ecovacs device class ("info.deviceClass")

yna5xi

Communication protocol ("info.library.communicationProtocol")

MQTT

Is the canvas module installed? ("info.library.canvasModuleIsInstalled")

yes (true)

mrbungle64 commented 2 years ago

Hallo @krobipd

ich muss Dich korrigieren - es handelt sich um einen "Request timeout" (500) und nicht um einen "Connection Timeout" (s. auch Screenshot).

Ein "Request timeout" bedeutet, dass es keine Antwort für eine oder mehrere Anfragen gegeben hat.

Das kann natürlich auch gleichzeitig bedeuten, dass der Bot gar nicht mehr antwortet und nicht mehr verfügbar ist - dafür gibt es aber eigentlich den "Recipient unavailable" (404). In diesem Fall wird "info.connection" auch entsprechend auf false gesetzt.

Ich würde mir überlegen, ob ich in den Einstellungen eine Option anbiete, dass man selbst entscheiden kann, ob der "Request timeout" (500) auch zu einem false bei "info.connection" führt, so dass die Instanz dann rot angezeigt wird.

krobipd commented 2 years ago

danke für dein Feedback ;-)

na gut du weißt ja auch welche Fehlermeldungen du eingebaut hast ;-) ich sehe leider immer nur error 500 und die app zeigt dann auch an das der Sauger offline ist - ist er ja nicht aber naja ecovacs server halt :-/

aber gut zu wissen das es einen 404 error gäbe.

ja dein Vorschlag wäre unter umständen sicherlich eine gute Variante.

mrbungle64 commented 2 years ago

na gut du weißt ja auch welche Fehlermeldungen du eingebaut hast ;-)

Die Fehlermeldungen >= 0 kommen von Ecovacs 😉

404 = Der Bot ist offline 500 = Der Bot hat auf mind. eine Anfrage nicht geantwortet (Status ist aber nicht offline)

Hier sind sämtliche Codes zu sehen

edenhaus commented 2 years ago

Eine andere Möglichkeit ist, dass man regelmäßig alle devices abruft und dort schaut welchen Status der Bot hat. Dies mache ich in der HA integration. Siehe https://github.com/DeebotUniverse/Deebot-4-Home-Assistant/blob/88bdb442bb52127d185fd200f8d08e201e463274/custom_components/deebot/hub.py#L113-L119

mrbungle64 commented 2 years ago

@edenhaus

Eine andere Möglichkeit ist, dass man regelmäßig alle devices abruft und dort schaut welchen Status der Bot hat. Dies mache ich in der HA integration.

Danke für den Tipp!

Ich habe bisher die Devices in der Library nur über users/user.do und GetDeviceList bezogen - da war der Status nicht drin. Habe das nun erweitert, so dass die Devices auch über appsvr/app.do und GetGlobalDeviceList bezogen werden. Dort ist der Status dann drin.

Das wird dann früher oder später auch im ioBroker Adapter verfügbar sein, so dass der Gerätestatus über die Ecovacs API bezogen wird und man diesen für den Connection Status der Adapter Instanz benutzen kann.