NetMeterbusMaster/MqttClient.h
2017-01-04 17:57:52 +01:00

69 lines
1.5 KiB
C++

/*
* MqttClient.h
*
* Created on: 08.05.2015
* Author: wn
*/
#ifndef MQTTCLIENT_H_
#define MQTTCLIENT_H_
#include <Ethernet.h>
#include <PubSubClient.h>
#include "mBusDialog.h"
#include <Metro.h>
#include "cmd.h"
#define NUM_OF_DEVICES 20
#define MAX_LEN_OF_NAME 16
typedef struct {
uint8_t token;
char name[MAX_LEN_OF_NAME+1];
uint8_t address;
uint16_t queryPeriod;
uint16_t timer;
} mbusDevTuple_t;
class MqttClient;
class MqttConfig : public Cmd {
public:
MqttConfig(MqttClient *mqttClient) : m_mqttClient(mqttClient) {};
virtual String getCmdName() { return "MQ"; }
virtual String getHelp() { return "MQTT Client Config"; }
virtual String exec(String params);
private:
MqttClient *m_mqttClient;
};
class MqttClient : public ResponseCallback {
public:
MqttClient(RequestSender *meterBusMaster);
void begin(CmdServer *cmdServer);
void exec();
virtual void sendResponse(uint8_t *responseBuffer, uint16_t responseBufferLength, uint8_t token, char *name);
virtual void sendError(uint8_t code, uint16_t count, uint8_t token, char *name);
friend class MqttConfig;
private:
MqttConfig m_mqttConfig;
char m_mqttBroker[64];
EthernetClient m_client;
RequestSender *m_meterBusMaster;
PubSubClient m_mqttClient;
uint8_t m_disconnectState;
uint32_t m_disconnectTime;
uint32_t m_uptime;
uint8_t m_deviceIdx;
bool m_enabled;
uint16_t m_errorCount;
mbusDevTuple_t m_mbusDevTuple[NUM_OF_DEVICES];
};
#endif /* MQTTCLIENT_H_ */