Skip to content

Commit

Permalink
Fixed WebServer submit
Browse files Browse the repository at this point in the history
  • Loading branch information
danimtb committed Aug 18, 2017
1 parent c27ccdb commit 63aca07
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 6 deletions.
2 changes: 1 addition & 1 deletion MqttManager/MqttManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
95 changes: 95 additions & 0 deletions MqttManager/MqttManager.h.autosave
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#ifndef MQTTMANAGER_H
#define MQTTMANAGER_H

#include <Arduino.h>
#include <ESP8266WiFi.h>

#undef min
#undef max

#include <AsyncMqttClient.h>

#include "SimpleTimer.h"
#include "MqttDiscoveryComponent.h"

#include <map>
#include <string>
#include <vector>


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<String, String> m_statusTopics;
std::vector<String> m_subscribeTopics;
std::vector<MqttDiscoveryComponent*> 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
8 changes: 3 additions & 5 deletions WebServer/WebServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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!");
Expand Down

0 comments on commit 63aca07

Please sign in to comment.