Robonect binding / Automower WLAN Module

Hello,

I ordered it. Installation was flawless. Configuration was flawless as well. It works at least in the living room ,-).

Two questions.

  • There is no item to lower/higher the “cut height”, right?
  • I was running it in the living room (cold outside) and there was obviously no “outer cable” (aka Schleifensignal). I expected the display to show me that, but it did not. Is this expected?

Regards
Ralf

Congrats, you will have fun :wink:

To answer your questions. No, there is no item for the “cut height”. I did not check it that functiality is available for some mowers in newer firmware of robonect. At the time writing the binding, this did not exist. Also my cheap am105 has a manual handle for this.

For the running “outside cable”, I don’t know. I never tried this. But I know that mine definitely complained when being on the wrong side of the cable, but close to it. Probably it “thinks” it is in the middle of some field, far away from the cable, if there is no signal, thus running. But this is just an assumption.

Anyways, what mower do you have and which robonect firmware are you running?

Husqvarna Automower 320
Newest Firmware 1.0Beta7a

Hello,

I am running on a Pi3B+ which was at 5% CPU load until I installed Rononect Plugin. Now the Pi runs at 60% CPU load. Have you similar issues and is this expected?

Hi Ralf,
No, my system stays somewhere around 5% with some short term peaks of around 25% on a Pi2B. However, my OH installation is a 2.3 snapshot (shame on me)

what polling interval did you configure?

Thing robonect:mower:schafi "Mower" @ "Garden" [ host="xx.xx.xx.xx", pollInterval="60", offlineTimeout="60", user="xxx", password = "xxx"]

I did a rebbot and now its at 10%. Much better. Sorry for blaiming robonect. Not sure what happend. It started with installing the plugin.

So, the mowing season has started also in Sweden… I’ve got a problem that I didn’t have last season, I don’t seem able to change mode of my Automower from OH any more. When I try (with debug on) I get the following:

19:40:58.313 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Automower_Mode' received command EOD
19:40:58.343 [DEBUG] [ding.robonect.internal.RobonectClient] - send HTTP GET to: http://192.168.168.70/json?cmd=mode&mode=eod
19:40:58.344 [INFO ] [arthome.event.ItemStatePredictedEvent] - Automower_Mode predicted to become EOD
19:40:58.362 [INFO ] [smarthome.event.ItemStateChangedEvent] - Automower_Mode changed from AUTO to EOD
19:40:58.441 [DEBUG] [ding.robonect.internal.RobonectClient] - Response body was:
19:40:58.449 [ERROR] [rnal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.robonect.internal.handler.RobonectHandler@5041ab': null
java.lang.NullPointerException: null
        at org.openhab.binding.robonect.internal.handler.RobonectHandler.setMowerMode(RobonectHandler.java:198) ~[?:?]
        at org.openhab.binding.robonect.internal.handler.RobonectHandler.sendCommand(RobonectHandler.java:130) ~[?:?]
        at org.openhab.binding.robonect.internal.handler.RobonectHandler.handleCommand(RobonectHandler.java:108) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.11.0.oh250M1]
        at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.11.0.oh250M1]
        at com.sun.proxy.$Proxy158.handleCommand(Unknown Source) [231:org.openhab.binding.robonect:2.5.0.M1]
        at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.11.0.oh250M1]
        at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.11.0.oh250M1]
        at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.11.0.oh250M1]
        at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.11.0.oh250M1]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

Calling the exact same url (http://192.168.168.70/json?cmd=mode&mode=eod) from my browser works fine, I get back a {“successful”: true} and the AM changes mode. Any idea what could be wrong, @reyem?

The AM was on 1.0 alpha 6 before the winter, I upgraded it to alpha 7 first thing. But since calling the api url from browser works it doesn’t feel like the problem is in that end anyway.

I’m on OH 2.5.0.M1, I guess I was on 2.4.something before winter. Could something have changed there?

edit: Ok, it just struck me that in alpha 7 I was forced to set up username and password on the Robonect (kinda unnecessary if you ask me, it’s on a well protected network). So I tried setting username/password on the Thing. Doesn’t seem to work anyway though. This time I got a longer stacktrace, put it on a pastebin instead: https://pastebin.com/WNBwxSCL

Hi Daniel, in switzerland the season started some weeks ago :wink:
Your long stack trace you posted somehow indicates, that the binding was reconfigured (I guess your changes of username and password) and then got lost when reloading the binding. The place where it throws a NPE is unusual, as the httpClient used there should be injected from OH. However, there might be a bug in the dispose implementation, setting this thing to null. Have you tried restarting OH ( or alternatively the binding via karaf)? I assume, if your username / password got serialized in the config, everything should work after a restart.

Yep. I actually discovered later that everything else in OH that tried to make http calls (I’ve got some scripts doing sendHttpGetRequest) got “Fatal transport error”, so obviously something broke down completely. Tried restarting all bundles whose name included “http” but ended up simply restarting entire OH and after that things seem to be back on track.

Hi,
thank you for this nice binding!
I am using it on OpenHAB 2.4 (on Raspbian).

I would like to trigger a smaller change for the binding.

Currently, there is a channel to trigger a mower “job” and setup a duration.
Unfortunately, this seems to be limited to 60 minutes. In the channel configuration on PaperUI I will get automatically an error, when I try to input a duration higher than 60.
When I try to parse a higher value to the channel using a file, it does not work.
But robonect is able to accept a duration higher than 60 minutes.
Is it possible to change this limitation?

Michael

The change is very easy to implement. Please create an issue in github:

Then chances are good, sombody fixes it…

Thanks! I requested this as feature in Github :slight_smile:

With OH3, the Robonect-binding worked about 2h and stopped with the following error:
2021-03-24 19:19:53.311 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: │
│java.lang.NullPointerException: null │
│ at org.openhab.binding.robonect.internal.handler.RobonectHandler.refreshMowerInfo(RobonectHandler.java:228) ~[?:?] │
│ at org.openhab.binding.robonect.internal.handler.RobonectHandler$MowerChannelPoller.run(RobonectHandler.java:415) ~[?:?] │
│ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?] │
│ at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?] │
│ at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?] │
│ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] │
│ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] │
│ at java.lang.Thread.run(Thread.java:834) [?:?]