|
|
|
#include "MyMQTT.h"
|
|
|
|
|
|
|
|
#include <AsyncMqttClient.h>
|
|
|
|
#include "hardware.h"
|
|
|
|
|
|
|
|
MyMQTT::MyMQTT(void)
|
|
|
|
: host {mqtt_server},
|
|
|
|
port {mqtt_port},
|
|
|
|
username {mqtt_username},
|
|
|
|
password {mqtt_password}
|
|
|
|
{}
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
static void onMqttMessageWrapper(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
|
|
|
|
// static_cast<MyMQTT*>(parm)->onMqttMessage(NULL);
|
|
|
|
Serial.println("test");
|
|
|
|
mqtt_ptr->onMqttMessage(topic, payload, properties, len, index, total);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void onMqttSubscribe(uint16_t packetId, uint8_t qos) {
|
|
|
|
Serial.println("subscribe ack");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::onMqttConnectWrapper(bool sessionPresent) {
|
|
|
|
// static_cast<MyMQTT*>(parm)->onMqttConnect(NULL);
|
|
|
|
mqtt_ptr->onMqttConnect(sessionPresent);
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
|
|
|
|
Serial.print("incoming: ");
|
|
|
|
Serial.println(topic);
|
|
|
|
Serial.println(payload);
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::onMqttConnect(bool sessionPresent) {
|
|
|
|
Serial.println("CONNECTED! callback works");
|
|
|
|
subscribe();
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::connect(void) {
|
|
|
|
mqtt_ptr = this;
|
|
|
|
Serial.print("MQTT connecting");
|
|
|
|
|
|
|
|
mqttClient.onConnect(&onMqttConnectWrapper);
|
|
|
|
mqttClient.onSubscribe(&onMqttSubscribe);
|
|
|
|
mqttClient.onMessage(&onMqttMessageWrapper);
|
|
|
|
|
|
|
|
mqttClient.setServer(host, port);
|
|
|
|
mqttClient.setCredentials(username, password);
|
|
|
|
//#if ASYNC_TCP_SSL_ENABLED
|
|
|
|
// mqttClient.setSecure(true);
|
|
|
|
//#endif
|
|
|
|
|
|
|
|
mqttClient.connect();
|
|
|
|
|
|
|
|
while(!mqttClient.connected()) {
|
|
|
|
Serial.print(".");
|
|
|
|
delay(500);
|
|
|
|
}
|
|
|
|
|
|
|
|
Serial.println("MQTT connected");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::subscribe(void) {
|
|
|
|
uint16_t dispenseIdSub = mqttClient.subscribe("sensor/vendingmachine/dispense", 0);
|
|
|
|
uint16_t dispenseIdSub2 = mqttClient.subscribe("sensor/esp100/#", 0);
|
|
|
|
mqttClient.publish("sensor/vendingmachine/alive", 0, true, "test");
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::publish(char* topic, char* payload) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void MyMQTT::publish(char* topic, String payload) {
|
|
|
|
|
|
|
|
}
|