Sensor Publisher Subscriber
Sensor Publisher Subscriber
Pastikan broker MQTT seperti Mosquitto sudah aktif di lokal atau di server tujuan
(misalnya mqtt://192.168.1.100).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wiringPi.h>
#include "MQTTClient.h"
MQTTClient client;
int main() {
// Setup GPIO
if (wiringPiSetup() == -1) {
printf("Gagal inisialisasi WiringPi\n");
return 1;
}
pinMode(SENSOR_TIANG_1, INPUT);
pinMode(SENSOR_TIANG_2, INPUT);
pullUpDnControl(SENSOR_TIANG_1, PUD_UP);
pullUpDnControl(SENSOR_TIANG_2, PUD_UP);
// Setup MQTT
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
int rc;
while (1) {
int state1 = digitalRead(SENSOR_TIANG_1);
int state2 = digitalRead(SENSOR_TIANG_2);
last_state1 = state1;
last_state2 = state2;
delay(50);
}
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
return 0;
}
3. Catatan Tambahan:
Broker MQTT bisa lokal (di Pi juga) atau di cloud (Mosquitto, HiveMQ, dll).
Kamu bisa monitoring datanya pakai MQTT client seperti MQTT Explorer.
Kalau mau topik-nya dibuat beda (misal sensor/tiang1, sensor/tiang2), tinggal ubah
TOPIC saat publish.
Bisa juga disisipkan id_peserta, jarak, atau event tambahan ke JSON.
MQTT Subscriber – Bahasa C
1. Struktur Program
Connect ke MQTT broker
Subscribe ke topik (misalnya sensor/infrared)
Print data JSON tiap kali ada pesan masuk
printf("\nPesan Diterima:\n");
printf("Topik: %s\n", topicName);
printf("Payload: %.*s\n", message->payloadlen, payload);
MQTTClient_freeMessage(&message);
MQTTClient_free(topicName);
}
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
return 0;
}