summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorben Egmose <torben.egmose@gmail.com>2022-09-23 19:00:29 +0200
committerTorben Egmose <torben.egmose@gmail.com>2022-09-23 19:00:29 +0200
commit1ea91ea258369db7f8924b0dc489171c0236fcd9 (patch)
tree1c03c3d8a3c21a0ea39bf16eb1d2193eb02050be
parentb84afebba0c75081165de3466aef15a0b40aa337 (diff)
-rw-r--r--.vscode/extensions.json17
-rw-r--r--platformio.ini1
-rw-r--r--src/main.cpp182
3 files changed, 155 insertions, 45 deletions
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 0f0d740..080e70d 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,7 +1,10 @@
-{
- // See http://go.microsoft.com/fwlink/?LinkId=827846
- // for the documentation about the extensions.json format
- "recommendations": [
- "platformio.platformio-ide"
- ]
-}
+{
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "platformio.platformio-ide"
+ ],
+ "unwantedRecommendations": [
+ "ms-vscode.cpptools-extension-pack"
+ ]
+}
diff --git a/platformio.ini b/platformio.ini
index 91b78c6..01e07ca 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -22,4 +22,5 @@ lib_deps =
upload_protocol = espota
upload_port = 172.19.5.103
+;upload_port = 172.19.1.222
;upload_port = /dev/ttyUSB3 \ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
index eaaa95a..662da4e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -5,9 +5,13 @@
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
+char buf[5] = {'x','x',':','x','x'};
+
+
#include <PubSubClient.h>
const char* debug = "debug";
const char* server = "mqtt.iot";
+//const char* server = "172.19.1.10";
WiFiClient espClient;
PubSubClient client(espClient);
@@ -15,6 +19,7 @@ PubSubClient client(espClient);
ESP8266WiFiMulti wifiMulti;
const char* ssid = "iot";
+//const char* ssid = "bakketoppen";
const char* password = "longtimeago";
@@ -36,8 +41,10 @@ bool oldbacklight;
unsigned long tick = 0;
char outside[10] = "";
+char inside[10] = "";
+char pct[10] = "";
int co = 0;
-int sec = 10;
+int sec = 15;
void numprint(int num);
int level(byte* payload, unsigned int length) {
@@ -74,33 +81,35 @@ void callback(char* topic, byte* payload, unsigned int length) {
backlight = true;
}
- lcd.setCursor(0,2);
- for(unsigned int a=length; a<7; a++) {
- lcd.print(' ');
+ return ;
+ }
+
+ if(topic[1]=='t') {
+ for(unsigned int a=0; a<5; a++) {
+ buf[a] = ' ';
}
for(unsigned int a=0; a<length; a++) {
- lcd.print((char)payload[a]);
+ buf[a] = payload[a];
}
- lcd.print(" lux ");
return ;
}
if(topic[14]=='c' && topic[15]=='o' && topic[16]=='2') {
co = level(payload, length);
- //numprint(level(payload, length));
return ;
}
- if(topic[14]=='t') {
- lcd.setCursor(12,2);
+ if(topic[14]=='t' && topic[12]=='4') {
+ for(unsigned int a=0; a<10; a++) {
+ inside[a] = ' ';
+ }
for(unsigned int a=0; a<length; a++) {
- lcd.print((char)payload[a]);
+ inside[a] = payload[a];
}
- lcd.print(" C");
return ;
}
- if(topic[10]=='t') {
+ if(topic[14]=='t' && topic[12]=='f') {
for(unsigned int a=0; a<10; a++) {
outside[a] = ' ';
}
@@ -110,28 +119,13 @@ void callback(char* topic, byte* payload, unsigned int length) {
return ;
}
- if(topic[14]=='p') {
- lcd.setCursor(0,3);
- for(unsigned int a=length; a<7; a++) {
- lcd.print(' ');
- }
- for(unsigned int a=0; a<length; a++) {
- lcd.print((char)payload[a]);
- }
- lcd.print(" hPa");
- return ;
- }
-
if(topic[14]=='h') {
- if(length > 3) return;
- lcd.setCursor(12,3);
- for(unsigned int a=length; a<5; a++) {
- lcd.print(' ');
+ for(unsigned int a=0; a<10; a++) {
+ pct[a] = ' ';
}
for(unsigned int a=0; a<length; a++) {
- lcd.print((char)payload[a]);
+ pct[a] = payload[a];
}
- lcd.print(" %");
return ;
}
@@ -234,15 +228,16 @@ void setup()
client.publish(debug,MAC_char);
client.publish(sta, PROJECT);
client.subscribe("/light");
+ client.subscribe("/time");
client.subscribe("/dc4f22660be4/temperature");
client.subscribe("/dc4f22660be4/humidity");
- client.subscribe("/dc4f22660be4/pressure");
- client.subscribe("/sensor/0/temperature");
+ client.subscribe("/dc4f221c945f/temperature");
client.subscribe("/b4e62d675b8d/co2");
ArduinoOTA.setHostname(MAC_char);
ArduinoOTA.begin();
ESP.wdtEnable(WDTO_8S);
+
tick = millis();
}
@@ -250,69 +245,106 @@ void myprint(int x, const uint8_t num[6]) {
yield();
lcd.setCursor(x,0);
yield();
- lcd.write(num[0]); yield(); lcd.write(num[1]); yield(); lcd.write(num[2]);
+ lcd.write(num[0]); yield(); lcd.write(num[1]); yield(); lcd.write(num[2]);
+ if(x < 16) lcd.write(160);
yield();
lcd.setCursor(x,1);
yield();
lcd.write(num[3]); yield(); lcd.write(num[4]); yield(); lcd.write(num[5]);
+ if(x < 16) lcd.write(160);
+}
+
+void myprint2(int x, const uint8_t num[6]) {
+ yield();
+ lcd.setCursor(x,2);
+ yield();
+ lcd.write(num[0]); yield(); lcd.write(num[1]); yield(); lcd.write(num[2]);
+ yield();
+ lcd.setCursor(x,3);
+ yield();
+ lcd.write(num[3]); yield(); lcd.write(num[4]); yield(); lcd.write(num[5]);
}
const uint8_t numbers[][6] = {
+ //0
{
3, 0, 3,
3, 1, 3
},
+ //1
{
0, 3, 160,
1, 3, 1
},
+ //2
{
2, 2, 3,
3, 1, 1
},
+ //3
{
2, 2, 3,
1, 1, 3
},
+ //4
{
3, 1, 3,
160, 160, 3
},
+ //5
{
3, 2, 2,
1, 1, 3
},
+ //6
{
3, 2, 2,
3, 1, 3
},
+ //7
{
0, 0, 3,
160, 160, 3
},
+ //8
{
3, 2, 3,
3, 1, 3
},
+ //9
{
3, 2, 3,
1, 1, 3
},
+ //10 space
{
160, 160, 160,
160, 160, 160
},
+ //11 C
{
3, 0, 0,
3, 1, 1
},
+ //12 -
{
160, 1, 160,
160, 160, 160
},
+ //13 dot
{
3, 2, 3,
160, 160, 160
+ },
+ // 14 %
+ {
+ 0, 1, 5,
+ 4, 160, 1
+ },
+ // 15 X
+ {
+ 3, 3, 3,
+ 3, 3, 3
}
};
@@ -348,7 +380,6 @@ void numprint(int num) {
}
}
-
void loop()
{
ESP.wdtFeed();
@@ -371,19 +402,21 @@ void loop()
} else {
client.connect(MAC_char);
client.subscribe("/light");
+ client.subscribe("/time");
client.subscribe("/dc4f22660be4/temperature");
client.subscribe("/dc4f22660be4/humidity");
client.subscribe("/dc4f22660be4/pressure");
- client.subscribe("/sensor/0/temperature");
+ client.subscribe("/dc4f221c945f/temperature");
client.subscribe("/b4e62d675b8d/co2");
}
if(millis() - tick >= 1000) {
tick = millis();
- sec--; if(sec<0) sec = 10;
+ sec--; if(sec<0) sec = 15;
- if(sec == 5) {
+
+ if(sec == 10) {
for(int a=0; a<5; a++) {
if('-' == outside[a]) { myprint(a*4, numbers[12]); }
if('0' == outside[a]) { myprint(a*4, numbers[0]); }
@@ -405,10 +438,83 @@ void loop()
}
}
}
+ for(int a=0; a<5; a++) {
+ if('-' == inside[a]) { myprint2(a*4, numbers[12]); }
+ if('0' == inside[a]) { myprint2(a*4, numbers[0]); }
+ if('1' == inside[a]) { myprint2(a*4, numbers[1]); }
+ if('2' == inside[a]) { myprint2(a*4, numbers[2]); }
+ if('3' == inside[a]) { myprint2(a*4, numbers[3]); }
+ if('4' == inside[a]) { myprint2(a*4, numbers[4]); }
+ if('5' == inside[a]) { myprint2(a*4, numbers[5]); }
+ if('6' == inside[a]) { myprint2(a*4, numbers[6]); }
+ if('7' == inside[a]) { myprint2(a*4, numbers[7]); }
+ if('8' == inside[a]) { myprint2(a*4, numbers[8]); }
+ if('9' == inside[a]) { myprint2(a*4, numbers[9]); }
+ if('.' == inside[a]) {
+ myprint2(a*4, numbers[13]);
+ a++;
+ myprint2(a*4, numbers[11]);
+ for(a = a + 1; a<5; a++) {
+ myprint2(a*4, numbers[10]);
+ }
+ }
+ }
}
- if(sec == 0) {
+ if(sec == 5) {
numprint(co);
+
+ for(int a=0; a<5; a++) {
+ if('-' == pct[a]) { myprint2(a*4, numbers[12]); }
+ if('0' == pct[a]) { myprint2(a*4, numbers[0]); }
+ if('1' == pct[a]) { myprint2(a*4, numbers[1]); }
+ if('2' == pct[a]) { myprint2(a*4, numbers[2]); }
+ if('3' == pct[a]) { myprint2(a*4, numbers[3]); }
+ if('4' == pct[a]) { myprint2(a*4, numbers[4]); }
+ if('5' == pct[a]) { myprint2(a*4, numbers[5]); }
+ if('6' == pct[a]) { myprint2(a*4, numbers[6]); }
+ if('7' == pct[a]) { myprint2(a*4, numbers[7]); }
+ if('8' == pct[a]) { myprint2(a*4, numbers[8]); }
+ if('9' == pct[a]) { myprint2(a*4, numbers[9]); }
+ if(' ' == pct[a]) {
+ myprint2(a*4, numbers[10]);
+ }
+ if(a==2) {
+ myprint2(a*4, numbers[14]);
+ }
+ }
+ }
+
+ if(sec == 0) {
+ int b = 0;
+ for(int a=0; a<5; a++) {
+ if('x' == buf[a]) { myprint(a*4 + b, numbers[15]); }
+ if('0' == buf[a]) { myprint(a*4 + b, numbers[0]); }
+ if('1' == buf[a]) { myprint(a*4 + b, numbers[1]); }
+ if('2' == buf[a]) { myprint(a*4 + b, numbers[2]); }
+ if('3' == buf[a]) { myprint(a*4 + b, numbers[3]); }
+ if('4' == buf[a]) { myprint(a*4 + b, numbers[4]); }
+ if('5' == buf[a]) { myprint(a*4 + b, numbers[5]); }
+ if('6' == buf[a]) { myprint(a*4 + b, numbers[6]); }
+ if('7' == buf[a]) { myprint(a*4 + b, numbers[7]); }
+ if('8' == buf[a]) { myprint(a*4 + b, numbers[8]); }
+ if('9' == buf[a]) { myprint(a*4 + b, numbers[9]); }
+ if(' ' == buf[a]) { myprint(a*4 + b, numbers[10]); }
+ if(':' == buf[a]) {
+ lcd.setCursor(8,0);
+ lcd.write(1); lcd.write(160);
+ lcd.setCursor(8,1);
+ lcd.write(1); lcd.write(160);
+ b=-2;
+ }
+
+ myprint2(a*4, numbers[10]);
+ }
+
+ lcd.setCursor(18,0);
+ lcd.write(160);
+ lcd.setCursor(18,1);
+ lcd.write(160);
}
}