From 63aca07acb59499f683cbbc63c5a142f12c663b8 Mon Sep 17 00:00:00 2001 From: danimtb Date: Fri, 18 Aug 2017 17:54:05 +0200 Subject: [PATCH] Fixed WebServer submit --- MqttManager/MqttManager.cpp | 2 +- MqttManager/MqttManager.h.autosave | 95 ++++++++++++++++++++++++++++++ WebServer/WebServer.cpp | 8 +-- 3 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 MqttManager/MqttManager.h.autosave diff --git a/MqttManager/MqttManager.cpp b/MqttManager/MqttManager.cpp index 55df65e..6289d4c 100644 --- a/MqttManager/MqttManager.cpp +++ b/MqttManager/MqttManager.cpp @@ -36,7 +36,7 @@ void MqttManager::setup(String mqttServer, String mqttPort, String mqttUsername, m_mqttClient.onMessage(onMqttMessage); m_mqttClient.setCleanSession(true); - m_mqttClient.setCredentials(mqttUsername.c_str(), mqttPassword.c_str()); + m_mqttClient.setCredentials(m_mqttUsername.c_str(), m_mqttPassword.c_str()); m_mqttClient.setServer(server, m_mqttPort); m_deviceStatusInfoTimer.start(); diff --git a/MqttManager/MqttManager.h.autosave b/MqttManager/MqttManager.h.autosave new file mode 100644 index 0000000..d23ab78 --- /dev/null +++ b/MqttManager/MqttManager.h.autosave @@ -0,0 +1,95 @@ +#ifndef MQTTMANAGER_H +#define MQTTMANAGER_H + +#include +#include + +#undef min +#undef max + +#include + +#include "SimpleTimer.h" +#include "MqttDiscoveryComponent.h" + +#include +#include +#include + + +class MqttManager +{ +private: + String m_mqttServer; + uint16_t m_mqttPort; + String m_mqttUsername; + String m_mqttPassword; + + String m_deviceName; + String m_deviceIP; + String m_deviceMac; + String m_hardware; + String m_firmware; + String m_firmwareVersion; + + String m_deviceDataTopic; + + MqttDiscoveryComponent* m_deviceNameSensor; + MqttDiscoveryComponent* m_deviceIpSensor; + MqttDiscoveryComponent* m_deviceMacSensor; + MqttDiscoveryComponent* m_deviceHardwareSensor; + MqttDiscoveryComponent* m_deviceFirmwareSensor; + MqttDiscoveryComponent* m_deviceFirmwareVersionSensor; + + std::map m_statusTopics; + std::vector m_subscribeTopics; + std::vector m_discoveryComponents; + + AsyncMqttClient m_mqttClient; + + bool m_connected; + bool m_mqttDiscoveryEnabled{false}; + + SimpleTimer m_deviceStatusInfoTimer; + SimpleTimer m_checkConnectivityTimer; + unsigned long m_checkConnectivityTimeOnline; + unsigned long m_checkConnectivityTimeOffline; + + void setDeviceMac(); + void publishDeviceStatusInfo(); + void publishDiscoveryInfo(); + void refreshStatusTopics(); + void checkConnectivity(); + +public: + MqttManager(); + + void setup(String mqttServer, String mqttPort, String mqttUsername, String mqttPassword, bool mqttDiscoveryEnabled = false); + + void setDeviceData(String deviceName, String hardware, String deviceIP, String firmware, String firmwareVersion); + void setCallback(void (*callback)(String , String)); + void setLastWillMQTT(String topic, const char* payload); + + void setDeviceStatusInfoTime(unsigned long deviceStatusInfoTime); + + void enableDiscovery(bool enable); + void addDiscoveryComponent(MqttDiscoveryComponent* component); + + void addSubscribeTopic(String subscribeTopic); + void clearSubscribeTopics(); + + void addStatusTopic(String statusTopic); + void clearStatusTopics(); + + void startConnection(); + void stopConnection(); + + void publishMQTT(String topic, String payload); + void publishMQTT(String topic, float payload); + + bool connected(); + + void loop(); +}; + +#endif diff --git a/WebServer/WebServer.cpp b/WebServer/WebServer.cpp index 0a8af39..ef5e61c 100644 --- a/WebServer/WebServer.cpp +++ b/WebServer/WebServer.cpp @@ -24,13 +24,11 @@ void WebServer::webServerHandleRoot() void WebServer::webServerHandleSubmit() { - if (m_server->args() > 0 ) + if (m_server->args() > 0) { - for (uint8_t i = 0; i < m_server->args(); i++) + for (int i = 0; i < m_server->args(); i++) { - String inputField(m_server->argName(i).c_str()); - String inputContent(m_server->arg(i).c_str()); - m_inputFieldsContent[inputField] = inputContent; + m_inputFieldsContent[m_server->argName(i)] = m_server->arg(i); } m_server->send(200, "text/plain", "Changes saved!");