Neato Botvac Binding

Hey guys,

I am currentley using the Neato botvac binding found here (Link). I added my D3 connected to my system through auto discovery via paper-UI without issue. All features work as expected with the exception of start cleaning. When I attempt to start cleaning it does nothing. If I start it via my phone or the button on the bot, I am able to stop, pause and resume it via openhab. Below is my log and .items and .sitemap files.

Has anyone run into this issue before?

.items file

Group GNeato

String RosieName  "Name [%s]" (GNeato) 
Number RosieBattery  "Battery level [%.0f %%]" <battery> (GNeato) 
String RosieState  "Status [MAP(neato-sv.map):%s]" (GNeato) 
String RosieError  "Error [%s]" (GNeato) 
String RosieVersion  "Version [%s]" (GNeato) 
String RosieModel  "Model [%s]" (GNeato) 
String RosieFirmware  "Firmware [%s]" (GNeato) 
String RosieAction  "Action [MAP(neato-sv.map):%s]" (GNeato) 
Switch RosieDockHasBeenSeen  "Seen dock [%s]" <present> (GNeato) 
Switch RosieIsDocked  "In dock [MAP(neato-sv.map):%s]" <present> (GNeato) 
Switch RosieIsScheduled  "Scheduled [%s]" (GNeato) 
Switch RosieIsCharging  "Is Charging [%s]" <heating> (GNeato) 

String RosieCategory  "Cleaning Category [MAP(neato-sv.map):%s]" (GNeato) 
String RosieMode  "Cleaning Mode [MAP(neato-sv.map):%s]" (GNeato) 
String RosieModifier  "Cleaning Modifier [MAP(neato-sv.map):%s]" (GNeato) 
Number RosieSpotWidth  "SpotWidth [%.0f]" <niveau> (GNeato) 
Number RosieSpotHeight  "SpotHeight [%.0f]" <niveau> (GNeato) 

String RosieCommand  "Send Command" 

.sitemap file

sitemap home label="Cam's"

{
	Frame label="Rosie" {

		Text label="Rosie" icon="group" {

			Switch item=RosieCommand mappings=[clean="Clean",stop="Stop",pause="Pause",resume="Resume", dock="Send to dock"]

			Text item=RosieBattery label="Battery level"

			Text item=RosieState

			Text item=RosieError label="Error Message" icon="siren"

			Text item=RosieAction label="Activity"

			Text item=RosieIsDocked label="In dock"

			Group label="More information" item=GNeato
			

		}
	}
}

.log file

17:44:14.137 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:14.164 [INFO ] [smarthome.event.ItemStateChangedEvent] - RosieCommand changed from start_cleaning to clean
17:44:14.433 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:14.579 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:24.388 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:24.664 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:24.944 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:25.247 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:25.444 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:25.583 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:26.065 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:26.318 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:26.476 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:27.076 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:27.547 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:27.841 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:27.962 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:28.569 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:29.009 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command clean
17:44:30.271 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
17:44:30.532 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
17:44:30.708 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie

Try enabling DEBUG logging for the Neato binding which will show the actual API calls to Neato.

