-
-
Notifications
You must be signed in to change notification settings - Fork 384
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
344 additions
and
340 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,57 @@ | ||
# Detect Hyperion | ||
Hyperion pronounces it's services at the network. Currently with ZeroConf and SSDP. | ||
Hyperion announces it's services on the network, via ZeroConf and SSDP. | ||
|
||
[[toc]] | ||
|
||
## SSDP | ||
**S**imple**S**ervice**D**iscovery**P**rotocol ([SSDP](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol)), is the discovery subset of UPnP. The implementation is lighter than ZeroConf as it just needs a UdpSocket without further dependencies. | ||
**S**imple**S**ervice**D**iscovery**P**rotocol | ||
([SSDP](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol)) is the | ||
discovery subset of UPnP. The implementation is lighter than ZeroConf as it just needs a | ||
UDP Socket without any 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! | ||
Here are some example client libraries for different programming languages (many others available): | ||
* [NodeJS](https://github.com/diversario/node-ssdp#usage---client) | ||
* [Java](https://github.com/resourcepool/ssdp-client#jarpic-client) | ||
|
||
### Usage | ||
If you found a ssdp-client library, all you need to do is searching for the following USN / service type: | ||
With a given SSDP-client library, you can use 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 | ||
Some headers from the response will include: | ||
* **Location**: The URL of the webserver | ||
* **USN**: The unique id for this Hyperion instance, it will remain the same 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 | ||
|
||
You will receive further notifications when the data changes (Network adapter changed the IP Address, port change) or Hyperion shuts down. | ||
As the data changes (e.g. network adapter IP address change), new updates will be automatically announced. | ||
|
||
## Zeroconf | ||
Also known as [Apple Bonjour](https://en.wikipedia.org/wiki/Bonjour_(software)) or [Avahi](https://en.wikipedia.org/wiki/Avahi_(software)). 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) | ||
* **_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. | ||
You get the IP address, hostname, port and the Hyperion instance name (before the @ for | ||
the full name). As this works realtime you can always have an up to date list of available | ||
Hyperion servers. | ||
|
||
### 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 | ||
Each published entry contains at least the following data in the txt field: | ||
* **id**: A static unique id to identify an Hyperion instance. | ||
* **version**: Hyperion version. | ||
|
||
|
||
### Test Clients | ||
There are several clients available for testing like the [avahi-browse](http://manpages.ubuntu.com/manpages/bionic/man1/avahi-browse.1.html) commandline tool for ubuntu/debian. Example command | ||
There are several clients available for testing like the | ||
[avahi-browse](http://manpages.ubuntu.com/manpages/bionic/man1/avahi-browse.1.html) a | ||
commandline tool for Ubuntu/Debian. Example command | ||
``` bash | ||
sudo apt-get install avahi-browse && | ||
avahi-browse -r _hyperiond-http._tcp | ||
sudo apt-get install avahi-browse && avahi-browse -r _hyperiond-http._tcp | ||
``` | ||
<ImageWrap src="/images/en/avahi-browse.jpg" alt="Searching for Hyperion Server with Avahi cli" /> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.