MTrab/landroid_cloud

[FR]: Kress Mission RTKn Support

Banuss opened this issue · 13 comments

Banuss commented

Describe the feature you wish to make a request for

It seems like there is no support het for the Kress Mission RTK series but don't know for sure

Could you specify models/series dat are supported? And maybe list them in the readme

Really looking forward to us HA with my Kress KR174E.

Describe alternatives you've considered

None

Additional context

.

MTrab commented

Did you try latest beta to see if that solves it for this model as well?

And for listing supported devices - impossible task, as I have no idea ;)

Banuss commented

Yeah running v3.1.0b4.
I looked trough the code and filled in the endpoints (id.kress.com) in my browser.
I can login, but only see some basic account management.
Do I understand it correctly that the other series have more capabilities from the web?
And that I should wait on Positec to add control to the web portal?

MTrab commented

You can't use the web for anything.

Your best bet for support is to share your credentials to landroid_cloud (at) trab.dk and then I'll add support as soon as I got the time.

I get a "failed to setup" error with my Kress RTKn with the latest beta...

Error setting up entry Kress - f*****@******.** for landroid_cloud Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/landroid_cloud/__init__.py", line 63, in async_setup_entry result = await _async_setup(hass, entry) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/landroid_cloud/__init__.py", line 206, in _async_setup await hass.async_add_executor_job(cloud.connect) File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyworxcloud/__init__.py", line 259, in connect self._fetch() File "/usr/local/lib/python3.11/site-packages/pyworxcloud/__init__.py", line 671, in _fetch self._decode_data(device) File "/usr/local/lib/python3.11/site-packages/pyworxcloud/__init__.py", line 414, in _decode_data device.mac_address = data["dat"]["mac"] ~~~~~~~~~~~^^^^^^^ KeyError: 'mac'

MTrab commented

Seems like it has a new format as well.
The new API isn't documented by Positec yet, so it's a guessing game and I'll require access to an account with one of the new models to fix this.

Hi, please find some help here. I could even try to edit your code.

