bloomkd46 / homebridge-iRobot

A homebridge plugin for controlling iRobot devices
Apache License 2.0
62 stars 14 forks source link

Bug Report: Wrong device type #184

Open schlosrat opened 1 year ago

schlosrat commented 1 year ago

Describe The Bug:

When discovering devices automatically using iRobot account name/password devices show up with odd and wrong device types. For example, my j7+ shows up as a Fanv2, and my m6 shows up as a Television.

When adding these devices to Home the m6 (Television) treats the functions as Input Sources, and so they are available. With the j7+ (Fanv2) there are no functional available in Home app.

To Reproduce:

Install V4.0.0.beta.11 Add devices automatically (with a j7+ and an m6 in the associated iRobot account) Save Restart Homebridge Observe device types in Homebridge Accessories

Expected behavior:

Devices are assigned reasonable and useful device types enabling access to their functions in Home App

Logs:

[1/21/2023, 3:33:31 PM] [iRobot] Initializing iRobotPlatform platform...
[1/21/2023, 3:33:31 PM] [iRobot] Configuring accessory: Sorcerer
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: Server Started 
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: Restoring data from cache 
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: Connecting... 
[1/21/2023, 3:33:31 PM] [iRobot] Configuring accessory: Cinderella
Setup Payload:
X-HM://0024PM5686H43
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐     
    │ 750-50-160 │     
    └────────────┘     

[1/21/2023, 3:33:31 PM] Sorcerer 3070 is running on port 38324.
[1/21/2023, 3:33:31 PM] Please add [Sorcerer 3070] manually in Home app. Setup Code: 750-50-160
[1/21/2023, 3:33:31 PM] Homebridge v1.6.0 (HAP v0.11.0) (Homebridge 38D2) is running on port 51974.
[1/21/2023, 3:33:31 PM] Cinderella B96C is running on port 34947.
[1/21/2023, 3:33:31 PM] Please add [Cinderella B96C] manually in Home app. Setup Code: 750-50-160
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: undefined 
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: Offline 
[1/21/2023, 3:33:31 PM] [iRobot] Sorcerer: Failed to disconnect

Config:

{
            "name": "iRobot",
            "accessories": [
                {
                    "name": "Sorcerer",
                    "blid": "970BD6C59C9B4283A20CAEE00635677A",
                    "password": ":1:1674307939:2PE0L2HCHlac1KA1",
                    "sw": "sanmarino+22.29.5+2022-09-29-c7d212a8ae8+Firmware-Build+1990",
                    "sku": "m611020",
                    "ipResolution": "broadcast"
                },
                {
                    "name": "Cinderella",
                    "blid": "FB5E69F21B314000B67930A0A6A640F5",
                    "password": ":1:1674248624:zsmMW2nikgjeB4OF",
                    "sw": "sapphire+1.0.19+Firmware-Production+53",
                    "sku": "j755020",
                    "ipResolution": "broadcast"
                }
            ],
            "logLevel": 4,
            "autoConnect": true,
            "alwaysShowModes": false,
            "platform": "iRobotPlatform"
        }

Node Version:

16.16.0

NPM Version:

8.11.0

Homebridge Version:

v1.6.0

Plugin Version:

V4.0.0.beta.11

Operating System:

Docker

schlosrat commented 1 year ago

Note: My J7+ is Cinderella and my M6 is Sorcerer

bloomkd46 commented 1 year ago

Go into your homebridge settings and click Remove Single Cached Accessory then select all instances of the Roomba that are still showing up as a fan

schlosrat commented 1 year ago

I just tried this, but it didn't work.

I first did the Remove Single Cached Accessory in Homebridge, but when looking at the iRobot plugin it was still showing there so I deleted it there as well (Homebridge iRobot > Settings > Devices > Delete Button). After that, I restarted Homebridge and observed that the misidentified device (j7+) was not there, but my other robot (m6) was. I then used Homebridge iRobot > Settings > Devices > Add Button to get to the page where I supply my iRobot account email/password. That got me back to having the j7+ in the lineup, but I'm still getting this message when I check the Homebridge iRobot > Settings > Devices tab

Status: Disconnected Failed to load logs from /volume1/homebridge/iRobot/FB5E69F21B314000B67930A0A6A640F5.log

My Homebridge is running on my Synology NAS, and that looks like the right place to find a log. When I look in that folder on the NAS I see a General.log file and a couple of other files named 970BD6C59C9B4283A20CAEE00635677A.log and 970BD6C59C9B4283A20CAEE00635677A.cache.json. The General log has about the same content as the other file except it precedes the event entries with the name of the robot "Sorcerer" whereas the other one does not.

Now the j7+ is showing up in the Homebridge log but is not showing up at all in the accessories. When I check my m6 on the Devices tab it shows Status: Connected and a bunch of log entries.

My Homebridge log has these iRobot entries

[1/22/2023, 2:44:08 PM] [iRobot] Initializing iRobotPlatform platform... [1/22/2023, 2:44:08 PM] [iRobot] Configuring accessory: Sorcerer [1/22/2023, 2:44:08 PM] [iRobot] Sorcerer: Server Started [1/22/2023, 2:44:08 PM] [iRobot] Sorcerer: Restoring data from cache [1/22/2023, 2:44:08 PM] [iRobot] Sorcerer: Connecting... [1/22/2023, 2:44:09 PM] [iRobot] Configuring accessory: Cinderella Setup Payload: X-HM://0024PM5686H43 Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

┌────────────┐     
│ 750-50-160 │     
└────────────┘     

[1/22/2023, 2:44:09 PM] Sorcerer 3070 is running on port 39019. [1/22/2023, 2:44:09 PM] Please add [Sorcerer 3070] manually in Home app. Setup Code: 750-50-160 [1/22/2023, 2:44:09 PM] Homebridge v1.6.0 (HAP v0.11.0) (Homebridge 38D2) is running on port 51974. [1/22/2023, 2:44:09 PM] Cinderella B96C is running on port 40282. [1/22/2023, 2:44:09 PM] Please add [Cinderella B96C] manually in Home app. Setup Code: 750-50-160 [1/22/2023, 2:44:09 PM] [iRobot] Sorcerer: undefined [1/22/2023, 2:44:09 PM] [iRobot] Sorcerer: Offline [1/22/2023, 2:44:09 PM] [iRobot] Sorcerer: Failed to disconnect