#include <WiFi.h>
#include "ThingSpeak.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <SoftwareSerial.h>
WiFiClient client;
const char* WIFI_NAME = "Wokwi-GEUST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2523065 ;
const char* writeApiKey = "MR60I1WU78ZCQGZ8";
const char* server = "api.thingspeak.com";
int statusCode = 0;
byte LED=1;
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "Arulx06"
#define AIO_KEY "aio_xOlw169GloaVdNjYsUSjcR68pQJ2"
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/light");
void setup() {
// put your setup code here, to run once:
Serial1.begin(115200);
Serial1.println("Wifi not connected");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
pinMode(13, OUTPUT);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial1.println("Wifi not connected");
}
Serial1.println("Wifi connected !");
Serial1.println("Local IP: ");
Serial1.println(WiFi.localIP().toString());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
connect();
mqtt.subscribe(&light);
}
void connect() {
Serial1.print("Connecting to MQTT...");
int8_t ret;
while ((ret = mqtt.connect()) != 0) {
Serial1.println(mqtt.connectErrorString(ret));
Serial1.println("Retrying MQTT connection...");
delay(5000);
}
Serial1.println("Connected to MQTT");
}
void loop() {
if(! mqtt.ping(3)) {
// reconnect to adafruit io
if(! mqtt.connected())
connect();
}
// These constants should match the photoresistor's "gamma" and "rl10" attributes
const float GAMMA = 0.7;
const float RL10 = 50;
// Convert the analog value into lux value:
int analogValue = analogRead(27);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float Lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
ThingSpeak.setField(1,Lux);
int status = ThingSpeak.writeFields(myChannelNumber, writeApiKey);
if (status == 200) {
Serial1.println("Data sent to ThingSpeak successfully");
} else {
Serial1.println("Failed to send data to ThingSpeak");
}
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &light) {
Serial1.print("Received Feed Value: ");
Serial1.println((char *)light.lastread);
uint8_t ledState = *light.lastread;
LED = ledState;
Serial1.print(LED);
}
}
/* getting on or off condition from user from application via thinkspeak
if 1 is sent the light wont glow if 0 is sent the light glows*/
if(LED==0)
{
digitalWrite(13,LOW);
Serial1.println(Lux);
}
if(LED==1){
if(Lux<100){
digitalWrite(13,HIGH);
Serial1.println(Lux);
}else{
digitalWrite(13,LOW);
Serial1.println(Lux);
}
}
}
Loading
pi-pico-w
pi-pico-w