jsmestad
Structure to track online devices
I have a set of IoT devices reporting their current status to MQTT when online. Rather than storing the status, which can update frequently, in a database, I wanted something ephemeral like a GenServer.
My question though is how should I structure the GenServer? It seems naive to have every single device report it’s state to a single GenServer instance. On the other end, it seems like overkill to have a GenServer for every device (thousands of devices).
If it helps, the data is rather simple from each device:
{
online: {boolean},
active: {boolean},
activated_at: {timestamp},
expiring_at: {timestamp},
device_uid: {uuid}
}
What this data will be used for?
For now a simple dashboard showing all devices that are known and showing their current state.
Most Liked
hauleth
This is a little bit of the problem with Phoenix libraries that some of them IMHO needlessly use Phoenix in their name. Documentation of Phoenix.Presence points to the Phoenix.Tracker in case if you need only tracking, without rest of the Phoenix (I do not know why they resigned from name firenest for this, this would probably provide less confusion).
Yes. You should have single Presence/Tracker for all of your devices.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








