/* contoh MQTT multi subcriber dan multi publisher testing mosquitto_pub -u hendriawan -P IO_KEY -h io.adafruit.com -t hendriawan/feeds/kamar-slash-lampu1 -m 0 mosquitto_pub -u hendriawan -P IO_KEY -h io.adafruit.com -t hendriawan/feeds/kamar-slash-lampu1 -m 1 mosquitto_pub -u hendriawan -P IO_KEY -h io.adafruit.com -t hendriawan/feeds/kamar-slash-lampu2 -m 0 mosquitto_pub -u hendriawan -P IO_KEY -h io.adafruit.com -t hendriawan/feeds/kamar-slash-lampu2 -m 1 mosquitto_sub -u hendriawan -P IO_KEY -h io.adafruit.com -t "hendriawan/feeds/kamar-slash-suhu" mosquitto_sub -u hendriawan -P IO_KEY -h io.adafruit.com -t hendriawan/feeds/kamar-slash-kelembapan */ #include #include // Update these with values suitable for your network. int LED1=2; int LED2=16; const char* ssid = "mywifi"; const char* password = "123456789"; // const char* mqtt_server = "broker.mqtt-dashboard.com"; const char* mqtt_server = "io.adafruit.com"; WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (50) char msg[MSG_BUFFER_SIZE]; int value = 0; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if (strcmp(topic, "hendriawan/feeds/kamar-slash-lampu1") == 0) { // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(LED1, LOW); // Turn the LED on (Note that LOW is the voltage level } else { digitalWrite(LED1, HIGH); // Turn the LED off by making the voltage HIGH } } if (strcmp(topic, "hendriawan/feeds/kamar-slash-lampu2") == 0) { // Switch on the LED if an 1 was received as first character if ((char)payload[0] == '1') { digitalWrite(LED2, LOW); // Turn the LED on (Note that LOW is the voltage level } else { digitalWrite(LED2, HIGH); // Turn the LED off by making the voltage HIGH } } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect // if (client.connect(clientId.c_str())) { if (client.connect(clientId.c_str(), "hendriawan", "aio_PoNc11FV6eoQ90FJEotpfTPZ1QcE")) { Serial.println("connected"); // Once connected, publish an announcement... client.publish("hendriawan/feeds/kamar-slash-suhu", "hello world"); client.publish("hendriawan/feeds/kamar-slash-kelembapan", "hello world"); // ... and resubscribe client.subscribe("hendriawan/feeds/kamar-slash-lampu1"); client.subscribe("hendriawan/feeds/kamar-slash-lampu2"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); unsigned long now = millis(); if (now - lastMsg > 5000) { lastMsg = now; ++value; if(value==100) { value=0; } //publish suhu snprintf (msg, MSG_BUFFER_SIZE, "%ld", value); Serial.print("Publish message: suhu: kelembaban "); Serial.print(msg); Serial.print(": "); client.publish("hendriawan/feeds/kamar-slash-suhu", msg); // publish kelembapan int dataA0=analogRead(PIN_A0); itoa(dataA0,msg,10); // snprintf (msg, MSG_BUFFER_SIZE, "%ld", dataA0); Serial.println(msg); client.publish("hendriawan/feeds/kamar-slash-kelembapan", msg); } }