Devices connect to NervesHub via the Device API. The Device API provides two modes of operation:
A persistent Phoenix channel
An HTTPS endpoint
NervesHub authenticates device connections via client-side certifications. Depending on the device, either intermittent polling of the HTTPS endpoint or connecting via a Phoenix channel will be more appropriate. Phoenix channel connections convey update notifications more quickly and support additional features at the expense of the device having to maintain a long running TLS connection to NervesHub.
nerves_hub library implements the Device API and can download and install firmware updates.