Narwal self cleaning robot

The Google Home integration has recently been added. It’s far from perfect (just a start/stop button and whether it’s in its base), but they might add more functionalities later.
For now, we can use Google Assistant SDK integration to add the device to Home Assistant I guess.

I’m very much a home assistant newbie though I’ve had a smart home for more years than I can count and have used a Hubitat for the last few years as part of my smart home system. I just want to pass along how I have integrated a Narwal Freo X Plus with my Hubitat as I expect something very similar could be done with Home Assistant.

The Freo X Plus has limited integration with Alexa. You can start it on a cleaning mission and tell it to stop and return to the base station. I haven’t found a way to obtain a status update when the robot is finished cleaning.

Based on this, I created a virtual contact sensor on the Hubitat and integrated that with Alexa. This allows me to trigger an Alexa routine when the contact sensor is programatically closed on the Hubitat. Then the Alexa routine I use simply starts the Narwal on a cleaning mission. I run the Narwal once a week when the house becomes unoccupied so the robot cleans when nobody is home.

To detect when the Narwal is finished cleaning (fortunately, cleaning the main floor of my home can be done without recharging), I have glued a magnet to the Narwal. Then I attached a magnetic contact sensor to the base station and wired it to the input on a Shelly device. This provides a trigger when the Narwal finishes cleaning and returns to the charging station.

It is a bit of a Kludge but it does reliably work. I hope this helps other people who want to integrate the Narwal.

Thanks

2 Likes

I’m considering getting one of the new Narwal Freo Z Ultra robots, this one looks great with it’s AI features, actually spot mopping areas and returning to dock to self-clean before continuing. But the lack of integration with HASS is holding me back. Anyone know if there’s something in the works?

1 Like

Not quite, unfortunately. In theory you can launch it with an Alexa command pushed through an “Alexa Media Player” HACS integration. However, I would at least prefer to know if the robot is docked or no, before pushing the command, and as of now, I didn’t find a way to overcome this. Alexa routines don’t recognize Freo Z Ultra as a trigger, so I can’t change a state of a helper from Alexa. Google Home does… But the routines never trigger, regardless if the automation should be triggered by the robot turning on/off or docking/undocking.
Someone mentioned gluing a magnet to the robot and using a contact sensor, but that’s not a perfect solution.

i also own one. would love an integration!

Hello everyone,

Like many of you, I am very interested in integrating the Narwal Freo Z Ultra robot with Home Assistant. I recently exchanged a few emails with Narwal support, explaining the importance of releasing public APIs, not only for users but also for the Home Assistant community.

Unfortunately, their response was disappointing and lacking in information. Essentially, they informed me that the API cannot be released due to commercial reasons, and they do not appear to be willing to consider our requests. They mentioned that Alexa, Siri, and soon Google Home will be integrated, but this does not meet our need for a true public API. They also mentioned that they would forward my request to the technical team, but I remain skeptical about any potential future developments.

Here is the content of their reply:


Sharon (Support)
[email protected]
Davide Bevilacqua

Dear customer,
Thank you for contacting Narwal.
We apologize for the delay in our response due to an increase in email requests.

Regarding your API request,
we regret to inform you that the API cannot be released to the public for commercial reasons. We ask for your understanding.
Alexa and Siri are currently available, and Google Home will soon be available for integration.
We will forward your user experience and concerns to our technicians, so that more integration options may be available in the future.


Their response came after almost a month (from October 26, 2024, to November 18, 2024), which also indicates the quality of their support.

If any of you are interested in working on an unofficial project to integrate the robot with Home Assistant, I am available and willing to collaborate in the coming months.

I hope to receive some positive feedback. In the meantime, I wish everyone happy and automatic home cleaning!

Good Home Assistant to all of you!

W Home Assistant!

If i would have known it’s not possible to integrate narwal with homeassistant then i would not have bought it…so disappointing

In the China region, you can first connect to Mi Home and then integrate it into Home Assistant through the Xiaomi Miot Auto integration. Although the official API documentation lists many properties and events, I can only retrieve a small portion of them - most properties either appear non-existent or are shown as unknown attributes.

Official Technical Documentation:扫地机器人物模型丨小米IoT平台

i haf tried to capture details about norwal j1.

