Worx Landroid Binding

Thanks for making this binding :tada:

1 Like

Does anyone own a mower that does not support one of the following features multi zones, lock/unlock or rain delay? What are the values of the following properties when you open the properties of your mower in PaperUI (or in the logfile)?
‘multi_zone’
‘rain_delay’
‘lock’

In PaperUI click ‘SHOW PROPERTIES’:

or in the log:

[nternal.webapi.request.WebApiRequest] - Worx Landroid WebApi Response: [{"id":987654,"product_id":49,"user_id":123456,"serial_number":".....

Can anybody confirm that the corresponding property is ‘false’ when the mower doesn’t support the feature?

What a great Job! Binding, Things, Items took me maybe 5 minutes, after 10 additional minutes all the channels were up and running. No issues at all!

You made a lot of people happy with the result of your great efforts. Thank you for creating this binding!

1 Like

Thank you all for your feedback!

I am currently working on the next release with MULTIZONE and LOCK/UNLOCK. For that I ask again

Hi there, I’ve developed some rules for my mower to calculate and chart the daily distance and time as well as telling me through the Alexa and push notification interface when it starts/stops working etc For this purpose the follwing tables ar quite helpful which I found over here: https://www.roboter-forum.com/index.php?thread/41158-landroid-ĂŒber-eine-mosquitto-mqtt-bridge-steuern-am-besipiel-von-openhab/

/*  Error Code
NULL=NULL
0=NONE
1=TRAPPED
2=LIFTED
3=WIRE_MISSING
4=OUTSIDE_WIRE
5=RAINING
8=MOTOR_BLADE_FAULT
9=MOTOR_WHEELS_FAULT
10=TRAPPED_TIMEOUT_FAULT
11=UPSIDE_DOWN
12=BATTERY_LOW
13=REVERSE_WIRE
14=BATTERY_CHARGE_ERROR
15=HOME_FIND_TIMEOUT
16=LOCK
17=BATTERY_OVERTEMP 
*/

/* Status Code
NULL=NULL
0=IDLE
1=HOME
2=START_SEQUENCE
3=LEAVE_HOUSE
4=FOLLOW_WIRE
5=SEARCHING_HOME
6=SEARCHING_WIRE
7=GRASS_CUTTING
8=LIFT_RECOVERY
9=TRAPPED_RECOVERY
10=BLADE_BLOCKED_RECOVERY
11=DEBUG
12=REMOTE_CONTROL
30=WIRE_GOING_HOME
31=WIRE_AREA_TRAINING
32=WIRE_BORDER_CUT
33=WIRE_AREA_SEARCH
34=PAUSE 
*/

Thanks. you did a fantastic job. :raised_hands:

1 Like

The binding works flawlessly for me. Great work, thank you very much! :+1:
Would be great to find the binding included in the next release.

1 Like

Thanks nibi79 for the great work!
I can finally integrate my Robbi into the SmartHome.
The binding runs perfectly for me!

1 Like

Thanks nibi79, great job. I saw an error this morning:

[ERROR] [id.internal.WorxLandroidMowerHandler] - RefreshStatusRunnable 2020302472010007093F: Unknown error
Any idea where this is coming from?

Does the binding still work? What is the status of your bridge and your mower?

To investigate this error I need more information. Please set debug level and send me the log when the error occurs again.

I have this error several times a day.
I was of the opinion that there may be a request overload on the Worxx server?

2020-04-11 19:36:59.193 [ERROR] [id.internal.WorxLandroidMowerHandler] - RefreshStatusRunnable 30173502170118020375: Unknown error

org.openhab.binding.worxlandroid.internal.webapi.WebApiException: java.io.EOFException: HttpConnectionOverHTTP@142c765::DecryptedEndPoint@109c3b5{api.worxlandroid.com/34.248.123.187:443<->/192.168.178.28:50588,OPEN,fill=-,flush=-,to=60057/0}

at org.openhab.binding.worxlandroid.internal.webapi.request.WebApiRequest.callWebApi(WebApiRequest.java:122) ~[bundleFile:?]

at org.openhab.binding.worxlandroid.internal.webapi.request.WebApiRequest.callWebApiGet(WebApiRequest.java:79) ~[bundleFile:?]

at org.openhab.binding.worxlandroid.internal.webapi.request.ProductItemsRequest.call(ProductItemsRequest.java:46) ~[bundleFile:?]

at org.openhab.binding.worxlandroid.internal.webapi.WorxLandroidWebApiImpl.retrieveUserDevices(WorxLandroidWebApiImpl.java:101) ~[bundleFile:?]

at org.openhab.binding.worxlandroid.internal.WorxLandroidMowerHandler$1.run(WorxLandroidMowerHandler.java:103) [bundleFile:?]

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_222]

at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_222]

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_222]

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_222]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]

