-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathLightbar.ino
75 lines (61 loc) · 1.71 KB
/
Lightbar.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <WiFi.h>
#include "constants.h"
#include "config.h"
#include "radio.h"
#include "lightbar.h"
#include "mqtt.h"
WiFiClient wifiClient;
Radio radio(RADIO_PIN_CE, RADIO_PIN_CSN);
MQTT mqtt(&wifiClient, MQTT_SERVER, MQTT_PORT, MQTT_USER, MQTT_PASSWORD, MQTT_ROOT_TOPIC, HOME_ASSISTANT_DISCOVERY, HOME_ASSISTANT_DISCOVERY_PREFIX);
void setupWifi()
{
Serial.print("[WiFi] Connecting to network \"");
Serial.print(WIFI_SSID);
Serial.print("\"...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
WiFi.setHostname(mqtt.getClientId().c_str());
uint retries = 0;
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
retries++;
if (retries > 60)
ESP.restart();
}
Serial.println();
Serial.println("[WiFi] connected!");
Serial.print("[WiFi] IP address: ");
Serial.println(WiFi.localIP());
}
void setup()
{
Serial.begin(115200);
Serial.println("##########################################");
Serial.println("# LIGHTBAR2MQTT (Version " + constants::VERSION + ") #");
Serial.println("# https://github.com/ebinf/lightbar2mqtt #");
Serial.println("##########################################");
radio.setup();
setupWifi();
for (int i = 0; i < sizeof(REMOTES) / sizeof(SerialWithName); i++)
{
Remote *remote = new Remote(&radio, REMOTES[i].serial, REMOTES[i].name);
mqtt.addRemote(remote);
}
for (int i = 0; i < sizeof(LIGHTBARS) / sizeof(SerialWithName); i++)
{
Lightbar *lightbar = new Lightbar(&radio, LIGHTBARS[i].serial, LIGHTBARS[i].name);
mqtt.addLightbar(lightbar);
}
mqtt.setup();
}
void loop()
{
if (!WiFi.isConnected())
{
Serial.println("[WiFi] connection lost!");
setupWifi();
}
mqtt.loop();
radio.loop();
}