// #include "DHT.h"
#include <WiFi.h>
#include <ThingsBoard.h>
#include <PubSubClient.h>
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define TOKEN "fNJhJkTvm7GRA2VlVjfR"
// Switch
#define switchgg 13
#define led 15
// LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
char thingsboardServer[] = "thingsboard.cloud";
WiFiClient wificlient;
// Initialize DHT sensor.
// DHT dht(DHTPIN, DHTTYPE);
ThingsBoard tb(wificlient);
int status = WL_IDLE_STATUS;
unsigned long lastSend;
void setup()
{
Serial.begin(115200);
pinMode(switchgg, INPUT_PULLUP);
pinMode(led, OUTPUT);
delay(10);
InitWiFi();
lastSend = 0;
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("TEST");
lcd.setCursor(0,1);
lcd.print("KODING");
}
void loop()
{
if ( !tb.connected() ) {
reconnect();
}
if ( millis() - lastSend > 1000 ) { // Update and send only after 1 seconds
kirimDataKeThingsboard();
lastSend = millis();
}
tb.loop();
}
void kirimDataKeThingsboard()
{
Serial.println("Collecting temperature data.");
int nilaiswitch1 = digitalRead((switchgg));
if (nilaiswitch1 == 1)
{
digitalWrite(led,HIGH);
}
else{
digitalWrite(led, LOW);
}
Serial.println("Sending data to ThingsBoard:");
Serial.print("Nilai Switch: ");
Serial.println(nilaiswitch1);
// Teks 1
lcd.setCursor(0,0);
lcd.print("Switch: "+ String(nilaiswitch1));
lcd.setCursor(0,1);
lcd.print("INDOBOT");
delay(2000);
lcd.clear();
tb.sendTelemetryFloat("Nilai Switch", nilaiswitch1);
}
void InitWiFi()
{
Serial.println("Connecting to AP ...");
// attempt to connect to WiFi network
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void reconnect() {
// Loop until we're reconnected
while (!tb.connected()) {
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
Serial.print("Connecting to ThingsBoard node ...");
if ( tb.connect(thingsboardServer, TOKEN) ) {
Serial.println( "[DONE]" );
} else {
Serial.print( "[FAILED]" );
Serial.println( " : retrying in 5 seconds]" );
// Wait 5 seconds before retrying
delay( 5000 );
}
}
}