From 967c6c736f663bdea5413fe454fba823c0f1732a Mon Sep 17 00:00:00 2001 From: Mathieu Maret Date: Sat, 18 Jun 2016 02:24:00 +0200 Subject: [PATCH] Feed Ipaddress by MQTT --- WifiControlSensor/MQTT.h | 1 + WifiControlSensor/MQTT.ino | 12 ++++++++++++ WifiControlSensor/WifiControlSensor.ino | 1 + 3 files changed, 14 insertions(+) diff --git a/WifiControlSensor/MQTT.h b/WifiControlSensor/MQTT.h index 631cbe2..a3544db 100644 --- a/WifiControlSensor/MQTT.h +++ b/WifiControlSensor/MQTT.h @@ -8,6 +8,7 @@ int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname) int MqttPublish(double temp, double pressure); int MqttDhtPublish(float temp, float humidity); int MqttDryPublish(int dry); +int MqttIPPublish(const String &ip); void MqttCheckSubscription(); void MqttChangeGpioValue(int gpio, int value); bool MqttIsConfigured(); diff --git a/WifiControlSensor/MQTT.ino b/WifiControlSensor/MQTT.ino index 39405b6..2191aff 100644 --- a/WifiControlSensor/MQTT.ino +++ b/WifiControlSensor/MQTT.ino @@ -9,6 +9,7 @@ Adafruit_MQTT_Publish *mqtt_pressure; Adafruit_MQTT_Publish *mqtt_dht_temp; Adafruit_MQTT_Publish *mqtt_dht_humidity; Adafruit_MQTT_Publish *mqtt_dry; +Adafruit_MQTT_Publish *mqtt_ip; #define NB_ELEMENTS(x) (sizeof(x)/ sizeof(x[0])) #define FEED_MAX_SIZE 96 @@ -27,6 +28,8 @@ const int gpioWatched[] = CONFIG_MQTT_CONTROLLED_GPIO; #define GPIO_FEED_FORMAT "/feeds/%s/%s/gpio/%d" #define GPIO_SET_FEED_FORMAT "/feeds/%s/%s/gpio/%d/set" +#define IP_FEED_FORMAT "/feeds/%s/%s/configuration/ip/addr" + char *mqttId; char GPIO_FEED[MAXSUBSCRIPTIONS][FEED_MAX_SIZE] = {}; char GPIO_SET_FEED[MAXSUBSCRIPTIONS][FEED_MAX_SIZE] = {}; @@ -49,6 +52,7 @@ int MqttSetup(char *server, char *user, char *passwd, int port, char * hostname) mqtt_temp = MqttCreatePublisher(TEMPERATURE_FEED_FORMAT, user, mqttId); mqtt_pressure = MqttCreatePublisher(PRESSURE_FEED_FORMAT, user, mqttId); mqtt_dry = MqttCreatePublisher(DRY_FEED_FORMAT, user, mqttId); + mqtt_ip = MqttCreatePublisher(IP_FEED_FORMAT, user, mqttId); for (uint i = 0 ; i < NB_ELEMENTS(gpioWatched) && i < MAXSUBSCRIPTIONS; i++) { snprintf(GPIO_FEED[i], FEED_MAX_SIZE, GPIO_FEED_FORMAT, user, mqttId, gpioWatched[i]); @@ -125,6 +129,14 @@ int MqttDryPublish(int dry) { return 0; } +int MqttIPPublish(const String &ip) { + if (MqttConnect() == 0) { + SKETCH_DEBUG_PRINTLN("publishing IP!"); + mqtt_ip->publish(ip.c_str()); + } + return 0; +} + int MqttDhtPublish(float temp, float humidity) { if (MqttConnect() == 0) { SKETCH_DEBUG_PRINTLN("publishing DHT!"); diff --git a/WifiControlSensor/WifiControlSensor.ino b/WifiControlSensor/WifiControlSensor.ino index 0845f0b..8e9db61 100644 --- a/WifiControlSensor/WifiControlSensor.ino +++ b/WifiControlSensor/WifiControlSensor.ino @@ -225,6 +225,7 @@ void setup() { WifiSetup(mode, confSsid, confPassword, confHost, ip_mode, ip, gw, mask, dns, dns2); if (mode == BOOTMODE_NORMAL) { MqttSetup(mqttServer, mqttUser, mqttPasswd, mqttPort, confHost); + MqttIPPublish(WiFi.localIP().toString()); } if (mode == BOOTMODE_OTA) {