Caused by: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@142c765::DecryptedEndPoint@109c3b5{api.worxlandroid.com/34.248.123.187:443<->/192.168.178.28:50588,OPEN,fill=-,flush=-,to=60057/0}

at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118) ~[bundleFile:9.4.20.v20190813]

at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101) ~[bundleFile:9.4.20.v20190813]

at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:685) ~[bundleFile:9.4.20.v20190813]

at org.openhab.binding.worxlandroid.internal.webapi.request.WebApiRequest.callWebApi(WebApiRequest.java:92) ~[bundleFile:?]

... 11 more

Caused by: java.io.EOFException: HttpConnectionOverHTTP@142c765::DecryptedEndPoint@109c3b5{api.worxlandroid.com/34.248.123.187:443<->/192.168.178.28:50588,OPEN,fill=-,flush=-,to=60057/0}

at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:335) ~[?:?]

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1526) ~[?:?]

at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:209) ~[?:?]

at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:147) ~[?:?]

at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73) ~[?:?]

at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133) ~[?:?]

at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:154) ~[?:?]

at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[?:?]

at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:426) ~[?:?]

at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:320) ~[?:?]

at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:158) ~[?:?]

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[?:?]

at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) ~[?:?]

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[?:?]

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[?:?]

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[?:?]

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[?:?]

at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) ~[?:?]

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) ~[?:?]

at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) ~[?:?]

... 1 more

Please increase the ‘refreshStatusInterval’ in the configuration of your mower (e.g. set it to 300) and watch the log output if the error occurs again.

I set it to150, increased to 180. Error is so far occuring twice a day, but the thing is online, so rather cosmetic error in my end.

Ok then it seems that he ‘refreshStatusInterval’ is related to your error.

One user set the interval to 75 seconds and it works without error and I’ve no problem with 30 seconds.

For me the problem is that I can’t reproduce this error and that’s why I’m dependent on you. Perhaps we can investigate this error next week together.
If it’s ok, I’ll come back to you again to find a fix.

MH somehow I got into:

2020-04-12 08:36:52.715 [ERROR] [d.internal.WorxLandroidBridgeHandler] - Connection blocked from Worx, please try again in 24h

Getting a new IP did not resolve the issue.

It is actually the ‘refreshStatusInterval’. I now have it at 300 and the error no longer occurs. I will now gradually decrease the interval until the error reappears.
I wish you a happy easter!

that would also have been my suggestion now

I’m not sure if I interpreted the flag correctly. When I’m right your Worx account is blocked for 24h by Worx. So you have to wait


Can you please send me a PM with the log output with the API response similar to this:

 Worx Landroid WebApi Response: {"id":****,"pkcs12":"***hidden for debug log**
*","active":true,"created_at":"2019-05-05 14:09:00","updated_at":"2019-05-05 14:09:00"}

and this:

 Worx Landroid WebApi Response: [{"id":***,"product_id":49,"user_id":***,"serial_number":"*****","mac_address":"****","name":"***","locked":false,"firmware_version":2.92,....

Thank you in advance!

Happy Easter!

It seems the binding is relatively stable. That’s why I decide today to release

Version 1.0

with some new features:
#3 Support of Lock/Unlock
#5 Support of Multi Zones
#11 Support of manually polling

Take a look to the examples for the .items. In addition to the new items there are also small changes like ‘yaw’, ‘roll’ 
,

And please check the release notes first!!!

Many thanks to @INT5749 for testing, helping, your comments and ideas!

Wish you all happy Easter! Have fun with the new version and your feedback is appreciated!

4 Likes

I am now at 90. At 60 I had the error again.
Will now decrease in small increments.