mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
add zeroconf support based on qt4 libraries (#667)
* Removed -HUP so the default -TERM signal is sent instead. - hyperiond only listens for TERM and INT. HUP is often used to get an exe to reread its config Changed pgrep to add '-x' so it wont partial match on the exe name. - I have multiple instances with multiple hyperiond-instance1 names - this ensures the service script only kills the right process * reversing errant change to hyperion.systemd.sh * added bonjour/zeroconf service discovery to the json interface. When clients are also modified, they can - find hyperiond on the network much more quickly than ping/portscan; - find multiple instances running on different ports instead of assuming 19444 * Moved zeroconf calls to hyperiond.cpp * Added mDNS/zerconf/bonjour registration for proto server Added config options. "jsonServer" : { "port" : 49444, // "mDNSDescr" : "hyperiond jsonServer blah de blah", "mDNSService" : "_hyperiond_json._tcp" }, * cleaned up a couple of compiler warnings * moved bitpair_to_byte initialiser to (hopefully) work with older GCC * compiler warning in udp driver removed some tabs in ws2812b.cpp * formatting - spaces to tabs * moved rpi_281x to tag sk6812-v1.0 * moving to my fork of rpi_281x * Now uses the led device name and hostname to create the annouce name Former-commit-id: abfa51bcf359cafa63338181c1b83ecfd231bc87
This commit is contained in:
@@ -35,9 +35,12 @@ if (ENABLE_PROTOBUF)
|
||||
target_link_libraries(hyperiond protoserver)
|
||||
endif ()
|
||||
|
||||
if (ENABLE_ZEROCONF)
|
||||
target_link_libraries(hyperiond bonjour)
|
||||
endif()
|
||||
|
||||
install ( TARGETS hyperiond DESTINATION "bin" COMPONENT ambilight )
|
||||
install ( DIRECTORY ${CMAKE_SOURCE_DIR}/effects DESTINATION "share/hyperion/" COMPONENT ambilight )
|
||||
install ( DIRECTORY ${CMAKE_SOURCE_DIR}/bin/service DESTINATION "share/hyperion/" COMPONENT ambilight )
|
||||
install ( DIRECTORY ${CMAKE_SOURCE_DIR}/config DESTINATION "share/hyperion/" COMPONENT ambilight )
|
||||
|
||||
|
||||
|
@@ -52,6 +52,12 @@
|
||||
// Effect engine includes
|
||||
#include <effectengine/EffectEngine.h>
|
||||
|
||||
#ifdef ENABLE_ZEROCONF
|
||||
#include <bonjour/bonjourserviceregister.h>
|
||||
#include <bonjour/bonjourrecord.h>
|
||||
#include <QHostInfo>
|
||||
#endif
|
||||
|
||||
// JsonServer includes
|
||||
#include <jsonserver/JsonServer.h>
|
||||
|
||||
@@ -188,6 +194,19 @@ void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonSer
|
||||
const Json::Value & jsonServerConfig = config["jsonServer"];
|
||||
jsonServer = new JsonServer(&hyperion, jsonServerConfig["port"].asUInt());
|
||||
std::cout << "INFO: Json server created and started on port " << jsonServer->getPort() << std::endl;
|
||||
#ifdef ENABLE_ZEROCONF
|
||||
const Json::Value & deviceConfig = config["device"];
|
||||
const std::string deviceName = deviceConfig.get("name", "").asString();
|
||||
|
||||
const std::string hostname = QHostInfo::localHostName().toStdString();
|
||||
const std::string mDNSDescr = jsonServerConfig.get("mDNSDescr", hostname).asString();
|
||||
const std::string mDNSService = jsonServerConfig.get("mDNSService", "_hyperiond_json._tcp").asString();
|
||||
BonjourServiceRegister *bonjourRegister_json;
|
||||
bonjourRegister_json = new BonjourServiceRegister();
|
||||
bonjourRegister_json->registerService(BonjourRecord((deviceName + " @ " + mDNSDescr).c_str(), mDNSService.c_str(),
|
||||
QString()), jsonServerConfig["port"].asUInt());
|
||||
std::cout << "INFO: Json mDNS responder started" << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create Proto server if configuration is present
|
||||
@@ -196,6 +215,19 @@ void startNetworkServices(const Json::Value &config, Hyperion &hyperion, JsonSer
|
||||
const Json::Value & protoServerConfig = config["protoServer"];
|
||||
protoServer = new ProtoServer(&hyperion, protoServerConfig["port"].asUInt() );
|
||||
std::cout << "INFO: Proto server created and started on port " << protoServer->getPort() << std::endl;
|
||||
#ifdef ENABLE_ZEROCONF
|
||||
const Json::Value & deviceConfig = config["device"];
|
||||
const std::string deviceName = deviceConfig.get("name", "").asString();
|
||||
|
||||
const std::string hostname = QHostInfo::localHostName().toStdString();
|
||||
const std::string mDNSDescr = protoServerConfig.get("mDNSDescr", hostname).asString();
|
||||
const std::string mDNSService = protoServerConfig.get("mDNSService", "_hyperiond_proto._tcp").asString();
|
||||
BonjourServiceRegister *bonjourRegister_proto;
|
||||
bonjourRegister_proto = new BonjourServiceRegister();
|
||||
bonjourRegister_proto->registerService(BonjourRecord((deviceName + " @ " + mDNSDescr).c_str(), mDNSService.c_str(),
|
||||
QString()), protoServerConfig["port"].asUInt());
|
||||
std::cout << "INFO: Proto mDNS responder started" << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create Boblight server if configuration is present
|
||||
|
Reference in New Issue
Block a user