From 8047228ff0bf9a738000c6ca2b354f7acf46985a Mon Sep 17 00:00:00 2001 From: Torben Egmose Date: Sun, 7 Feb 2021 21:50:25 +0100 Subject: init commit --- src/main.cpp | 419 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 419 insertions(+) create mode 100644 src/main.cpp (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..8516001 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,419 @@ +#include +#include +#include +#include +#include +#include + +#include +const char* debug = "debug"; +const char* server = "172.19.1.10"; + +WiFiClient espClient; +PubSubClient client(espClient); + +ESP8266WiFiMulti wifiMulti; + +const char* ssid = "bakketoppen"; +const char* password = "longtimeago"; +const char* ssid2 = "iot"; +const char* ssid3 = "desk"; + +uint8_t MAC_array[6]; +char MAC_char[21]; + +#include +#include + +LiquidCrystal_I2C lcd(0x3F, 20, 4); // 103 +//LiquidCrystal_I2C lcd(0x27, 20, 4); + +int val; +char str[10]; + +bool backlight; +bool oldbacklight; + +unsigned long tick = 0; +char outside[10] = ""; +int co = 0; +int sec = 10; + +void numprint(int num); +int level(byte* payload, unsigned int length) { + if((char)payload[0]=='o' && (char)payload[1]=='n'){ + return 1024; + } + if((char)payload[0]=='o' && (char)payload[1]=='f'){ + return 0; + } + + unsigned int i; + str[0] = '0'; + str[1] = '0'; + str[2] = '0'; + str[3] = '0'; + str[4] = '\0'; + + for(i = 0; i < length; i++) { + str[i] = (char)payload[i]; + } + + for(i = length; i < 10; i++) { + str[i] = '\0'; + } + + return atoi(str); +} + +void callback(char* topic, byte* payload, unsigned int length) { + if(topic[1]=='l') { + if(payload[0]=='0' && length==1) { + backlight = false; + } else { + backlight = true; + } + + lcd.setCursor(0,2); + for(unsigned int a=length; a<7; a++) { + lcd.print(' '); + } + for(unsigned int a=0; a 3) return; + lcd.setCursor(12,3); + for(unsigned int a=length; a<5; a++) { + lcd.print(' '); + } + for(unsigned int a=0; a= 10000) { + myprint(0, numbers[num / 10000 % 10]); + } else { + myprint(0, numbers[10]); + } + + if(num >= 1000) { + myprint(4, numbers[num / 1000 % 10]); + } else { + myprint(4, numbers[10]); + } + + if(num >= 100) { + myprint(8, numbers[num / 100 % 10]); + } else { + myprint(8, numbers[10]); + } + + if(num >= 10) { + myprint(12, numbers[num / 10 % 10]); + } else { + myprint(12, numbers[10]); + } + + if(num >= 0) { + myprint(16, numbers[num / 1 % 10]); + } else { + myprint(16, numbers[10]); + } +} + + +void loop() +{ + ESP.wdtFeed(); + + if (wifiMulti.run() == WL_CONNECTED) { + yield(); + } + + if(oldbacklight != backlight) { + oldbacklight = backlight; + if(backlight) { + lcd.backlight(); + } else { + lcd.noBacklight(); + } + } + + if(client.connected()) { + client.loop(); + } else { + client.connect(MAC_char); + client.subscribe("/light"); + client.subscribe("/dc4f22660be4/temperature"); + client.subscribe("/dc4f22660be4/humidity"); + client.subscribe("/dc4f22660be4/pressure"); + client.subscribe("/sensor/0/temperature"); + client.subscribe("/b4e62d675b8d/co2"); + } + + + if(millis() - tick >= 1000) { + tick = millis(); + sec--; if(sec<0) sec = 10; + + if(sec == 5) { + for(int a=0; a<5; a++) { + if('-' == outside[a]) { myprint(a*4, numbers[12]); } + if('0' == outside[a]) { myprint(a*4, numbers[0]); } + if('1' == outside[a]) { myprint(a*4, numbers[1]); } + if('2' == outside[a]) { myprint(a*4, numbers[2]); } + if('3' == outside[a]) { myprint(a*4, numbers[3]); } + if('4' == outside[a]) { myprint(a*4, numbers[4]); } + if('5' == outside[a]) { myprint(a*4, numbers[5]); } + if('6' == outside[a]) { myprint(a*4, numbers[6]); } + if('7' == outside[a]) { myprint(a*4, numbers[7]); } + if('8' == outside[a]) { myprint(a*4, numbers[8]); } + if('9' == outside[a]) { myprint(a*4, numbers[9]); } + if('.' == outside[a]) { + myprint(a*4, numbers[13]); + a++; + myprint(a*4, numbers[11]); + for(a = a + 1; a<5; a++) { + myprint(a*4, numbers[10]); + } + } + } + } + + if(sec == 0) { + numprint(co); + } + } + + delay(10); + ESP.wdtFeed(); + ArduinoOTA.handle(); + ESP.wdtFeed(); +} -- cgit v1.2.3