Hypfer / Cybele

BLE to MQTT Gateway for Smarthome and IoT Devices
Apache License 2.0
112 stars 16 forks source link

Failed to connect to Mi Kettle-TypeError: Cannot read property 'StartNotify' of undefined #20

Open isaaccs opened 3 years ago

isaaccs commented 3 years ago

Hi everyone,

I follow the readme to install the package. I've cloned the repo, done npm install, configured cybele as follows

{
  "mqtt": {
    "url": "MQTT"
  },
  "dongles": [
    {
      "hciDevice": "hci0",
      "mode": "le",
      "services": [],
      "devices": [{
  "type": "MiKettleDevice",
  "friendlyName": "Mi Kettle",
  "mac": "MAC",
  "productId":1116
}

      ]
    }
  ]
}
Connected to MQTT Broker
Startup complete
/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:166
        this.characteristicsByUUID[MiKettleDevice.CHARACTERISTICS.auth].StartNotify([], err => {
                                                                        ^

TypeError: Cannot read property 'StartNotify' of undefined
    at /home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:166:73
    at Object.item.task (/home/pi/Cybele/node_modules/semaphore/lib/semaphore.js:40:29)
    at Object.take (/home/pi/Cybele/node_modules/semaphore/lib/semaphore.js:51:9)
    at MiKettleDevice.doAuthStageTwo (/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:165:20)
    at Object.<anonymous> (/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:156:22)
    at EventEmitter.<anonymous> (/home/pi/Cybele/node_modules/dbus-native/lib/bus.js:138:19)
    at EventEmitter.emit (events.js:388:22)
    at /home/pi/Cybele/node_modules/dbus-native/index.js:106:14
    at Socket.<anonymous> (/home/pi/Cybele/node_modules/dbus-native/lib/message.js:55:9)
    at Socket.emit (events.js:376:20)

Any ideas what's wrong?

isaaccs commented 3 years ago

I add the Token in the config file, now I have a new error.

Connected to MQTT Broker
Startup complete
Disconnected from Mi Kettle
Mi Kettle {
  message: 'Failed to connect to Mi Kettle',
  error: 'Timeout exceeded'
} while connecting

/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:166
        this.characteristicsByUUID[MiKettleDevice.CHARACTERISTICS.auth].StartNotify([], err => {
                                                                        ^

TypeError: Cannot read property 'StartNotify' of undefined
    at /home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:166:73
    at Object.item.task (/home/pi/Cybele/node_modules/semaphore/lib/semaphore.js:40:29)
    at Object.take (/home/pi/Cybele/node_modules/semaphore/lib/semaphore.js:51:9)
    at MiKettleDevice.doAuthStageTwo (/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:165:20)
    at Object.<anonymous> (/home/pi/Cybele/lib/devices/MiKettle/MiKettleDevice.js:156:22)
    at EventEmitter.<anonymous> (/home/pi/Cybele/node_modules/dbus-native/lib/bus.js:138:19)
    at EventEmitter.emit (events.js:388:22)
    at /home/pi/Cybele/node_modules/dbus-native/index.js:106:14
    at Socket.<anonymous> (/home/pi/Cybele/node_modules/dbus-native/lib/message.js:55:9)
    at Socket.emit (events.js:376:20)
RestOp commented 3 years ago

The same with new Xiaomi Kettle Pro it make beep and give the error like this MAC: A4:C1:38:81:FE:58 Token: e3e28761a205cc475e1aa1ac Model: yunmi.kettle.v12

Hypfer commented 3 years ago

If there is no auth characteristic with that model, it might run a different firmware which works.. differently and therefore requires additional reverse engineering

RestOp commented 3 years ago

How could we help to make it work (if we could)?

Marcusg562 commented 2 years ago

@Hypfer can we anyhow assist you? Providing logs or smthg else?

Hypfer commented 2 years ago

I'm not working on this.