mezz64 / pyEight

Python library to interface with the Eight Sleep API
MIT License
59 stars 15 forks source link

Support for local non-cloud connection #30

Open jonatino opened 2 years ago

jonatino commented 2 years ago

Is there any possibility of being able to bypass the eightsleep cloud entirely and instead interact directly with the sleep hub? Would be interested if anyone here has tried anything like this.

mezz64 commented 2 years ago

There isn't a local API endpoint that I was able to find. You would need to sniff the wifi traffic to see where it sends the data and then force the hub to use a local DNS server where you can redirect that URL to a local server that accepts the packets.

It's possible you can maybe get somewhere with a hardware mod also. There could be rx/tx debug pads that you could tap an external device onto.

A local method would definitely be nice since the cloud API is spotty at best, often with very long response times.

jonatino commented 2 years ago

Yeah, this bed cover is life changing but the cloud only concept is so dumb. I live in rural Canada where internet isn’t stable, and if the internet connection drops, the bed shuts itself off. I’m presuming it’s some safety feature, but my bed shouldn’t need internet connection to function.

I’d be willing to chip towards a bug bounty if anyone is serious about accomplishing this.

andrew-kennedy commented 1 year ago

Not to necro this issue but I actually have a spare pod pro 2, as my wifi connection on the unit they first sent to me wasn't great, so they sent me an entire new pod pro 2, and told me I could dispose of the old one lol. So I have access to spare hardware to mess with, if anyone has pointers or wants me to disassemble and send them the board, I can do so!

329229 commented 1 year ago

Hey, figured i'll share this here as well given the recent changes meant to stop third-party api access. You could absolutely implement a drop-in replacement for their cloud. Below is some info on patching the pod 2 firmware (there's a tag-connect header you can use to see the uart output / download & update the firmware). You'd have to swap the url and pubkey of the cloud and of course implement the cloud alternative itself (but the effort there is not that complicated, imo).

fw hdr structure hexedit checksums changes

The pod 2 uses an RTOS on an STM32 chip, the pod 3 is just an embedded linux box (but maybe more on that topic on another occasion).

329229 commented 1 year ago

pcb 10501 notes & PCB pics with the debug header pinout