#include<WiFi.h>
#include<PubSubClient.h>
/*
int trigpin = 15; // output
int echopin = 16; //input
*/
int trigpin = 2;
int echopin = 4;
const char * ssid = "Wokwi-GUEST";
const char * pass = "";
const char * broker = "broker.emqx.io"; //mqtt host
const char * topic1 ="Zetsu1234";
const int port = 1883; //mqtt port // khusus const int gaperlu *
//*nanti cari tau fungsi var const
String clientID ="mqttx_b58eb7d9"; // nulis var type String ==> s nya harus kapital
//id sender dan receiver di mqtt harus berbeda
WiFiClient espclient;//objek wifi
PubSubClient client(espclient);//objek MQTT // nama object ==>[ client ] bisa diubah
int waktu_sebelum, waktu_interval = 1*1000;
float duration, distance;
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, pass);
client.setServer(broker, port);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
while(WiFi.status() != WL_CONNECTED){
Serial.println("Still trying to connect to wifi...");
delay(500);
}
Serial.println("Connected");
/*
while(!client.connect(clientID.c_str())){
Serial.println("connecting to MQTT");
delay(500);
}
Serial.println("MQTT is connected");
*/
while (!client.connected()) {
if (client.connect(clientID.c_str())) {
Serial.println("connected to mqtt broker");
} else {
Serial.print("still not connected to mqtt broker");
Serial.print(client.state());
delay(2000);
}
}
}
void loop(){
digitalWrite(trigpin, HIGH); // trigger ultrasonic sound(pemicu).
delay(10);
digitalWrite(trigpin, LOW);
duration = pulseIn(echopin, HIGH); /*produce pulse when the reflected signal was
received. */
distance = 0.017 * duration;
Serial.println(distance);
delay(1000);
client.loop() ;
if(millis() - waktu_sebelum >= waktu_interval) {
client.publish(topic1, String(distance).c_str()); //berhasil
waktu_sebelum = millis();
}
}