Skip to content

Commit b3f4287

Browse files
committed
initial commit
1 parent c1f184d commit b3f4287

File tree

7 files changed

+174
-0
lines changed

7 files changed

+174
-0
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.pio
2+
.vscode/.browse.c_cpp.db*
3+
.vscode/c_cpp_properties.json
4+
.vscode/launch.json
5+
.vscode/ipch

.vscode/extensions.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
// See http://go.microsoft.com/fwlink/?LinkId=827846
3+
// for the documentation about the extensions.json format
4+
"recommendations": [
5+
"platformio.platformio-ide"
6+
]
7+
}

pics/display.jpg

423 KB
Loading

pics/solder.jpg

379 KB
Loading

platformio.ini

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
; PlatformIO Project Configuration File
2+
;
3+
; Build options: build flags, source filter
4+
; Upload options: custom upload port, speed and extra flags
5+
; Library options: dependencies, extra library storages
6+
; Advanced options: extra scripting
7+
;
8+
; Please visit documentation for the other options and examples
9+
; https://docs.platformio.org/page/projectconf.html
10+
11+
[env:nodemcuv2]
12+
platform = espressif8266
13+
board = nodemcuv2
14+
framework = arduino
15+
monitor_speed = 115200

src/Secrets.h

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#define wifiAP ""
2+
#define wifiPassword ""
3+
#define mqtt_server ""
4+
#define mqtt_port 1883

src/main.cpp

+143
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
#include <Arduino.h>
2+
#include <ArduinoJson.h>
3+
#include <U8g2lib.h>
4+
#include <ESP8266WiFi.h>
5+
#include <DNSServer.h>
6+
#include <WiFiManager.h>
7+
#include <PubSubClient.h>
8+
#include <Secrets.h>
9+
10+
#define mqttTopicText "home/display1/text/set"
11+
12+
U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/15, /* dc=*/4, /* reset=*/5);
13+
const int CHIP_ID = ESP.getChipId();
14+
WiFiClient wifiClient;
15+
PubSubClient mqttClient(wifiClient);
16+
17+
void drawModeNormal(int tempInside, int tempOutside, const char *time, const char *data, int contrast)
18+
{
19+
u8g2.firstPage();
20+
u8g2.setContrast(contrast);
21+
do
22+
{
23+
u8g2.setFont(u8g2_font_logisoso34_tf);
24+
u8g2.setCursor(0, 34);
25+
u8g2.print(tempInside);
26+
u8g2.setFont(u8g2_font_logisoso16_tf);
27+
u8g2.print("°C");
28+
29+
u8g2.setFont(u8g2_font_logisoso34_tf);
30+
u8g2.setCursor(69, 34);
31+
u8g2.print(tempOutside);
32+
u8g2.setFont(u8g2_font_logisoso16_tf);
33+
u8g2.print("°C");
34+
35+
u8g2.setFont(u8g2_font_logisoso38_tf);
36+
u8g2.setCursor(142, 38);
37+
u8g2.print(time);
38+
39+
u8g2.drawLine(0, 45, 255, 45);
40+
41+
u8g2.setFont(u8g2_font_8x13_t_symbols);
42+
u8g2.drawUTF8(0, 62, data);
43+
} while (u8g2.nextPage());
44+
}
45+
46+
void loop(void)
47+
{
48+
mqttClient.loop();
49+
}
50+
51+
void logT(const char *s)
52+
{
53+
Serial.println(s);
54+
u8g2.firstPage();
55+
do
56+
{
57+
u8g2.setFont(u8g2_font_luRS10_te);
58+
u8g2.setCursor(0, 24);
59+
u8g2.print(s);
60+
} while (u8g2.nextPage());
61+
}
62+
63+
void callback(char *topic, byte *payload, unsigned int length)
64+
{
65+
Serial.print("Message arrived [");
66+
Serial.print(topic);
67+
Serial.print("] ");
68+
for (unsigned int i = 0; i < length; i++)
69+
{
70+
Serial.print((char)payload[i]);
71+
}
72+
Serial.println();
73+
StaticJsonDocument<256> doc;
74+
deserializeJson(doc, payload, length);
75+
const char *time = doc["time"];
76+
const char *data = doc["data"];
77+
int inside = doc["inside"];
78+
int outside = doc["outside"];
79+
int contrast = doc["contrast"];
80+
bool disable = doc["disabled"];
81+
if (!disable)
82+
{
83+
drawModeNormal(inside, outside, time, data, contrast);
84+
}
85+
else
86+
{
87+
u8g2.firstPage();
88+
do
89+
{
90+
} while (u8g2.nextPage());
91+
}
92+
}
93+
94+
void startWifi(void)
95+
{
96+
WiFi.begin(wifiAP, wifiPassword);
97+
logT("Wifi connecting ...");
98+
while (WiFi.status() != WL_CONNECTED)
99+
{
100+
delay(500);
101+
Serial.print(".");
102+
}
103+
logT("Wifi connected");
104+
}
105+
106+
void startMqtt()
107+
{
108+
mqttClient.setServer(mqtt_server, mqtt_port);
109+
mqttClient.setCallback(callback);
110+
while (!mqttClient.connected())
111+
{
112+
String clientId = "iotdisplay-";
113+
clientId += String(random(0xffff), HEX);
114+
Serial.printf("MQTT connecting as client %s...\n", clientId.c_str());
115+
if (mqttClient.connect(clientId.c_str()))
116+
{
117+
logT("MQTT connected");
118+
delay(1000);
119+
mqttClient.subscribe(mqttTopicText);
120+
logT("MQTT subscribed");
121+
}
122+
else
123+
{
124+
Serial.println("MQTT failed, retrying..." + mqttClient.state());
125+
// Wait before retrying
126+
delay(2500);
127+
}
128+
}
129+
}
130+
131+
void setup(void)
132+
{
133+
Serial.begin(115200);
134+
Serial.println(CHIP_ID + " starting");
135+
136+
u8g2.begin();
137+
u8g2.enableUTF8Print();
138+
139+
startWifi();
140+
delay(1000);
141+
startMqtt();
142+
delay(1000);
143+
}

0 commit comments

Comments
 (0)