From 8000d3809d383125cdc8527b27db52da4d3c2f23 Mon Sep 17 00:00:00 2001 From: Hendrik Langer Date: Tue, 20 Aug 2019 12:37:05 +0200 Subject: [PATCH] auto update --- src/main.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 0245f06..545f787 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -391,7 +391,7 @@ void getSensorMeasurements() { void receiveMqtt(const char* topic, const char* data, int data_len) { sensor_readings_t* sensor = NULL; - ESP_LOGI(TAG, "received MQTT message on subscribed topic %s", topic); + ESP_LOGI(TAG, "received MQTT message on subscribed topic \"%s\", len: %d", topic, data_len); if (strstr(topic, "thomas/sensor/a4cf1211c3e4") == topic) { sensor = &sensors_a4cf1211c3e4; @@ -405,8 +405,8 @@ void receiveMqtt(const char* topic, const char* data, int data_len) { char* topic_last = strrchr(topic, '/'); - if (topic_last && sensor) { - if (strcmp("/json", topic_last) == 0) { + if (topic_last) { + if (strcmp("/json", topic_last) == 0 && sensor) { StaticJsonDocument jsonDoc; DeserializationError err = deserializeJson(jsonDoc, data, data_len); if (err) { @@ -429,6 +429,16 @@ void receiveMqtt(const char* topic, const char* data, int data_len) { ESP_LOGI(TAG, "got new values from %s, timestamp: %lu", topic, sensor->lastUpdate); ESP_LOGI(TAG, "%lu seconds ago", topic, getTimestamp() - sensor->lastUpdate); } + } else if (strcmp("/command", topic_last) == 0) { + ESP_LOGW(TAG, "received command"); + if (data_len == 6 && strncmp("update", data, data_len) == 0) { + ESP_LOGI(TAG, "update command"); + int msg_id = mqtt.publish(topic, "", 0, 1, 1); + mqtt.waitForMsg(msg_id, 5000 / portTICK_PERIOD_MS); + ota.update(); + } else { + ESP_LOGW(TAG, "UNKNOWN COMMAND"); + } } } } @@ -792,6 +802,9 @@ void setup() if (!ota.getMAC().equals("246f28d1a080")) mqtt.subscribe("thomas/sensor/246f28d1a080/json", receiveMqtt); if (!ota.getMAC().equals("246f28d1eff4")) mqtt.subscribe("thomas/sensor/246f28d1eff4/json", receiveMqtt); + static String topic_command = String("thomas/sensor/") + ota.getMAC() + String("/command"); + mqtt.subscribe(topic_command.c_str(), receiveMqtt); + if (WiFi.SSID() == "LNet") { station_height = 135; } else if (WiFi.SSID() == "Galaktisches Imperium") {