push some old updates

This commit is contained in:
mreenen 2023-12-29 20:30:50 +01:00
parent 042e59d1c6
commit 24ffd1d79a
18 changed files with 37 additions and 21 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "paho.mqtt.c"]
path = libs/paho.mqtt.c/
url = https://github.com/eclipse/paho.mqtt.c.git

View File

@ -1,11 +1,19 @@
SRC := src/main.c src/mqtt.c src/module.c src/modules/*.c SRC := src/main.c src/mqtt.c src/module.c src/modules/*.c
INC := -I src -I include/paho-mqtt INC := -I src
LIBS := -Llibs/paho-mqtt -lpthread -lpaho-mqtt3a -lpaho-mqtt3c -lpthread LIBS := -lpthread -lpthread
# paho mqtt
LIBPAHO_DIR := libs/paho.mqtt.c
INC += -I $(LIBPAHO_DIR)/src
LIBS += -L$(LIBPAHO_DIR)/build/output -lpaho-mqtt3a -lpaho-mqtt3c
all: build all: build
build: $(SRC) build-paho: $(LIBPAHO_DIR)
cd $(LIBPAHO_DIR) && make build
build: $(SRC) | ${build-paho}
gcc $(SRC) $(LIBS) -o mqttClient $(INC) gcc $(SRC) $(LIBS) -o mqttClient $(INC)
debug: $(SRC) debug: $(SRC)

View File

@ -1 +0,0 @@
libpaho-mqtt3a.so.1

View File

@ -1 +0,0 @@
libpaho-mqtt3a.so.1.3.12

View File

@ -1 +0,0 @@
libpaho-mqtt3as.so.1

View File

@ -1 +0,0 @@
libpaho-mqtt3as.so.1.3.12

View File

@ -1 +0,0 @@
libpaho-mqtt3c.so.1

View File

@ -1 +0,0 @@
libpaho-mqtt3c.so.1.3.12

View File

@ -1 +0,0 @@
libpaho-mqtt3cs.so.1

View File

@ -1 +0,0 @@
libpaho-mqtt3cs.so.1.3.12

View File

@ -9,7 +9,7 @@
void button1(char *topicName, int topicLen, MQTTAsync_message *message) void button1(char *topicName, int topicLen, MQTTAsync_message *message)
{ {
printf("DEBUG: buttons.button1(): payload = %s", (char*)message->payload); MQTT_publish("/cool/ledkast/set", 1, "{\"status\":\"TOGGLE\"}");
} }
void Buttons_Stop() void Buttons_Stop()

View File

@ -63,7 +63,7 @@ void sendTick(char* name, struct tm* t)
); );
printf("topic = %s\n", &topic[0]); printf("topic = %s\n", &topic[0]);
MQTT_publish(topic, &payload[0], 1); MQTT_publish(topic, 1, &payload[0]);
} }
void *Worker(void *args) void *Worker(void *args)

View File

@ -76,7 +76,7 @@ void MQTT_subscribe(char* topic, int qos, void (*onMessage)(char* topicName, int
opts.onSuccess = &onSubscribe; opts.onSuccess = &onSubscribe;
opts.onFailure = &onSubscribeFailure; opts.onFailure = &onSubscribeFailure;
opts.context = ⊂ opts.context = ⊂
rc = MQTTAsync_subscribe(Client->client, "#", qos, &opts); rc = MQTTAsync_subscribe(Client->client, sub.topic, qos, &opts);
// rc = MQTTAsync_subscribe(Client->client, topic, qos, &opts); // rc = MQTTAsync_subscribe(Client->client, topic, qos, &opts);
if (rc != MQTTASYNC_SUCCESS){ if (rc != MQTTASYNC_SUCCESS){
@ -84,10 +84,11 @@ void MQTT_subscribe(char* topic, int qos, void (*onMessage)(char* topicName, int
} }
} }
void MQTT_publish(char* topic, char* payload, int qos) void MQTT_publish(char* topic, int qos, char* payload)
{ {
printf("Publishing to %s", topic); printf("Publishing to %s\n", topic);
MQTTClient_publish(Client->client, topic, strlen(payload), payload, qos, 0, NULL); int rc = MQTTClient_publish(Client->client, topic, strlen(payload), payload, qos, 0, NULL);
printf("rc = %d\n", rc);
} }
int msgarrvd(void *context, char *topicName, int topicLen, MQTTAsync_message *message){ int msgarrvd(void *context, char *topicName, int topicLen, MQTTAsync_message *message){
@ -95,7 +96,19 @@ int msgarrvd(void *context, char *topicName, int topicLen, MQTTAsync_message *me
printf(" topic: %s\n", topicName); printf(" topic: %s\n", topicName);
printf(" message: %.*s\n", message->payloadlen, (char*)message->payload); printf(" message: %.*s\n", message->payloadlen, (char*)message->payload);
//(*(Client->onMessage))(topicName, topicLen, message); printf("Subscriptions_len = %d\n", Subscriptions_len);
for (int i = 0; i < Subscriptions_len; i++)
{
Subscription_t sub = *(Subscriptions + i*sizeof(Subscription_t));
printf("looking for '%s'; looking at '%s'\n", topicName, sub.topic);
int r = strcmp(topicName, sub.topic);
if(r == 0){
printf("match %d\n", r);
(*(sub.onMessage))(topicName, topicLen, message);
}
else
printf("NO match %d\n", r);
}
MQTTAsync_freeMessage(&message); MQTTAsync_freeMessage(&message);
MQTTAsync_free(topicName); MQTTAsync_free(topicName);
@ -126,7 +139,7 @@ void reconnect(){
Client->last_reconn.c++; Client->last_reconn.c++;
} }
void onConnectFailure(void* context, MQTTAsync_failureData* response){ void onConnectFailure(void* context, MQTTAsync_failureData5* response){
printf("ERROR: MQTT.onConnectFailure(): Connection failed, rc %d\n", response->code); printf("ERROR: MQTT.onConnectFailure(): Connection failed, rc %d\n", response->code);
reconnect(); reconnect();
} }
@ -141,7 +154,7 @@ void connlost(void *context, char *cause){
reconnect(); reconnect();
} }
void onConn(void* context, MQTTAsync_successData* response){ void onConn(void* context, MQTTAsync_successData5* response){
printf("INFO: MQTT.onConn(): connected to MQTT server\n"); printf("INFO: MQTT.onConn(): connected to MQTT server\n");
Client->last_reconn.c = 0; Client->last_reconn.c = 0;

View File

@ -20,6 +20,6 @@ clientConf_t* MQTT_connect(void (*onConnect)(void* context));
void MQTT_disconnect(); void MQTT_disconnect();
void MQTT_subscribe(char* topic, int qos, void (*onMessage)(char* topicName, int topicLen, MQTTAsync_message* message)); void MQTT_subscribe(char* topic, int qos, void (*onMessage)(char* topicName, int topicLen, MQTTAsync_message* message));
void MQTT_publish(char* topic, char* payload, int qos); void MQTT_publish(char* topic, int qos, char* payload);
#endif #endif