/* * MqttClient.h * * Created on: 08.05.2015 * Author: wn */ #ifndef MQTTCLIENT_H_ #define MQTTCLIENT_H_ #include #include #include "mBusDialog.h" #include #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 errorCount, uint16_t loopDisabledCount, 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; uint16_t m_loopDisabledCount; mbusDevTuple_t m_mbusDevTuple[NUM_OF_DEVICES]; }; #endif /* MQTTCLIENT_H_ */