A (currently) low-level wrapper for the neoHub websocket API.
Upstream docs are available, with a free account, from https://dev.heatmiser.com/. They are not very complete or accurate.
Find your hub's address. Supposedly they respond to broadcast, but mine won't:
bash
echo -n "hubseek" | nc -b -u 255.255.255.255 19790
I pulled the IP from my router's dashboard. Let's say the IP is 192.168.13.37
.
Next, create a token in the mobile app. The name doesn't matter. It looks like a uuidv4
.
Export both of these as environment variables:
bash
export NEOHUB_URL=wss://192.168.13.37:4243
export NEOHUB_TOKEN=69696969-6969-4969-6969-696969696969
Then, you can use the library:
rust
let mut client = Client::from_env()?;
let result: Value = client.command_void(commands::GET_LIVE_DATA).await?;
println!("{}", result.to_string()));
Or one of the examples:
bash
cargo run --example neohub-cli
```
GETLIVEDATA { "CLOSEDELAY": 0, "COOLINPUT": false, "HOLIDAYEND": 0, "HUBAWAY": false, "HUB_HOLIDAY": false, ```
dump-live-data
continually exports the GETLIVEDATA to zstd
'd jsonlines
files.I don't think the API is stable enough to provide structs, like the (generated)
LiveData
struct, so I don't think adding those to the crate's API is a good idea.
Github issues or PRs, please.
MIT OR Apache-2.0