Red Sea LED Aquarium Lights

I’ve searched and searched and not seen anybody posting an integration for these lights, but I’m hoping someone can point me in the right direction. The lights are definitely running a local web interface that responds with some status info when I hit it with a browser, but there’s nowhere else to go without pulling out wireshark.

1 Like

The lights appear to be using MQTT, not a rest API. I’ve never done any low level work with MQTT, but my first forays aren’t able to connect to the devices (it’s just ‘refused’). Is there a way to sniff MQTT traffic from my mobile app? The lamps have an “offline” mode that is still controlled from the app on a local network, so I’m assuming the broker is built into the lamps?

#mqtt

Wonder if there’s a way to integrate the ReefBeat app to HA…

It irritates me that it’s the only manufacturer that I can’t control.

I’d really like to develop an API for their ATO as I hate having to use their software.

Definitely MQTT

Source: ReefBeat / ReefWave - Smart Reef Pumps System

Well, thank you for that link. I sent esolutions a note through their contact us page. I give it a 5% chance of materializing, but better than not trying. In particular, I would like to set the desired schedule and then monitor power usage (through a neptune apex) to verify the light is on at the desired brightness. But man it would be cool to be able to run it on a solar cycle based on a target latitude.

Yeah, that page is certainly insightful.

I’m irritated enough to try and reverse engineer their android app to see if I can subscribe to their mqtt broker. I’ve tried snooping the mqtt messages locally and they’re obviously encrypted.

My main reason for wanting to do it is to gain a numerical value for their ATO water level sensor. I hate that is uses a desired range as, due to my sump design, it results in infrequent large volumes of RODI being dumped into the tank. It’s fairly trivial to intercept the messages but I’ve only been able to replay the manual start/stop command for the ATO pump.

esolutions look like they’ve adhered to best practices when designing ReefBeat so I doubt I’m going to find a nicely labeled certificate for client based mqtt authentication. That being said, they also don’t have the need to implement something more secure such as rolling codes.

I’m comfortable with mqtt, but have no background in android app design, but I imagine that’s going to be easier than the iOS app I use. I’ll sign into their Android App using an emulator and try and see if I can ascertain how it handles the client side authentication. At the end of the day, I’ve potentially already got a valid set of credentials …

1 Like

ok, so with some help, I’ve decompiled the app and can see that the end devices also respond to http requests. Try browsing http:/device-info using the IP of of any ReefBeat device. :sunglasses:

Trying to get an index commands from the code and will go from there.

Making progress!

1 Like

I get a nice JSON response - any other endpoints? Is this a standard http package we can guess endpoints?

On review, I’ve seen the root response as well - but I wasn’t able to find any of the endpoints.

{
ap_enabled: false,
ap_ip: "(IP unset)",
wifi_enabled: true,
wifi_ip: "10.0.210.106",
rtc_connected: true,
flash_size: 4194304,
real_flash_size: 4194304,
free_heap: 11536,
total_bytes: 957314,
used_bytes: 21586,
max_open_files: 5,
max_path_length: 32,
uptime: "D:011-H:09-m:34-s:11",
reset_reason: "Power On",
uuid: "bcff4d5142fe",
i2c_devices: [
{
address: "0x40",
device: "RSLED90"
},
{
address: "0x68",
device: "RTC"
}
]
}

the device-info endpoint gives a smaller response:

{
hw_type: "reef-lights",
hw_model: "RSLED90",
name: "RSLED90-5325566",
status: "unpaired",
hwid: "bcff4d5142fe"
}

The ap I imagine is part of the handshake, and I don’t know what RTC refers to.

I can only check using the ReefMatt and ATO - I don’t use their lights.

I’ll reply back when I have indexed the commands.

My goal is to ultimately connect over mqtt using my existing credentials.
I’m confident I’ll be able to achieve that, but I can’t write a HACS integration so hopefully we can all work together

try /dashboard