From 37119b2a3a76bdfcca0ce1f23db757e976882c22 Mon Sep 17 00:00:00 2001 From: Henrik Ekblad Date: Mon, 1 Aug 2016 23:59:31 +0200 Subject: [PATCH] Present locally attached sensors and node when missing radio (#532) * Present locally attached sensors and node when missing radio Fix #524 * Combining gateway and node presentation. --- core/MyGatewayTransport.cpp | 1 + core/MyGatewayTransport.h | 1 + core/MyGatewayTransportEthernet.cpp | 7 +++---- core/MyGatewayTransportMQTTClient.cpp | 7 +++++-- core/MyGatewayTransportSerial.cpp | 3 +++ core/MySensorsCore.cpp | 6 ++---- drivers/{pubsubclient => PubSubClient}/README.md | 0 7 files changed, 15 insertions(+), 10 deletions(-) rename drivers/{pubsubclient => PubSubClient}/README.md (100%) diff --git a/core/MyGatewayTransport.cpp b/core/MyGatewayTransport.cpp index a7838aa..beb16d2 100644 --- a/core/MyGatewayTransport.cpp +++ b/core/MyGatewayTransport.cpp @@ -22,6 +22,7 @@ extern bool transportSendRoute(MyMessage &message); extern MyMessage _msg; + inline void gatewayTransportProcess() { if (gatewayTransportAvailable()) { _msg = gatewayTransportReceive(); diff --git a/core/MyGatewayTransport.h b/core/MyGatewayTransport.h index d34bd31..8df4b59 100644 --- a/core/MyGatewayTransport.h +++ b/core/MyGatewayTransport.h @@ -21,6 +21,7 @@ #define MyGatewayTransport_h #include "MyProtocol.h" +#include "MySensorsCore.h" // Common gateway functions diff --git a/core/MyGatewayTransportEthernet.cpp b/core/MyGatewayTransportEthernet.cpp index 3d6b0fc..6c930e7 100644 --- a/core/MyGatewayTransportEthernet.cpp +++ b/core/MyGatewayTransportEthernet.cpp @@ -301,8 +301,8 @@ bool gatewayTransportAvailable() inputString[i].idx = 0; debug(PSTR("Client %d connected\n"), i); gatewayTransportSend(buildGw(_msg, I_GATEWAY_READY).set("Gateway startup complete.")); - if (presentation) - presentation(); + // Send presentation of locally attached sensors (and node if applicable) + presentNode(); } } bool connected = clients[i].connected(); @@ -335,8 +335,7 @@ bool gatewayTransportAvailable() _w5100_spi_en(false); gatewayTransportSend(buildGw(_msg, I_GATEWAY_READY).set("Gateway startup complete.")); _w5100_spi_en(true); - if (presentation) - presentation(); + presentNode(); } } if (client) { diff --git a/core/MyGatewayTransportMQTTClient.cpp b/core/MyGatewayTransportMQTTClient.cpp index ea8138e..b6ca377 100644 --- a/core/MyGatewayTransportMQTTClient.cpp +++ b/core/MyGatewayTransportMQTTClient.cpp @@ -20,6 +20,7 @@ // Topic structure: MY_MQTT_PUBLISH_TOPIC_PREFIX/NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPE +#include "MyGatewayTransport.h" #if defined MY_CONTROLLER_IP_ADDRESS IPAddress _brokerIp(MY_CONTROLLER_IP_ADDRESS); @@ -146,8 +147,10 @@ bool reconnectMQTT() { #endif )) { debug(PSTR("MQTT connected\n")); - if (presentation) - presentation(); + + // Send presentation of locally attached sensors (and node if applicable) + presentNode(); + // Once connected, publish an announcement... //_MQTT_client.publish("outTopic","hello world"); // ... and resubscribe diff --git a/core/MyGatewayTransportSerial.cpp b/core/MyGatewayTransportSerial.cpp index e3ea5fb..f7c35c8 100644 --- a/core/MyGatewayTransportSerial.cpp +++ b/core/MyGatewayTransportSerial.cpp @@ -39,6 +39,9 @@ bool gatewayTransportSend(MyMessage &message) { bool gatewayTransportInit() { gatewayTransportSend(buildGw(_msg, I_GATEWAY_READY).set("Gateway startup complete.")); + // Send presentation of locally attached sensors (and node if applicable) + presentNode(); + return true; } diff --git a/core/MySensorsCore.cpp b/core/MySensorsCore.cpp index 838ef12..b31106a 100644 --- a/core/MySensorsCore.cpp +++ b/core/MySensorsCore.cpp @@ -146,7 +146,7 @@ void _begin() { } #endif - #if defined(MY_RADIO_FEATURE) + #if !defined(MY_GATEWAY_FEATURE) presentNode(); #endif @@ -325,9 +325,7 @@ bool _processInternalMessages() { } else if (type == I_PRESENTATION) { // Re-send node presentation to controller - #if defined(MY_RADIO_FEATURE) - presentNode(); - #endif + presentNode(); } else if (type == I_HEARTBEAT) { sendHeartbeat(); diff --git a/drivers/pubsubclient/README.md b/drivers/PubSubClient/README.md similarity index 100% rename from drivers/pubsubclient/README.md rename to drivers/PubSubClient/README.md