in past version, it is using zhinengtuodi and http api to work. but one they change to cn-app.norwaltech.com and appbury.norwaltech.com.

after capture from rooted android device. i found that tls over tcp is using when view with wireshark.

all data is hiding behind tls v1.2, not http api. i hope someone can point out i am wrong with ssl pinning that can not get requests.

my conclusion is they r using mqtt to communicat with server. but after using frida, i can not get decrypted content from hooked ssl write and ssl reaf. just get http request to bugly which is a service for wpp crash.

any help will be much apericated for helping capture raw data of the app.

sorry for my error try. just figure out that, it is a flutter app, all http request are not pass through normal wifi proxy and need vpn to capture all requests.

it still use websocket to communicate with server. All content is crypted by aes/ecd algorithm. I had get the key of aes/ecb algorithm, but server use jwt validate request from app. Through all request, i found that jwt token is generated at client side, but i can not figure out jwt key. that means without a valid token, you can not connect to server.

@redelva I see that the app makes a request to https://eu-central-1.api-iot.aliyuncs.com/account/checkOrRefreshSession with the body:

{
   "id": "[UUID]",
   "params": {
      "request": {
         "identityId": "AAABBBCCC",
         "refreshToken": "DDDEEEFFF"
      }
   },
   "request": {
      "apiVer": "1.0.4",
      "appKey": "334128833",
      "language": "en-US"
   },
   "version": "1.0.0"
}

and receives as response:

{
   "code": 200,
   "data": {
      "identityId": "AAABBBCCC",
      "iotToken": "DDDEEEFFF",
      "iotTokenExpire": 72000,
      "refreshToken": "GGGHHHIII",
      "refreshTokenExpire": 720000
   },
   "id": "[UUID]"
}

Do the response tokens play a role in building or decoding the JWT?

You can now use Google Assistant SDK Custom from HACS to control most of what is needed.

You can even get info if it’s cleaning or not, it would even be possible to query periodicallly every 3 minutes or so to get a DIY state sensor.

Commands I use for a vaccum named Narwal are:

“Is Narwal on?”

  • gets status in response and compare with template condition
    {{ 'Narwal is running' in check.responses[0].text }}
    {{ 'Narwal is paused' in check.responses[0].text }}
    {{ "Narwal isn't running" in check.responses[0].text }}

“Narwal clean {{area}}”

  • goes and cleans a Kitchen for example as specified on the map
  • cleaning defaults to vaccum and mop and I didn’t find a way to change it, base station defaults are ignored

“Narwal start”
“Narwal pause”

  • pause and start
  • or start default, which is always vaccum and mop

“Narwal go to dock”

  • return to dock and stop

Did anyone find a way to change the cleaning mode for voice activation? It’s not the last used for my Freo Z Ultra, always vaccum and mop.

2 Likes

this is working for me - thank you

only issue i’m having is it doens’t seem to respond to rooms with two words like TV Room.

i ahve renamed all rooms to single word but some that were not single words dont work.

tho i renamed Guest Toilet to Toilet and that works but I renamed Tv Room to Lounge and that still doesn’t work i.e Narwal clean Lounge

it jsut responds with:

responses:

  • text: “”

has anyone worked out how to fix this?

I have unlinked and relinked since renaming rooms - no luck.

thank you

EDIT: I thik it might be cause its custom. seems to only work with standard names (which are quite limited)

1 Like

Looks like they plan to rollout Matter support in November. I wouldn’t bet on that for all models or that timeline, but a hopeful sign.

From: https://us.narwal.com/pages/flow-robot-vacuum-and-mop?utm_source=klaviyo&utm_medium=email&utm_campaign=ax12_launch&utm_content=02_deepdive
Works Seamlessly with Matter

Matter integration enables seamless connectivity for a more convenient, customizable smart home experience (Available From November).

Any instructions out there on how to set this up?

1 Like

For now, this is only advertised for one model, though, the Narwal Flow. I hope it will not be the only one supported.

Well, no narwal for me then. Ill go with Dreame instead.

Developed an early integration, custom repository. Need testing. It is only tested for the Flow model. Use at own risk. GitHub - sjmotew/NarwalIntegration: Home Assistant custom integration for Narwal robot vacuums — fully local, no cloud