# Detect Hyperion

Hyperion pronounces it's services at the network. Currently with ZeroConf and SSDP.

# SSDP

SimpleServiceDiscoveryProtocol (SSDP), is the discovery subset of UPnP. The implementation is lighter than ZeroConf as it just needs a UdpSocket without further dependencies.

# SSDP-Client Library

Here are some client libraries for different programming languages. You can also search for "UPnP" client libraries. This list isn't complete, nor tested but will show you how simple it actually is!

# Usage

If you found a ssdp-client library, all you need to do is searching for the following USN / service type:

urn:hyperion-project.org:device:basic:1

Some headers from the response.

  • Location: The URL of the webserver
  • USN: The unique id for this Hyperion instance, it will remain the same also after system restarts or Hyperion updates
  • HYPERION-FBS-PORT: The port of the flatbuffers server
  • HYPERION-JSS-PORT: The port of the JsonServer
  • HYPERION-NAME: The user defined name for this server
  • More may be added in future with additional data to other Hyperion network ports

You will receive further notifications when the data changes (Network adapter changed the IP Address, port change) or Hyperion shuts down.

# Zeroconf

Also known as Apple Bonjour or Avahi. Hyperion is detectable through zeroconf.

Hyperion publishes the following informations:

  • _hyperiond-http._tcp -> Hyperion Webserver (HTTP+Websocket)
  • _hyperiond-json._tcp -> Hyperion JSON Server (TcpSocket)
  • _hyperiond-flatbuf._tcp -> Hyperion Flatbuffers server (Google Flatbuffers)

So you get the ip address, hostname and port of the system. Also the Hyperion instance name is part of it (before the @ for the full name). As this works realtime you have always an up2date list of available Hyperion servers right to your hand. So check your development environment if you have access to it.

# TXT RECORD

Each published entry contains at least the following informations at the txt field

  • id = A static unique id to identify a hyperion instance (good value to sort between new and known instances)
  • version = Hyperion version

# Test Clients

There are several clients available for testing like the avahi-browse commandline tool for ubuntu/debian. Example command

sudo apt-get install avahi-browse &&
avahi-browse -r _hyperiond-http._tcp
Searching for Hyperion Server with Avahi cli
Searching for Hyperion Server with Avahi cli