Files
NetMeterbusMaster/MqttClient.h
2015-05-11 22:36:58 +02:00

66 lines
1.3 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 10
typedef struct {
uint8_t token;
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);
virtual void sendError(uint8_t code, uint8_t token);
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;
mbusDevTuple_t m_mbusDevTuple[NUM_OF_DEVICES];
};
#endif /* MQTTCLIENT_H_ */