thomas-br / open-nello

Reverse Engineering of the Nello One and attempt to rebuild the server solution
MIT License
11 stars 0 forks source link

Open Source Server Solution #2

Open thomas-br opened 1 year ago

thomas-br commented 1 year ago

Concepts & Coordination for a open source server solution can be discussed here

thomas-br commented 1 year ago

Small update from my end. I was able to get some progress during the course of the holidays with this project:

I decided for myself that I would prefer a local solution in my network over an additional internet dependency as I anyhow have HomeKit that allows me to control HomeKit devices from the Internet. I went with a "bridge" implementation (Nello One MQTT Message <-> HomeKit) on an ESP32 based on HomeSpan. My working prototype can:

image image

Due to time reasons I skipped the following points:

If there is an interest to continue working on a local ESP32 based solution, I can push the code for collaboration. If there is no public interest on this – I would keep further developing it on my own without pushing it to this public repo.

Feel free to indicate via reactions or comments.

itskenny0 commented 1 year ago

I am definitely still very much interested in this. My nello is still mounted to my door bell, however I missed the time window that would have allowed me to capture packets that could be used to replay. I've been silently watching GitHub for any emerging projects that would enable me to make use of this hardware again.

Karrypto commented 1 year ago

any updates or beta release ? Please keep it up! I also prefer a simple local HomeKit solution

thomas-br commented 1 year ago

any updates or beta release ? Please keep it up! I also prefer a simple local HomeKit solution

@Karrypto So I have pushed some enhancements to the docs as well as a very simple beta implementation of a HomeKit Bridge between the NelloOne and your local HomeKit. It is by far not complete but may be a good start for collaborating here. I would like to advertise any contributions to this project are more than welcome, as I am currently quite short on time. For example it misses an implementation of the learning process so that the nello has set internally in its flash the state LEARNING_DONE. The state diagram in the docs and the mqtt messages description explains which messages are exchanged. Maybe we can work on putting that into the custom implementation as well.

You can checkout the ESP32 project in the subfolder open-nello-esp-homekit.

The file Config.h.template can be copied to the gitignored Config.h and enhanced with the configuration values of your needs.

As stated before the project is based on the HomeSpan Framework. Once the Wifi connection to your network is established, it connects to the specified mqtt broker and subscribes to the nello topics of your client and acts as very simplified nello backend. It exposes the ring signal to homekit and the homekit door opening signal back to the nello.

Now comes the tricky part. You need both your actual nello to connect to the same (& reliable) mqtt broker and the correct AES keys matching the ones from your ESP config. For this, either the fault injection hardware attack needs to be done (complex & time consuming), which allows you to dump your nello device specific firmware + client id + encryption keys. The other option is to override the nello flash with a patched firmware directly, which is much easier (but still requires opening the device and some cables to connect via Serial interface). Downside is you would loose the original one, so if the service would ever come online again your custom nello would not be able to connect to the original service ever again without a backup of the original firmware.

Both is described in the docs. I have dumped two firmware versions which in theory could be used to create a custom one with new encryption keys, client id & mqtt hostname. Let's discuss what could be a good way to provide that to people. I can of course support, as I have flashed multiple nellos over 20 times in the course of this project.

Lovely-Maisonette commented 1 year ago

I am a little confused.

I still have my non working nello installed. Are you going to provide a firmware that could be flashed and make NELLO work through a local MQTT broker?

I am looking for basic functionality

  1. Open door through MQTT
  2. Announce RING through MQTT (optional)
  3. Automatically open door on RING (optional, if 2. is provided this could be done externally through an automation, ie Home Assistant, Node-Red, etc)
thomas-br commented 1 year ago

@Lovely-Maisonette thanks for your interest.

So I was hesitant so far publishing firmware images due to various reasons, one being the legal stuff, another is that each Firmware would need to be customised with the desired hostname of the MQTT Broker and the encryption keys.

I'm pretty sure we can get yours also running again. Maybe shoot me a mail to github@thomasbruckner.de and we can check offline about this.