20:18:49.847 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command start
20:18:49.844 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{IDLE}:WRITING-->IDLE
20:18:49.853 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Ok - will handle command for CHANNEL_COMMAND
20:18:49.858 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: DONE (null,[p=153,l=153,c=32768,r=0],false)@COMMITTED
20:18:49.864 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
20:18:49.872 [DEBUG] [org.eclipse.jetty.server.Server      ] - handled=true async=false committed=false on HttpChannelOverHttp@dbc8ad{r=9,c=false,a=DISPATCHED,uri=//192.168.0.149:8080/rest/items/RosieCommand}
20:18:49.868 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - sendResponse info=null content=DirectByteBuffer@1743fa4[p=0,l=141,c=32768,r=141]={<<<event: message\nda...mStateEvent"}\n\n>>>ateEvent"}\n\n"}\n\nn...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} complete=false committing=false callback=Blocker@2aa8f3{null}
20:18:49.878 [DEBUG] [eclipse.jetty.server.HttpChannelState] - HttpChannelState@1ca6a08{s=DISPATCHED a=NOT_ASYNC i=true r=NONE/false w=false} unhandle DISPATCHED
20:18:49.882 [DEBUG] [.eclipse.jetty.client.HttpDestination] - Queued HttpRequest[POST /vendors/neato/robots/OPS38417-D43639149577/messages HTTP/1.1]@1c3304c for HttpDestination[https://nucleo.neatocloud.com:4443]@1e07351,queue=1,pool=DuplexConnectionPool[c=1/64,a=0,i=1]
20:18:49.881 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: FLUSH (null,[p=0,l=141,c=32768,r=141],false)@COMMITTED
20:18:49.885 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - HttpChannelOverHttp@dbc8ad{r=9,c=false,a=COMPLETING,uri=//192.168.0.149:8080/rest/items/RosieCommand} action COMPLETE
20:18:49.895 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - write: WriteFlusher@196441b{IDLE} [HeapByteBuffer@129cbb5[p=0,l=6,c=1024,r=6]={<<<\r\n8D\r\n>>>\n\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00},DirectByteBuffer@1743fa4[p=0,l=141,c=32768,r=141]={<<<event: message\nda...mStateEvent"}\n\n>>>ateEvent"}\n\n"}\n\nn...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
20:18:49.896 [DEBUG] [pse.jetty.client.DuplexConnectionPool] - Connection active HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=null)[send=HttpSenderOverHTTP@1163b4(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@3be479{s=START}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
20:18:49.901 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - sendResponse info=null content=HeapByteBuffer@80b0[p=0,l=0,c=0,r=0]={<<<>>>} complete=true committing=true callback=Blocker@5a45b1{null}
20:18:49.903 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{WRITING}:IDLE-->WRITING
20:18:49.918 [DEBUG] [.eclipse.jetty.client.HttpDestination] - Processing exchange HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null on HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=null)[send=HttpSenderOverHTTP@1163b4(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@3be479{s=START}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]] of HttpDestination[https://nucleo.neatocloud.com:4443]@1e07351,queue=0,pool=DuplexConnectionPool[c=1/64,a=1,i=0]
20:18:49.930 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - COMMIT for /rest/items/RosieCommand on HttpChannelOverHttp@dbc8ad{r=9,c=true,a=COMPLETING,uri=//192.168.0.149:8080/rest/items/RosieCommand}
200 OK HTTP/1.1
Content-Type: text/plain


20:18:49.936 [DEBUG] [org.eclipse.jetty.client.HttpChannel ] - HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null associated true to HttpChannelOverHTTP@2504fb(exchange=HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@1163b4(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@3be479{s=START}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]
20:18:49.933 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - flushed 147 SelectChannelEndPoint@1d0ea2f{/192.168.0.219:41114<->8080,Open,in,out,-,W,101/30000,HttpConnection@1e9ec49}{io=0/0,kio=0,kro=1}
20:18:49.945 [DEBUG] [org.eclipse.jetty.client.HttpSender  ] - Request begin HttpRequest[POST /vendors/neato/robots/OPS38417-D43639149577/messages HTTP/1.1]@1c3304c
20:18:49.941 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@188bec5[PROCESSING][i=HTTP/1.1{s=200,h=1},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@146c61b] generate: NEED_HEADER (null,[p=0,l=0,c=0,r=0],true)@START
20:18:49.947 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - Flushed=true 6/6+1 WriteFlusher@196441b{WRITING}
20:18:49.952 [DEBUG] [org.eclipse.jetty.client.HttpSender  ] - Request headers HttpRequest[POST /vendors/neato/robots/OPS38417-D43639149577/messages HTTP/1.1]@1c3304c
Accept-Encoding: gzip
User-Agent: Jetty/9.3.21.v20170918
Authorization: NEATOAPP a185c8b58925218f20b4d31e40ac444c3fa033a01c0a48068b07089473b741b3
Accept: application/vnd.neato.nucleo.v1
Date: Thu, 30 Aug 2018 00:18:49 GMT
Content-Type: text/html; charset=ISO-8859-1
Host: nucleo.neatocloud.com:4443
20:18:49.959 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{IDLE}:WRITING-->IDLE
20:18:49.957 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@188bec5[PROCESSING][i=HTTP/1.1{s=200,h=1},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@146c61b] generate: FLUSH ([p=0,l=97,c=8192,r=97],[p=0,l=0,c=0,r=0],true)@COMPLETING
20:18:49.967 [DEBUG] [lient.util.InputStreamContentProvider] - Read 40 bytes from java.io.ByteArrayInputStream@209732
20:18:49.974 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: DONE (null,[p=141,l=141,c=32768,r=0],false)@COMMITTED
20:18:49.971 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - write: WriteFlusher@18767d0{IDLE} [HeapByteBuffer@1c18c9f[p=0,l=97,c=8192,r=97]={<<<HTTP/1.1 200 OK\r\n....v20170918)\r\n\r\n>>>-Length: 5\r\nOrigi...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
20:18:49.976 [DEBUG] [lient.util.InputStreamContentProvider] - Read -1 bytes from java.io.ByteArrayInputStream@209732
20:18:49.982 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - sendResponse info=null content=DirectByteBuffer@1743fa4[p=0,l=152,c=32768,r=152]={<<<event: message\nda...mStateEvent"}\n\n>>>\n"}\n\nnt"}\n\n"NONE\\...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} complete=false committing=false callback=Blocker@2aa8f3{null}
20:18:49.990 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@18767d0{WRITING}:IDLE-->WRITING
20:18:49.986 [DEBUG] [org.eclipse.jetty.client.HttpContent ] - Advanced content to last chunk java.nio.HeapByteBuffer[pos=0 lim=40 cap=4096]
20:18:49.995 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - flushed 97 SelectChannelEndPoint@1ffd4cc{/192.168.0.177:49694<->8080,Open,in,out,-,W,785/30000,HttpConnection@1c4576d}{io=0/0,kio=0,kro=1}
20:18:49.992 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: FLUSH (null,[p=0,l=152,c=32768,r=152],false)@COMMITTED
20:18:49.998 [DEBUG] [org.eclipse.jetty.client.HttpSender  ] - Generated headers (-1 bytes), chunk (-1 bytes), content (40 bytes) - NEED_HEADER/HttpGenerator@3be479{s=START}
20:18:50.004 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - write: WriteFlusher@196441b{IDLE} [HeapByteBuffer@129cbb5[p=0,l=6,c=1024,r=6]={<<<\r\n98\r\n>>>\n\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00},DirectByteBuffer@1743fa4[p=0,l=152,c=32768,r=152]={<<<event: message\nda...mStateEvent"}\n\n>>>\n"}\n\nnt"}\n\n"NONE\\...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
20:18:50.000 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - Flushed=true 97/97+0 WriteFlusher@18767d0{WRITING}
20:18:50.011 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{WRITING}:IDLE-->WRITING
20:18:50.019 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - flushed 158 SelectChannelEndPoint@1d0ea2f{/192.168.0.219:41114<->8080,Open,in,out,-,W,72/30000,HttpConnection@1e9ec49}{io=0/0,kio=0,kro=1}
20:18:50.006 [DEBUG] [org.eclipse.jetty.client.HttpSender  ] - Generated headers (396 bytes), chunk (-1 bytes), content (40 bytes) - FLUSH/HttpGenerator@3be479{s=COMPLETING}
20:18:50.030 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - Flushed=true 6/6+1 WriteFlusher@196441b{WRITING}
20:18:50.034 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - write: WriteFlusher@1bf917{IDLE} [HeapByteBuffer@12cbf30[p=0,l=396,c=4096,r=396]={<<<POST /vendors/nea...-Length: 40\r\n\r\n>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00},HeapByteBuffer@1b17539[p=0,l=40,c=4096,r=40]={<<<{"reqId": "abc","...etRobotState" }>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
20:18:50.039 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{IDLE}:WRITING-->IDLE
20:18:50.014 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@18767d0{IDLE}:WRITING-->IDLE
20:18:50.045 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: DONE (null,[p=152,l=152,c=32768,r=0],false)@COMMITTED
20:18:50.043 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@1bf917{WRITING}:IDLE-->WRITING
20:18:50.047 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@188bec5[PROCESSING][i=HTTP/1.1{s=200,h=1},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@146c61b] generate: DONE ([p=97,l=97,c=8192,r=0],[p=0,l=0,c=0,r=0],true)@END
20:18:50.056 [DEBUG] [rg.eclipse.jetty.io.ssl.SslConnection] - flush b[396]=504F5354202F76656E646F72732F6E6561746F2F726F626F74...2034300D0A0D0A SslConnection@f6bd74{NOT_HANDSHAKING,eio=-1/-1,di=-1} -> HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@1163b4(req=HEADERS,snd=SENDING,failure=null)[HttpGenerator@3be479{s=COMPLETING}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
20:18:50.055 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - sendResponse info=null content=DirectByteBuffer@1743fa4[p=0,l=144,c=32768,r=144]={<<<event: message\nda...mStateEvent"}\n\n>>>vent"}\n\n\n"}\n\nnt"}...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} complete=false committing=false callback=Blocker@2aa8f3{null}
20:18:50.063 [DEBUG] [rg.eclipse.jetty.io.ssl.SslConnection] - flush b[40]=7B227265714964223A2022616263222C22636D64223A202267...7461746522207D SslConnection@f6bd74{NOT_HANDSHAKING,eio=-1/-1,di=-1} -> HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@1163b4(req=HEADERS,snd=SENDING,failure=null)[HttpGenerator@3be479{s=COMPLETING}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
20:18:50.059 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - COMPLETE for /rest/items/RosieCommand written=0
20:18:50.067 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: FLUSH (null,[p=0,l=144,c=32768,r=144],false)@COMMITTED
20:18:50.071 [INFO ] [org.pcap4j.core.Pcaps                ] - 8 NIF(s) found.
20:18:50.077 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - write: WriteFlusher@196441b{IDLE} [HeapByteBuffer@129cbb5[p=0,l=6,c=1024,r=6]={<<<\r\n90\r\n>>>\n\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00},DirectByteBuffer@1743fa4[p=0,l=144,c=32768,r=144]={<<<event: message\nda...mStateEvent"}\n\n>>>vent"}\n\n\n"}\n\nnt"}...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}]
20:18:50.075 [DEBUG] [org.eclipse.jetty.http.HttpParser    ] - reset HttpParser{s=END,5 of 5}
20:18:50.072 [DEBUG] [rg.eclipse.jetty.io.ssl.SslConnection] - wrap Status = OK HandshakeStatus = NOT_HANDSHAKING bytesConsumed = 436 bytesProduced = 465 SslConnection@f6bd74{NOT_HANDSHAKING,eio=-1/465,di=-1} -> HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@1163b4(req=HEADERS,snd=SENDING,failure=null)[HttpGenerator@3be479{s=COMPLETING}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
20:18:50.085 [DEBUG] [org.eclipse.jetty.http.HttpParser    ] - END --> START
20:18:50.081 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{WRITING}:IDLE-->WRITING
20:18:50.088 [DEBUG] [rg.eclipse.jetty.io.ssl.SslConnection] - wrap OK b[465]=17030301CC00000000000000095327FB8CC2535F73C3679E61...3C7242B0299589 SslConnection@f6bd74{NOT_HANDSHAKING,eio=-1/465,di=-1} -> HttpConnectionOverHTTP@6c822(l:/192.168.0.149:41362 <-> r:nucleo.neatocloud.com/54.84.102.60:4443,closed=false)[HttpChannelOverHTTP@2504fb(exchange=HttpExchange@a75d5d req=PENDING/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@1163b4(req=HEADERS,snd=SENDING,failure=null)[HttpGenerator@3be479{s=COMPLETING}],recv=HttpReceiverOverHTTP@ba7a44(rsp=IDLE,failure=null)[HttpParser{s=START,0 of -1}]]]
20:18:50.094 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - flushed 150 SelectChannelEndPoint@1d0ea2f{/192.168.0.219:41114<->8080,Open,in,out,-,W,64/30000,HttpConnection@1e9ec49}{io=0/0,kio=0,kro=1}
20:18:50.091 [DEBUG] [org.eclipse.jetty.server.HttpChannel ] - HttpChannelOverHttp@dbc8ad{r=9,c=false,a=IDLE,uri=null} handle exit, result COMPLETE
20:18:50.099 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - Flushed=true 6/6+1 WriteFlusher@196441b{WRITING}
20:18:50.098 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - flushed 465 SelectChannelEndPoint@188bf94{nucleo.neatocloud.com/54.84.102.60:4443<->41362,Open,in,out,FI,-,955/0,SslConnection@f6bd74}{io=1/1,kio=1,kro=1}
20:18:50.105 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - update WriteFlusher@196441b{IDLE}:WRITING-->IDLE
20:18:50.104 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - filled 0 SelectChannelEndPoint@1ffd4cc{/192.168.0.177:49694<->8080,Open,in,out,-,-,103/30000,HttpConnection@1c4576d}{io=0/0,kio=0,kro=1}
20:18:50.112 [DEBUG] [g.eclipse.jetty.server.HttpConnection] - org.eclipse.jetty.server.HttpConnection$SendCallback@1fe912e[PROCESSING][i=null,cb=Blocker@2aa8f3{null}] generate: DONE (null,[p=144,l=144,c=32768,r=0],false)@COMMITTED
20:18:50.109 [DEBUG] [org.eclipse.jetty.io.WriteFlusher    ] - Flushed=true 396/396+1 WriteFlusher@1bf917{WRITING}
20:18:50.116 [DEBUG] [org.eclipse.jetty.io.ChannelEndPoint ] - filled 0 SelectChannelEndPoint@1ffd4cc{/192.168.0.177:49694<->8080,Open,in,out,-,-,116/30000,HttpConnection@1c4576d}{io=0/0,kio=0,kro=1}

I don’t see any DEBUG output from Neato classes… looks like you only enabled debug on jetty classes or you haven’t posted the full details in the log.

Enable debug on org.openhab.binding.neato

The Neato binding will show the request and response json payloads which should help us narrow down if the request if going through correctly.

Filtered log…

21:00:33.132 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command start
21:00:33.154 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
21:00:33.358 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Result from getRobotState: {"version":1,"reqId":"abc","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":2,"mode":1,"modifier":1,"navigationMode":1,"spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":100},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"generalInfo":"basic-1","houseCleaning":"minimal-2","IECTest":"basic-1","logCopy":"basic-1","maps":"basic-1","preferences":"basic-1","schedule":"minimal-1","softwareUpdate":"basic-1","spotCleaning":"micro-2","wifi":"basic-1"},"meta": {"modelName":"BotVacD3Connected","firmware":"4.0.0-1632"}}
21:00:33.396 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
21:00:33.409 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Your vacuum cleaner does not support General Info messages
21:00:33.419 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel battery-level - lets see if any links exists!
21:00:33.430 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.451 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel state - lets see if any links exists!
21:00:33.465 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.482 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel version - lets see if any links exists!
21:00:33.494 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.513 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel model-name - lets see if any links exists!
21:00:33.530 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.542 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel firmware - lets see if any links exists!
21:00:33.557 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.572 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel action - lets see if any links exists!
21:00:33.605 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.624 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel dock-has-been-seen - lets see if any links exists!
21:00:33.645 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.665 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-docked - lets see if any links exists!
21:00:33.689 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.705 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-scheduled - lets see if any links exists!
21:00:33.724 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.744 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-charging - lets see if any links exists!
21:00:33.758 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:33.772 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel error - lets see if any links exists!
21:00:33.787 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:36.776 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command start
21:00:36.780 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Ok - will handle command for CHANNEL_COMMAND
21:00:36.806 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
21:00:36.964 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Result from getRobotState: {"version":1,"reqId":"abc","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":2,"mode":1,"modifier":1,"navigationMode":1,"spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":100},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"generalInfo":"basic-1","houseCleaning":"minimal-2","IECTest":"basic-1","logCopy":"basic-1","maps":"basic-1","preferences":"basic-1","schedule":"minimal-1","softwareUpdate":"basic-1","spotCleaning":"micro-2","wifi":"basic-1"},"meta": {"modelName":"BotVacD3Connected","firmware":"4.0.0-1632"}}
21:00:37.007 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
21:00:37.017 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Your vacuum cleaner does not support General Info messages
21:00:37.029 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel battery-level - lets see if any links exists!
21:00:37.041 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.054 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel state - lets see if any links exists!
21:00:37.080 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.099 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel version - lets see if any links exists!
21:00:37.150 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.192 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel model-name - lets see if any links exists!
21:00:37.231 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.288 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel firmware - lets see if any links exists!
21:00:37.336 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.354 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel action - lets see if any links exists!
21:00:37.374 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.401 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel dock-has-been-seen - lets see if any links exists!
21:00:37.420 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.437 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-docked - lets see if any links exists!
21:00:37.461 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.480 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-scheduled - lets see if any links exists!
21:00:37.503 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.520 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-charging - lets see if any links exists!
21:00:37.538 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:00:37.558 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel error - lets see if any links exists!
21:00:37.589 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!

Thanks for the help

Interesting side note when I use a working command an extra line appears in the log. See blow…

21:16:17.753 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'RosieCommand' received command pause
21:16:17.754 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Ok - will handle command for CHANNEL_COMMAND
21:16:18.775 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Will get STATE for Robot Rosie
21:16:18.947 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Result from getRobotState: {"version":1,"reqId":"abc","result":"ok","data": {},"error":null,"alert":null,"state":3,"action":1,"cleaning": {"category":2,"mode":1,"modifier":1,"navigationMode":1,"spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":false,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":99},"availableCommands": {"start":false,"stop":true,"pause":false,"resume":true,"goToBase":false},"availableServices": {"generalInfo":"basic-1","houseCleaning":"minimal-2","IECTest":"basic-1","logCopy":"basic-1","maps":"basic-1","preferences":"basic-1","schedule":"minimal-1","softwareUpdate":"basic-1","spotCleaning":"micro-2","wifi":"basic-1"},"meta": {"modelName":"BotVacD3Connected","firmware":"4.0.0-1632"}}
21:16:18.988 [INFO ] [ab.binding.neato.handler.NeatoHandler] - Successfully got and parsed new state for Rosie
21:16:18.996 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Your vacuum cleaner does not support General Info messages
21:16:19.005 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel battery-level - lets see if any links exists!
21:16:19.015 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.027 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel state - lets see if any links exists!
21:16:19.045 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.055 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel version - lets see if any links exists!
21:16:19.067 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.096 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel model-name - lets see if any links exists!
21:16:19.111 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.124 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel firmware - lets see if any links exists!
21:16:19.142 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.163 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel action - lets see if any links exists!
21:16:19.178 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.192 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel dock-has-been-seen - lets see if any links exists!
21:16:19.270 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.283 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-docked - lets see if any links exists!
21:16:19.299 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.316 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-scheduled - lets see if any links exists!
21:16:19.346 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.371 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel is-charging - lets see if any links exists!
21:16:19.397 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!
21:16:19.422 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Will try to publish changes to channel error - lets see if any links exists!
21:16:19.440 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Yes, channel is linked. Will publish updates!

It appears

21:16:17.754 [DEBUG] [ab.binding.neato.handler.NeatoHandler] - Ok - will handle command for CHANNEL_COMMAND

only shows up on working commands…

Are you running the code that was merged into master recently? Those log messages look like the old code which had a lot of issues.

I downloaded the binding from here github at the following repository…

That’s a really old version of the code. I suggest building from the main openhab2-addons now that the binding has been officially incorporated into openhab.

Where can I find the Neato binding? I tried the old version which was not working properly.

In PaperUI the new binding is not shown.

The binding is not available in the latest stable release (2.3) but it should be available in the milestone builds for 2.4.

Is there a way to update the openhabianpi directly in the system itself or how can I update to 2.4?

Ok I solved, Binding is configured and seems to work

Hi,

After the newest update from my Botvac Connected D7 it is possible to clean zones instead of the hole room!

Does anyone knows if I can start this zone cleaning directly over the binding? I can just start this from the app without scheduling it!
I hope that I can schedule this kind of cleaning via OpenHAB!

Maybe some of you have experience with it!

Thanks

Regards

No this won’t work through openhab right now. I would expect there are some API changes necessary to be able to initiate a zone cleaning. Looking at the Neato API docs, I don’t see any updates to the published API to allow for that yet.

https://developers.neatorobotics.com/api/robot-remote-protocol

Hi,

ok - thanks for your help.

Hi,
where can I get the “neato-sv.map” map file used in items definition?

Thanks

2 Likes

Hey ya go.
I found bits and pieces on another thread.

ui_error_navigation_noprogress=Navigation Issue 
ui_alert_recovering_location=Recovering Location 
ui_error_brush_overload=Brush Overload 
ui_error_dust_bin_full=Dust Bin Full 
ui_error_dust_bin_emptied=Dust Bin Emptied 
ui_error_brush_stuck=Brush Stuck 

// Curent state of the vacuum cleaner 
INVALID=Invalid 
IDLE=Idle 
BUSY=Busy 
PAUSED=Paused 
ERROR=Error 

ON=Yes 
OFF=No 

IEC TEST=Iec Test 

// Current or last cleaning mode 
MODE-ECO=Eco 
CLEAN-MODE-TURBO=Turbo 

// Modifier of current or last cleaning 
CLEAN-MODIFIER-NORMAL=Normal 
CLEAN-MODIFIER-DOUBLE=Double 

// Current or Last category of the cleaning 
CLEAN-CATEGORY-HOUSE=House Cleaning 
CLEAN-CATEGORY-SPOT=Spot Cleaning 
CLEAN-CATEGORY-MANUAL=Manual Cleaning 
NULL=NULL 
-=NA 
=NA
1 Like

Yes, I got it, but values provided by channels of current binding are different.

also, in binding’s instructions there is no channel declaration in items, so I suppose the instruction page need some improvements.