diff --git a/libguh-core/servermanager.cpp b/libguh-core/servermanager.cpp index ddf22783..48a058e4 100644 --- a/libguh-core/servermanager.cpp +++ b/libguh-core/servermanager.cpp @@ -123,6 +123,7 @@ ServerManager::ServerManager(GuhConfiguration* configuration, QObject *parent) : m_webServers.insert(config.id, webServer); } + connect(configuration, &GuhConfiguration::serverNameChanged, this, &ServerManager::onServerNameChanged); connect(configuration, &GuhConfiguration::tcpServerConfigurationChanged, this, &ServerManager::tcpServerConfigurationChanged); connect(configuration, &GuhConfiguration::tcpServerConfigurationRemoved, this, &ServerManager::tcpServerConfigurationRemoved); connect(configuration, &GuhConfiguration::webSocketServerConfigurationChanged, this, &ServerManager::webSocketServerConfigurationChanged); @@ -153,6 +154,19 @@ MockTcpServer *ServerManager::mockTcpServer() const return m_mockTcpServer; } +void ServerManager::onServerNameChanged() +{ + qCDebug(dcConnection()) << "Server name changed"; + + foreach (WebSocketServer *websocketServer, m_webSocketServers.values()) { + websocketServer->resetAvahiService(); + } + + foreach (WebServer *webServer, m_webServers.values()) { + webServer->resetAvahiService(); + } +} + void ServerManager::tcpServerConfigurationChanged(const QString &id) { ServerConfiguration config = GuhCore::instance()->configuration()->tcpServerConfigurations().value(id); diff --git a/libguh-core/servermanager.h b/libguh-core/servermanager.h index f7de3bb3..1400e165 100644 --- a/libguh-core/servermanager.h +++ b/libguh-core/servermanager.h @@ -52,6 +52,7 @@ public: MockTcpServer *mockTcpServer() const; private slots: + void onServerNameChanged(); void tcpServerConfigurationChanged(const QString &id); void tcpServerConfigurationRemoved(const QString &id); void webSocketServerConfigurationChanged(const QString &id); diff --git a/libguh-core/tcpserver.cpp b/libguh-core/tcpserver.cpp index 6ebb061c..51ed5e57 100644 --- a/libguh-core/tcpserver.cpp +++ b/libguh-core/tcpserver.cpp @@ -124,6 +124,11 @@ void TcpServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceS Q_UNUSED(state) } +void TcpServer::resetAvahiService() +{ + +} + /*! Returns true if this \l{TcpServer} could be reconfigured with the given \a address and \a port. */ void TcpServer::reconfigureServer(const ServerConfiguration &config) @@ -154,22 +159,13 @@ bool TcpServer::startServer() return false; } - // Note: reversed order - QHash txt; - txt.insert("jsonrpcVersion", JSON_PROTOCOL_VERSION); - txt.insert("serverVersion", GUH_VERSION_STRING); - txt.insert("manufacturer", "guh GmbH"); - txt.insert("uuid", GuhCore::instance()->configuration()->serverUuid().toString()); - txt.insert("name", GuhCore::instance()->configuration()->serverName()); - txt.insert("sslEnabled", configuration().sslEnabled ? "true" : "false"); - if (!m_avahiService->registerService(QString("guhIO-tcp-%1").arg(configuration().id), configuration().port, "_jsonrpc._tcp", txt)) { - qCWarning(dcTcpServer()) << "Could not register avahi service for" << configuration(); - } - - qCDebug(dcConnection) << "Started Tcp server" << serverUrl().toString(); connect(m_server, SIGNAL(clientConnected(QSslSocket *)), SLOT(onClientConnected(QSslSocket *))); connect(m_server, SIGNAL(clientDisconnected(QSslSocket *)), SLOT(onClientDisconnected(QSslSocket *))); connect(m_server, &SslServer::dataAvailable, this, &TcpServer::onDataAvailable); + + qCDebug(dcConnection) << "Started Tcp server" << serverUrl().toString(); + resetAvahiService(); + return true; } diff --git a/libguh-core/tcpserver.h b/libguh-core/tcpserver.h index b2b6508b..48273abf 100644 --- a/libguh-core/tcpserver.h +++ b/libguh-core/tcpserver.h @@ -101,6 +101,7 @@ private slots: public slots: + void resetAvahiService(); void reconfigureServer(const ServerConfiguration &configuration); bool startServer() override; bool stopServer() override; diff --git a/libguh-core/webserver.cpp b/libguh-core/webserver.cpp index a9708700..72c5e431 100644 --- a/libguh-core/webserver.cpp +++ b/libguh-core/webserver.cpp @@ -97,7 +97,7 @@ namespace guhserver { */ WebServer::WebServer(const WebServerConfiguration &configuration, const QSslConfiguration &sslConfiguration, QObject *parent) : QTcpServer(parent), - m_avahiService(NULL), + m_avahiService(nullptr), m_configuration(configuration), m_sslConfiguration(sslConfiguration), m_enabled(false) @@ -488,6 +488,25 @@ void WebServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceS Q_UNUSED(state) } +void WebServer::resetAvahiService() +{ + if (m_avahiService) + m_avahiService->resetService(); + + // Note: reversed order + QHash txt; + txt.insert("jsonrpcVersion", JSON_PROTOCOL_VERSION); + txt.insert("serverVersion", GUH_VERSION_STRING); + txt.insert("manufacturer", "guh GmbH"); + txt.insert("uuid", GuhCore::instance()->configuration()->serverUuid().toString()); + txt.insert("name", GuhCore::instance()->configuration()->serverName()); + txt.insert("sslEnabled", m_configuration.sslEnabled ? "true" : "false"); + + if (!m_avahiService->registerService(QString("guhIO-http-%1").arg(m_configuration.id), m_configuration.port, "_http._tcp", txt)) { + qCWarning(dcTcpServer()) << "Could not register avahi service for" << m_configuration; + } +} + /*! Returns true if this \l{WebServer} could be reconfigured with the given \a address and \a port. */ void WebServer::reconfigureServer(const WebServerConfiguration &config) { @@ -514,18 +533,7 @@ bool WebServer::startServer() } qCDebug(dcConnection()) << "Started web server on" << serverUrl().toString(); - - // Note: reversed order - QHash txt; - txt.insert("jsonrpcVersion", JSON_PROTOCOL_VERSION); - txt.insert("serverVersion", GUH_VERSION_STRING); - txt.insert("manufacturer", "guh GmbH"); - txt.insert("uuid", GuhCore::instance()->configuration()->serverUuid().toString()); - txt.insert("name", GuhCore::instance()->configuration()->serverName()); - txt.insert("sslEnabled", m_configuration.sslEnabled ? "true" : "false"); - if (!m_avahiService->registerService(QString("guhIO-http-%1").arg(m_configuration.id), m_configuration.port, "_http._tcp", txt)) { - qCWarning(dcTcpServer()) << "Could not register avahi service for" << m_configuration; - } + resetAvahiService(); m_enabled = true; return true; diff --git a/libguh-core/webserver.h b/libguh-core/webserver.h index b6ff9807..5030648a 100644 --- a/libguh-core/webserver.h +++ b/libguh-core/webserver.h @@ -117,6 +117,7 @@ private slots: void onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceState &state); public slots: + void resetAvahiService(); void reconfigureServer(const WebServerConfiguration &config); bool startServer(); bool stopServer(); diff --git a/libguh-core/websocketserver.cpp b/libguh-core/websocketserver.cpp index b1d31d82..90350305 100644 --- a/libguh-core/websocketserver.cpp +++ b/libguh-core/websocketserver.cpp @@ -107,6 +107,19 @@ void WebSocketServer::sendData(const QList &clients, const QByteArray &da } } +QHash WebSocketServer::createTxtRecord() +{ + // Note: reversed order + QHash txt; + txt.insert("jsonrpcVersion", JSON_PROTOCOL_VERSION); + txt.insert("serverVersion", GUH_VERSION_STRING); + txt.insert("manufacturer", "guh GmbH"); + txt.insert("uuid", GuhCore::instance()->configuration()->serverUuid().toString()); + txt.insert("name", GuhCore::instance()->configuration()->serverName()); + txt.insert("sslEnabled", configuration().sslEnabled ? "true" : "false"); + return txt; +} + void WebSocketServer::onClientConnected() { // got a new client connected @@ -178,6 +191,16 @@ void WebSocketServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiSe Q_UNUSED(state) } +void WebSocketServer::resetAvahiService() +{ + if (m_avahiService) + m_avahiService->resetService(); + + if (!m_avahiService->registerService(QString("guhIO-ws-%1").arg(configuration().id), configuration().port, "_ws._tcp", createTxtRecord())) { + qCWarning(dcWebServer()) << "Could not register avahi service for" << configuration(); + } +} + /*! Returns true if this \l{WebSocketServer} could be reconfigured with the given \a address and \a port. */ void WebSocketServer::reconfigureServer(const ServerConfiguration &config) { @@ -217,19 +240,7 @@ bool WebSocketServer::startServer() } qCDebug(dcConnection()) << "Started websocket server" << m_server->serverName() << "on" << serverUrl().toString(); - - // Note: reversed order - QHash txt; - txt.insert("jsonrpcVersion", JSON_PROTOCOL_VERSION); - txt.insert("serverVersion", GUH_VERSION_STRING); - txt.insert("manufacturer", "guh GmbH"); - txt.insert("uuid", GuhCore::instance()->configuration()->serverUuid().toString()); - txt.insert("name", GuhCore::instance()->configuration()->serverName()); - txt.insert("sslEnabled", configuration().sslEnabled ? "true" : "false"); - if (!m_avahiService->registerService(QString("guhIO-ws-%1").arg(configuration().id), configuration().port, "_ws._tcp", txt)) { - qCWarning(dcWebServer()) << "Could not register avahi service for" << configuration(); - } - + resetAvahiService(); return true; } diff --git a/libguh-core/websocketserver.h b/libguh-core/websocketserver.h index 388cd0e2..02bda3c5 100644 --- a/libguh-core/websocketserver.h +++ b/libguh-core/websocketserver.h @@ -53,13 +53,12 @@ public: private: QWebSocketServer *m_server; QHash m_clientList; - QtAvahiService *m_avahiService; - QSslConfiguration m_sslConfiguration; - bool m_enabled; + QHash createTxtRecord(); + private slots: void onClientConnected(); void onClientDisconnected(); @@ -72,6 +71,7 @@ private slots: void onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceState &state); public slots: + void resetAvahiService(); void reconfigureServer(const ServerConfiguration &config); bool startServer() override; bool stopServer() override; diff --git a/libguh/network/avahi/qtavahiservice.cpp b/libguh/network/avahi/qtavahiservice.cpp index e6538e8b..f2f5d790 100644 --- a/libguh/network/avahi/qtavahiservice.cpp +++ b/libguh/network/avahi/qtavahiservice.cpp @@ -173,6 +173,33 @@ void QtAvahiService::resetService() avahi_entry_group_reset(d_ptr->group); } +/*! Update the TXT record of this service. Returns true of the record could be updated. */ +bool QtAvahiService::updateTxtRecord(const QHash &txtRecords) +{ + if (!d_ptr->group) + return false; + + // Add the service + d_ptr->error = avahi_entry_group_update_service_txt_strlst(d_ptr->group, + AVAHI_IF_UNSPEC, + AVAHI_PROTO_UNSPEC, + (AvahiPublishFlags) 0, + d_ptr->name.toLatin1().data(), + d_ptr->type.toLatin1().data(), + 0, + QtAvahiServicePrivate::createTxtList(txtRecords)); + + // Verify if the group has to be comitted + if (d_ptr->error) { + qCWarning(dcAvahi()) << this << "error:" << avahi_strerror(d_ptr->error); + return false; + } + + qCDebug(dcAvahi()) << this << "updated TXT record."; + + return true; +} + /*! Returns true if the service group was added and commited to the network without errors. */ bool QtAvahiService::isValid() const { diff --git a/libguh/network/avahi/qtavahiservice.h b/libguh/network/avahi/qtavahiservice.h index a6fd5033..cf8e0e04 100644 --- a/libguh/network/avahi/qtavahiservice.h +++ b/libguh/network/avahi/qtavahiservice.h @@ -57,6 +57,8 @@ public: bool registerService(const QString &name, const quint16 &port, const QString &serviceType = "_http._tcp", const QHash &txtRecords = QHash()); void resetService(); + bool updateTxtRecord(const QHash &txtRecords); + bool isValid() const; QString errorString() const; diff --git a/plugins/mock/translations/de_DE.ts b/plugins/mock/translations/de_DE.ts index f8835d7a..ed8f7955 100644 --- a/plugins/mock/translations/de_DE.ts +++ b/plugins/mock/translations/de_DE.ts @@ -12,267 +12,228 @@ MockDevice - guh The name of the vendor (2062d64d-3232-433c-88bc-0d33c0ba2ba6) guh - Mock Device The name of the DeviceClass (753f0d32-0468-4d08-82ed-1964aab03298) Mock Gerät - http port The name of the paramType (d4f06047-125e-4479-9810-b54c189917f5) of Mock Device HTTP Port - Mock Action 3 (async) The name of the ActionType fbae06d3-7666-483e-a39e-ec50fe89054e of deviceClass Mock Device Mock Aktion 3 (async) - Mock Action 4 (broken) The name of the ActionType df3cf33d-26d5-4577-9132-9823bd33fad0 of deviceClass Mock Device Mock Aktion 4 (kaputt) - Mock Action 5 (async, broken) The name of the ActionType bfe89a1d-3497-4121-8318-e77c37537219 of deviceClass Mock Device Mock Aktion 5 (async, kaputt) - Mock Device (Auto created) The name of the DeviceClass (ab4257b3-7548-47ee-9bd4-7dc3004fd197) Mock Gerät (Auto erstellt) - Mock Device (Push Button) The name of the DeviceClass (9e03144c-e436-4eea-82d9-ccb33ef778db) Mock Gerät (Drückknopf) - Wait 3 second before you continue, the push button will be pressed automatically. The pairing info of deviceClass Mock Device (Push Button) Warte 3 Sekunden bevor du fortfährst, the Knopf wird automatisch gerückt. - configParamInt The name of the paramType (e1f72121-a426-45e2-b475-8262b5cdf103) of Mock Devices configParamInt - configParamBool The name of the paramType (c75723b6-ea4f-4982-9751-6c5e39c88145) of Mock Devices configParamBool - async The name of the paramType (f2977061-4dd0-4ef5-85aa-3b7134743be3) of Mock Device async - broken The name of the paramType (ae8f8901-f2c1-42a5-8111-6d2fc8e4c1e4) of Mock Device kaputt - resultCount The name of the paramType (d222adb4-2f9c-4c3f-8655-76400d0fb6ce) of Mock Device Resultat Anzahl - Dummy int state changed The name of the autocreated EventType (80baec19-54de-4948-ac46-31eabfaceb83) Int Zustand verändert - Dummy int state The name of the ParamType of StateType (80baec19-54de-4948-ac46-31eabfaceb83) of DeviceClass Mock Device Dummy Int Zustand - Dummy bool state changed The name of the autocreated EventType (9dd6a97c-dfd1-43dc-acbd-367932742310) Bool Zustand verändert - Dummy bool state The name of the ParamType of StateType (9dd6a97c-dfd1-43dc-acbd-367932742310) of DeviceClass Mock Device Dummy Bool Zustand - Mock Action 1 (with params) The name of the ActionType dea0f4e1-65e3-4981-8eaa-2701c53a9185 of deviceClass Mock Device Mock Aktion 1 (Mit Parametern) - mockActionParam1 The name of the paramType (a2d3a256-a551-4712-a65b-ecd5a436a1cb) of Mock Device mockActionParam1 - mockActionParam2 The name of the paramType (304a4899-18be-4e3b-94f4-d03be52f3233) of Mock Device mockActionParam2 - Mock Action 2 (without params) The name of the ActionType defd3ed6-1a0d-400b-8879-a0202cf39935 of deviceClass Mock Device Mock Aktion (ohne Parameter - mockParamInt The name of the paramType (0550e16d-60b9-4ba5-83f4-4d3cee656121) of Mock Device mockParamInt - Mock Event 1 The name of the EventType 45bf3752-0fc6-46b9-89fd-ffd878b5b22b of deviceClass Mock Device (Auto created) Mock Event 1 - Mock Event 2 The name of the EventType 863d5920-b1cf-4eb9-88bd-8f7b8583b1cf of deviceClass Mock Device (Auto created) Mock Event 2 - color changed The name of the autocreated EventType (20dc7c22-c50e-42db-837c-2bbced939f8e) Farbe geändert - color The name of the ParamType of StateType (20dc7c22-c50e-42db-837c-2bbced939f8e) of DeviceClass Mock Device (Push Button) Farbe - Set color The name of the autocreated ActionType (20dc7c22-c50e-42db-837c-2bbced939f8e) Setze Farbe - percentage changed The name of the autocreated EventType (72981c04-267a-4ba0-a59e-9921d2f3af9c) Prozent gändert - percentage The name of the ParamType of StateType (72981c04-267a-4ba0-a59e-9921d2f3af9c) of DeviceClass Mock Device (Push Button) Prozent - Set percentage The name of the autocreated ActionType (72981c04-267a-4ba0-a59e-9921d2f3af9c) Setze Prozentwert - allowed values changed The name of the autocreated EventType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) Erlaubter Wert geändert - allowed values The name of the ParamType of StateType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) of DeviceClass Mock Device (Push Button) Erlaubte Werte - Set allowed values The name of the autocreated ActionType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) Setze erlaubten Wert - double value changed The name of the autocreated EventType (53cd7c55-49b7-441b-b970-9048f20f0e2c) Double Wert geändert - double value The name of the ParamType of StateType (53cd7c55-49b7-441b-b970-9048f20f0e2c) of DeviceClass Mock Device (Push Button) Double Wert - Set double value The name of the autocreated ActionType (53cd7c55-49b7-441b-b970-9048f20f0e2c) Setze double Wert - - Set bool value @@ -282,22 +243,18 @@ The name of the autocreated ActionType (d24ede5f-4064-4898-bb84-cfb533b1fbc0)Setze boll Wert - Timeout action The name of the ActionType 54646e7c-bc54-4895-81a2-590d72d120f9 of deviceClass Mock Device (Push Button) Timeout Aktion - Mock Device (Display Pin) The name of the DeviceClass (296f1fd4-e893-46b2-8a42-50d1bceb8730) Mock Gerät (Pin anzeigen) - - bool value changed @@ -307,8 +264,6 @@ The name of the autocreated EventType (d24ede5f-4064-4898-bb84-cfb533b1fbc0)Bool Wert geändert - - bool value @@ -318,112 +273,96 @@ The name of the ParamType of StateType (d24ede5f-4064-4898-bb84-cfb533b1fbc0) of Bool Wert - Text line The name of the paramType (e6acf0c7-4b8e-4296-ac62-855d20deb816) of Mock Device (InputTypes) Textzeile - Text area The name of the paramType (716f0994-bc01-42b0-b64d-59236f7320d2) of Mock Device (InputTypes) Textfeld - Password text The name of the paramType (e5c0d14b-c9f1-4aca-a56e-85bfa6977150) of Mock Device (InputTypes) Passwort Text - Search text The name of the paramType (22add8c9-ee4f-43ad-8931-58e999313ac3) of Mock Device (InputTypes) Suchtext - Mail address The name of the paramType (a8494faf-3a0f-4cf3-84b7-4b39148a838d) of Mock Device (InputTypes) Mail Adresse - IPv4 address The name of the paramType (9e5f86a0-4bb3-4892-bff8-3fc4032af6e2) of Mock Device (InputTypes) IPv4 Adresse - IPv6 address The name of the paramType (43bf3832-dd48-4090-a836-656e8b60216e) of Mock Device (InputTypes) IPv6 Adresse - URL The name of the paramType (fa67229f-fcef-496f-b671-59a4b48f3ab5) of Mock Device (InputTypes) URL - Mac address The name of the paramType (e93db587-7919-48f3-8c88-1651de63c765) of Mock Device (InputTypes) Mac Adresse - Please enter the secret which normaly will be displayed on the device. For the mockdevice the pin is 243681. The pairing info of deviceClass Mock Device (Display Pin) Bitte geben sie den Pincode ein der normalerweise auf dem Gerät angezeit werden würde. In diesem fall lautet der Pincode 243681. - Mock Devices The name of the plugin Mock Devices (727a4a9a-c187-446f-aadf-f1b2220607d1) Mock Gerät - pin The name of the paramType (da820e07-22dc-4173-9c07-2f49a4e265f9) of Mock Device (Display Pin) Pin - Mock Device (Parent) The name of the DeviceClass (a71fbde9-9a38-4bf8-beab-c8aade2608ba) Mock Gerät (Elternteil) - Mock Device (Child) The name of the DeviceClass (40893c9f-bc47-40c1-8bf7-b390c7c1b4fc) Mock Gerät (Kind) - parent uuid The name of the paramType (104b5288-404e-42d3-bf38-e40682e75681) of Mock Device (Child) Elternteil Uuid - Mock Device (InputTypes) The name of the DeviceClass (515ffdf1-55e5-498d-9abc-4e2fe768f3a9) diff --git a/plugins/mock/translations/en_US.ts b/plugins/mock/translations/en_US.ts index 957274f0..72bacc14 100644 --- a/plugins/mock/translations/en_US.ts +++ b/plugins/mock/translations/en_US.ts @@ -12,267 +12,228 @@ MockDevice - guh The name of the vendor (2062d64d-3232-433c-88bc-0d33c0ba2ba6) - Mock Device The name of the DeviceClass (753f0d32-0468-4d08-82ed-1964aab03298) - http port The name of the paramType (d4f06047-125e-4479-9810-b54c189917f5) of Mock Device - Mock Action 3 (async) The name of the ActionType fbae06d3-7666-483e-a39e-ec50fe89054e of deviceClass Mock Device - Mock Action 4 (broken) The name of the ActionType df3cf33d-26d5-4577-9132-9823bd33fad0 of deviceClass Mock Device - Mock Action 5 (async, broken) The name of the ActionType bfe89a1d-3497-4121-8318-e77c37537219 of deviceClass Mock Device - Mock Device (Auto created) The name of the DeviceClass (ab4257b3-7548-47ee-9bd4-7dc3004fd197) - Mock Device (Push Button) The name of the DeviceClass (9e03144c-e436-4eea-82d9-ccb33ef778db) - Wait 3 second before you continue, the push button will be pressed automatically. The pairing info of deviceClass Mock Device (Push Button) - configParamInt The name of the paramType (e1f72121-a426-45e2-b475-8262b5cdf103) of Mock Devices - configParamBool The name of the paramType (c75723b6-ea4f-4982-9751-6c5e39c88145) of Mock Devices - async The name of the paramType (f2977061-4dd0-4ef5-85aa-3b7134743be3) of Mock Device - broken The name of the paramType (ae8f8901-f2c1-42a5-8111-6d2fc8e4c1e4) of Mock Device - resultCount The name of the paramType (d222adb4-2f9c-4c3f-8655-76400d0fb6ce) of Mock Device - Dummy int state changed The name of the autocreated EventType (80baec19-54de-4948-ac46-31eabfaceb83) - Dummy int state The name of the ParamType of StateType (80baec19-54de-4948-ac46-31eabfaceb83) of DeviceClass Mock Device - Dummy bool state changed The name of the autocreated EventType (9dd6a97c-dfd1-43dc-acbd-367932742310) - Dummy bool state The name of the ParamType of StateType (9dd6a97c-dfd1-43dc-acbd-367932742310) of DeviceClass Mock Device - Mock Action 1 (with params) The name of the ActionType dea0f4e1-65e3-4981-8eaa-2701c53a9185 of deviceClass Mock Device - mockActionParam1 The name of the paramType (a2d3a256-a551-4712-a65b-ecd5a436a1cb) of Mock Device - mockActionParam2 The name of the paramType (304a4899-18be-4e3b-94f4-d03be52f3233) of Mock Device - Mock Action 2 (without params) The name of the ActionType defd3ed6-1a0d-400b-8879-a0202cf39935 of deviceClass Mock Device - mockParamInt The name of the paramType (0550e16d-60b9-4ba5-83f4-4d3cee656121) of Mock Device - Mock Event 1 The name of the EventType 45bf3752-0fc6-46b9-89fd-ffd878b5b22b of deviceClass Mock Device (Auto created) - Mock Event 2 The name of the EventType 863d5920-b1cf-4eb9-88bd-8f7b8583b1cf of deviceClass Mock Device (Auto created) - color changed The name of the autocreated EventType (20dc7c22-c50e-42db-837c-2bbced939f8e) - color The name of the ParamType of StateType (20dc7c22-c50e-42db-837c-2bbced939f8e) of DeviceClass Mock Device (Push Button) - Set color The name of the autocreated ActionType (20dc7c22-c50e-42db-837c-2bbced939f8e) - percentage changed The name of the autocreated EventType (72981c04-267a-4ba0-a59e-9921d2f3af9c) - percentage The name of the ParamType of StateType (72981c04-267a-4ba0-a59e-9921d2f3af9c) of DeviceClass Mock Device (Push Button) - Set percentage The name of the autocreated ActionType (72981c04-267a-4ba0-a59e-9921d2f3af9c) - allowed values changed The name of the autocreated EventType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) - allowed values The name of the ParamType of StateType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) of DeviceClass Mock Device (Push Button) - Set allowed values The name of the autocreated ActionType (05f63f9c-f61e-4dcf-ad55-3f13fde2765b) - double value changed The name of the autocreated EventType (53cd7c55-49b7-441b-b970-9048f20f0e2c) - double value The name of the ParamType of StateType (53cd7c55-49b7-441b-b970-9048f20f0e2c) of DeviceClass Mock Device (Push Button) - Set double value The name of the autocreated ActionType (53cd7c55-49b7-441b-b970-9048f20f0e2c) - - Set bool value @@ -282,22 +243,18 @@ The name of the autocreated ActionType (d24ede5f-4064-4898-bb84-cfb533b1fbc0) - Timeout action The name of the ActionType 54646e7c-bc54-4895-81a2-590d72d120f9 of deviceClass Mock Device (Push Button) - Mock Device (Display Pin) The name of the DeviceClass (296f1fd4-e893-46b2-8a42-50d1bceb8730) - - bool value changed @@ -307,8 +264,6 @@ The name of the autocreated EventType (d24ede5f-4064-4898-bb84-cfb533b1fbc0) - - bool value @@ -318,112 +273,96 @@ The name of the ParamType of StateType (d24ede5f-4064-4898-bb84-cfb533b1fbc0) of - Text line The name of the paramType (e6acf0c7-4b8e-4296-ac62-855d20deb816) of Mock Device (InputTypes) - Text area The name of the paramType (716f0994-bc01-42b0-b64d-59236f7320d2) of Mock Device (InputTypes) - Password text The name of the paramType (e5c0d14b-c9f1-4aca-a56e-85bfa6977150) of Mock Device (InputTypes) - Search text The name of the paramType (22add8c9-ee4f-43ad-8931-58e999313ac3) of Mock Device (InputTypes) - Mail address The name of the paramType (a8494faf-3a0f-4cf3-84b7-4b39148a838d) of Mock Device (InputTypes) - IPv4 address The name of the paramType (9e5f86a0-4bb3-4892-bff8-3fc4032af6e2) of Mock Device (InputTypes) - IPv6 address The name of the paramType (43bf3832-dd48-4090-a836-656e8b60216e) of Mock Device (InputTypes) - URL The name of the paramType (fa67229f-fcef-496f-b671-59a4b48f3ab5) of Mock Device (InputTypes) - Mac address The name of the paramType (e93db587-7919-48f3-8c88-1651de63c765) of Mock Device (InputTypes) - Please enter the secret which normaly will be displayed on the device. For the mockdevice the pin is 243681. The pairing info of deviceClass Mock Device (Display Pin) - Mock Devices The name of the plugin Mock Devices (727a4a9a-c187-446f-aadf-f1b2220607d1) - pin The name of the paramType (da820e07-22dc-4173-9c07-2f49a4e265f9) of Mock Device (Display Pin) - Mock Device (Parent) The name of the DeviceClass (a71fbde9-9a38-4bf8-beab-c8aade2608ba) - Mock Device (Child) The name of the DeviceClass (40893c9f-bc47-40c1-8bf7-b390c7c1b4fc) - parent uuid The name of the paramType (104b5288-404e-42d3-bf38-e40682e75681) of Mock Device (Child) - Mock Device (InputTypes) The name of the DeviceClass (515ffdf1-55e5-498d-9abc-4e2fe768f3a9)