reply to product items function (Mac_address is empty for RTKn product)('I've replaced sensitive info with * from the json:

[
{
"id":101371,
"uuid":"",
"product_id":14,
"user_id":*****,
"serial_number":"
",
"mac_address":null,
"name":"RTK",
"locked":false,
"firmware_version":"3.32.0+8",
"firmware_auto_upgrade":true,
"push_notifications":true,
"sim":null,
"push_notifications_level":"warning",
"test":false,
"iot_registered":true,
"mqtt_registered":true,
"pin_code":null,
"registered_at":"2023-08-25 00:00:00",
"online":true,
"app_settings":null,
"protocol":1,
"pending_radio_link_validation":null,
"capabilities":[
"auto_lock",
"border_cut",
"follow_border",
"maps",
"mqtt",
"ota_upgrade",
"rain_delay",
"unrestricted_mowing_time"
],
"capabilities_available":[

  ],
  "features":{
     "auto_lock":true,
     "chassis":"mission_rtk_2022",
     "display_type":"lcd",
     "input_type":"keyboard_arrow_keys_capacitive",
     "maps":true,
     "mqtt":true,
     "rain_delay":true,
     "unrestricted_mowing_time":true
  },
  "accessories":{
     "cellular":true,
     "electric_height_adjustment":true,
     "ultrasonic":true
  },
  "mqtt_endpoint":"iot.eu-west-1.kress-robotik.com",
  "mqtt_topics":{
     "command_in":"KR\/MW\/KR173E\/***************************\/v1\/commandIn",
     "command_out":"KR\/MW\/KR173E\/**************************\/v1\/commandOut"
  },
  "warranty_registered":true,
  "purchased_at":"2023-08-25 00:00:00",
  "warranty_expires_at":"2026-08-25 00:00:00",
  "setup_location":null,
  "city":null,
  "time_zone":"Europe\/Rome",
  "lawn_size":null,
  "lawn_perimeter":null,
  "auto_schedule_settings":null,
  "auto_schedule":false,
  "improvement":true,
  "diagnostic":true,
  "distance_covered":0,
  "mower_work_time":0,
  "blade_work_time":0,
  "blade_work_time_reset":0,
  "blade_work_time_reset_at":null,
  "battery_charge_cycles":121,
  "battery_charge_cycles_reset":0,
  "battery_charge_cycles_reset_at":null,
  "created_at":"2023-02-05 05:11:00",
  "updated_at":"2023-09-06 14:21:47",
  "last_status":{
     "timestamp":"2023-09-22 14:04:53",
     "payload":{
        "cfg":{
           "id":0,
           "tz":"Europe\/Rome",
           "lg":"de",
           "cmd":0,
           "rtk":{
              "map":"*************************************",
              "ck":"*****************************************",
              "st":1,
              "zs":[
                 {
                    "id":1,
                    "cfg":{
                       "sc":{
                          "freq":1440
                       },
                       "cut":{
                          "t":1,
                          "d":106
                       },
                       "modules":{
                          "EA":{
                             "h":45
                          }
                       }
                    }
                 },
                 {
                    "id":2,
                    "cfg":{
                       "sc":{
                          "freq":1440
                       },
                       "cut":{
                          "t":1,
                          "d":108
                       },
                       "modules":{
                          "EA":{
                             "h":45
                          }
                       }
                    }
                 }
              ]
           },
           "sc":{
              "enabled":1,
              "paused":0,
              "slots":[
                 {
                    "e":1,
                    "d":1,
                    "s":600,
                    "t":540,
                    "cfg":{
                       "cut":{
                          "z":[
                             1
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":2,
                    "s":480,
                    "t":240,
                    "cfg":{
                       "cut":{
                          "z":[
                             2
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":2,
                    "s":720,
                    "t":660,
                    "cfg":{
                       "cut":{
                          "z":[
                             1
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":3,
                    "s":480,
                    "t":945,
                    "cfg":{
                       "cut":{
                          "z":[
                             1
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":4,
                    "s":420,
                    "t":780,
                    "cfg":{
                       "cut":{
                          "z":[
                             1
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":5,
                    "s":540,
                    "t":180,
                    "cfg":{
                       "cut":{
                          "z":[
                             2
                          ]
                       }
                    }
                 },
                 {
                    "e":1,
                    "d":5,
                    "s":900,
                    "t":480,
                    "cfg":{
                       "cut":{
                          "z":[
                             1
                          ]
                       }
                    }
                 }
              ],
              "freq":0
           },
           "cut":{
              "t":0,
              "d":-1,
              "z":[
                 
              ]
           },
           "rd":180,
           "al":{
              "lvl":0,
              "t":60
           },
           "tq":0,
           "dk":{
              "id":[
                 1
              ]
           },
           "modules":{
              "4G":{
                 "enabled":0,
                 "geo":{
                    "dist":50
                 }
              },
              "EA":{
                 "h":45
              },
              "US":{
                 "enabled":1
              }
           }
        },
        "dat":{
           "uuid":"*********************************",
           "tm":"2023-09-22T14:04:53.786Z",
           "fw":"3.32.0+8",
           "ls":1,
           "le":5,
           "conn":"4G",
           "bt":{
              "t":171,
              "v":3631,
              "p":16,
              "nr":121,
              "c":0,
              "m":0
           },
           "head":{
              "uuid":"******************************",
              "fw":"1.3.11+5",
              "act":1
           },
           "dmp":[
              ******************,
              ***********************,
              ************************
           ],
           "st":{
              "b":0,
              "d":0,
              "wt":0,
              "bl":0
           },
           "act":1,
           "rsi":-75,
           "rain":{
              "s":1,
              "cnt":10800
           },
           "sh":0,
           "sc":{
              "slot":0
           },
           "cut":{
              
           },
           "rtk":{
              "network":{
                 "status":1,
                 "error":1
              },
              "gps":{
                 "status":1,
                 "error":1
              },
              "imu":{
                 "status":0
              }
           },
           "modules":{
              "4G":{
                 "stat":"ok",
                 "vers":808,
                 "mode":0,
                 "geo":{
                    "stat":"unset"
                 },
                 "gps":{
                    "coo":[
                       **.*************,
                       **.*************
                    ]
                 },
                 "network":{
                    "status":"connected",
                    "mode":"Cat-M1",
                    "ICCID":"********************",
                    "IMSI":"*********************",
                    "rssi":-75
                 }
              },
              "EA":{
                 "stat":"ok",
                 "error":0
              },
              "US":{
                 "stat":"ok"
              }
           }
        }
     }
  }

}
]

gmp91 commented

how can I contribute with credentials? I have multiple Kress RTKn mowers running.

MTrab commented

Please share to landroid_cloud (at) trab.dk

cm86 commented

Hello @MTrab do you still need credentials?

MTrab commented

Yes I do

cm86 commented

Send them right now via email.

MTrab commented

Thanks - been thru surgery and haven't had the chance to check yet - will look into this as soon as I'm able to sit at a computer for more than just a short time.

MTrab commented

Work is progressing quite well right now. Have the statuses ready, a few attributes still missing and then I need to test the command format.