mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 05:36:37 +00:00
Seperate mqtt stacks
This commit is contained in:
parent
17e88dcd35
commit
0d53ff02a7
@ -8,7 +8,9 @@
|
|||||||
|
|
||||||
#include "hasp_conf.h"
|
#include "hasp_conf.h"
|
||||||
|
|
||||||
|
#ifdef WINDOWS
|
||||||
#define __FlashStringHelper char
|
#define __FlashStringHelper char
|
||||||
|
#endif
|
||||||
|
|
||||||
void mqttSetup();
|
void mqttSetup();
|
||||||
void mqttLoop();
|
void mqttLoop();
|
||||||
@ -26,6 +28,8 @@ bool mqttGetConfig(const JsonObject & settings);
|
|||||||
bool mqttSetConfig(const JsonObject & settings);
|
bool mqttSetConfig(const JsonObject & settings);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//String mqttGetNodename(void);
|
#ifndef WINDOWS
|
||||||
|
String mqttGetNodename(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -4,13 +4,14 @@
|
|||||||
#include "ArduinoJson.h"
|
#include "ArduinoJson.h"
|
||||||
#include "hasp_conf.h"
|
#include "hasp_conf.h"
|
||||||
|
|
||||||
#if 0 && HASP_USE_MQTT > 0
|
#ifndef WINDOWS
|
||||||
|
#if HASP_USE_MQTT > 0
|
||||||
|
|
||||||
#include "PubSubClient.h"
|
#include "PubSubClient.h"
|
||||||
|
|
||||||
#include "hasp/hasp.h"
|
#include "hasp/hasp.h"
|
||||||
#include "hasp/hasp_dispatch.h"
|
#include "hasp/hasp_dispatch.h"
|
||||||
#include "hasp_hal.h"
|
#include "hal/hasp_hal.h"
|
||||||
#include "hasp_mqtt.h"
|
#include "hasp_mqtt.h"
|
||||||
#include "hasp_mqtt_ha.h"
|
#include "hasp_mqtt_ha.h"
|
||||||
|
|
||||||
@ -252,6 +253,7 @@ void mqtt_ha_register_auto_discovery()
|
|||||||
mqtt_ha_register_connectivity();
|
mqtt_ha_register_connectivity();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -109,20 +109,11 @@ static bool mqttPublish(const char * topic, const char * payload, size_t len, bo
|
|||||||
|
|
||||||
void connlost(void * context, char * cause)
|
void connlost(void * context, char * cause)
|
||||||
{
|
{
|
||||||
MQTTAsync client = (MQTTAsync)context;
|
|
||||||
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
|
|
||||||
int rc;
|
|
||||||
connected = 0;
|
|
||||||
|
|
||||||
printf("\nConnection lost\n");
|
printf("\nConnection lost\n");
|
||||||
if(cause) printf(" cause: %s\n", cause);
|
if(cause) printf(" cause: %s\n", cause);
|
||||||
|
|
||||||
printf("Reconnecting\n");
|
printf("Reconnecting\n");
|
||||||
conn_opts.keepAliveInterval = 20;
|
mqttStart();
|
||||||
conn_opts.cleansession = 1;
|
|
||||||
if((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) {
|
|
||||||
printf("Failed to start connect, return code %d\n", rc);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Receive incoming messages
|
// Receive incoming messages
|
||||||
@ -185,8 +176,8 @@ static void mqtt_message_cb(char * topic, char * payload, unsigned int length)
|
|||||||
|
|
||||||
int msgarrvd(void * context, char * topicName, int topicLen, MQTTAsync_message * message)
|
int msgarrvd(void * context, char * topicName, int topicLen, MQTTAsync_message * message)
|
||||||
{
|
{
|
||||||
printf("MQT RCV >> ");
|
// printf("MQT RCV >> ");
|
||||||
printf("%s => %.*s (%d)\n", topicName, message->payloadlen, (char *)message->payload, message->payloadlen);
|
// printf("%s => %.*s (%d)\n", topicName, message->payloadlen, (char *)message->payload, message->payloadlen);
|
||||||
|
|
||||||
char msg[message->payloadlen + 1];
|
char msg[message->payloadlen + 1];
|
||||||
memcpy(msg, (char *)message->payload, message->payloadlen);
|
memcpy(msg, (char *)message->payload, message->payloadlen);
|
||||||
@ -256,6 +247,8 @@ void onConnect(void * context, MQTTAsync_successData * response)
|
|||||||
mqtt_subscribe(context, TOPIC "light");
|
mqtt_subscribe(context, TOPIC "light");
|
||||||
mqtt_subscribe(context, TOPIC "dim");
|
mqtt_subscribe(context, TOPIC "dim");
|
||||||
|
|
||||||
|
mqttPublish(TOPIC LWT_TOPIC, "online", false);
|
||||||
|
|
||||||
mqtt_send_object_state(0, 0, "connected");
|
mqtt_send_object_state(0, 0, "connected");
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
}
|
}
|
||||||
@ -272,7 +265,7 @@ void onSendFailure(void * context, MQTTAsync_failureData * response)
|
|||||||
opts.context = client;
|
opts.context = client;
|
||||||
if((rc = MQTTAsync_disconnect(client, &opts)) != MQTTASYNC_SUCCESS) {
|
if((rc = MQTTAsync_disconnect(client, &opts)) != MQTTASYNC_SUCCESS) {
|
||||||
printf("Failed to start disconnect, return code %d\n", rc);
|
printf("Failed to start disconnect, return code %d\n", rc);
|
||||||
exit(EXIT_FAILURE);
|
//exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +275,8 @@ void onSend(void * context, MQTTAsync_successData * response)
|
|||||||
MQTTAsync_disconnectOptions opts = MQTTAsync_disconnectOptions_initializer;
|
MQTTAsync_disconnectOptions opts = MQTTAsync_disconnectOptions_initializer;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
printf("Message with token value %d delivery confirmed\n", response->token);
|
// printf("Message with token value %d delivery confirmed\n", response->token);
|
||||||
|
|
||||||
// opts.onSuccess = onDisconnect;
|
// opts.onSuccess = onDisconnect;
|
||||||
// opts.onFailure = onDisconnectFailure;
|
// opts.onFailure = onDisconnectFailure;
|
||||||
// opts.context = client;
|
// opts.context = client;
|
||||||
@ -346,6 +340,7 @@ void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, char * payload)
|
|||||||
void mqttStart()
|
void mqttStart()
|
||||||
{
|
{
|
||||||
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
|
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
|
||||||
|
MQTTAsync_willOptions will_opts = MQTTAsync_willOptions_initializer;
|
||||||
int rc;
|
int rc;
|
||||||
int ch;
|
int ch;
|
||||||
|
|
||||||
@ -362,11 +357,18 @@ void mqttStart()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
conn_opts.will = &will_opts;
|
||||||
|
conn_opts.will->message = "offline";
|
||||||
|
conn_opts.will->qos = 1;
|
||||||
|
conn_opts.will->retained = 0;
|
||||||
|
conn_opts.will->topicName = "hasp/plate35/LWT";
|
||||||
|
|
||||||
conn_opts.keepAliveInterval = 20;
|
conn_opts.keepAliveInterval = 20;
|
||||||
conn_opts.cleansession = 1;
|
conn_opts.cleansession = 1;
|
||||||
conn_opts.onSuccess = onConnect;
|
conn_opts.onSuccess = onConnect;
|
||||||
conn_opts.onFailure = onConnectFailure;
|
conn_opts.onFailure = onConnectFailure;
|
||||||
conn_opts.context = mqtt_client;
|
conn_opts.context = mqtt_client;
|
||||||
|
|
||||||
if((rc = MQTTAsync_connect(mqtt_client, &conn_opts)) != MQTTASYNC_SUCCESS) {
|
if((rc = MQTTAsync_connect(mqtt_client, &conn_opts)) != MQTTASYNC_SUCCESS) {
|
||||||
printf("Failed to start connect, return code %d\n", rc);
|
printf("Failed to start connect, return code %d\n", rc);
|
||||||
rc = EXIT_FAILURE;
|
rc = EXIT_FAILURE;
|
||||||
|
@ -36,8 +36,8 @@ EthernetClient mqttNetworkClient;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "hasp_hal.h"
|
#include "hal/hasp_hal.h"
|
||||||
#include "log/hasp_debug.h"
|
#include "hasp_debug.h"
|
||||||
#include "hasp_config.h"
|
#include "hasp_config.h"
|
||||||
|
|
||||||
#include "../hasp/hasp_dispatch.h"
|
#include "../hasp/hasp_dispatch.h"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user