#include <WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
//char auth[] = "FHDg0tBtsXPnqA0M1XcHRPGE3JuFm1Jq"; //diisi token blynk
String wifiSSID = "Wokwi-GUEST";
String wifiPassword = "";
String mqttBroker = "broker.hivemq.com";
WiFiClient client;
PubSubClient mqtt(client);
void connectWifi();
void connect_mqtt();
String x_pub;
int x=0;
unsigned long interval=500; // the time we need to wait
unsigned long previousMillis=0; // millis() returns an unsigned long.
bool ledState = false; // state variable for the LED
//const int led1 = 5, led2 = 16, led3=17, but = 1;
//unsigned char x = 0, dt_but=0;
void baca_sensor(){
mqtt.publish("frz/dataCount",x_pub.c_str());
x++;
x_pub = String(x);
Serial.println(x_pub);
if (x>=100) x=0;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
connectWifi();
mqtt.setServer(mqttBroker.c_str(), 1883);
pinMode(5, OUTPUT);
digitalWrite(5, ledState);
}
void loop() {
// put your main code here, to run repeatedly:
if (!mqtt.connected()){
connect_mqtt();
Serial.println("MQTT Connected");
//mqtt.publish("frz/dataCount","ESP32 terhubung");
}
mqtt.loop();
unsigned long currentMillis = millis(); // grab current time
if ((unsigned long)(currentMillis - previousMillis) >= interval) {
ledState = !ledState; // "toggles" the state
digitalWrite(5, ledState); // sets the LED based on ledState
baca_sensor();
// save the "current" time
previousMillis = millis();
}
}
void connect_mqtt()
{
while(!mqtt.connected()){
Serial.println("Connecting MQTT...");
if (mqtt.connect("frzESP32")){
mqtt.subscribe("frz/dataCount");
}
}
}
void connectWifi()
{
Serial.println("Connecting To Wifi");
WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println("Wifi Connected");
Serial.println(WiFi.SSID());
Serial.println(WiFi.RSSI());
Serial.println(WiFi.macAddress());
Serial.println(WiFi.localIP());
Serial.println(WiFi.gatewayIP());
Serial.println(WiFi.dnsIP());
}