funky stuff
This commit is contained in:
commit
84f9ee4c90
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
secrets.h
|
153
proto.ino
Normal file
153
proto.ino
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
#include <SPI.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <MQTT.h>
|
||||||
|
|
||||||
|
#include <Adafruit_SSD1306.h>
|
||||||
|
#include <DHT11.h>
|
||||||
|
#include <Adafruit_AHTX0.h>
|
||||||
|
#include "ScioSense_ENS160.h"
|
||||||
|
#include "secrets.h"
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 128 // OLED display width, in pixels
|
||||||
|
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
|
||||||
|
#define OLED_RESET -1
|
||||||
|
#define SCREEN_ADDRESS 0x3C
|
||||||
|
|
||||||
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
||||||
|
ScioSense_ENS160 ens160(ENS160_I2CADDR_1);
|
||||||
|
DHT11 dht11(2);
|
||||||
|
Adafruit_AHTX0 aht;
|
||||||
|
|
||||||
|
WiFiClient net;
|
||||||
|
MQTTClient client;
|
||||||
|
|
||||||
|
int ATHtempC;
|
||||||
|
int ATHhumidity;
|
||||||
|
|
||||||
|
unsigned long timestamp = 0;
|
||||||
|
unsigned long uploadts = 0;
|
||||||
|
|
||||||
|
void connect() {
|
||||||
|
Serial.print("checking wifi...");
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
Serial.print(".");
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print("\nconnecting...");
|
||||||
|
while (!client.connect(HOSTNAME, MQTT_USER, MQTT_PASS)) {
|
||||||
|
Serial.print(".");
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("\nconnected!");
|
||||||
|
//client.subscribe("/hello");
|
||||||
|
}
|
||||||
|
|
||||||
|
void sensors(){
|
||||||
|
Serial.print("ENS160...");
|
||||||
|
dht11.setDelay(1000);
|
||||||
|
ens160.begin();
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
Serial.println(ens160.available() ? "done." : "failed!");
|
||||||
|
if (ens160.available()) {
|
||||||
|
Serial.print("\tRev: "); Serial.print(ens160.getMajorRev());
|
||||||
|
Serial.print("."); Serial.print(ens160.getMinorRev());
|
||||||
|
Serial.print("."); Serial.println(ens160.getBuild());
|
||||||
|
|
||||||
|
Serial.print("\tStandard mode ");
|
||||||
|
Serial.println(ens160.setMode(ENS160_OPMODE_STD) ? "done." : "failed!" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! aht.begin()) {
|
||||||
|
Serial.println("Could not find AHT? Check wiring");
|
||||||
|
while (1) delay(10);
|
||||||
|
}
|
||||||
|
Serial.println("AHT10 or AHT20 found");
|
||||||
|
|
||||||
|
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { // Address 0x3D for 128x64
|
||||||
|
Serial.println("SSD1306 allocation failed");
|
||||||
|
for(;;);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeToScreen(String &text) {
|
||||||
|
display.clearDisplay();
|
||||||
|
display.setCursor(0, 3);
|
||||||
|
display.println(text);
|
||||||
|
display.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void messageReceived(String &topic, String &payload) {
|
||||||
|
Serial.println("incoming: " + topic + " - " + payload);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
while (!Serial) {}
|
||||||
|
|
||||||
|
WiFi.setHostname(HOSTNAME);
|
||||||
|
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||||
|
client.begin(MQTT_URL, MQTT_PORT, net);
|
||||||
|
//client.onMessage(messageReceived);
|
||||||
|
|
||||||
|
connect();
|
||||||
|
sensors();
|
||||||
|
|
||||||
|
display.clearDisplay();
|
||||||
|
display.setTextSize(1);
|
||||||
|
display.setTextColor(WHITE);
|
||||||
|
display.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
client.loop();
|
||||||
|
delay(1000);
|
||||||
|
if (!client.connected()) {
|
||||||
|
connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (millis() - timestamp > 2500) {
|
||||||
|
timestamp = millis();
|
||||||
|
sensors_event_t humidity1, temp;
|
||||||
|
aht.getEvent(&humidity1, &temp);
|
||||||
|
|
||||||
|
ATHtempC = (temp.temperature);
|
||||||
|
ATHhumidity = (humidity1.relative_humidity);
|
||||||
|
|
||||||
|
int temperature = 0;
|
||||||
|
int humidity = 0;
|
||||||
|
int result = dht11.readTemperatureHumidity(temperature, humidity);
|
||||||
|
|
||||||
|
if (result == 0 && ens160.available()) {
|
||||||
|
ens160.set_envdata(temperature, ATHhumidity);
|
||||||
|
ens160.measure(true);
|
||||||
|
ens160.measureRaw(true);
|
||||||
|
|
||||||
|
Serial.print("Temperature: ");Serial.print(temperature);Serial.print("°C\tHumidity: ");Serial.print(ATHhumidity);Serial.print("% ");
|
||||||
|
Serial.print("AQI: ");Serial.print(ens160.getAQI());Serial.print(" ");
|
||||||
|
Serial.print("TVOC: ");Serial.print(ens160.getTVOC());Serial.print("ppb ");
|
||||||
|
Serial.print("eCO2: ");Serial.print(ens160.geteCO2());Serial.println("ppm ");
|
||||||
|
|
||||||
|
writeToScreen("Temp: " + String(temperature) + "C H: " + String(ATHhumidity) + "%\nAQI: " + ens160.getAQI());
|
||||||
|
if (millis() - uploadts > 30000) {
|
||||||
|
client.publish("envi/temparature", String(temperature));
|
||||||
|
client.publish("envi/humidity", String(ATHhumidity));
|
||||||
|
client.publish("envi/aqi", String(ens160.getAQI()));
|
||||||
|
client.publish("envi/tvoc", String(ens160.getTVOC()));
|
||||||
|
client.publish("envi/eco", String(ens160.geteCO2()));
|
||||||
|
uploadts = millis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(result != 0 || !ens160.available()) {
|
||||||
|
client.publish("envi/error", "sensor error");
|
||||||
|
Serial.println(DHT11::getErrorString(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user