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