mrbungle64 / node-red-contrib-ecovacs-deebot

Node-RED node for running Ecovacs Deebot vacuum cleaner robots
GNU General Public License v3.0
20 stars 3 forks source link

Data occur multiple times -> +1 each connect #93

Closed maltejahn closed 1 year ago

maltejahn commented 1 year ago

Is there an existing issue for this?

The problem

Hi,

I think I am using this NodeRed Flow the wrong way:

I wanted to create a trigger which connects, do a little 10s delay and then disconnect (the easiest way to get all data without the need to know if the deebot is connected or not). This should be done every minute. This works in general, but by doing so every message from the Deebot occurs one more time. So, after doing Connect/Disconnect for 3 times e.g. "BatteryInfo" appears 3 times(and every other entry)

This wouldnt be a issue if this only happens in the debug screen. But i will get a syslog message:

  | (node:461) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 CurrentCustomAreaValues listeners added to [EcovacsXMPP_XML]. Use emitter.setMaxListeners() to increase limit

If i just Connect + get Data it works fine. But how should I know if the Deebot is still connected? -> so again, I think I am using this the wrong way

With which model does the problem occur?

Deebot OZMO 930

Which "other" models are you using?

No response

Which version of the ecovacs-deebot node are you using?

0.4.8

Which version of Node-RED you have installed?

0.3.2

Which version of Node.js are you using?

16.2

Anything in the logs that might be useful?

No response

Additional information

Raspberry 3B

mrbungle64 commented 1 year ago

@maltejahn

It seems that you're using it more like a script (connect -> doing running some commands -> disconnect). It would be better if you start the connection in the morning and disconnect (for example) at midnight. You can still use the trigger for running some commands when needed (but without doing a connect and disconnect).

maltejahn commented 1 year ago

Thanks for your really fast reply.

So, the node should be connected all day . I provoked e.g. a daily disconnect (provider) by connect/disconnect using a timer in node red. So the same should occur when the povider disconnects. Doing alot connect/disconnect like i did, getting disconnected by the provider or connect/disconnect at fixed time should lead to the same behavior - in my opinion (on the otherhand you are using it for quite a while without issues like that)

And howto check if the Flow is connected ? When triggering e.g. BatteryInfo and it isnt connected, there is no output which informs me about this (which i could use to connect then..). Ok, the information is, that there was no output. I could use this to try to reconnect.

But, what makes me wonder: When deploying something in NodeRed it starts from beginning. So with deploying, it seems to "flush the buffer". Hard to explain..

maltejahn commented 1 year ago

So, after playing around i do it like this: deebot

I works till now. Lets see what happens after a few days. And this filtering for e.g. BatteryInfo, ChargeState and using alot of switches, functions etc. i hope one day i will be able to do it a little smarter.

I still struggle to get the "status" of the connection which I could use for a reconnect.

unclej84 commented 1 year ago

Why don't you use the Status-Node to check for the status ("Connecting...", "Connected" or "Disconnected")? image image

maltejahn commented 1 year ago

Because... i just learned how to use the status node (didnt know the "status.text" attribute...). Thanks for the pictures.

It seems to work. As it detects the disconnect state, it connects again. I will add a little delay. I now stop play fiddling around and see if the error from the beginning ("MaxListenersExceededWarning: Possible EventEmitter memory leak detected") again occurs

Thanks till now!

maltejahn commented 1 year ago

As the error hasnt occured for the last days, I close it

Arn0uDz commented 1 year ago

@maltejahn could you please share your node red flow? Would help me alot.