#define THINGER_SERIAL_DEBUG
#include <ThingerESP32.h>
#define USERNAME "AnaToledoMoreo"
#define DEVICE_ID "ESP32_ATM"
#define DEVICE_CREDENTIAL "spALFpGTquDWRVZ2"
#define SSID "Wokwi-GUEST"
#define SSID_PASSWORD ""
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
#include "DHT.h"
#include <BH1750.h>
#include <Wire.h>
#include "SSD1306Wire.h"
#include "images.h"
#define SCREEN_ADDRESS 0x3C
#define DHTPIN 15
#define DHTTYPE DHT22 // DHT 11
#define SDA 21
#define SCL 22
#define RelePin 25
DHT dht(DHTPIN, DHTTYPE);
BH1750 lightMeter; //I2C
// create an OLED display object connected to I2C
SSD1306Wire display(SCREEN_ADDRESS, SDA, SCL); // o SSD1306Wire display(0x3c,4, 15, GEOMETRY_128_64);
void mostrar_OLED();
float h, t, lux;
unsigned long previousTime = 0;
#define intervalRead 2000
void setup() {
pinMode(RelePin, OUTPUT);
digitalWrite(RelePin, LOW);
Serial.begin(9600);
display.init(); // hay que hace el reset antes
// Wire.begin(SDA, SCL); //no es necesario si antes display.init();
lightMeter.begin(); //voy a dejar el modo por defecto
dht.begin();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 0, "SENSORES");
display.display();
thing.add_wifi(SSID, SSID_PASSWORD);
thing["RELE"] << digitalPin(RelePin);
//otro recurso de salida agrupado
thing["ambientales"] >> [](pson& out) {
out["temperatura"] = t;
out["humedad"] = h;
out["lux"] = lux;
};
}
void loop() {
thing.handle();
if (millis() - previousTime > intervalRead) {
previousTime = millis();
// Read the data from the sensor
lux = lightMeter.readLightLevel();
// si lightMeter.begin(BH1750::ONE_TIME_HIGH_RES_MODE);
// lightMeter.configure(BH1750::ONE_TIME_HIGH_RES_MODE);
h = dht.readHumidity();
t = dht.readTemperature();
mostrar_OLED();
}
}
void mostrar_OLED() {
display.clear(); // clear display
display.drawXbm(0, 0, icon_temp_width, icon_temp_height, myBitmaptemperature_icon);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_16);
display.drawString(40, 0, String(t, 0) + " C");
display.drawString(40, 20, String(h, 0) + " %");
display.drawXbm(0, 32, icon_lux_width, icon_lux_height, bitmap_bombilla_mini);
display.drawString(40, 40, String(lux, 0) + " lux");
display.display();
}