/*
* Generated using BlocklyDuino:
*
* https://github.com/MediaTek-Labs/BlocklyDuino-for-LinkIt
*
* Date: Mon, 31 Oct 2022 06:57:20 GMT
*/
#include <WiFi.h>
#include <PubSubClient.h>
#define MQTT_USER "32050251812"
#define MQTT_PASSWORD "DKC4GMRSWU7MM9ESAG"
String myFunc(String i) {
return (String("[{")+String(String(String('"')+String("id")+String('"'))+String(":")+String(String('"')+String("LED_Display")+String('"')))+String(",")+String(String(String('"')+String("value")+String('"'))+String(":")+String(String('[')+String('"')+String(i)+String('"')+String(']')))+String("}]"));
}
String myFunc2(String i) {
return (String("[{")+String(String(String('"')+String("id")+String('"'))+String(":")+String(String('"')+String("LED_Display2")+String('"')))+String(",")+String(String(String('"')+String("value")+String('"'))+String(":")+String(String('[')+String('"')+String(i)+String('"')+String(']')))+String("}]"));
}
char _lwifi_ssid[] = "Wokwi-GUEST";
char _lwifi_pass[] = "";
const char* mqtt_server = "iot.cht.com.tw";
const unsigned int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient mqtt_client(espClient);
String mqtt_data = "";
void mqtt_sendText(String topic, String text) {
String clientId = "D1104181049";
if (mqtt_client.connect(clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) {
mqtt_client.publish(topic.c_str(), text.c_str());
}
}
void reconnect() {
while (!mqtt_client.connected()) {
String mqtt_clientId = "D1104181049";
if (mqtt_client.connect(mqtt_clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) {
mqtt_client.subscribe("/v1/device/32050251812/sensor/led_ctl/rawdata");
mqtt_client.subscribe("/v1/device/32050251812/sensor/led_ctl2/rawdata");
Serial.println("IOT Connected!");
} else {
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
mqtt_data = "";
for (int ci = 0; ci < length; ci++) {
char c = payload[ci];
mqtt_data+=c;
}
Serial.println((mqtt_data));
if (String(topic)=="/v1/device/32050251812/sensor/led_ctl/rawdata"&&mqtt_data!="[]") {
if ((mqtt_data).charAt(105) == '1') {
mqtt_sendText("/v1/device/32050251812/rawdata", (myFunc("ON")));
Serial.println((myFunc("ON")));
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(4, HIGH);
} else {
mqtt_sendText("/v1/device/32050251812/rawdata", (myFunc("OFF")));
Serial.println((myFunc("OFF")));
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(4, LOW);
}
}
if (String(topic)=="/v1/device/32050251812/sensor/led_ctl2/rawdata"&&mqtt_data!="[]") {
if ((mqtt_data).charAt(106) == '1') {
mqtt_sendText("/v1/device/32050251812/rawdata", (myFunc2("ON")));
Serial.println((myFunc2("ON")));
digitalWrite(2, HIGH);
} else {
mqtt_sendText("/v1/device/32050251812/rawdata", (myFunc2("OFF")));
Serial.println((myFunc2("OFF")));
digitalWrite(2, LOW);
}
}
}
void setup()
{
Serial.begin(9600);
randomSeed(micros());
mqtt_client.setServer(mqtt_server,mqtt_port);
mqtt_client.setCallback(callback);
//mqtt_client.setBufferSize(1024);
Serial.println("wifi Connecting...");
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println("wifi Connected!");
Serial.println("Iot Connecting...");
pinMode(LED_BUILTIN, OUTPUT);
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
}
void loop()
{
if (!mqtt_client.connected()) {
reconnect();
}
mqtt_client.loop();
}