|  | @ -16,27 +16,19 @@ class mqtt { | 
			
		
	
		
		
			
				
					|  |  |             mClient     = new PubSubClient(mEspClient); |  |  |             mClient     = new PubSubClient(mEspClient); | 
			
		
	
		
		
			
				
					|  |  |             mAddressSet = false; |  |  |             mAddressSet = false; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |             memset(mBroker,  0, MQTT_ADDR_LEN); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             memset(mUser,    0, MQTT_USER_LEN); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             memset(mPwd,     0, MQTT_PWD_LEN); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             memset(mTopic,   0, MQTT_TOPIC_LEN); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             memset(mDevName, 0, DEVNAME_LEN); |  |  |             memset(mDevName, 0, DEVNAME_LEN); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         ~mqtt() { } |  |  |         ~mqtt() { } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |         void setup(const char *broker, const char *topic, const char *user, const char *pwd, const char *devname, uint16_t port) { |  |  |         void setup(mqttConfig_t *cfg, const char *devname) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |             DPRINTLN(DBG_VERBOSE, F("mqtt.h:setup")); |  |  |             DPRINTLN(DBG_VERBOSE, F("mqtt.h:setup")); | 
			
		
	
		
		
			
				
					|  |  |             mAddressSet = true; |  |  |             mAddressSet = true; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             mPort = port; |  |  |             mCfg = cfg; | 
			
				
				
			
		
	
		
		
			
				
					|  |  |             snprintf(mBroker,  MQTT_ADDR_LEN,  "%s", broker); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             snprintf(mUser,    MQTT_USER_LEN,  "%s", user); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             snprintf(mPwd,     MQTT_PWD_LEN,   "%s", pwd); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             snprintf(mTopic,   MQTT_TOPIC_LEN, "%s", topic); |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |             snprintf(mDevName, DEVNAME_LEN,    "%s", devname); |  |  |             snprintf(mDevName, DEVNAME_LEN,    "%s", devname); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             mClient->setServer(mBroker, mPort); |  |  |             mClient->setServer(mCfg->broker, mCfg->port); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |             mClient->setBufferSize(MQTT_MAX_PACKET_SIZE); |  |  |             mClient->setBufferSize(MQTT_MAX_PACKET_SIZE); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | @ -47,7 +39,7 @@ class mqtt { | 
			
		
	
		
		
			
				
					|  |  |         void sendMsg(const char *topic, const char *msg) { |  |  |         void sendMsg(const char *topic, const char *msg) { | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:sendMsg"));
 |  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:sendMsg"));
 | 
			
		
	
		
		
			
				
					|  |  |             char top[64]; |  |  |             char top[64]; | 
			
		
	
		
		
			
				
					
					|  |  |             snprintf(top, 64, "%s/%s", mTopic, topic); |  |  |             snprintf(top, 64, "%s/%s", mCfg->topic, topic); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |             sendMsg2(top, msg, false); |  |  |             sendMsg2(top, msg, false); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | @ -67,35 +59,6 @@ class mqtt { | 
			
		
	
		
		
			
				
					|  |  |             return mClient->connected(); |  |  |             return mClient->connected(); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         char *getBroker(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:getBroker"));
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mBroker; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char *getUser(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:getUser"));
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mUser; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char *getPwd(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:getPwd"));
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mPwd; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char *getTopic(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:getTopic"));
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mTopic; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char *getDevName(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             //DPRINTLN(DBG_VERBOSE, F("mqtt.h:getDevName"));
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mDevName; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         uint16_t getPort(void) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |             return mPort; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         void loop() { |  |  |         void loop() { | 
			
		
	
		
		
			
				
					|  |  |             //DPRINT(F("m"));
 |  |  |             //DPRINT(F("m"));
 | 
			
		
	
		
		
			
				
					|  |  |             if(!mClient->connected()) |  |  |             if(!mClient->connected()) | 
			
		
	
	
		
		
			
				
					|  | @ -112,17 +75,17 @@ class mqtt { | 
			
		
	
		
		
			
				
					|  |  |                 if(strlen(mDevName) > 0) { |  |  |                 if(strlen(mDevName) > 0) { | 
			
		
	
		
		
			
				
					|  |  |                     // der Server und der Port müssen neu gesetzt werden, 
 |  |  |                     // der Server und der Port müssen neu gesetzt werden, 
 | 
			
		
	
		
		
			
				
					|  |  |                     // da ein MQTT_CONNECTION_LOST -3 die Werte zerstört hat.
 |  |  |                     // da ein MQTT_CONNECTION_LOST -3 die Werte zerstört hat.
 | 
			
		
	
		
		
			
				
					
					|  |  |                     mClient->setServer(mBroker, mPort); |  |  |                     mClient->setServer(mCfg->broker, mCfg->port); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                     mClient->setBufferSize(MQTT_MAX_PACKET_SIZE); |  |  |                     mClient->setBufferSize(MQTT_MAX_PACKET_SIZE); | 
			
		
	
		
		
			
				
					
					|  |  |                     if((strlen(mUser) > 0) && (strlen(mPwd) > 0)) |  |  |                     if((strlen(mCfg->user) > 0) && (strlen(mCfg->pwd) > 0)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                         mClient->connect(mDevName, mUser, mPwd); |  |  |                         mClient->connect(mDevName, mCfg->user, mCfg->pwd); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |                     else |  |  |                     else | 
			
		
	
		
		
			
				
					|  |  |                         mClient->connect(mDevName); |  |  |                         mClient->connect(mDevName); | 
			
		
	
		
		
			
				
					|  |  |                 } |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |                 // ein Subscribe ist nur nach einem connect notwendig
 |  |  |                 // ein Subscribe ist nur nach einem connect notwendig
 | 
			
		
	
		
		
			
				
					|  |  |                 char topic[MQTT_TOPIC_LEN + 13 ]; // "/devcontrol/#" --> + 6 byte
 |  |  |                 char topic[MQTT_TOPIC_LEN + 13 ]; // "/devcontrol/#" --> + 6 byte
 | 
			
		
	
		
		
			
				
					|  |  |                 // ToDo: "/devcontrol/#" is hardcoded 
 |  |  |                 // ToDo: "/devcontrol/#" is hardcoded 
 | 
			
		
	
		
		
			
				
					
					|  |  |                 snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mTopic);  |  |  |                 snprintf(topic, MQTT_TOPIC_LEN + 13, "%s/devcontrol/#", mCfg->topic); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                 DPRINTLN(DBG_INFO, F("subscribe to ") + String(topic)); |  |  |                 DPRINTLN(DBG_INFO, F("subscribe to ") + String(topic)); | 
			
		
	
		
		
			
				
					|  |  |                 mClient->subscribe(topic); // subscribe to mTopic + "/devcontrol/#"
 |  |  |                 mClient->subscribe(topic); // subscribe to mTopic + "/devcontrol/#"
 | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |             } | 
			
		
	
	
		
		
			
				
					|  | @ -132,11 +95,7 @@ class mqtt { | 
			
		
	
		
		
			
				
					|  |  |         PubSubClient *mClient; |  |  |         PubSubClient *mClient; | 
			
		
	
		
		
			
				
					|  |  |          |  |  |          | 
			
		
	
		
		
			
				
					|  |  |         bool mAddressSet; |  |  |         bool mAddressSet; | 
			
		
	
		
		
			
				
					
					|  |  |         uint16_t mPort; |  |  |         mqttConfig_t *mCfg; | 
			
				
				
			
		
	
		
		
			
				
					|  |  |         char mBroker[MQTT_ADDR_LEN]; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char mUser[MQTT_USER_LEN]; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char mPwd[MQTT_PWD_LEN]; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         char mTopic[MQTT_TOPIC_LEN]; |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |         char mDevName[DEVNAME_LEN]; |  |  |         char mDevName[DEVNAME_LEN]; | 
			
		
	
		
		
			
				
					|  |  | }; |  |  | }; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | 
 |