commit c252b506a78e32d98c41425820fc8b753f78db82 Author: Frank Date: Wed Dec 29 21:18:39 2021 +0100 First version First version diff --git a/Arduino/.svn/entries b/Arduino/.svn/entries new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/Arduino/.svn/entries @@ -0,0 +1 @@ +12 diff --git a/Arduino/.svn/format b/Arduino/.svn/format new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/Arduino/.svn/format @@ -0,0 +1 @@ +12 diff --git a/Arduino/.svn/pristine/18/18a1b58a8c58abc9e5ae55ed94392723bac670c5.svn-base b/Arduino/.svn/pristine/18/18a1b58a8c58abc9e5ae55ed94392723bac670c5.svn-base new file mode 100644 index 0000000..69cfcbf --- /dev/null +++ b/Arduino/.svn/pristine/18/18a1b58a8c58abc9e5ae55ed94392723bac670c5.svn-base @@ -0,0 +1,112 @@ +void nextion_send(const char* idx, const char* val) +{ + char buf[50]; + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), val); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(val), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void nex_send_float(const char* idx, float val, int len, int dec) +{ + char buf[50]; + + char result[8]; // Buffer big enough for 7-character float + dtostrf(val, len, dec, result); // Leave room for too large numbers! + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), result); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(result), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void btn_1_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_1.getValue(&dual_state); + if (dual_state) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + domoticz_send_nvalue(idx_hanglamp, main_btn_hanglamp); +} + + +void btn_2_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_2.getValue(&dual_state); + if (dual_state) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + domoticz_send_nvalue(idx_staandelamp, main_btn_staandelamp); +} + + +void btn_3_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_3.getValue(&dual_state); + if (dual_state) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + domoticz_send_nvalue(idx_haardverlichting, main_btn_haardverlichting); +} + + +void btn_4_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_4.getValue(&dual_state); + if (dual_state) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + domoticz_send_nvalue(idx_tuinverlichting, main_btn_tuinverlichting); +} + + +void btn_5_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_5.getValue(&dual_state); + if (dual_state) + { + domoticz_send_nvalue(idx_rooster, 1); + } + else + { + domoticz_send_nvalue(idx_rooster, 0); + } +} diff --git a/Arduino/.svn/pristine/18/18d095b0821e1488defe386d89dfbc2e6b9748ef.svn-base b/Arduino/.svn/pristine/18/18d095b0821e1488defe386d89dfbc2e6b9748ef.svn-base new file mode 100644 index 0000000..5f0ca71 --- /dev/null +++ b/Arduino/.svn/pristine/18/18d095b0821e1488defe386d89dfbc2e6b9748ef.svn-base @@ -0,0 +1,224 @@ + +//#define DEBUG 1 //Uit quoten om debug messages te krijgen + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D5 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[100]; +int value = 0; + +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_kaarsen 1845 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[100] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_kaarsen = 0; +int main_btn_deurbelstil = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { + tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} diff --git a/Arduino/.svn/pristine/1b/1b6d4edaa8f872354deac6cdd87d30e19385a9a8.svn-base b/Arduino/.svn/pristine/1b/1b6d4edaa8f872354deac6cdd87d30e19385a9a8.svn-base new file mode 100644 index 0000000..7d31ed9 --- /dev/null +++ b/Arduino/.svn/pristine/1b/1b6d4edaa8f872354deac6cdd87d30e19385a9a8.svn-base @@ -0,0 +1,261 @@ + +//#define DEBUG 1 //Uit quoten om debug messages te krijgen + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D5 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[250]; +int value = 0; + +/* +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_kaarsen 1845 +*/ +int idx_staandelamp = 1701; //1714 //1701 //1252 +int idx_haardverlichting = 1702; //1717 //1702 //628 +int idx_tuinverlichting = 695; //1715 //695 +int idx_rooster = 148; +int idx_hanglamp = 1695; //1716 //1695 //1326 +int idx_ir06 = 1845; +int idx_ir07 = 0; +int idx_ir08 = 0; +int idx_ir09 = 0; +int idx_ir10 = 0; +int idx_ir11 = 0; +int idx_ir12 = 0; +int idx_ir13 = 0; +int idx_ir14 = 0; +int idx_ir15 = 0; +int idx_ir16 = 0; + + +#define idx_init 1984 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[250] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_kaarsen = 0; +int main_btn_deurbelstil = 0; + +int main_btn_ir06 = 0; +int main_btn_ir07 = 0; +int main_btn_ir08 = 0; +int main_btn_ir09 = 0; +int main_btn_ir10 = 0; +int main_btn_ir11 = 0; +int main_btn_ir12 = 0; +int main_btn_ir13 = 0; +int main_btn_ir14 = 0; +int main_btn_ir15 = 0; +int main_btn_ir16 = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } + + //display init + domoticz_send_nvalue(idx_init, 1); + +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { + tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} diff --git a/Arduino/.svn/pristine/28/286d3f52305739f8baea80d6e358198fdb11acb5.svn-base b/Arduino/.svn/pristine/28/286d3f52305739f8baea80d6e358198fdb11acb5.svn-base new file mode 100644 index 0000000..a2f5b6c --- /dev/null +++ b/Arduino/.svn/pristine/28/286d3f52305739f8baea80d6e358198fdb11acb5.svn-base @@ -0,0 +1,224 @@ + +//#define DEBUG 1 //Uit quoten om debug messages te krijgen + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D5 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[250]; +int value = 0; + +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_kaarsen 1845 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[250] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_kaarsen = 0; +int main_btn_deurbelstil = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { + tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} diff --git a/Arduino/.svn/pristine/47/47efae3d4409bb5b2c45fc24fd8d9bd44a1f1751.svn-base b/Arduino/.svn/pristine/47/47efae3d4409bb5b2c45fc24fd8d9bd44a1f1751.svn-base new file mode 100644 index 0000000..dac13c3 --- /dev/null +++ b/Arduino/.svn/pristine/47/47efae3d4409bb5b2c45fc24fd8d9bd44a1f1751.svn-base @@ -0,0 +1,71 @@ + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.println("!! IR Received !!"); +#endif + if (!isRepeat) + { +#ifdef DEBUG + Serial.println(command); +#endif + // Handle Address Command (House + Unit) + if (command == CMD_ADDRESS) + { +#ifdef DEBUG + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); +#endif + if (unit <= 16) + { +#ifdef DEBUG + Serial.println("Switch..."); +#endif + if (unit == 1) //Staandelamp + if(main_btn_staandelamp==0) + domoticz_send_nvalue(idx_staandelamp, 1); + else + domoticz_send_nvalue(idx_staandelamp, 0); + + if (unit == 2) //Haard + if(main_btn_haardverlichting==0) + domoticz_send_nvalue(idx_haardverlichting, 1); + else + domoticz_send_nvalue(idx_haardverlichting, 0); + + if (unit == 4) //Rooster + if(main_btn_rooster==0) + domoticz_send_nvalue(idx_rooster, 1); + else + domoticz_send_nvalue(idx_rooster, 0); + + if (unit == 5) //Hanglamp + if(main_btn_hanglamp==0) + domoticz_send_nvalue(idx_hanglamp, 1); + else + domoticz_send_nvalue(idx_hanglamp, 0); + + if (unit == 3) //Tuin + if(main_btn_tuinverlichting==0) + domoticz_send_nvalue(idx_tuinverlichting, 1); + else + domoticz_send_nvalue(idx_tuinverlichting, 0); + + if (unit == 6) //Kaarsen + if(main_btn_kaarsen==0) + domoticz_send_nvalue(idx_kaarsen, 1); + else + domoticz_send_nvalue(idx_kaarsen, 0); + + } + } + } +} diff --git a/Arduino/.svn/pristine/6d/6df3c02bc3df22e5d423931f66f1fe32c87a87ab.svn-base b/Arduino/.svn/pristine/6d/6df3c02bc3df22e5d423931f66f1fe32c87a87ab.svn-base new file mode 100644 index 0000000..86693a7 --- /dev/null +++ b/Arduino/.svn/pristine/6d/6df3c02bc3df22e5d423931f66f1fe32c87a87ab.svn-base @@ -0,0 +1,245 @@ +//MQTT receive +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<512> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + if (idx == idx_kaarsen) + { + if (root["nvalue"] >= 1) + main_btn_kaarsen = 1; + else + main_btn_kaarsen = 0; + +// btn_1.setValue(main_btn_kaarsen); + } + + + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + +#ifdef DEBUG + Serial.print("!!!! idx 459 !!! "); +#endif + + + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { + tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/Arduino/.svn/pristine/8d/8d1159431977865603d58857a618827f795ebf2a.svn-base b/Arduino/.svn/pristine/8d/8d1159431977865603d58857a618827f795ebf2a.svn-base new file mode 100644 index 0000000..b009735 --- /dev/null +++ b/Arduino/.svn/pristine/8d/8d1159431977865603d58857a618827f795ebf2a.svn-base @@ -0,0 +1,345 @@ +//MQTT receive +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<512> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + + //Get IDX IR config + if (idx == -1) + { + idx_staandelamp = root["svalue1"]; + idx_haardverlichting = root["svalue2"]; + idx_tuinverlichting = root["svalue3"]; + idx_rooster = root["svalue4"]; + idx_hanglamp = root["svalue5"]; + idx_ir06 = root["svalue6"]; + idx_ir07 = root["svalue7"]; + idx_ir08 = root["svalue8"]; + idx_ir09 = root["svalue9"]; + idx_ir10 = root["svalue10"]; + idx_ir11 = root["svalue11"]; + idx_ir12 = root["svalue12"]; + idx_ir13 = root["svalue13"]; + idx_ir14 = root["svalue14"]; + idx_ir15 = root["svalue15"]; + idx_ir16 = root["svalue16"]; + } + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + if (idx == idx_ir06) + { + if (root["nvalue"] >= 1) + main_btn_ir06 = 1; + else + main_btn_ir06 = 0; + +// btn_1.setValue(main_btn_kaarsen); + } + + if (idx == idx_ir07) + { + if (root["nvalue"] >= 1) + main_btn_ir07 = 1; + else + main_btn_ir07 = 0; + } + + if (idx == idx_ir08) + { + if (root["nvalue"] >= 1) + main_btn_ir08 = 1; + else + main_btn_ir08 = 0; + } + + if (idx == idx_ir09) + { + if (root["nvalue"] >= 1) + main_btn_ir09 = 1; + else + main_btn_ir09 = 0; + } + + if (idx == idx_ir10) + { + if (root["nvalue"] >= 1) + main_btn_ir10 = 1; + else + main_btn_ir10 = 0; + } + + if (idx == idx_ir11) + { + if (root["nvalue"] >= 1) + main_btn_ir11 = 1; + else + main_btn_ir11 = 0; + } + + if (idx == idx_ir12) + { + if (root["nvalue"] >= 1) + main_btn_ir12 = 1; + else + main_btn_ir12 = 0; + } + + if (idx == idx_ir13) + { + if (root["nvalue"] >= 1) + main_btn_ir13 = 1; + else + main_btn_ir13 = 0; + } + + if (idx == idx_ir14) + { + if (root["nvalue"] >= 1) + main_btn_ir14 = 1; + else + main_btn_ir14 = 0; + } + + if (idx == idx_ir15) + { + if (root["nvalue"] >= 1) + main_btn_ir15 = 1; + else + main_btn_ir15 = 0; + } + + if (idx == idx_ir16) + { + if (root["nvalue"] >= 1) + main_btn_ir16 = 1; + else + main_btn_ir16 = 0; + } + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + +#ifdef DEBUG + Serial.print("!!!! idx 459 !!! "); +#endif + + + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { + tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/Arduino/.svn/pristine/92/924edc1c6d8399fe9de6f14afb56b2c44cc65389.svn-base b/Arduino/.svn/pristine/92/924edc1c6d8399fe9de6f14afb56b2c44cc65389.svn-base new file mode 100644 index 0000000..26c819b --- /dev/null +++ b/Arduino/.svn/pristine/92/924edc1c6d8399fe9de6f14afb56b2c44cc65389.svn-base @@ -0,0 +1,239 @@ +//MQTT receive +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<256> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + if (idx == idx_kaarsen) + { + if (root["nvalue"] >= 1) + main_btn_kaarsen = 1; + else + main_btn_kaarsen = 0; + +// btn_1.setValue(main_btn_kaarsen); + } + + + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { + tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/Arduino/.svn/pristine/b3/b319de0d93ffd17200a3ff6c9b1132d6dbee63ec.svn-base b/Arduino/.svn/pristine/b3/b319de0d93ffd17200a3ff6c9b1132d6dbee63ec.svn-base new file mode 100644 index 0000000..4f48f28 --- /dev/null +++ b/Arduino/.svn/pristine/b3/b319de0d93ffd17200a3ff6c9b1132d6dbee63ec.svn-base @@ -0,0 +1,95 @@ + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.println("!! IR Received !!"); +#endif + if (!isRepeat) + { +#ifdef DEBUG + Serial.println(command); +#endif + // Handle Address Command (House + Unit) + if (command == CMD_ADDRESS) + { +#ifdef DEBUG + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); +#endif + if (unit <= 16) + { +#ifdef DEBUG + Serial.println("Switch..."); +#endif + if (unit == 1) //Staandelamp + if(main_btn_staandelamp==0) + domoticz_send_nvalue(idx_staandelamp, 1); + else + domoticz_send_nvalue(idx_staandelamp, 0); + + if (unit == 2) //Haard + if(main_btn_haardverlichting==0) + domoticz_send_nvalue(idx_haardverlichting, 1); + else + domoticz_send_nvalue(idx_haardverlichting, 0); + + if (unit == 4) //Rooster + if(main_btn_rooster==0) + domoticz_send_nvalue(idx_rooster, 1); + else + domoticz_send_nvalue(idx_rooster, 0); + + if (unit == 5) //Hanglamp + if(main_btn_hanglamp==0) + domoticz_send_nvalue(idx_hanglamp, 1); + else + domoticz_send_nvalue(idx_hanglamp, 0); + + if (unit == 3) //Tuin + if(main_btn_tuinverlichting==0) + domoticz_send_nvalue(idx_tuinverlichting, 1); + else + domoticz_send_nvalue(idx_tuinverlichting, 0); + + if (unit == 6) //Kaarsen + if(main_btn_ir06==0) + domoticz_send_nvalue(idx_ir06, 1); + else + domoticz_send_nvalue(idx_ir06, 0); + + if (unit == 7) + if(main_btn_ir07 == 0) + domoticz_send_nvalue(idx_ir07, 1); + else + domoticz_send_nvalue(idx_ir07, 0); + + if (unit == 8) + if(main_btn_ir08 == 0) + domoticz_send_nvalue(idx_ir08, 1); + else + domoticz_send_nvalue(idx_ir08, 0); + + if (unit == 9) + if(main_btn_ir09 == 0) + domoticz_send_nvalue(idx_ir09, 1); + else + domoticz_send_nvalue(idx_ir09, 0); + + if (unit == 10) + if(main_btn_ir10 == 0) + domoticz_send_nvalue(idx_ir10, 1); + else + domoticz_send_nvalue(idx_ir10, 0); + + } + } + } +} diff --git a/Arduino/.svn/pristine/ba/ba968314af791e6b2ad9215e6835e70ce45033ea.svn-base b/Arduino/.svn/pristine/ba/ba968314af791e6b2ad9215e6835e70ce45033ea.svn-base new file mode 100644 index 0000000..a820b7f --- /dev/null +++ b/Arduino/.svn/pristine/ba/ba968314af791e6b2ad9215e6835e70ce45033ea.svn-base @@ -0,0 +1,227 @@ +//MQTT receive +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<256> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { + tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/Arduino/.svn/pristine/cc/ccad5b7fe1e6f75356d2ac8ebaa3309063aa7d5e.svn-base b/Arduino/.svn/pristine/cc/ccad5b7fe1e6f75356d2ac8ebaa3309063aa7d5e.svn-base new file mode 100644 index 0000000..4cd4082 --- /dev/null +++ b/Arduino/.svn/pristine/cc/ccad5b7fe1e6f75356d2ac8ebaa3309063aa7d5e.svn-base @@ -0,0 +1,55 @@ + +void domoticz_send_nvalue(int idx, int nvalue) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending nvalue"); + Serial.println(idx); + Serial.println(nvalue); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "switchlight"; + root["idx"] = idx; + if (nvalue == 1) + { + root["switchcmd"] = "On"; + } + else + { + root["switchcmd"] = "Off"; + } + serializeJson(root, msg); +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} + +//Setting page nummer into Domoticz varaiable +void domoticz_set_pagenr(int pagenr) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending variable pagenr"); + Serial.println(pagenr); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "setuservariable"; + root["idx"] = 4; + root["value"] = pagenr; + + serializeJson(root, msg); + +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} diff --git a/Arduino/.svn/pristine/cd/cd295be5ffe3abbec31106696ee1f40ebb519c67.svn-base b/Arduino/.svn/pristine/cd/cd295be5ffe3abbec31106696ee1f40ebb519c67.svn-base new file mode 100644 index 0000000..351058c --- /dev/null +++ b/Arduino/.svn/pristine/cd/cd295be5ffe3abbec31106696ee1f40ebb519c67.svn-base @@ -0,0 +1,64 @@ + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.println("!! IR Received !!"); +#endif + if (!isRepeat) + { +#ifdef DEBUG + Serial.println(command); +#endif + // Handle Address Command (House + Unit) + if (command == CMD_ADDRESS) + { +#ifdef DEBUG + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); +#endif + if (unit <= 16) + { +#ifdef DEBUG + Serial.println("Switch..."); +#endif + if (unit == 1) //Staandelamp + if(main_btn_staandelamp==0) + domoticz_send_nvalue(idx_staandelamp, 1); + else + domoticz_send_nvalue(idx_staandelamp, 0); + + if (unit == 2) //Haard + if(main_btn_haardverlichting==0) + domoticz_send_nvalue(idx_haardverlichting, 1); + else + domoticz_send_nvalue(idx_haardverlichting, 0); + + if (unit == 4) //Rooster + if(main_btn_rooster==0) + domoticz_send_nvalue(idx_rooster, 1); + else + domoticz_send_nvalue(idx_rooster, 0); + + if (unit == 5) //Hanglamp + if(main_btn_hanglamp==0) + domoticz_send_nvalue(idx_hanglamp, 1); + else + domoticz_send_nvalue(idx_hanglamp, 0); + + if (unit == 3) //Tuin + if(main_btn_tuinverlichting==0) + domoticz_send_nvalue(idx_tuinverlichting, 1); + else + domoticz_send_nvalue(idx_tuinverlichting, 0); + } + } + } +} diff --git a/Arduino/.svn/pristine/f9/f9479b2132296952d291917d5d359b4cd8b17913.svn-base b/Arduino/.svn/pristine/f9/f9479b2132296952d291917d5d359b4cd8b17913.svn-base new file mode 100644 index 0000000..971b964 --- /dev/null +++ b/Arduino/.svn/pristine/f9/f9479b2132296952d291917d5d359b4cd8b17913.svn-base @@ -0,0 +1,222 @@ + +//#define DEBUG 1 //Uit quoten om debug messages te krijgen + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D5 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[100]; +int value = 0; + +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[100] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_deurbelstil = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { + tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} diff --git a/Arduino/.svn/wc.db b/Arduino/.svn/wc.db new file mode 100644 index 0000000..d3cb947 Binary files /dev/null and b/Arduino/.svn/wc.db differ diff --git a/Arduino/.svn/wc.db-journal b/Arduino/.svn/wc.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Arduino/display/Domoticz.ino b/Arduino/display/Domoticz.ino new file mode 100644 index 0000000..4cd4082 --- /dev/null +++ b/Arduino/display/Domoticz.ino @@ -0,0 +1,55 @@ + +void domoticz_send_nvalue(int idx, int nvalue) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending nvalue"); + Serial.println(idx); + Serial.println(nvalue); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "switchlight"; + root["idx"] = idx; + if (nvalue == 1) + { + root["switchcmd"] = "On"; + } + else + { + root["switchcmd"] = "Off"; + } + serializeJson(root, msg); +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} + +//Setting page nummer into Domoticz varaiable +void domoticz_set_pagenr(int pagenr) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending variable pagenr"); + Serial.println(pagenr); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "setuservariable"; + root["idx"] = 4; + root["value"] = pagenr; + + serializeJson(root, msg); + +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} diff --git a/Arduino/display/IR.ino b/Arduino/display/IR.ino new file mode 100644 index 0000000..01b29af --- /dev/null +++ b/Arduino/display/IR.ino @@ -0,0 +1,115 @@ + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.println("!! IR Received !!"); +#endif + if (!isRepeat) + { +#ifdef DEBUG + Serial.println(command); +#endif + // Handle Address Command (House + Unit) + if (command == CMD_ADDRESS) + { +#ifdef DEBUG + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); +#endif + if (unit <= 16) + { +#ifdef DEBUG + Serial.println("Switch..."); +#endif + ir_code = unit; + } + } + } +} + + +void ir_action() +{ + +#ifdef DEBUG + Serial.println("Ir_code == "); + Serial.println(ir_code); +#endif + + + if (ir_code == 1) //Staandelamp + if(main_btn_staandelamp==0) + domoticz_send_nvalue(idx_staandelamp, 1); + else + domoticz_send_nvalue(idx_staandelamp, 0); + + if (ir_code == 2) //Haard + if(main_btn_haardverlichting==0) + domoticz_send_nvalue(idx_haardverlichting, 1); + else + domoticz_send_nvalue(idx_haardverlichting, 0); + + if (ir_code == 4) //Rooster + if(main_btn_rooster==0) + domoticz_send_nvalue(idx_rooster, 1); + else + domoticz_send_nvalue(idx_rooster, 0); + + if (ir_code == 5) //Hanglamp + if(main_btn_hanglamp==0) + domoticz_send_nvalue(idx_hanglamp, 1); + else + domoticz_send_nvalue(idx_hanglamp, 0); + + if (ir_code == 3) //Tuin + if(main_btn_tuinverlichting==0) + domoticz_send_nvalue(idx_tuinverlichting, 1); + else + domoticz_send_nvalue(idx_tuinverlichting, 0); + + if (ir_code == 6) //Kaarsen + if(main_btn_ir06==0) + domoticz_send_nvalue(idx_ir06, 1); + else + domoticz_send_nvalue(idx_ir06, 0); + + if (ir_code == 7) + if(main_btn_ir07 == 0) + domoticz_send_nvalue(idx_ir07, 1); + else + domoticz_send_nvalue(idx_ir07, 0); + + if (ir_code == 8) + if(main_btn_ir08 == 0) + domoticz_send_nvalue(idx_ir08, 1); + else + domoticz_send_nvalue(idx_ir08, 0); + + if (ir_code == 9) + if(main_btn_ir09 == 0) + domoticz_send_nvalue(idx_ir09, 1); + else + domoticz_send_nvalue(idx_ir09, 0); + + if (ir_code == 10) + if(main_btn_ir10 == 0) + domoticz_send_nvalue(idx_ir10, 1); + else + domoticz_send_nvalue(idx_ir10, 0); + + ir_code = 0; +#ifdef DEBUG + Serial.println("Ir_code set to 0 "); +#endif + + + +} diff --git a/Arduino/display/Json.ino b/Arduino/display/Json.ino new file mode 100644 index 0000000..2f545bd --- /dev/null +++ b/Arduino/display/Json.ino @@ -0,0 +1,356 @@ +//MQTT receive +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<512> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + + //Get IDX IR config + if (idx == -1) + { + idx_staandelamp = root["svalue1"]; + idx_haardverlichting = root["svalue2"]; + idx_tuinverlichting = root["svalue3"]; + idx_rooster = root["svalue4"]; + idx_hanglamp = root["svalue5"]; + idx_ir06 = root["svalue6"]; + idx_ir07 = root["svalue7"]; + idx_ir08 = root["svalue8"]; + idx_ir09 = root["svalue9"]; + idx_ir10 = root["svalue10"]; + idx_ir11 = root["svalue11"]; + idx_ir12 = root["svalue12"]; + idx_ir13 = root["svalue13"]; + idx_ir14 = root["svalue14"]; + idx_ir15 = root["svalue15"]; + idx_ir16 = root["svalue16"]; + } + + + //Dim display + if (idx == idx_display_dim) + { + if(root["nvalue"] >=1) + sendCommand("dim=10"); + else + sendCommand("dim=100"); + } + + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + if (idx == idx_ir06) + { + if (root["nvalue"] >= 1) + main_btn_ir06 = 1; + else + main_btn_ir06 = 0; + +// btn_1.setValue(main_btn_kaarsen); + } + + if (idx == idx_ir07) + { + if (root["nvalue"] >= 1) + main_btn_ir07 = 1; + else + main_btn_ir07 = 0; + } + + if (idx == idx_ir08) + { + if (root["nvalue"] >= 1) + main_btn_ir08 = 1; + else + main_btn_ir08 = 0; + } + + if (idx == idx_ir09) + { + if (root["nvalue"] >= 1) + main_btn_ir09 = 1; + else + main_btn_ir09 = 0; + } + + if (idx == idx_ir10) + { + if (root["nvalue"] >= 1) + main_btn_ir10 = 1; + else + main_btn_ir10 = 0; + } + + if (idx == idx_ir11) + { + if (root["nvalue"] >= 1) + main_btn_ir11 = 1; + else + main_btn_ir11 = 0; + } + + if (idx == idx_ir12) + { + if (root["nvalue"] >= 1) + main_btn_ir12 = 1; + else + main_btn_ir12 = 0; + } + + if (idx == idx_ir13) + { + if (root["nvalue"] >= 1) + main_btn_ir13 = 1; + else + main_btn_ir13 = 0; + } + + if (idx == idx_ir14) + { + if (root["nvalue"] >= 1) + main_btn_ir14 = 1; + else + main_btn_ir14 = 0; + } + + if (idx == idx_ir15) + { + if (root["nvalue"] >= 1) + main_btn_ir15 = 1; + else + main_btn_ir15 = 0; + } + + if (idx == idx_ir16) + { + if (root["nvalue"] >= 1) + main_btn_ir16 = 1; + else + main_btn_ir16 = 0; + } + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + +#ifdef DEBUG + Serial.print("!!!! idx 459 !!! "); +#endif + + + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { +// tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/Arduino/display/Nextion.ino b/Arduino/display/Nextion.ino new file mode 100644 index 0000000..69cfcbf --- /dev/null +++ b/Arduino/display/Nextion.ino @@ -0,0 +1,112 @@ +void nextion_send(const char* idx, const char* val) +{ + char buf[50]; + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), val); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(val), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void nex_send_float(const char* idx, float val, int len, int dec) +{ + char buf[50]; + + char result[8]; // Buffer big enough for 7-character float + dtostrf(val, len, dec, result); // Leave room for too large numbers! + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), result); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(result), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void btn_1_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_1.getValue(&dual_state); + if (dual_state) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + domoticz_send_nvalue(idx_hanglamp, main_btn_hanglamp); +} + + +void btn_2_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_2.getValue(&dual_state); + if (dual_state) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + domoticz_send_nvalue(idx_staandelamp, main_btn_staandelamp); +} + + +void btn_3_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_3.getValue(&dual_state); + if (dual_state) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + domoticz_send_nvalue(idx_haardverlichting, main_btn_haardverlichting); +} + + +void btn_4_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_4.getValue(&dual_state); + if (dual_state) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + domoticz_send_nvalue(idx_tuinverlichting, main_btn_tuinverlichting); +} + + +void btn_5_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_5.getValue(&dual_state); + if (dual_state) + { + domoticz_send_nvalue(idx_rooster, 1); + } + else + { + domoticz_send_nvalue(idx_rooster, 0); + } +} diff --git a/Arduino/display/display.ino b/Arduino/display/display.ino new file mode 100644 index 0000000..f94f49b --- /dev/null +++ b/Arduino/display/display.ino @@ -0,0 +1,279 @@ + +#define DEBUG 1 //Uit quoten om debug messages te krijgen + + +#include + +//#include + +//#include +#include +#include +#include + +#include + +//#define BUZZER_PIN D5 + +//#define BUZZER_PIN D7 +#define BUZZER_PIN 5 + + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 4, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 4, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[250]; +int value = 0; + +/* +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_kaarsen 1845 +*/ +int dim_val = 100; +int idx_staandelamp = 1701; //1714 //1701 //1252 +int idx_haardverlichting = 1702; //1717 //1702 //628 +int idx_tuinverlichting = 695; //1715 //695 +int idx_rooster = 148; +int idx_hanglamp = 1695; //1716 //1695 //1326 +int idx_ir06 = 1845; +int idx_ir07 = 0; +int idx_ir08 = 0; +int idx_ir09 = 0; +int idx_ir10 = 0; +int idx_ir11 = 0; +int idx_ir12 = 0; +int idx_ir13 = 0; +int idx_ir14 = 0; +int idx_ir15 = 0; +int idx_ir16 = 0; + +int ir_code = 0; + + +#define idx_init 1984 +#define idx_display_dim 1991 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[250] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_kaarsen = 0; +int main_btn_deurbelstil = 0; + +int main_btn_ir06 = 0; +int main_btn_ir07 = 0; +int main_btn_ir08 = 0; +int main_btn_ir09 = 0; +int main_btn_ir10 = 0; +int main_btn_ir11 = 0; +int main_btn_ir12 = 0; +int main_btn_ir13 = 0; +int main_btn_ir14 = 0; +int main_btn_ir15 = 0; +int main_btn_ir16 = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } + + //display init + domoticz_send_nvalue(idx_init, 1); + +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + //pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { +// tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + //Execute IR functio + if(ir_code != 0 ) + { + ir_action(); + } + + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} diff --git a/Backup/display.ino b/Backup/display.ino new file mode 100644 index 0000000..78f31e6 --- /dev/null +++ b/Backup/display.ino @@ -0,0 +1,528 @@ +/* + Basic ESP8266 MQTT example + + This sketch demonstrates the capabilities of the pubsub library in combination + with the ESP8266 board/library. + + It connects to an MQTT server then: + - publishes "hello world" to the topic "outTopic" every two seconds + - subscribes to the topic "inTopic", printing out any messages + it receives. NB - it assumes the received payloads are strings not binary + - If the first character of the topic "inTopic" is an 1, switch ON the ESP Led, + else switch it off + + It will reconnect to the server if the connection is lost using a blocking + reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to + achieve the same result without blocking the main loop. + + To install the ESP8266 board, (using Arduino 1.6.4+): + - Add the following 3rd party board manager under "File -> Preferences -> Additional Boards Manager URLs": + http://arduino.esp8266.com/stable/package_esp8266com_index.json + - Open the "Tools -> Board -> Board Manager" and click install for the ESP8266" + - Select your ESP8266 in "Tools -> Board" + +*/ +//#include + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D2 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code +// *infraredEvent // Event triggered when IR message is received +infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! +); + + +// Update these with values suitable for your network. + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.202"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[100]; +int value = 0; + +#define idx_staandelamp 1252 +#define idx_hanglamp 1326 +#define idx_haardverlichting 628 +#define idx_tuinverlichting 695 +#define idx_rooster 148 +#define idx_deurbel 906 +#define idx_deurbel_stil 917 +#define idx_rooster 922 + +//NexButton b0 = NexButton(0, 1, "b0"); + +NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 2, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +//NexText txt_temp_binnen = NexText(0, 9, "txt_temp_in"); +//NexText txt_temp_buiten = NexText(0, 10, "txt_temp_out"); +//NexText txt_regen = NexText(0, 11, "t2"); + +//page1 +//NexText txt_1_temp_binnen = NexText(1, 3, "txt_temp_in"); +//NexText txt_1_temp_buiten = NexText(1, 4, "txt_temp_out"); + +//NexText txt_1_header = NexText(1, 1, "txt_header"); +//NexText txt_1_weer = NexText(0, 15, "txt_weer"); + + +char buffer[100] = {0}; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + + +void btn_1_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_1.getValue(&dual_state); + if(dual_state) + { + send_nvalue(idx_hanglamp,1); + } + else + { + send_nvalue(idx_hanglamp,0); + } +} + + +void btn_2_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_2.getValue(&dual_state); + if(dual_state) + { + send_nvalue(idx_staandelamp,1); + } + else + { + send_nvalue(idx_staandelamp,0); + } +} + + +void btn_3_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_3.getValue(&dual_state); + if(dual_state) + { + send_nvalue(idx_haardverlichting,1); + } + else + { + send_nvalue(idx_haardverlichting,0); + } +} + + +void btn_4_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_4.getValue(&dual_state); + if(dual_state) + { + send_nvalue(idx_tuinverlichting,1); + } + else + { + send_nvalue(idx_tuinverlichting,0); + } +} + + +void btn_5_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_5.getValue(&dual_state); + if(dual_state) + { + send_nvalue(idx_rooster,1); + } + else + { + send_nvalue(idx_rooster,0); + } +} + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + randomSeed(micros()); + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +void callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<256> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); + + if(idx == idx_hanglamp) + { + btn_1.setValue(idx_nvalue); + } + + if(idx == idx_staandelamp) + { + btn_2.setValue(idx_nvalue); + } + + if(idx == idx_haardverlichting) + { + btn_3.setValue(idx_nvalue); + } + + if(idx == idx_tuinverlichting) + { + btn_4.setValue(idx_nvalue); + } + + if(idx == idx_rooster) + { + btn_5.setValue(idx_nvalue); + } + + //Tijd + if(idx == 1513) + { + Serial.println(idx_svalue1); + txt_header.setText(idx_svalue1); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if(idx == 1459) + { + nextion_send("txt_weer.txt", idx_svalue1); + } + + if(idx==450) + { + nextion_send("txt_temp_in.txt", idx_svalue1); + nextion_send("t0.txt", idx_svalue2); + nextion_send("t2.txt", idx_svalue4); + + +// int length = sizeof(idx_svalue4); + +// Serial.println("Barometer"); +// Serial.println(length); + +// char subbuff[5]; +// memcpy( subbuff, &idx_svalue4[0], (length-2) ); +// subbuff[5] = '\0'; +// nextion_send("t2.txt", subbuff); + + } + + //Min temperatuur + if(idx==1562) + { + nextion_send("t10.txt", idx_svalue1); + } + //Max Temperatuur + if(idx==1563) + { + nextion_send("t11.txt", idx_svalue1); + } + //Rain + if(idx==1564) + { + nextion_send("t3.txt", idx_svalue1); + nextion_send("t4.txt", idx_svalue2); + } + + if(idx==453) + { + nextion_send("txt_temp_out.txt", idx_svalue1); + nextion_send("t1.txt", idx_svalue2); + } + + //Set weer icoon + if(idx==1522) + { + pic_weer.setPic(idx_nvalue); + } + + if(idx==idx_deurbel) + { + if(idx_nvalue==1) + { + Serial.println("Show doorbell"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i=0; i<10; i++) + { + tone(BUZZER_PIN,1000,200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if(idx==idx_deurbel_stil) + { + if(idx_nvalue==1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } +} + + +void nextion_send(const char* idx, const char* val) +{ + + char buf[50]; + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) +strlen(part1), val); + strcpy(buf + strlen(idx) +strlen(part1) + strlen(val), part2); + Serial.println(buf); + + sendCommand(buf); + +} + + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { + Serial.println("connected"); + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + Serial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); + + + +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +} + + +void send_nvalue(int idx, int nvalue) +{ + StaticJsonDocument<200> doc; + + Serial.println("Sending nvalue"); + Serial.println(idx); + Serial.println(nvalue); + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "switchlight"; + root["idx"] = idx; + if(nvalue == 1) + { + root["switchcmd"] = "On"; + } + else + { + root["switchcmd"] = "Off"; + } + serializeJson(root, msg); + Serial.println(msg); + client.publish("domoticz/in", msg); +} + + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + + Serial.println("!! IR Received !!"); + if(!isRepeat) + { + + Serial.println(command); + // Handle Address Command (House + Unit) + if(command == CMD_ADDRESS) + { + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); + + if(unit <= 16) + { + Serial.println("Switch..."); + + if(unit==1) //Staandelamp + btn_2_PopCallback(0); + if(unit==2) //Haard + btn_3_PopCallback(0); + if(unit==4) //Rooster + { + send_nvalue(idx_rooster,1); + } + //btn_2_PopCallback(0); + if(unit==4) //Hanglamp + btn_1_PopCallback(0); + if(unit==3) //Tuin + btn_4_PopCallback(0); + } + } + } +} diff --git a/Domoticz.ino b/Domoticz.ino new file mode 100644 index 0000000..4cd4082 --- /dev/null +++ b/Domoticz.ino @@ -0,0 +1,55 @@ + +void domoticz_send_nvalue(int idx, int nvalue) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending nvalue"); + Serial.println(idx); + Serial.println(nvalue); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "switchlight"; + root["idx"] = idx; + if (nvalue == 1) + { + root["switchcmd"] = "On"; + } + else + { + root["switchcmd"] = "Off"; + } + serializeJson(root, msg); +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} + +//Setting page nummer into Domoticz varaiable +void domoticz_set_pagenr(int pagenr) +{ + StaticJsonDocument<200> doc; + +#ifdef DEBUG + Serial.println("Sending variable pagenr"); + Serial.println(pagenr); +#endif + + // Make our document be an object + JsonObject root = doc.to(); + + root["command"] = "setuservariable"; + root["idx"] = 4; + root["value"] = pagenr; + + serializeJson(root, msg); + +#ifdef DEBUG + Serial.println(msg); +#endif + client.publish("domoticz/in", msg); +} diff --git a/IR.ino b/IR.ino new file mode 100644 index 0000000..351058c --- /dev/null +++ b/IR.ino @@ -0,0 +1,64 @@ + +// Process commands received from X10 compatible IR remote +void infraredEvent(char house, byte unit, byte command, bool isRepeat) +{ + + //Show Status IR icon + sendCommand("p0.pic=54"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.println("!! IR Received !!"); +#endif + if (!isRepeat) + { +#ifdef DEBUG + Serial.println(command); +#endif + // Handle Address Command (House + Unit) + if (command == CMD_ADDRESS) + { +#ifdef DEBUG + Serial.println("cmd == CMD_ADDRESS"); + Serial.println(house); + Serial.println(unit); + Serial.println(command); +#endif + if (unit <= 16) + { +#ifdef DEBUG + Serial.println("Switch..."); +#endif + if (unit == 1) //Staandelamp + if(main_btn_staandelamp==0) + domoticz_send_nvalue(idx_staandelamp, 1); + else + domoticz_send_nvalue(idx_staandelamp, 0); + + if (unit == 2) //Haard + if(main_btn_haardverlichting==0) + domoticz_send_nvalue(idx_haardverlichting, 1); + else + domoticz_send_nvalue(idx_haardverlichting, 0); + + if (unit == 4) //Rooster + if(main_btn_rooster==0) + domoticz_send_nvalue(idx_rooster, 1); + else + domoticz_send_nvalue(idx_rooster, 0); + + if (unit == 5) //Hanglamp + if(main_btn_hanglamp==0) + domoticz_send_nvalue(idx_hanglamp, 1); + else + domoticz_send_nvalue(idx_hanglamp, 0); + + if (unit == 3) //Tuin + if(main_btn_tuinverlichting==0) + domoticz_send_nvalue(idx_tuinverlichting, 1); + else + domoticz_send_nvalue(idx_tuinverlichting, 0); + } + } + } +} diff --git a/Json.ino b/Json.ino new file mode 100644 index 0000000..0b42fee --- /dev/null +++ b/Json.ino @@ -0,0 +1,226 @@ +void mqtt_callback(char* topic, byte* payload, unsigned int length) { + int svalue1, loc, StepperTarget; + String sub, devicename; + + StaticJsonDocument<256> doc; + + sendCommand("p0.pic=55"); + sendCommand("tm1.en=1"); + +#ifdef DEBUG + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); +#endif + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, payload); + + + // Test if parsing succeeds. + if (error) { +#ifdef DEBUG + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.c_str()); +#endif + return; + } + + //Show Status WIFI icon + sendCommand("p0.pic=55"); + + // Get the root object in the document + JsonObject root = doc.as(); + + int idx = root["idx"]; + const char* idx_name = root["name"]; + const char* idx_svalue1 = root["svalue1"]; + const char* idx_svalue2 = root["svalue2"]; + const char* idx_svalue4 = root["svalue4"]; + + int idx_nvalue = root["nvalue"]; + +#ifdef DEBUG + Serial.println(idx); + Serial.println(idx_name); + Serial.println(idx_svalue1); + Serial.println(idx_nvalue); +#endif + + if (idx == idx_staandelamp) + { + if (root["nvalue"] >= 1) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + btn_2.setValue(main_btn_staandelamp); + } + + + if (idx == idx_tuinverlichting) + { + if (root["nvalue"] >= 1) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + btn_4.setValue(main_btn_tuinverlichting); + } + + if (idx == idx_hanglamp) + { + if (root["nvalue"] >= 1) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + btn_1.setValue(main_btn_hanglamp); + } + + if (idx == idx_haardverlichting) + { + if (root["nvalue"] >= 1) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + btn_3.setValue(main_btn_haardverlichting); + } + + if (idx == idx_rooster) + { + if (root["nvalue"] == 1) + main_btn_rooster = 1; + else + main_btn_rooster = 0; + + // btn_x.setValue(main_btn_rooster); + } + + //Tijd + if (idx == idx_datumtijd) + { +#ifdef DEBUG + // Serial.println(root["svalue1"]); +#endif + + // memcpy(datumtijd,root["svalue1"]) + datumtijd = root["svalue1"]; + //datumtijd[10] = '\0'; + + // txt_header.setText(datumtijd); + nextion_send(nex_datumtijd, datumtijd); + // txt_1_header.setText(idx_svalue1); + } + + //Weer + if (idx == idx_weer_text) + { + weer_text = root["svalue1"]; + nextion_send(nex_weer_text, weer_text); + } + + if (idx == idx_netatmo_woonkamer) + { + main_temp_in = atof(root["svalue1"]); + main_hum_in = atof(root["svalue2"]); + main_baro = atof(root["svalue4"]); + nex_send_float(nex_temp_in, main_temp_in, 4, 1); + nex_send_float(nex_hum_in, main_hum_in, 2, 0); + nex_send_float(nex_baro, main_baro, 4, 0); + } + + //Min temperatuur + if (idx == idx_temp_min) + { + main_temp_min = atof(root["svalue1"]); + nex_send_float(nex_temp_min, main_temp_min, 4, 1); + } + + //Max Temperatuur + if (idx == idx_temp_max) + { + main_temp_max = atof(root["svalue1"]); + nex_send_float(nex_temp_max, main_temp_max, 4, 1); + } + + //Rain + if (idx == idx_netatmo_regen) + { + main_rain = atof(root["svalue1"]); + main_rain_hour = atof(root["svalue2"]); + nex_send_float(nex_rain, main_rain, 3, 1); + nex_send_float(nex_rain_hour, main_rain_hour, 3, 1); + } + + if (idx == idx_netatmo_buiten) + { + main_temp_out = atof(root["svalue1"]); + main_hum_out = atof(root["svalue2"]); + nex_send_float(nex_temp_out, main_temp_out, 4, 1); + nex_send_float(nex_hum_out, main_hum_out, 2, 0); + } + + //Set weer icoon + if (idx == idx_weer_icon) + { + main_pic_weer = root["nvalue"]; + pic_weer.setPic(main_pic_weer); + } + + if (idx == idx_deurbel) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show doorbell"); +#endif + sendCommand("pic_doorbell.pic=52"); + sendCommand("vis pic_doorbell,1"); + //delay(200); + for (int i = 0; i < 10; i++) + { + tone(BUZZER_PIN, 1000, 200); + delay(500); + } + sendCommand("vis pic_doorbell,0"); + } + } + + //Show Deurbel stil icon + if (idx == idx_deurbelstil) + { + if (idx_nvalue == 1) + sendCommand("p1.pic=56"); + else + sendCommand("p1.pic=53"); + } + + //Show Alarm + if(idx == idx_alarm) + { + if (idx_nvalue == 1) + { +#ifdef DEBUG + Serial.println("Show Alarm"); +#endif + sendCommand("pic_doorbell.pic=58"); + sendCommand("vis pic_doorbell,1"); + alarm_sound = 1; + } + else + { +#ifdef DEBUG + Serial.println("Hide Alarm"); +#endif + sendCommand("vis pic_doorbell,0"); + sendCommand("pic_doorbell.pic=52"); + alarm_sound = 0; + } + } +} diff --git a/LucidaConsoleBold_64.zi b/LucidaConsoleBold_64.zi new file mode 100755 index 0000000..2451ee3 Binary files /dev/null and b/LucidaConsoleBold_64.zi differ diff --git a/LucidaConsoleBold_96.zi b/LucidaConsoleBold_96.zi new file mode 100755 index 0000000..9f52d1d Binary files /dev/null and b/LucidaConsoleBold_96.zi differ diff --git a/LucidaConsole_20.zi b/LucidaConsole_20.zi new file mode 100755 index 0000000..524dff1 Binary files /dev/null and b/LucidaConsole_20.zi differ diff --git a/LucidaConsole_24.zi b/LucidaConsole_24.zi new file mode 100755 index 0000000..df2aef8 Binary files /dev/null and b/LucidaConsole_24.zi differ diff --git a/LucidaConsole_32.zi b/LucidaConsole_32.zi new file mode 100755 index 0000000..f7c2aa5 Binary files /dev/null and b/LucidaConsole_32.zi differ diff --git a/LucidaConsole_56.zi b/LucidaConsole_56.zi new file mode 100755 index 0000000..11a0ab4 Binary files /dev/null and b/LucidaConsole_56.zi differ diff --git a/LucidaConsole_64.zi b/LucidaConsole_64.zi new file mode 100755 index 0000000..c78280b Binary files /dev/null and b/LucidaConsole_64.zi differ diff --git a/LucidaConsole_80.zi b/LucidaConsole_80.zi new file mode 100755 index 0000000..c13f6a3 Binary files /dev/null and b/LucidaConsole_80.zi differ diff --git a/LucidaConsole_96.zi b/LucidaConsole_96.zi new file mode 100755 index 0000000..568ebe4 Binary files /dev/null and b/LucidaConsole_96.zi differ diff --git a/Nextion.ino b/Nextion.ino new file mode 100644 index 0000000..69cfcbf --- /dev/null +++ b/Nextion.ino @@ -0,0 +1,112 @@ +void nextion_send(const char* idx, const char* val) +{ + char buf[50]; + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), val); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(val), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void nex_send_float(const char* idx, float val, int len, int dec) +{ + char buf[50]; + + char result[8]; // Buffer big enough for 7-character float + dtostrf(val, len, dec, result); // Leave room for too large numbers! + + char* part1 = "=\""; + char* part2 = "\""; + + strcpy(buf, idx); + strcpy(buf + strlen(idx), part1); + strcpy(buf + strlen(idx) + strlen(part1), result); + strcpy(buf + strlen(idx) + strlen(part1) + strlen(result), part2); +#ifdef DEBUG + Serial.println(buf); +#endif + sendCommand(buf); +} + + +void btn_1_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_1.getValue(&dual_state); + if (dual_state) + main_btn_hanglamp = 1; + else + main_btn_hanglamp = 0; + + domoticz_send_nvalue(idx_hanglamp, main_btn_hanglamp); +} + + +void btn_2_PopCallback(void *ptr) +{ + uint32_t dual_state; + + btn_2.getValue(&dual_state); + if (dual_state) + main_btn_staandelamp = 1; + else + main_btn_staandelamp = 0; + + domoticz_send_nvalue(idx_staandelamp, main_btn_staandelamp); +} + + +void btn_3_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_3.getValue(&dual_state); + if (dual_state) + main_btn_haardverlichting = 1; + else + main_btn_haardverlichting = 0; + + domoticz_send_nvalue(idx_haardverlichting, main_btn_haardverlichting); +} + + +void btn_4_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_4.getValue(&dual_state); + if (dual_state) + main_btn_tuinverlichting = 1; + else + main_btn_tuinverlichting = 0; + + domoticz_send_nvalue(idx_tuinverlichting, main_btn_tuinverlichting); +} + + +void btn_5_PopCallback(void *ptr) +{ + uint32_t dual_state; + + /* Get the state value of dual state button component . */ + btn_5.getValue(&dual_state); + if (dual_state) + { + domoticz_send_nvalue(idx_rooster, 1); + } + else + { + domoticz_send_nvalue(idx_rooster, 0); + } +} diff --git a/Nextion/.svn/entries b/Nextion/.svn/entries new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/Nextion/.svn/entries @@ -0,0 +1 @@ +12 diff --git a/Nextion/.svn/format b/Nextion/.svn/format new file mode 100644 index 0000000..48082f7 --- /dev/null +++ b/Nextion/.svn/format @@ -0,0 +1 @@ +12 diff --git a/Nextion/.svn/pristine/00/0086d78bf24ee3196106f41ac5506286b49efe0d.svn-base b/Nextion/.svn/pristine/00/0086d78bf24ee3196106f41ac5506286b49efe0d.svn-base new file mode 100644 index 0000000..e92a68a Binary files /dev/null and b/Nextion/.svn/pristine/00/0086d78bf24ee3196106f41ac5506286b49efe0d.svn-base differ diff --git a/Nextion/.svn/pristine/02/0208b3e91bc15a7e076ce1543c549d0697757d72.svn-base b/Nextion/.svn/pristine/02/0208b3e91bc15a7e076ce1543c549d0697757d72.svn-base new file mode 100644 index 0000000..641459f Binary files /dev/null and b/Nextion/.svn/pristine/02/0208b3e91bc15a7e076ce1543c549d0697757d72.svn-base differ diff --git a/Nextion/.svn/pristine/02/021feb87d445384022026e02f4e137a98bf76049.svn-base b/Nextion/.svn/pristine/02/021feb87d445384022026e02f4e137a98bf76049.svn-base new file mode 100644 index 0000000..c2c8466 Binary files /dev/null and b/Nextion/.svn/pristine/02/021feb87d445384022026e02f4e137a98bf76049.svn-base differ diff --git a/Nextion/.svn/pristine/02/0292844ae0d8f32da789b8414b4aa116e5daa088.svn-base b/Nextion/.svn/pristine/02/0292844ae0d8f32da789b8414b4aa116e5daa088.svn-base new file mode 100644 index 0000000..a1a9798 Binary files /dev/null and b/Nextion/.svn/pristine/02/0292844ae0d8f32da789b8414b4aa116e5daa088.svn-base differ diff --git a/Nextion/.svn/pristine/03/03c0257342095db82de72e2757939d15060e745e.svn-base b/Nextion/.svn/pristine/03/03c0257342095db82de72e2757939d15060e745e.svn-base new file mode 100644 index 0000000..56dc26c Binary files /dev/null and b/Nextion/.svn/pristine/03/03c0257342095db82de72e2757939d15060e745e.svn-base differ diff --git a/Nextion/.svn/pristine/04/049f2b68c27f6ff10adb9dec4b5f1f7bd0e2510e.svn-base b/Nextion/.svn/pristine/04/049f2b68c27f6ff10adb9dec4b5f1f7bd0e2510e.svn-base new file mode 100644 index 0000000..5a835bc Binary files /dev/null and b/Nextion/.svn/pristine/04/049f2b68c27f6ff10adb9dec4b5f1f7bd0e2510e.svn-base differ diff --git a/Nextion/.svn/pristine/07/072b6e021c5533c0e630c32dc8e2ef141c3d1ebd.svn-base b/Nextion/.svn/pristine/07/072b6e021c5533c0e630c32dc8e2ef141c3d1ebd.svn-base new file mode 100644 index 0000000..9c200ab Binary files /dev/null and b/Nextion/.svn/pristine/07/072b6e021c5533c0e630c32dc8e2ef141c3d1ebd.svn-base differ diff --git a/Nextion/.svn/pristine/07/07a4145363f2b0a313cca35ecedee62ddf9973f2.svn-base b/Nextion/.svn/pristine/07/07a4145363f2b0a313cca35ecedee62ddf9973f2.svn-base new file mode 100644 index 0000000..187ba26 Binary files /dev/null and b/Nextion/.svn/pristine/07/07a4145363f2b0a313cca35ecedee62ddf9973f2.svn-base differ diff --git a/Nextion/.svn/pristine/0e/0ebaa0860284065724bd66768927f48023cb6789.svn-base b/Nextion/.svn/pristine/0e/0ebaa0860284065724bd66768927f48023cb6789.svn-base new file mode 100644 index 0000000..3d023df Binary files /dev/null and b/Nextion/.svn/pristine/0e/0ebaa0860284065724bd66768927f48023cb6789.svn-base differ diff --git a/Nextion/.svn/pristine/0f/0fcadc60b8ffed133e39b60b4451444d926f1c4d.svn-base b/Nextion/.svn/pristine/0f/0fcadc60b8ffed133e39b60b4451444d926f1c4d.svn-base new file mode 100644 index 0000000..6d95569 Binary files /dev/null and b/Nextion/.svn/pristine/0f/0fcadc60b8ffed133e39b60b4451444d926f1c4d.svn-base differ diff --git a/Nextion/.svn/pristine/13/1356e01417d617d10fdddb9f23f947a06cbb411b.svn-base b/Nextion/.svn/pristine/13/1356e01417d617d10fdddb9f23f947a06cbb411b.svn-base new file mode 100644 index 0000000..ffefe78 Binary files /dev/null and b/Nextion/.svn/pristine/13/1356e01417d617d10fdddb9f23f947a06cbb411b.svn-base differ diff --git a/Nextion/.svn/pristine/17/1757fc5e630b51ef7bf7fce0191b10b595fca430.svn-base b/Nextion/.svn/pristine/17/1757fc5e630b51ef7bf7fce0191b10b595fca430.svn-base new file mode 100644 index 0000000..7a16221 Binary files /dev/null and b/Nextion/.svn/pristine/17/1757fc5e630b51ef7bf7fce0191b10b595fca430.svn-base differ diff --git a/Nextion/.svn/pristine/17/17b9bdf3a499b5492384b9013f5c6887c10d2b2f.svn-base b/Nextion/.svn/pristine/17/17b9bdf3a499b5492384b9013f5c6887c10d2b2f.svn-base new file mode 100644 index 0000000..dbdd36b Binary files /dev/null and b/Nextion/.svn/pristine/17/17b9bdf3a499b5492384b9013f5c6887c10d2b2f.svn-base differ diff --git a/Nextion/.svn/pristine/1c/1c0a77f4cb300c2c86c23de15f75413187f7d474.svn-base b/Nextion/.svn/pristine/1c/1c0a77f4cb300c2c86c23de15f75413187f7d474.svn-base new file mode 100644 index 0000000..d236315 Binary files /dev/null and b/Nextion/.svn/pristine/1c/1c0a77f4cb300c2c86c23de15f75413187f7d474.svn-base differ diff --git a/Nextion/.svn/pristine/1c/1cb01498da2d81129d553e94ef69ffa9dfc3f37e.svn-base b/Nextion/.svn/pristine/1c/1cb01498da2d81129d553e94ef69ffa9dfc3f37e.svn-base new file mode 100644 index 0000000..c0edbf1 Binary files /dev/null and b/Nextion/.svn/pristine/1c/1cb01498da2d81129d553e94ef69ffa9dfc3f37e.svn-base differ diff --git a/Nextion/.svn/pristine/20/20580ffa423085b13881cf62faea29d67a8d6450.svn-base b/Nextion/.svn/pristine/20/20580ffa423085b13881cf62faea29d67a8d6450.svn-base new file mode 100644 index 0000000..32bf9d5 Binary files /dev/null and b/Nextion/.svn/pristine/20/20580ffa423085b13881cf62faea29d67a8d6450.svn-base differ diff --git a/Nextion/.svn/pristine/23/23d173a16e8e6a5171b83b2d0d71325a005d2834.svn-base b/Nextion/.svn/pristine/23/23d173a16e8e6a5171b83b2d0d71325a005d2834.svn-base new file mode 100644 index 0000000..9a8b63b Binary files /dev/null and b/Nextion/.svn/pristine/23/23d173a16e8e6a5171b83b2d0d71325a005d2834.svn-base differ diff --git a/Nextion/.svn/pristine/25/25bf92f7c7c78e0373ec4cb78ff7ef0aeaacb8d1.svn-base b/Nextion/.svn/pristine/25/25bf92f7c7c78e0373ec4cb78ff7ef0aeaacb8d1.svn-base new file mode 100644 index 0000000..7a8f838 Binary files /dev/null and b/Nextion/.svn/pristine/25/25bf92f7c7c78e0373ec4cb78ff7ef0aeaacb8d1.svn-base differ diff --git a/Nextion/.svn/pristine/2d/2de3c0d581d2138e7f1dfeaeea73a02bec164661.svn-base b/Nextion/.svn/pristine/2d/2de3c0d581d2138e7f1dfeaeea73a02bec164661.svn-base new file mode 100644 index 0000000..6363dcc Binary files /dev/null and b/Nextion/.svn/pristine/2d/2de3c0d581d2138e7f1dfeaeea73a02bec164661.svn-base differ diff --git a/Nextion/.svn/pristine/2e/2e10c88e066fc9f1da7d393b10a2987dba08ebbe.svn-base b/Nextion/.svn/pristine/2e/2e10c88e066fc9f1da7d393b10a2987dba08ebbe.svn-base new file mode 100644 index 0000000..4f1e34a Binary files /dev/null and b/Nextion/.svn/pristine/2e/2e10c88e066fc9f1da7d393b10a2987dba08ebbe.svn-base differ diff --git a/Nextion/.svn/pristine/33/33011669fc9f5a94501f15fd172aebe84810fd6a.svn-base b/Nextion/.svn/pristine/33/33011669fc9f5a94501f15fd172aebe84810fd6a.svn-base new file mode 100644 index 0000000..4cae803 Binary files /dev/null and b/Nextion/.svn/pristine/33/33011669fc9f5a94501f15fd172aebe84810fd6a.svn-base differ diff --git a/Nextion/.svn/pristine/34/3410fa7947ca5a1a3981abd9c836a1f29a0d37ff.svn-base b/Nextion/.svn/pristine/34/3410fa7947ca5a1a3981abd9c836a1f29a0d37ff.svn-base new file mode 100644 index 0000000..5836723 Binary files /dev/null and b/Nextion/.svn/pristine/34/3410fa7947ca5a1a3981abd9c836a1f29a0d37ff.svn-base differ diff --git a/Nextion/.svn/pristine/34/3459ae0927aba7f780430e0621406f20c10814f8.svn-base b/Nextion/.svn/pristine/34/3459ae0927aba7f780430e0621406f20c10814f8.svn-base new file mode 100644 index 0000000..2a1623c Binary files /dev/null and b/Nextion/.svn/pristine/34/3459ae0927aba7f780430e0621406f20c10814f8.svn-base differ diff --git a/Nextion/.svn/pristine/34/34e0ece1f2f811dfe784e3d4db1fe15dea22e91f.svn-base b/Nextion/.svn/pristine/34/34e0ece1f2f811dfe784e3d4db1fe15dea22e91f.svn-base new file mode 100644 index 0000000..2d0e7f6 Binary files /dev/null and b/Nextion/.svn/pristine/34/34e0ece1f2f811dfe784e3d4db1fe15dea22e91f.svn-base differ diff --git a/Nextion/.svn/pristine/36/36042352bbe073e02f4a6a043bb2a31bde2dd53e.svn-base b/Nextion/.svn/pristine/36/36042352bbe073e02f4a6a043bb2a31bde2dd53e.svn-base new file mode 100644 index 0000000..110f2a8 Binary files /dev/null and b/Nextion/.svn/pristine/36/36042352bbe073e02f4a6a043bb2a31bde2dd53e.svn-base differ diff --git a/Nextion/.svn/pristine/36/3644ca6b7794d486dc9a9679aae9d46932c8edeb.svn-base b/Nextion/.svn/pristine/36/3644ca6b7794d486dc9a9679aae9d46932c8edeb.svn-base new file mode 100644 index 0000000..866f08c Binary files /dev/null and b/Nextion/.svn/pristine/36/3644ca6b7794d486dc9a9679aae9d46932c8edeb.svn-base differ diff --git a/Nextion/.svn/pristine/36/364f66732f44013f9a55487e5c41b64f18b4dfe8.svn-base b/Nextion/.svn/pristine/36/364f66732f44013f9a55487e5c41b64f18b4dfe8.svn-base new file mode 100644 index 0000000..6453048 Binary files /dev/null and b/Nextion/.svn/pristine/36/364f66732f44013f9a55487e5c41b64f18b4dfe8.svn-base differ diff --git a/Nextion/.svn/pristine/38/38a043600e15659de885a8478027ac4d044e3100.svn-base b/Nextion/.svn/pristine/38/38a043600e15659de885a8478027ac4d044e3100.svn-base new file mode 100644 index 0000000..9f83ca2 Binary files /dev/null and b/Nextion/.svn/pristine/38/38a043600e15659de885a8478027ac4d044e3100.svn-base differ diff --git a/Nextion/.svn/pristine/3a/3a477f56fb495d92a3146340ab29203567b36d63.svn-base b/Nextion/.svn/pristine/3a/3a477f56fb495d92a3146340ab29203567b36d63.svn-base new file mode 100644 index 0000000..e4a8e12 Binary files /dev/null and b/Nextion/.svn/pristine/3a/3a477f56fb495d92a3146340ab29203567b36d63.svn-base differ diff --git a/Nextion/.svn/pristine/3c/3cb67d3c42db776142d3476279f7183f22ac9e64.svn-base b/Nextion/.svn/pristine/3c/3cb67d3c42db776142d3476279f7183f22ac9e64.svn-base new file mode 100644 index 0000000..c1ebbb0 Binary files /dev/null and b/Nextion/.svn/pristine/3c/3cb67d3c42db776142d3476279f7183f22ac9e64.svn-base differ diff --git a/Nextion/.svn/pristine/3d/3db544538eef77565c038edec35112c07cf45c46.svn-base b/Nextion/.svn/pristine/3d/3db544538eef77565c038edec35112c07cf45c46.svn-base new file mode 100644 index 0000000..3018a69 Binary files /dev/null and b/Nextion/.svn/pristine/3d/3db544538eef77565c038edec35112c07cf45c46.svn-base differ diff --git a/Nextion/.svn/pristine/3d/3dedde6eef89203e75ecbae1cd4ac68682e7c821.svn-base b/Nextion/.svn/pristine/3d/3dedde6eef89203e75ecbae1cd4ac68682e7c821.svn-base new file mode 100644 index 0000000..3151164 Binary files /dev/null and b/Nextion/.svn/pristine/3d/3dedde6eef89203e75ecbae1cd4ac68682e7c821.svn-base differ diff --git a/Nextion/.svn/pristine/41/41545e473f4c348bc7cc4602d36de55e8c2a3e0b.svn-base b/Nextion/.svn/pristine/41/41545e473f4c348bc7cc4602d36de55e8c2a3e0b.svn-base new file mode 100644 index 0000000..c70ffff Binary files /dev/null and b/Nextion/.svn/pristine/41/41545e473f4c348bc7cc4602d36de55e8c2a3e0b.svn-base differ diff --git a/Nextion/.svn/pristine/42/42b66c506be9a19f4591c35474a5102246434625.svn-base b/Nextion/.svn/pristine/42/42b66c506be9a19f4591c35474a5102246434625.svn-base new file mode 100644 index 0000000..8e97c96 Binary files /dev/null and b/Nextion/.svn/pristine/42/42b66c506be9a19f4591c35474a5102246434625.svn-base differ diff --git a/Nextion/.svn/pristine/42/42f0602618802e4072ac0fe6583c2a106b7c1773.svn-base b/Nextion/.svn/pristine/42/42f0602618802e4072ac0fe6583c2a106b7c1773.svn-base new file mode 100644 index 0000000..7556872 Binary files /dev/null and b/Nextion/.svn/pristine/42/42f0602618802e4072ac0fe6583c2a106b7c1773.svn-base differ diff --git a/Nextion/.svn/pristine/44/44a1a83883bfa2ab998003ae5ea7999baa2c5295.svn-base b/Nextion/.svn/pristine/44/44a1a83883bfa2ab998003ae5ea7999baa2c5295.svn-base new file mode 100644 index 0000000..01fff82 Binary files /dev/null and b/Nextion/.svn/pristine/44/44a1a83883bfa2ab998003ae5ea7999baa2c5295.svn-base differ diff --git a/Nextion/.svn/pristine/45/45640a4e4edf98fcaba3cea9eb6d14e9ec6bf0d4.svn-base b/Nextion/.svn/pristine/45/45640a4e4edf98fcaba3cea9eb6d14e9ec6bf0d4.svn-base new file mode 100644 index 0000000..d643def Binary files /dev/null and b/Nextion/.svn/pristine/45/45640a4e4edf98fcaba3cea9eb6d14e9ec6bf0d4.svn-base differ diff --git a/Nextion/.svn/pristine/45/45edcbe5b3e405314d26e27aa9582d59a55ca292.svn-base b/Nextion/.svn/pristine/45/45edcbe5b3e405314d26e27aa9582d59a55ca292.svn-base new file mode 100644 index 0000000..00d7adc Binary files /dev/null and b/Nextion/.svn/pristine/45/45edcbe5b3e405314d26e27aa9582d59a55ca292.svn-base differ diff --git a/Nextion/.svn/pristine/46/465ca675584fb249399d8b4d8b64d0a22d20b89a.svn-base b/Nextion/.svn/pristine/46/465ca675584fb249399d8b4d8b64d0a22d20b89a.svn-base new file mode 100644 index 0000000..b78ac58 Binary files /dev/null and b/Nextion/.svn/pristine/46/465ca675584fb249399d8b4d8b64d0a22d20b89a.svn-base differ diff --git a/Nextion/.svn/pristine/47/475e199a9432d1669ad11f3fcd11a1bf92d147f0.svn-base b/Nextion/.svn/pristine/47/475e199a9432d1669ad11f3fcd11a1bf92d147f0.svn-base new file mode 100644 index 0000000..6ad5fb3 Binary files /dev/null and b/Nextion/.svn/pristine/47/475e199a9432d1669ad11f3fcd11a1bf92d147f0.svn-base differ diff --git a/Nextion/.svn/pristine/48/487ae750fa3d47bb512b994568f4016d4946c64d.svn-base b/Nextion/.svn/pristine/48/487ae750fa3d47bb512b994568f4016d4946c64d.svn-base new file mode 100644 index 0000000..e6d1751 Binary files /dev/null and b/Nextion/.svn/pristine/48/487ae750fa3d47bb512b994568f4016d4946c64d.svn-base differ diff --git a/Nextion/.svn/pristine/4d/4dd76f2128803c68a09cebdb24c85b1c6e470f81.svn-base b/Nextion/.svn/pristine/4d/4dd76f2128803c68a09cebdb24c85b1c6e470f81.svn-base new file mode 100644 index 0000000..5535337 Binary files /dev/null and b/Nextion/.svn/pristine/4d/4dd76f2128803c68a09cebdb24c85b1c6e470f81.svn-base differ diff --git a/Nextion/.svn/pristine/4f/4f041bb3620b153513eb62f4243866c7bedf3f00.svn-base b/Nextion/.svn/pristine/4f/4f041bb3620b153513eb62f4243866c7bedf3f00.svn-base new file mode 100644 index 0000000..9345570 Binary files /dev/null and b/Nextion/.svn/pristine/4f/4f041bb3620b153513eb62f4243866c7bedf3f00.svn-base differ diff --git a/Nextion/.svn/pristine/51/5177ffe5b184409d4067e93852ec539472f5370f.svn-base b/Nextion/.svn/pristine/51/5177ffe5b184409d4067e93852ec539472f5370f.svn-base new file mode 100644 index 0000000..621c656 Binary files /dev/null and b/Nextion/.svn/pristine/51/5177ffe5b184409d4067e93852ec539472f5370f.svn-base differ diff --git a/Nextion/.svn/pristine/52/521f8c676b7746f287c3be442822c87298c8e578.svn-base b/Nextion/.svn/pristine/52/521f8c676b7746f287c3be442822c87298c8e578.svn-base new file mode 100644 index 0000000..cb11f55 Binary files /dev/null and b/Nextion/.svn/pristine/52/521f8c676b7746f287c3be442822c87298c8e578.svn-base differ diff --git a/Nextion/.svn/pristine/52/523c53a88a712900e299d62b21813bc427b67fe7.svn-base b/Nextion/.svn/pristine/52/523c53a88a712900e299d62b21813bc427b67fe7.svn-base new file mode 100644 index 0000000..09e8f3b Binary files /dev/null and b/Nextion/.svn/pristine/52/523c53a88a712900e299d62b21813bc427b67fe7.svn-base differ diff --git a/Nextion/.svn/pristine/54/549fbee17352e56143ff4994215b9f78f15f4570.svn-base b/Nextion/.svn/pristine/54/549fbee17352e56143ff4994215b9f78f15f4570.svn-base new file mode 100644 index 0000000..75a17cc Binary files /dev/null and b/Nextion/.svn/pristine/54/549fbee17352e56143ff4994215b9f78f15f4570.svn-base differ diff --git a/Nextion/.svn/pristine/55/55f7211342009058b31d0a851d2ff786d203f1b3.svn-base b/Nextion/.svn/pristine/55/55f7211342009058b31d0a851d2ff786d203f1b3.svn-base new file mode 100644 index 0000000..e9a2d87 Binary files /dev/null and b/Nextion/.svn/pristine/55/55f7211342009058b31d0a851d2ff786d203f1b3.svn-base differ diff --git a/Nextion/.svn/pristine/58/58b3c56bd76d618ba7c0f289e1bf5bd9a07a8148.svn-base b/Nextion/.svn/pristine/58/58b3c56bd76d618ba7c0f289e1bf5bd9a07a8148.svn-base new file mode 100644 index 0000000..f7c2aa5 Binary files /dev/null and b/Nextion/.svn/pristine/58/58b3c56bd76d618ba7c0f289e1bf5bd9a07a8148.svn-base differ diff --git a/Nextion/.svn/pristine/59/59889968b55dccd99dd5e40f4535fd0dfca93849.svn-base b/Nextion/.svn/pristine/59/59889968b55dccd99dd5e40f4535fd0dfca93849.svn-base new file mode 100644 index 0000000..a6d930a Binary files /dev/null and b/Nextion/.svn/pristine/59/59889968b55dccd99dd5e40f4535fd0dfca93849.svn-base differ diff --git a/Nextion/.svn/pristine/5d/5de47c1008f3fcc78c8b75cf084f09c8f8d958ff.svn-base b/Nextion/.svn/pristine/5d/5de47c1008f3fcc78c8b75cf084f09c8f8d958ff.svn-base new file mode 100644 index 0000000..0196576 Binary files /dev/null and b/Nextion/.svn/pristine/5d/5de47c1008f3fcc78c8b75cf084f09c8f8d958ff.svn-base differ diff --git a/Nextion/.svn/pristine/60/60d2bdf3010624710edb5e79c57240d58d680a98.svn-base b/Nextion/.svn/pristine/60/60d2bdf3010624710edb5e79c57240d58d680a98.svn-base new file mode 100644 index 0000000..9fc91b6 Binary files /dev/null and b/Nextion/.svn/pristine/60/60d2bdf3010624710edb5e79c57240d58d680a98.svn-base differ diff --git a/Nextion/.svn/pristine/62/62fb609927b3b3743722bc6aa2349f558b25071b.svn-base b/Nextion/.svn/pristine/62/62fb609927b3b3743722bc6aa2349f558b25071b.svn-base new file mode 100644 index 0000000..4fac3d4 Binary files /dev/null and b/Nextion/.svn/pristine/62/62fb609927b3b3743722bc6aa2349f558b25071b.svn-base differ diff --git a/Nextion/.svn/pristine/63/6310f47da35aea2ee478e912542883d6f7fb372e.svn-base b/Nextion/.svn/pristine/63/6310f47da35aea2ee478e912542883d6f7fb372e.svn-base new file mode 100644 index 0000000..23fae50 Binary files /dev/null and b/Nextion/.svn/pristine/63/6310f47da35aea2ee478e912542883d6f7fb372e.svn-base differ diff --git a/Nextion/.svn/pristine/6b/6bd9d251c441ca46f3d2d62698a5d7ae1c1ce807.svn-base b/Nextion/.svn/pristine/6b/6bd9d251c441ca46f3d2d62698a5d7ae1c1ce807.svn-base new file mode 100644 index 0000000..544b730 Binary files /dev/null and b/Nextion/.svn/pristine/6b/6bd9d251c441ca46f3d2d62698a5d7ae1c1ce807.svn-base differ diff --git a/Nextion/.svn/pristine/6d/6dc6ea65e1669bb75cde88036921ffe09dcb7c83.svn-base b/Nextion/.svn/pristine/6d/6dc6ea65e1669bb75cde88036921ffe09dcb7c83.svn-base new file mode 100644 index 0000000..dc9f3b5 Binary files /dev/null and b/Nextion/.svn/pristine/6d/6dc6ea65e1669bb75cde88036921ffe09dcb7c83.svn-base differ diff --git a/Nextion/.svn/pristine/70/7070bf23b8b3253b891fa7f1cdff93e2e542ed54.svn-base b/Nextion/.svn/pristine/70/7070bf23b8b3253b891fa7f1cdff93e2e542ed54.svn-base new file mode 100644 index 0000000..c13f6a3 Binary files /dev/null and b/Nextion/.svn/pristine/70/7070bf23b8b3253b891fa7f1cdff93e2e542ed54.svn-base differ diff --git a/Nextion/.svn/pristine/71/71138d15eeaad85d329c68452b1287b21ae7cce8.svn-base b/Nextion/.svn/pristine/71/71138d15eeaad85d329c68452b1287b21ae7cce8.svn-base new file mode 100644 index 0000000..ba5b4d4 Binary files /dev/null and b/Nextion/.svn/pristine/71/71138d15eeaad85d329c68452b1287b21ae7cce8.svn-base differ diff --git a/Nextion/.svn/pristine/71/712f90bcf8dff8907426a1130a7bb2037e4650b1.svn-base b/Nextion/.svn/pristine/71/712f90bcf8dff8907426a1130a7bb2037e4650b1.svn-base new file mode 100644 index 0000000..ecb8561 Binary files /dev/null and b/Nextion/.svn/pristine/71/712f90bcf8dff8907426a1130a7bb2037e4650b1.svn-base differ diff --git a/Nextion/.svn/pristine/72/72cf35f6455763c26f0e6a5043a4f67bc50133a9.svn-base b/Nextion/.svn/pristine/72/72cf35f6455763c26f0e6a5043a4f67bc50133a9.svn-base new file mode 100644 index 0000000..1d4c956 Binary files /dev/null and b/Nextion/.svn/pristine/72/72cf35f6455763c26f0e6a5043a4f67bc50133a9.svn-base differ diff --git a/Nextion/.svn/pristine/73/7340d2e2ca4a927e548462143ff2183ff74f9816.svn-base b/Nextion/.svn/pristine/73/7340d2e2ca4a927e548462143ff2183ff74f9816.svn-base new file mode 100644 index 0000000..afe630a Binary files /dev/null and b/Nextion/.svn/pristine/73/7340d2e2ca4a927e548462143ff2183ff74f9816.svn-base differ diff --git a/Nextion/.svn/pristine/73/73b2d095e9027419d303c23b4b73ce662db50fad.svn-base b/Nextion/.svn/pristine/73/73b2d095e9027419d303c23b4b73ce662db50fad.svn-base new file mode 100644 index 0000000..9f52d1d Binary files /dev/null and b/Nextion/.svn/pristine/73/73b2d095e9027419d303c23b4b73ce662db50fad.svn-base differ diff --git a/Nextion/.svn/pristine/78/785013ef29f137c5891d705814ae1df1756d69b9.svn-base b/Nextion/.svn/pristine/78/785013ef29f137c5891d705814ae1df1756d69b9.svn-base new file mode 100644 index 0000000..ba4c09f Binary files /dev/null and b/Nextion/.svn/pristine/78/785013ef29f137c5891d705814ae1df1756d69b9.svn-base differ diff --git a/Nextion/.svn/pristine/79/79eaf8eb507c3f69d843d9abc8769db3bad9855e.svn-base b/Nextion/.svn/pristine/79/79eaf8eb507c3f69d843d9abc8769db3bad9855e.svn-base new file mode 100644 index 0000000..49358fb Binary files /dev/null and b/Nextion/.svn/pristine/79/79eaf8eb507c3f69d843d9abc8769db3bad9855e.svn-base differ diff --git a/Nextion/.svn/pristine/7d/7d8316d65880cae92681e690816ad74ed9bdf4be.svn-base b/Nextion/.svn/pristine/7d/7d8316d65880cae92681e690816ad74ed9bdf4be.svn-base new file mode 100644 index 0000000..b699766 Binary files /dev/null and b/Nextion/.svn/pristine/7d/7d8316d65880cae92681e690816ad74ed9bdf4be.svn-base differ diff --git a/Nextion/.svn/pristine/7d/7de8e2b3716cf522f0b122c0bb6c509ace9547cf.svn-base b/Nextion/.svn/pristine/7d/7de8e2b3716cf522f0b122c0bb6c509ace9547cf.svn-base new file mode 100644 index 0000000..fa752ec Binary files /dev/null and b/Nextion/.svn/pristine/7d/7de8e2b3716cf522f0b122c0bb6c509ace9547cf.svn-base differ diff --git a/Nextion/.svn/pristine/7f/7fb7855b9d265c85b284eb473a10b6aa7b2a596e.svn-base b/Nextion/.svn/pristine/7f/7fb7855b9d265c85b284eb473a10b6aa7b2a596e.svn-base new file mode 100644 index 0000000..1790a2b Binary files /dev/null and b/Nextion/.svn/pristine/7f/7fb7855b9d265c85b284eb473a10b6aa7b2a596e.svn-base differ diff --git a/Nextion/.svn/pristine/7f/7fedf800a1edfc1a617a26b89ef53e41277d529e.svn-base b/Nextion/.svn/pristine/7f/7fedf800a1edfc1a617a26b89ef53e41277d529e.svn-base new file mode 100644 index 0000000..6029000 Binary files /dev/null and b/Nextion/.svn/pristine/7f/7fedf800a1edfc1a617a26b89ef53e41277d529e.svn-base differ diff --git a/Nextion/.svn/pristine/81/8188c70fc213f21722e2c15e6a2faf545e5460ce.svn-base b/Nextion/.svn/pristine/81/8188c70fc213f21722e2c15e6a2faf545e5460ce.svn-base new file mode 100644 index 0000000..21e7c9a Binary files /dev/null and b/Nextion/.svn/pristine/81/8188c70fc213f21722e2c15e6a2faf545e5460ce.svn-base differ diff --git a/Nextion/.svn/pristine/82/82a09471a4e9877aeb549e99c761a87d56734a5b.svn-base b/Nextion/.svn/pristine/82/82a09471a4e9877aeb549e99c761a87d56734a5b.svn-base new file mode 100644 index 0000000..e1d8213 Binary files /dev/null and b/Nextion/.svn/pristine/82/82a09471a4e9877aeb549e99c761a87d56734a5b.svn-base differ diff --git a/Nextion/.svn/pristine/85/853fb0e4b967d353e67ee7f7a2d85463c52d9afa.svn-base b/Nextion/.svn/pristine/85/853fb0e4b967d353e67ee7f7a2d85463c52d9afa.svn-base new file mode 100644 index 0000000..6dcd4a5 Binary files /dev/null and b/Nextion/.svn/pristine/85/853fb0e4b967d353e67ee7f7a2d85463c52d9afa.svn-base differ diff --git a/Nextion/.svn/pristine/85/854c4f689c5c3c5a47f648c95bd85aee2035f683.svn-base b/Nextion/.svn/pristine/85/854c4f689c5c3c5a47f648c95bd85aee2035f683.svn-base new file mode 100644 index 0000000..e49efc5 Binary files /dev/null and b/Nextion/.svn/pristine/85/854c4f689c5c3c5a47f648c95bd85aee2035f683.svn-base differ diff --git a/Nextion/.svn/pristine/89/89b6800887b6567125ecc59e7335bb8fb94b8d25.svn-base b/Nextion/.svn/pristine/89/89b6800887b6567125ecc59e7335bb8fb94b8d25.svn-base new file mode 100644 index 0000000..90fb9a5 Binary files /dev/null and b/Nextion/.svn/pristine/89/89b6800887b6567125ecc59e7335bb8fb94b8d25.svn-base differ diff --git a/Nextion/.svn/pristine/89/89e521f4b39b1f093f88d2c8210d8abaeda8cbbc.svn-base b/Nextion/.svn/pristine/89/89e521f4b39b1f093f88d2c8210d8abaeda8cbbc.svn-base new file mode 100644 index 0000000..32bd9aa Binary files /dev/null and b/Nextion/.svn/pristine/89/89e521f4b39b1f093f88d2c8210d8abaeda8cbbc.svn-base differ diff --git a/Nextion/.svn/pristine/8e/8e657d10d42f49640c1481bf7c441ca978c23197.svn-base b/Nextion/.svn/pristine/8e/8e657d10d42f49640c1481bf7c441ca978c23197.svn-base new file mode 100644 index 0000000..07a70b5 Binary files /dev/null and b/Nextion/.svn/pristine/8e/8e657d10d42f49640c1481bf7c441ca978c23197.svn-base differ diff --git a/Nextion/.svn/pristine/8f/8f88cf45c9e09c29890f22e4e774d690293e619c.svn-base b/Nextion/.svn/pristine/8f/8f88cf45c9e09c29890f22e4e774d690293e619c.svn-base new file mode 100644 index 0000000..3a8a6ec Binary files /dev/null and b/Nextion/.svn/pristine/8f/8f88cf45c9e09c29890f22e4e774d690293e619c.svn-base differ diff --git a/Nextion/.svn/pristine/90/90205ecdf701a0f06489bdbf0d4358ab1e99b94e.svn-base b/Nextion/.svn/pristine/90/90205ecdf701a0f06489bdbf0d4358ab1e99b94e.svn-base new file mode 100644 index 0000000..fc54039 Binary files /dev/null and b/Nextion/.svn/pristine/90/90205ecdf701a0f06489bdbf0d4358ab1e99b94e.svn-base differ diff --git a/Nextion/.svn/pristine/90/90b1578de3eda5c3e3f0482241784b53c98717c9.svn-base b/Nextion/.svn/pristine/90/90b1578de3eda5c3e3f0482241784b53c98717c9.svn-base new file mode 100644 index 0000000..e4c577e Binary files /dev/null and b/Nextion/.svn/pristine/90/90b1578de3eda5c3e3f0482241784b53c98717c9.svn-base differ diff --git a/Nextion/.svn/pristine/93/932652eab9704bb9722ea3871a9dcbdb9137701c.svn-base b/Nextion/.svn/pristine/93/932652eab9704bb9722ea3871a9dcbdb9137701c.svn-base new file mode 100644 index 0000000..688ae52 Binary files /dev/null and b/Nextion/.svn/pristine/93/932652eab9704bb9722ea3871a9dcbdb9137701c.svn-base differ diff --git a/Nextion/.svn/pristine/95/9585b3a975870d2f337f2d73acc961695b59aab4.svn-base b/Nextion/.svn/pristine/95/9585b3a975870d2f337f2d73acc961695b59aab4.svn-base new file mode 100644 index 0000000..fdee7a8 Binary files /dev/null and b/Nextion/.svn/pristine/95/9585b3a975870d2f337f2d73acc961695b59aab4.svn-base differ diff --git a/Nextion/.svn/pristine/96/964c289df6460bbdc2582089d3b45ff3bddcd738.svn-base b/Nextion/.svn/pristine/96/964c289df6460bbdc2582089d3b45ff3bddcd738.svn-base new file mode 100644 index 0000000..1b09687 Binary files /dev/null and b/Nextion/.svn/pristine/96/964c289df6460bbdc2582089d3b45ff3bddcd738.svn-base differ diff --git a/Nextion/.svn/pristine/96/96e81e416f81019d482ae9febbd3b94e56edc768.svn-base b/Nextion/.svn/pristine/96/96e81e416f81019d482ae9febbd3b94e56edc768.svn-base new file mode 100644 index 0000000..ce3e924 Binary files /dev/null and b/Nextion/.svn/pristine/96/96e81e416f81019d482ae9febbd3b94e56edc768.svn-base differ diff --git a/Nextion/.svn/pristine/97/97b806772d7c0a66d17bd84178cfde1c643c6ece.svn-base b/Nextion/.svn/pristine/97/97b806772d7c0a66d17bd84178cfde1c643c6ece.svn-base new file mode 100644 index 0000000..552fbca Binary files /dev/null and b/Nextion/.svn/pristine/97/97b806772d7c0a66d17bd84178cfde1c643c6ece.svn-base differ diff --git a/Nextion/.svn/pristine/9d/9dbbb89da3c005c43ea448414d278e286092c301.svn-base b/Nextion/.svn/pristine/9d/9dbbb89da3c005c43ea448414d278e286092c301.svn-base new file mode 100644 index 0000000..eb5755e Binary files /dev/null and b/Nextion/.svn/pristine/9d/9dbbb89da3c005c43ea448414d278e286092c301.svn-base differ diff --git a/Nextion/.svn/pristine/9e/9e90ff344e6072ef365267e2499f4975e395cffe.svn-base b/Nextion/.svn/pristine/9e/9e90ff344e6072ef365267e2499f4975e395cffe.svn-base new file mode 100644 index 0000000..39526c7 Binary files /dev/null and b/Nextion/.svn/pristine/9e/9e90ff344e6072ef365267e2499f4975e395cffe.svn-base differ diff --git a/Nextion/.svn/pristine/9f/9ffb2661a16cfca660127a2975ec336853d34f87.svn-base b/Nextion/.svn/pristine/9f/9ffb2661a16cfca660127a2975ec336853d34f87.svn-base new file mode 100644 index 0000000..3d83f2a Binary files /dev/null and b/Nextion/.svn/pristine/9f/9ffb2661a16cfca660127a2975ec336853d34f87.svn-base differ diff --git a/Nextion/.svn/pristine/a1/a176aac0e4e4e632431b15020556a048a303937a.svn-base b/Nextion/.svn/pristine/a1/a176aac0e4e4e632431b15020556a048a303937a.svn-base new file mode 100644 index 0000000..fbb9de4 Binary files /dev/null and b/Nextion/.svn/pristine/a1/a176aac0e4e4e632431b15020556a048a303937a.svn-base differ diff --git a/Nextion/.svn/pristine/a2/a25156105f7e4114d6a9900e52b086185241cd56.svn-base b/Nextion/.svn/pristine/a2/a25156105f7e4114d6a9900e52b086185241cd56.svn-base new file mode 100644 index 0000000..7b1da47 Binary files /dev/null and b/Nextion/.svn/pristine/a2/a25156105f7e4114d6a9900e52b086185241cd56.svn-base differ diff --git a/Nextion/.svn/pristine/a3/a36f0c13bca44a0f4782642ab102d99bc4638e96.svn-base b/Nextion/.svn/pristine/a3/a36f0c13bca44a0f4782642ab102d99bc4638e96.svn-base new file mode 100644 index 0000000..9b663fa Binary files /dev/null and b/Nextion/.svn/pristine/a3/a36f0c13bca44a0f4782642ab102d99bc4638e96.svn-base differ diff --git a/Nextion/.svn/pristine/a6/a618cafd4a0db82ded9a5542c0ff63b31e53c9c9.svn-base b/Nextion/.svn/pristine/a6/a618cafd4a0db82ded9a5542c0ff63b31e53c9c9.svn-base new file mode 100644 index 0000000..5363787 Binary files /dev/null and b/Nextion/.svn/pristine/a6/a618cafd4a0db82ded9a5542c0ff63b31e53c9c9.svn-base differ diff --git a/Nextion/.svn/pristine/a6/a6f8b56c2ccfd89236a51abae512ae060f3c1b01.svn-base b/Nextion/.svn/pristine/a6/a6f8b56c2ccfd89236a51abae512ae060f3c1b01.svn-base new file mode 100644 index 0000000..d7c91e9 Binary files /dev/null and b/Nextion/.svn/pristine/a6/a6f8b56c2ccfd89236a51abae512ae060f3c1b01.svn-base differ diff --git a/Nextion/.svn/pristine/a7/a7f5ff12daacabd0f98018005e632a5cc90074b8.svn-base b/Nextion/.svn/pristine/a7/a7f5ff12daacabd0f98018005e632a5cc90074b8.svn-base new file mode 100644 index 0000000..a97c74c Binary files /dev/null and b/Nextion/.svn/pristine/a7/a7f5ff12daacabd0f98018005e632a5cc90074b8.svn-base differ diff --git a/Nextion/.svn/pristine/ac/ac83e789fcfdb2bb382573afed28a253d32c7c16.svn-base b/Nextion/.svn/pristine/ac/ac83e789fcfdb2bb382573afed28a253d32c7c16.svn-base new file mode 100644 index 0000000..ae9fb12 Binary files /dev/null and b/Nextion/.svn/pristine/ac/ac83e789fcfdb2bb382573afed28a253d32c7c16.svn-base differ diff --git a/Nextion/.svn/pristine/b0/b056889cbf03ad2fdaa78b0cbed12024c6f9b824.svn-base b/Nextion/.svn/pristine/b0/b056889cbf03ad2fdaa78b0cbed12024c6f9b824.svn-base new file mode 100644 index 0000000..6ed798c Binary files /dev/null and b/Nextion/.svn/pristine/b0/b056889cbf03ad2fdaa78b0cbed12024c6f9b824.svn-base differ diff --git a/Nextion/.svn/pristine/b0/b0b2a82bc722f9447fdfcbb956bdfe9e3c32b866.svn-base b/Nextion/.svn/pristine/b0/b0b2a82bc722f9447fdfcbb956bdfe9e3c32b866.svn-base new file mode 100644 index 0000000..d9f9aab Binary files /dev/null and b/Nextion/.svn/pristine/b0/b0b2a82bc722f9447fdfcbb956bdfe9e3c32b866.svn-base differ diff --git a/Nextion/.svn/pristine/b4/b4e26a295ce49408beec8e315d7f38c0aafc142f.svn-base b/Nextion/.svn/pristine/b4/b4e26a295ce49408beec8e315d7f38c0aafc142f.svn-base new file mode 100644 index 0000000..2451ee3 Binary files /dev/null and b/Nextion/.svn/pristine/b4/b4e26a295ce49408beec8e315d7f38c0aafc142f.svn-base differ diff --git a/Nextion/.svn/pristine/b6/b6e6a15300b409ec08572ab6f49f6c1beea2aed1.svn-base b/Nextion/.svn/pristine/b6/b6e6a15300b409ec08572ab6f49f6c1beea2aed1.svn-base new file mode 100644 index 0000000..425b7a7 Binary files /dev/null and b/Nextion/.svn/pristine/b6/b6e6a15300b409ec08572ab6f49f6c1beea2aed1.svn-base differ diff --git a/Nextion/.svn/pristine/b9/b9b652d368564a8cdcd4cc37b95e7b9d10ddaeae.svn-base b/Nextion/.svn/pristine/b9/b9b652d368564a8cdcd4cc37b95e7b9d10ddaeae.svn-base new file mode 100644 index 0000000..c632223 Binary files /dev/null and b/Nextion/.svn/pristine/b9/b9b652d368564a8cdcd4cc37b95e7b9d10ddaeae.svn-base differ diff --git a/Nextion/.svn/pristine/bb/bbe1c8a392f1a58aa63bae98d6425d518da6de61.svn-base b/Nextion/.svn/pristine/bb/bbe1c8a392f1a58aa63bae98d6425d518da6de61.svn-base new file mode 100644 index 0000000..17e6540 Binary files /dev/null and b/Nextion/.svn/pristine/bb/bbe1c8a392f1a58aa63bae98d6425d518da6de61.svn-base differ diff --git a/Nextion/.svn/pristine/bc/bccbc5f5d2d932a8ea94fbefc7d3e875b32ef107.svn-base b/Nextion/.svn/pristine/bc/bccbc5f5d2d932a8ea94fbefc7d3e875b32ef107.svn-base new file mode 100644 index 0000000..19048ef Binary files /dev/null and b/Nextion/.svn/pristine/bc/bccbc5f5d2d932a8ea94fbefc7d3e875b32ef107.svn-base differ diff --git a/Nextion/.svn/pristine/bd/bd386c709cdd39067a0efc87f9a2a9ac44ad7aed.svn-base b/Nextion/.svn/pristine/bd/bd386c709cdd39067a0efc87f9a2a9ac44ad7aed.svn-base new file mode 100644 index 0000000..568ebe4 Binary files /dev/null and b/Nextion/.svn/pristine/bd/bd386c709cdd39067a0efc87f9a2a9ac44ad7aed.svn-base differ diff --git a/Nextion/.svn/pristine/be/be6176a4b8088ba2a1957e81186f37bc7b2d3c6c.svn-base b/Nextion/.svn/pristine/be/be6176a4b8088ba2a1957e81186f37bc7b2d3c6c.svn-base new file mode 100644 index 0000000..10afd50 Binary files /dev/null and b/Nextion/.svn/pristine/be/be6176a4b8088ba2a1957e81186f37bc7b2d3c6c.svn-base differ diff --git a/Nextion/.svn/pristine/bf/bf0fcf9c1a6c57b91c7701267f84242f97419eac.svn-base b/Nextion/.svn/pristine/bf/bf0fcf9c1a6c57b91c7701267f84242f97419eac.svn-base new file mode 100644 index 0000000..5233942 Binary files /dev/null and b/Nextion/.svn/pristine/bf/bf0fcf9c1a6c57b91c7701267f84242f97419eac.svn-base differ diff --git a/Nextion/.svn/pristine/c0/c0389d2976e0cd00a3b0ccbb6c165885f526c213.svn-base b/Nextion/.svn/pristine/c0/c0389d2976e0cd00a3b0ccbb6c165885f526c213.svn-base new file mode 100644 index 0000000..75e695d Binary files /dev/null and b/Nextion/.svn/pristine/c0/c0389d2976e0cd00a3b0ccbb6c165885f526c213.svn-base differ diff --git a/Nextion/.svn/pristine/c1/c19abe8edacc72dd1aaba2c826178e054c941db1.svn-base b/Nextion/.svn/pristine/c1/c19abe8edacc72dd1aaba2c826178e054c941db1.svn-base new file mode 100644 index 0000000..524dff1 Binary files /dev/null and b/Nextion/.svn/pristine/c1/c19abe8edacc72dd1aaba2c826178e054c941db1.svn-base differ diff --git a/Nextion/.svn/pristine/c1/c1b2ea4b3db905ac484a26c8e81930c20149191b.svn-base b/Nextion/.svn/pristine/c1/c1b2ea4b3db905ac484a26c8e81930c20149191b.svn-base new file mode 100644 index 0000000..b07fb02 Binary files /dev/null and b/Nextion/.svn/pristine/c1/c1b2ea4b3db905ac484a26c8e81930c20149191b.svn-base differ diff --git a/Nextion/.svn/pristine/c4/c472f8c796c58732bbfcae4fbf7f0e95f4c3ad12.svn-base b/Nextion/.svn/pristine/c4/c472f8c796c58732bbfcae4fbf7f0e95f4c3ad12.svn-base new file mode 100644 index 0000000..7c30000 Binary files /dev/null and b/Nextion/.svn/pristine/c4/c472f8c796c58732bbfcae4fbf7f0e95f4c3ad12.svn-base differ diff --git a/Nextion/.svn/pristine/c4/c4d4ca3f0b102ca2e387dbc9b961567ae3957a52.svn-base b/Nextion/.svn/pristine/c4/c4d4ca3f0b102ca2e387dbc9b961567ae3957a52.svn-base new file mode 100644 index 0000000..24ec78e Binary files /dev/null and b/Nextion/.svn/pristine/c4/c4d4ca3f0b102ca2e387dbc9b961567ae3957a52.svn-base differ diff --git a/Nextion/.svn/pristine/c7/c7410bcbc0527d600757e6518ef8d7598d91bfe7.svn-base b/Nextion/.svn/pristine/c7/c7410bcbc0527d600757e6518ef8d7598d91bfe7.svn-base new file mode 100644 index 0000000..4f5f437 Binary files /dev/null and b/Nextion/.svn/pristine/c7/c7410bcbc0527d600757e6518ef8d7598d91bfe7.svn-base differ diff --git a/Nextion/.svn/pristine/c8/c83d012a9af59b783bafc7bdf70c7d6a29686edb.svn-base b/Nextion/.svn/pristine/c8/c83d012a9af59b783bafc7bdf70c7d6a29686edb.svn-base new file mode 100644 index 0000000..c83f560 Binary files /dev/null and b/Nextion/.svn/pristine/c8/c83d012a9af59b783bafc7bdf70c7d6a29686edb.svn-base differ diff --git a/Nextion/.svn/pristine/c9/c9aaf93c3fb411e9c1cad3d69bf1a530b8d08a7b.svn-base b/Nextion/.svn/pristine/c9/c9aaf93c3fb411e9c1cad3d69bf1a530b8d08a7b.svn-base new file mode 100644 index 0000000..ea57dc4 Binary files /dev/null and b/Nextion/.svn/pristine/c9/c9aaf93c3fb411e9c1cad3d69bf1a530b8d08a7b.svn-base differ diff --git a/Nextion/.svn/pristine/c9/c9d2e8f15c6f292e4cb865d0201bc0e9911cc9d7.svn-base b/Nextion/.svn/pristine/c9/c9d2e8f15c6f292e4cb865d0201bc0e9911cc9d7.svn-base new file mode 100644 index 0000000..23b6911 Binary files /dev/null and b/Nextion/.svn/pristine/c9/c9d2e8f15c6f292e4cb865d0201bc0e9911cc9d7.svn-base differ diff --git a/Nextion/.svn/pristine/ca/ca1da7fb41fc09fad2fa905d986e4fc92c3704ab.svn-base b/Nextion/.svn/pristine/ca/ca1da7fb41fc09fad2fa905d986e4fc92c3704ab.svn-base new file mode 100644 index 0000000..c51719a Binary files /dev/null and b/Nextion/.svn/pristine/ca/ca1da7fb41fc09fad2fa905d986e4fc92c3704ab.svn-base differ diff --git a/Nextion/.svn/pristine/ca/ca38fd220509182a7c43b31aebb412e27ec0cbc5.svn-base b/Nextion/.svn/pristine/ca/ca38fd220509182a7c43b31aebb412e27ec0cbc5.svn-base new file mode 100644 index 0000000..0e0e4a0 Binary files /dev/null and b/Nextion/.svn/pristine/ca/ca38fd220509182a7c43b31aebb412e27ec0cbc5.svn-base differ diff --git a/Nextion/.svn/pristine/cc/ccbccb3fdd181b4c62cf8528679721c8c53218e5.svn-base b/Nextion/.svn/pristine/cc/ccbccb3fdd181b4c62cf8528679721c8c53218e5.svn-base new file mode 100644 index 0000000..8c00c2e Binary files /dev/null and b/Nextion/.svn/pristine/cc/ccbccb3fdd181b4c62cf8528679721c8c53218e5.svn-base differ diff --git a/Nextion/.svn/pristine/ce/ce34f67df9e3f33c2abb3f4a07b8f105dc5ea710.svn-base b/Nextion/.svn/pristine/ce/ce34f67df9e3f33c2abb3f4a07b8f105dc5ea710.svn-base new file mode 100644 index 0000000..d3f8180 Binary files /dev/null and b/Nextion/.svn/pristine/ce/ce34f67df9e3f33c2abb3f4a07b8f105dc5ea710.svn-base differ diff --git a/Nextion/.svn/pristine/d1/d1e530e92f7211f9565154c6c2c956558607d4f4.svn-base b/Nextion/.svn/pristine/d1/d1e530e92f7211f9565154c6c2c956558607d4f4.svn-base new file mode 100644 index 0000000..60430bf Binary files /dev/null and b/Nextion/.svn/pristine/d1/d1e530e92f7211f9565154c6c2c956558607d4f4.svn-base differ diff --git a/Nextion/.svn/pristine/d2/d2ce6caaa0c132d95db929ab3f3d873434aa89ee.svn-base b/Nextion/.svn/pristine/d2/d2ce6caaa0c132d95db929ab3f3d873434aa89ee.svn-base new file mode 100644 index 0000000..11a0ab4 Binary files /dev/null and b/Nextion/.svn/pristine/d2/d2ce6caaa0c132d95db929ab3f3d873434aa89ee.svn-base differ diff --git a/Nextion/.svn/pristine/d5/d573b6b592b7f34628432d68175dffdcbac99047.svn-base b/Nextion/.svn/pristine/d5/d573b6b592b7f34628432d68175dffdcbac99047.svn-base new file mode 100644 index 0000000..740ef97 Binary files /dev/null and b/Nextion/.svn/pristine/d5/d573b6b592b7f34628432d68175dffdcbac99047.svn-base differ diff --git a/Nextion/.svn/pristine/d5/d5f44810289bb89dee6c5a65ab8fff23cd4b2506.svn-base b/Nextion/.svn/pristine/d5/d5f44810289bb89dee6c5a65ab8fff23cd4b2506.svn-base new file mode 100644 index 0000000..cecf738 Binary files /dev/null and b/Nextion/.svn/pristine/d5/d5f44810289bb89dee6c5a65ab8fff23cd4b2506.svn-base differ diff --git a/Nextion/.svn/pristine/d6/d6386a03cd473ac9c33d02f61ebb375b9d0a2c3e.svn-base b/Nextion/.svn/pristine/d6/d6386a03cd473ac9c33d02f61ebb375b9d0a2c3e.svn-base new file mode 100644 index 0000000..df2aef8 Binary files /dev/null and b/Nextion/.svn/pristine/d6/d6386a03cd473ac9c33d02f61ebb375b9d0a2c3e.svn-base differ diff --git a/Nextion/.svn/pristine/d7/d7e9973f6ca7f8c6becbcc127aa521e62e13ed71.svn-base b/Nextion/.svn/pristine/d7/d7e9973f6ca7f8c6becbcc127aa521e62e13ed71.svn-base new file mode 100644 index 0000000..2c57f1e Binary files /dev/null and b/Nextion/.svn/pristine/d7/d7e9973f6ca7f8c6becbcc127aa521e62e13ed71.svn-base differ diff --git a/Nextion/.svn/pristine/db/db116c4d5dfd1c1f458c05fd716ab6ec12dfd303.svn-base b/Nextion/.svn/pristine/db/db116c4d5dfd1c1f458c05fd716ab6ec12dfd303.svn-base new file mode 100644 index 0000000..4178980 Binary files /dev/null and b/Nextion/.svn/pristine/db/db116c4d5dfd1c1f458c05fd716ab6ec12dfd303.svn-base differ diff --git a/Nextion/.svn/pristine/db/dbcf06d3b8183d318cbe5bbb1bafad9c58a887f9.svn-base b/Nextion/.svn/pristine/db/dbcf06d3b8183d318cbe5bbb1bafad9c58a887f9.svn-base new file mode 100644 index 0000000..3029438 Binary files /dev/null and b/Nextion/.svn/pristine/db/dbcf06d3b8183d318cbe5bbb1bafad9c58a887f9.svn-base differ diff --git a/Nextion/.svn/pristine/de/deb47d037e081e89e18a1f5966c0a7b45b2371ce.svn-base b/Nextion/.svn/pristine/de/deb47d037e081e89e18a1f5966c0a7b45b2371ce.svn-base new file mode 100644 index 0000000..e00f061 Binary files /dev/null and b/Nextion/.svn/pristine/de/deb47d037e081e89e18a1f5966c0a7b45b2371ce.svn-base differ diff --git a/Nextion/.svn/pristine/df/dffbd0a2d002ea267d878bd96c33d56a55b28ab8.svn-base b/Nextion/.svn/pristine/df/dffbd0a2d002ea267d878bd96c33d56a55b28ab8.svn-base new file mode 100644 index 0000000..d7b589f Binary files /dev/null and b/Nextion/.svn/pristine/df/dffbd0a2d002ea267d878bd96c33d56a55b28ab8.svn-base differ diff --git a/Nextion/.svn/pristine/e2/e2113772d823b1157dc87fb4c171ca57d48fbe9d.svn-base b/Nextion/.svn/pristine/e2/e2113772d823b1157dc87fb4c171ca57d48fbe9d.svn-base new file mode 100644 index 0000000..1ff6952 Binary files /dev/null and b/Nextion/.svn/pristine/e2/e2113772d823b1157dc87fb4c171ca57d48fbe9d.svn-base differ diff --git a/Nextion/.svn/pristine/e4/e458118bfa185f84772afd9c5604f26e3f2b5f16.svn-base b/Nextion/.svn/pristine/e4/e458118bfa185f84772afd9c5604f26e3f2b5f16.svn-base new file mode 100644 index 0000000..56523cb Binary files /dev/null and b/Nextion/.svn/pristine/e4/e458118bfa185f84772afd9c5604f26e3f2b5f16.svn-base differ diff --git a/Nextion/.svn/pristine/e5/e570589f17b0d78bc775ccb474bb5b0b6b2562ac.svn-base b/Nextion/.svn/pristine/e5/e570589f17b0d78bc775ccb474bb5b0b6b2562ac.svn-base new file mode 100644 index 0000000..26ae113 Binary files /dev/null and b/Nextion/.svn/pristine/e5/e570589f17b0d78bc775ccb474bb5b0b6b2562ac.svn-base differ diff --git a/Nextion/.svn/pristine/e7/e70e9faeb2891a9d11985d89620284402aee1fdd.svn-base b/Nextion/.svn/pristine/e7/e70e9faeb2891a9d11985d89620284402aee1fdd.svn-base new file mode 100644 index 0000000..c78280b Binary files /dev/null and b/Nextion/.svn/pristine/e7/e70e9faeb2891a9d11985d89620284402aee1fdd.svn-base differ diff --git a/Nextion/.svn/pristine/e7/e75f8e57aab289b949caae2bd8661b9a4ff895a1.svn-base b/Nextion/.svn/pristine/e7/e75f8e57aab289b949caae2bd8661b9a4ff895a1.svn-base new file mode 100644 index 0000000..f9cd50d Binary files /dev/null and b/Nextion/.svn/pristine/e7/e75f8e57aab289b949caae2bd8661b9a4ff895a1.svn-base differ diff --git a/Nextion/.svn/pristine/e7/e7c5b5483c2b082136722f99c038196cf3829f6d.svn-base b/Nextion/.svn/pristine/e7/e7c5b5483c2b082136722f99c038196cf3829f6d.svn-base new file mode 100644 index 0000000..9b08234 Binary files /dev/null and b/Nextion/.svn/pristine/e7/e7c5b5483c2b082136722f99c038196cf3829f6d.svn-base differ diff --git a/Nextion/.svn/pristine/e8/e8adb08e976497e7fb3db122bec54d19ad8b25d3.svn-base b/Nextion/.svn/pristine/e8/e8adb08e976497e7fb3db122bec54d19ad8b25d3.svn-base new file mode 100644 index 0000000..2b13ff5 Binary files /dev/null and b/Nextion/.svn/pristine/e8/e8adb08e976497e7fb3db122bec54d19ad8b25d3.svn-base differ diff --git a/Nextion/.svn/pristine/ea/ea9ff9430c28df3bad6d68479dd71d7a91305d9c.svn-base b/Nextion/.svn/pristine/ea/ea9ff9430c28df3bad6d68479dd71d7a91305d9c.svn-base new file mode 100644 index 0000000..76a4a8d Binary files /dev/null and b/Nextion/.svn/pristine/ea/ea9ff9430c28df3bad6d68479dd71d7a91305d9c.svn-base differ diff --git a/Nextion/.svn/pristine/ec/ecc6c676065e258434f8509c627e07578835745d.svn-base b/Nextion/.svn/pristine/ec/ecc6c676065e258434f8509c627e07578835745d.svn-base new file mode 100644 index 0000000..707bce5 Binary files /dev/null and b/Nextion/.svn/pristine/ec/ecc6c676065e258434f8509c627e07578835745d.svn-base differ diff --git a/Nextion/.svn/pristine/ef/efba69cd0ea5b83107212a7f298942240e1cb6b0.svn-base b/Nextion/.svn/pristine/ef/efba69cd0ea5b83107212a7f298942240e1cb6b0.svn-base new file mode 100644 index 0000000..625037c Binary files /dev/null and b/Nextion/.svn/pristine/ef/efba69cd0ea5b83107212a7f298942240e1cb6b0.svn-base differ diff --git a/Nextion/.svn/pristine/f0/f07675dd2a48554f3f0a3fb30bc153785a101571.svn-base b/Nextion/.svn/pristine/f0/f07675dd2a48554f3f0a3fb30bc153785a101571.svn-base new file mode 100644 index 0000000..c7a99d5 Binary files /dev/null and b/Nextion/.svn/pristine/f0/f07675dd2a48554f3f0a3fb30bc153785a101571.svn-base differ diff --git a/Nextion/.svn/pristine/f0/f0f581421fa09ea60c0a36908e6d9b7a4194c59c.svn-base b/Nextion/.svn/pristine/f0/f0f581421fa09ea60c0a36908e6d9b7a4194c59c.svn-base new file mode 100644 index 0000000..28ff570 Binary files /dev/null and b/Nextion/.svn/pristine/f0/f0f581421fa09ea60c0a36908e6d9b7a4194c59c.svn-base differ diff --git a/Nextion/.svn/pristine/f1/f13af76cc0587c86bf398945962b2244a4039ec5.svn-base b/Nextion/.svn/pristine/f1/f13af76cc0587c86bf398945962b2244a4039ec5.svn-base new file mode 100644 index 0000000..dc04134 Binary files /dev/null and b/Nextion/.svn/pristine/f1/f13af76cc0587c86bf398945962b2244a4039ec5.svn-base differ diff --git a/Nextion/.svn/pristine/f4/f4e69463d423b36a250b0df5612b87054e645e08.svn-base b/Nextion/.svn/pristine/f4/f4e69463d423b36a250b0df5612b87054e645e08.svn-base new file mode 100644 index 0000000..6f94b73 Binary files /dev/null and b/Nextion/.svn/pristine/f4/f4e69463d423b36a250b0df5612b87054e645e08.svn-base differ diff --git a/Nextion/.svn/pristine/f8/f84e8c0f3421c4301c1dcdc2e076120d1901a826.svn-base b/Nextion/.svn/pristine/f8/f84e8c0f3421c4301c1dcdc2e076120d1901a826.svn-base new file mode 100644 index 0000000..fe56dfc Binary files /dev/null and b/Nextion/.svn/pristine/f8/f84e8c0f3421c4301c1dcdc2e076120d1901a826.svn-base differ diff --git a/Nextion/.svn/pristine/f8/f8556ff287846d30f45c27f7539ad2ef676c60cb.svn-base b/Nextion/.svn/pristine/f8/f8556ff287846d30f45c27f7539ad2ef676c60cb.svn-base new file mode 100644 index 0000000..59c4fc6 Binary files /dev/null and b/Nextion/.svn/pristine/f8/f8556ff287846d30f45c27f7539ad2ef676c60cb.svn-base differ diff --git a/Nextion/.svn/pristine/f9/f9c1945b0b3787be915c96cf229c9e3e43fea398.svn-base b/Nextion/.svn/pristine/f9/f9c1945b0b3787be915c96cf229c9e3e43fea398.svn-base new file mode 100644 index 0000000..ed56757 Binary files /dev/null and b/Nextion/.svn/pristine/f9/f9c1945b0b3787be915c96cf229c9e3e43fea398.svn-base differ diff --git a/Nextion/.svn/pristine/fb/fb9c18836a3c5c500101a83f8f8a695b5ca882fa.svn-base b/Nextion/.svn/pristine/fb/fb9c18836a3c5c500101a83f8f8a695b5ca882fa.svn-base new file mode 100644 index 0000000..a849313 Binary files /dev/null and b/Nextion/.svn/pristine/fb/fb9c18836a3c5c500101a83f8f8a695b5ca882fa.svn-base differ diff --git a/Nextion/.svn/pristine/fc/fcc01f8b33ce88086e95088a5aba02202109ce56.svn-base b/Nextion/.svn/pristine/fc/fcc01f8b33ce88086e95088a5aba02202109ce56.svn-base new file mode 100644 index 0000000..c2ca83a Binary files /dev/null and b/Nextion/.svn/pristine/fc/fcc01f8b33ce88086e95088a5aba02202109ce56.svn-base differ diff --git a/Nextion/.svn/pristine/fd/fd416217aed1a29b0ddf1bc30cd90399fda024f6.svn-base b/Nextion/.svn/pristine/fd/fd416217aed1a29b0ddf1bc30cd90399fda024f6.svn-base new file mode 100644 index 0000000..9bec3c3 Binary files /dev/null and b/Nextion/.svn/pristine/fd/fd416217aed1a29b0ddf1bc30cd90399fda024f6.svn-base differ diff --git a/Nextion/.svn/pristine/fd/fd6c8be2e37d308db8d9769900ca2db45bcb7731.svn-base b/Nextion/.svn/pristine/fd/fd6c8be2e37d308db8d9769900ca2db45bcb7731.svn-base new file mode 100644 index 0000000..9c5f97e Binary files /dev/null and b/Nextion/.svn/pristine/fd/fd6c8be2e37d308db8d9769900ca2db45bcb7731.svn-base differ diff --git a/Nextion/.svn/wc.db b/Nextion/.svn/wc.db new file mode 100644 index 0000000..a716d6e Binary files /dev/null and b/Nextion/.svn/wc.db differ diff --git a/Nextion/.svn/wc.db-journal b/Nextion/.svn/wc.db-journal new file mode 100644 index 0000000..e69de29 diff --git a/Nextion/Display35.HMI b/Nextion/Display35.HMI new file mode 100755 index 0000000..637a51f Binary files /dev/null and b/Nextion/Display35.HMI differ diff --git a/Nextion/Display35.tft b/Nextion/Display35.tft new file mode 100755 index 0000000..dc04134 Binary files /dev/null and b/Nextion/Display35.tft differ diff --git a/Nextion/fonts/LucidaConsoleBold_64.zi b/Nextion/fonts/LucidaConsoleBold_64.zi new file mode 100755 index 0000000..2451ee3 Binary files /dev/null and b/Nextion/fonts/LucidaConsoleBold_64.zi differ diff --git a/Nextion/fonts/LucidaConsoleBold_96.zi b/Nextion/fonts/LucidaConsoleBold_96.zi new file mode 100755 index 0000000..9f52d1d Binary files /dev/null and b/Nextion/fonts/LucidaConsoleBold_96.zi differ diff --git a/Nextion/fonts/LucidaConsole_20.zi b/Nextion/fonts/LucidaConsole_20.zi new file mode 100755 index 0000000..524dff1 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_20.zi differ diff --git a/Nextion/fonts/LucidaConsole_24.zi b/Nextion/fonts/LucidaConsole_24.zi new file mode 100755 index 0000000..df2aef8 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_24.zi differ diff --git a/Nextion/fonts/LucidaConsole_32.zi b/Nextion/fonts/LucidaConsole_32.zi new file mode 100755 index 0000000..f7c2aa5 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_32.zi differ diff --git a/Nextion/fonts/LucidaConsole_56.zi b/Nextion/fonts/LucidaConsole_56.zi new file mode 100755 index 0000000..11a0ab4 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_56.zi differ diff --git a/Nextion/fonts/LucidaConsole_64.zi b/Nextion/fonts/LucidaConsole_64.zi new file mode 100755 index 0000000..c78280b Binary files /dev/null and b/Nextion/fonts/LucidaConsole_64.zi differ diff --git a/Nextion/fonts/LucidaConsole_80.zi b/Nextion/fonts/LucidaConsole_80.zi new file mode 100755 index 0000000..c13f6a3 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_80.zi differ diff --git a/Nextion/fonts/LucidaConsole_96.zi b/Nextion/fonts/LucidaConsole_96.zi new file mode 100755 index 0000000..568ebe4 Binary files /dev/null and b/Nextion/fonts/LucidaConsole_96.zi differ diff --git a/Nextion/pictures/Status_IR.png b/Nextion/pictures/Status_IR.png new file mode 100644 index 0000000..dbdd36b Binary files /dev/null and b/Nextion/pictures/Status_IR.png differ diff --git a/Nextion/pictures/Status_WIFI.png b/Nextion/pictures/Status_WIFI.png new file mode 100644 index 0000000..07a70b5 Binary files /dev/null and b/Nextion/pictures/Status_WIFI.png differ diff --git a/Nextion/pictures/Status_doorbell.png b/Nextion/pictures/Status_doorbell.png new file mode 100644 index 0000000..49358fb Binary files /dev/null and b/Nextion/pictures/Status_doorbell.png differ diff --git a/Nextion/pictures/Status_empty.png b/Nextion/pictures/Status_empty.png new file mode 100644 index 0000000..707bce5 Binary files /dev/null and b/Nextion/pictures/Status_empty.png differ diff --git a/Nextion/pictures/alarm.png b/Nextion/pictures/alarm.png new file mode 100644 index 0000000..ba5b4d4 Binary files /dev/null and b/Nextion/pictures/alarm.png differ diff --git a/Nextion/pictures/buienradar_icons_52/0.gif b/Nextion/pictures/buienradar_icons_52/0.gif new file mode 100755 index 0000000..10afd50 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/0.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/00.gif b/Nextion/pictures/buienradar_icons_52/00.gif new file mode 100755 index 0000000..10afd50 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/00.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/1.gif b/Nextion/pictures/buienradar_icons_52/1.gif new file mode 100755 index 0000000..544b730 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/1.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/11.gif b/Nextion/pictures/buienradar_icons_52/11.gif new file mode 100755 index 0000000..544b730 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/11.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/a.gif b/Nextion/pictures/buienradar_icons_52/a.gif new file mode 100755 index 0000000..59c4fc6 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/a.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/aa.gif b/Nextion/pictures/buienradar_icons_52/aa.gif new file mode 100755 index 0000000..187ba26 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/aa.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/b.gif b/Nextion/pictures/buienradar_icons_52/b.gif new file mode 100755 index 0000000..2d0e7f6 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/b.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/bb.gif b/Nextion/pictures/buienradar_icons_52/bb.gif new file mode 100755 index 0000000..1b09687 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/bb.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/c.gif b/Nextion/pictures/buienradar_icons_52/c.gif new file mode 100755 index 0000000..19048ef Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/c.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/cc.gif b/Nextion/pictures/buienradar_icons_52/cc.gif new file mode 100755 index 0000000..425b7a7 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/cc.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/d.gif b/Nextion/pictures/buienradar_icons_52/d.gif new file mode 100755 index 0000000..39526c7 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/d.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/dd.gif b/Nextion/pictures/buienradar_icons_52/dd.gif new file mode 100755 index 0000000..a6d930a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/dd.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/e.gif b/Nextion/pictures/buienradar_icons_52/e.gif new file mode 100755 index 0000000..e92a68a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/e.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ee.gif b/Nextion/pictures/buienradar_icons_52/ee.gif new file mode 100755 index 0000000..e92a68a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ee.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/f.gif b/Nextion/pictures/buienradar_icons_52/f.gif new file mode 100755 index 0000000..75a17cc Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/f.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ff.gif b/Nextion/pictures/buienradar_icons_52/ff.gif new file mode 100755 index 0000000..9c200ab Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ff.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/g.gif b/Nextion/pictures/buienradar_icons_52/g.gif new file mode 100755 index 0000000..afe630a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/g.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/gg.gif b/Nextion/pictures/buienradar_icons_52/gg.gif new file mode 100755 index 0000000..23b6911 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/gg.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/h.gif b/Nextion/pictures/buienradar_icons_52/h.gif new file mode 100755 index 0000000..4cae803 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/h.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/hh.gif b/Nextion/pictures/buienradar_icons_52/hh.gif new file mode 100755 index 0000000..6363dcc Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/hh.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/i.gif b/Nextion/pictures/buienradar_icons_52/i.gif new file mode 100755 index 0000000..75e695d Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/i.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ii.gif b/Nextion/pictures/buienradar_icons_52/ii.gif new file mode 100755 index 0000000..e4c577e Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ii.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/k.gif b/Nextion/pictures/buienradar_icons_52/k.gif new file mode 100755 index 0000000..6ed798c Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/k.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/kk.gif b/Nextion/pictures/buienradar_icons_52/kk.gif new file mode 100755 index 0000000..a97c74c Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/kk.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/l.gif b/Nextion/pictures/buienradar_icons_52/l.gif new file mode 100755 index 0000000..24ec78e Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/l.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ll.gif b/Nextion/pictures/buienradar_icons_52/ll.gif new file mode 100755 index 0000000..4178980 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ll.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/m.gif b/Nextion/pictures/buienradar_icons_52/m.gif new file mode 100755 index 0000000..3d023df Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/m.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/mm.gif b/Nextion/pictures/buienradar_icons_52/mm.gif new file mode 100755 index 0000000..17e6540 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/mm.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/n.gif b/Nextion/pictures/buienradar_icons_52/n.gif new file mode 100755 index 0000000..ce3e924 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/n.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/nn.gif b/Nextion/pictures/buienradar_icons_52/nn.gif new file mode 100755 index 0000000..ce3e924 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/nn.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/o.gif b/Nextion/pictures/buienradar_icons_52/o.gif new file mode 100755 index 0000000..2d0e7f6 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/o.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/oo.gif b/Nextion/pictures/buienradar_icons_52/oo.gif new file mode 100755 index 0000000..1b09687 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/oo.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/p.gif b/Nextion/pictures/buienradar_icons_52/p.gif new file mode 100755 index 0000000..19048ef Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/p.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/pp.gif b/Nextion/pictures/buienradar_icons_52/pp.gif new file mode 100755 index 0000000..425b7a7 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/pp.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/q.gif b/Nextion/pictures/buienradar_icons_52/q.gif new file mode 100755 index 0000000..e9a2d87 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/q.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/qq.gif b/Nextion/pictures/buienradar_icons_52/qq.gif new file mode 100755 index 0000000..ae9fb12 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/qq.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/s.gif b/Nextion/pictures/buienradar_icons_52/s.gif new file mode 100755 index 0000000..3a8a6ec Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/s.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ss.gif b/Nextion/pictures/buienradar_icons_52/ss.gif new file mode 100755 index 0000000..3a8a6ec Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ss.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/t.gif b/Nextion/pictures/buienradar_icons_52/t.gif new file mode 100755 index 0000000..5535337 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/t.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/tt.gif b/Nextion/pictures/buienradar_icons_52/tt.gif new file mode 100755 index 0000000..5535337 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/tt.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/u.gif b/Nextion/pictures/buienradar_icons_52/u.gif new file mode 100755 index 0000000..7b1da47 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/u.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/uu.gif b/Nextion/pictures/buienradar_icons_52/uu.gif new file mode 100755 index 0000000..4f5f437 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/uu.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/v.gif b/Nextion/pictures/buienradar_icons_52/v.gif new file mode 100755 index 0000000..7a8f838 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/v.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/vv.gif b/Nextion/pictures/buienradar_icons_52/vv.gif new file mode 100755 index 0000000..7a8f838 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/vv.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/w.gif b/Nextion/pictures/buienradar_icons_52/w.gif new file mode 100755 index 0000000..9a8b63b Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/w.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/ww.gif b/Nextion/pictures/buienradar_icons_52/ww.gif new file mode 100755 index 0000000..9a8b63b Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/ww.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/x.gif b/Nextion/pictures/buienradar_icons_52/x.gif new file mode 100755 index 0000000..c2ca83a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/x.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/xx.gif b/Nextion/pictures/buienradar_icons_52/xx.gif new file mode 100755 index 0000000..c2ca83a Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/xx.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/y.gif b/Nextion/pictures/buienradar_icons_52/y.gif new file mode 100755 index 0000000..1ff6952 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/y.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/yy.gif b/Nextion/pictures/buienradar_icons_52/yy.gif new file mode 100755 index 0000000..1ff6952 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/yy.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/z.gif b/Nextion/pictures/buienradar_icons_52/z.gif new file mode 100755 index 0000000..fdee7a8 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/z.gif differ diff --git a/Nextion/pictures/buienradar_icons_52/zz.gif b/Nextion/pictures/buienradar_icons_52/zz.gif new file mode 100755 index 0000000..fdee7a8 Binary files /dev/null and b/Nextion/pictures/buienradar_icons_52/zz.gif differ diff --git a/Nextion/pictures/doorbell.jpg b/Nextion/pictures/doorbell.jpg new file mode 100644 index 0000000..7c30000 Binary files /dev/null and b/Nextion/pictures/doorbell.jpg differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/0.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/0.png new file mode 100644 index 0000000..a1a9798 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/0.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/1.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/1.png new file mode 100644 index 0000000..2a1623c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/1.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/Thumbs.db b/Nextion/pictures/icons_buienradar_52_glossy/a..z/Thumbs.db new file mode 100755 index 0000000..8bb5f4e Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/Thumbs.db differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/a.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/a.png new file mode 100644 index 0000000..fa752ec Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/a.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/b.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/b.png new file mode 100644 index 0000000..6453048 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/b.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/c.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/c.png new file mode 100644 index 0000000..76a4a8d Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/c.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/d.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/d.png new file mode 100644 index 0000000..eb5755e Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/d.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/e.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/e.png new file mode 100644 index 0000000..fbb9de4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/e.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/f.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/f.png new file mode 100644 index 0000000..6ad5fb3 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/f.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/g.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/g.png new file mode 100644 index 0000000..b07fb02 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/g.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/h.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/h.png new file mode 100644 index 0000000..552fbca Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/h.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/i.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/i.png new file mode 100644 index 0000000..7556872 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/i.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/j.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/j.png new file mode 100644 index 0000000..26ae113 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/j.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/k.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/k.png new file mode 100644 index 0000000..0e0e4a0 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/k.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/l.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/l.png new file mode 100644 index 0000000..110f2a8 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/l.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/m.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/m.png new file mode 100644 index 0000000..6dcd4a5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/m.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/n.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/n.png new file mode 100644 index 0000000..01fff82 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/n.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/o.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/o.png new file mode 100644 index 0000000..3029438 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/o.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/p.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/p.png new file mode 100644 index 0000000..740ef97 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/p.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/q.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/q.png new file mode 100644 index 0000000..e6d1751 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/q.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/r.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/r.png new file mode 100644 index 0000000..c2c8466 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/r.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/s.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/s.png new file mode 100644 index 0000000..9f83ca2 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/s.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/t.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/t.png new file mode 100644 index 0000000..625037c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/t.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/u.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/u.png new file mode 100644 index 0000000..a849313 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/u.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/v.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/v.png new file mode 100644 index 0000000..3018a69 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/v.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/w.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/w.png new file mode 100644 index 0000000..32bf9d5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/w.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/x.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/x.png new file mode 100644 index 0000000..c1ebbb0 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/x.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/y.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/y.png new file mode 100644 index 0000000..4fac3d4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/y.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/a..z/z.png b/Nextion/pictures/icons_buienradar_52_glossy/a..z/z.png new file mode 100644 index 0000000..ba4c09f Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/a..z/z.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/00.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/00.png new file mode 100644 index 0000000..cecf738 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/00.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/11.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/11.png new file mode 100644 index 0000000..e00f061 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/11.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/Thumbs.db b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/Thumbs.db new file mode 100755 index 0000000..7c24d98 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/Thumbs.db differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/aa.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/aa.png new file mode 100644 index 0000000..866f08c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/aa.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/bb.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/bb.png new file mode 100644 index 0000000..6d95569 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/bb.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/cc.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/cc.png new file mode 100644 index 0000000..621c656 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/cc.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/dd.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/dd.png new file mode 100644 index 0000000..b699766 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/dd.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ee.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ee.png new file mode 100644 index 0000000..dc9f3b5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ee.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ff.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ff.png new file mode 100644 index 0000000..32bd9aa Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ff.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/gg.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/gg.png new file mode 100644 index 0000000..c0edbf1 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/gg.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/hh.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/hh.png new file mode 100644 index 0000000..c7a99d5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/hh.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ii.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ii.png new file mode 100644 index 0000000..21e7c9a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ii.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/jj.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/jj.png new file mode 100644 index 0000000..5a835bc Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/jj.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/kk.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/kk.png new file mode 100644 index 0000000..0196576 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/kk.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ll.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ll.png new file mode 100644 index 0000000..fe56dfc Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ll.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/mm.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/mm.png new file mode 100644 index 0000000..4f1e34a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/mm.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/nn.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/nn.png new file mode 100644 index 0000000..cb11f55 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/nn.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/oo.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/oo.png new file mode 100644 index 0000000..5363787 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/oo.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/pp.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/pp.png new file mode 100644 index 0000000..23fae50 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/pp.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/qq.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/qq.png new file mode 100644 index 0000000..d9f9aab Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/qq.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/rr.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/rr.png new file mode 100644 index 0000000..09e8f3b Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/rr.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ss.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ss.png new file mode 100644 index 0000000..1790a2b Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ss.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/tt.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/tt.png new file mode 100644 index 0000000..5233942 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/tt.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/uu.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/uu.png new file mode 100644 index 0000000..688ae52 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/uu.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/vv.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/vv.png new file mode 100644 index 0000000..2b13ff5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/vv.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ww.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ww.png new file mode 100644 index 0000000..8c00c2e Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/ww.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/xx.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/xx.png new file mode 100644 index 0000000..d3f8180 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/xx.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/yy.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/yy.png new file mode 100644 index 0000000..c632223 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/yy.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/zz.png b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/zz.png new file mode 100644 index 0000000..c51719a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/aa..zz/zz.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/0.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/0.png new file mode 100755 index 0000000..00d7adc Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/0.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/1.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/1.png new file mode 100755 index 0000000..c83f560 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/1.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/a.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/a.png new file mode 100755 index 0000000..d643def Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/a.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/b.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/b.png new file mode 100755 index 0000000..9b08234 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/b.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/c.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/c.png new file mode 100755 index 0000000..3d83f2a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/c.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/d.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/d.png new file mode 100755 index 0000000..9c5f97e Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/d.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/e.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/e.png new file mode 100755 index 0000000..ed56757 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/e.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/f.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/f.png new file mode 100755 index 0000000..1d4c956 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/f.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/g.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/g.png new file mode 100755 index 0000000..9fc91b6 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/g.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/h.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/h.png new file mode 100755 index 0000000..9fc91b6 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/h.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/i.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/i.png new file mode 100755 index 0000000..9fc91b6 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/i.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/j.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/j.png new file mode 100755 index 0000000..00d7adc Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/j.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/k.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/k.png new file mode 100755 index 0000000..6f94b73 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/k.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/l.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/l.png new file mode 100755 index 0000000..d236315 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/l.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/m.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/m.png new file mode 100755 index 0000000..7a16221 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/m.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/n.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/n.png new file mode 100755 index 0000000..9b663fa Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/n.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/o.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/o.png new file mode 100755 index 0000000..9b08234 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/o.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/p.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/p.png new file mode 100755 index 0000000..3d83f2a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/p.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/q.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/q.png new file mode 100755 index 0000000..fc54039 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/q.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/r.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/r.png new file mode 100755 index 0000000..00d7adc Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/r.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/s.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/s.png new file mode 100755 index 0000000..ecb8561 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/s.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/t.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/t.png new file mode 100755 index 0000000..ea57dc4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/t.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/u.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/u.png new file mode 100755 index 0000000..60430bf Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/u.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/v.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/v.png new file mode 100755 index 0000000..6029000 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/v.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/w.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/w.png new file mode 100755 index 0000000..e1d8213 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/w.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/x.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/x.png new file mode 100755 index 0000000..ea57dc4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/x.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/y.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/y.png new file mode 100755 index 0000000..5836723 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/y.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/z.png b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/z.png new file mode 100755 index 0000000..2c57f1e Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/a..z/z.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/00.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/00.png new file mode 100755 index 0000000..56dc26c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/00.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/11.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/11.png new file mode 100755 index 0000000..641459f Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/11.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/aa.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/aa.png new file mode 100755 index 0000000..9bec3c3 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/aa.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/bb.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/bb.png new file mode 100755 index 0000000..b78ac58 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/bb.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/cc.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/cc.png new file mode 100755 index 0000000..3d83f2a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/cc.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/dd.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/dd.png new file mode 100755 index 0000000..28ff570 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/dd.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ee.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ee.png new file mode 100755 index 0000000..ed56757 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ee.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ff.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ff.png new file mode 100755 index 0000000..c70ffff Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ff.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/gg.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/gg.png new file mode 100755 index 0000000..ffefe78 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/gg.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/hh.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/hh.png new file mode 100755 index 0000000..ffefe78 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/hh.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ii.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ii.png new file mode 100755 index 0000000..ffefe78 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ii.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/jj.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/jj.png new file mode 100755 index 0000000..56dc26c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/jj.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/kk.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/kk.png new file mode 100755 index 0000000..d7c91e9 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/kk.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ll.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ll.png new file mode 100755 index 0000000..d236315 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ll.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/mm.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/mm.png new file mode 100755 index 0000000..d7b589f Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/mm.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/nn.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/nn.png new file mode 100755 index 0000000..9b663fa Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/nn.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/oo.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/oo.png new file mode 100755 index 0000000..8e97c96 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/oo.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/pp.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/pp.png new file mode 100755 index 0000000..3d83f2a Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/pp.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/qq.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/qq.png new file mode 100755 index 0000000..f9cd50d Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/qq.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/rr.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/rr.png new file mode 100755 index 0000000..56dc26c Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/rr.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ss.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ss.png new file mode 100755 index 0000000..9345570 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ss.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/tt.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/tt.png new file mode 100755 index 0000000..ea57dc4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/tt.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/uu.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/uu.png new file mode 100755 index 0000000..90fb9a5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/uu.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/vv.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/vv.png new file mode 100755 index 0000000..6029000 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/vv.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ww.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ww.png new file mode 100755 index 0000000..e1d8213 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/ww.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/xx.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/xx.png new file mode 100755 index 0000000..ea57dc4 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/xx.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/yy.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/yy.png new file mode 100755 index 0000000..e49efc5 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/yy.png differ diff --git a/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/zz.png b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/zz.png new file mode 100755 index 0000000..3151164 Binary files /dev/null and b/Nextion/pictures/icons_buienradar_52_glossy/org/aa..zz/zz.png differ diff --git a/display.ino b/display.ino new file mode 100644 index 0000000..e9221d6 --- /dev/null +++ b/display.ino @@ -0,0 +1,222 @@ + +//#define DEBUG 1 + +#include + +//#include +#include +#include +#include + +#include + +#define BUZZER_PIN D5 + +// X10 Infrared Receiver Library +void infraredEvent(char house, byte unit, byte command, bool isRepeat); + +X10ir x10ir = X10ir( + 5, // Receive Interrupt Number (1 = Standard Arduino External Interrupt) + 5, // Receive Interrupt Pin (Pin 3 must be used with interrupt 1) + 'A', // Default House Code + // *infraredEvent // Event triggered when IR message is received + infraredEvent // Event triggered when IR message is received . //In example zonder * !!!! + ); + +const char* ssid = "FrankHilde"; +const char* password = "HildeFrank"; +const char* mqtt_server = "192.168.2.200"; + +WiFiClient espClient; +PubSubClient client(espClient); +long lastMsg = 0; +char msg[100]; +int value = 0; + +#define idx_staandelamp 1701 //1714 //1701 //1252 +#define idx_hanglamp 1695 //1716 //1695 //1326 +#define idx_haardverlichting 1702 //1717 //1702 //628 +#define idx_tuinverlichting 695 //1715 //695 +#define idx_rooster 148 +#define idx_deurbel 906 +#define idx_deurbelstil 917 +#define idx_deurbelstil4 1268 +#define idx_alarm 1565 + +#define idx_datumtijd 1513 +#define idx_netatmo_woonkamer 450 +#define idx_netatmo_buiten 453 +#define idx_netatmo_regen 1564 +#define idx_weer_icon 1522 +#define idx_temp_min 1562 +#define idx_temp_max 1563 +#define idx_weer_text 1459 + +//Define Nextion elements +#define nex_datumtijd "txt_header.txt" +#define nex_temp_in "txt_temp_in.txt" +#define nex_hum_in "t0.txt" +#define nex_temp_out "txt_temp_out.txt" +#define nex_hum_out "t1.txt" +#define nex_temp_min "t10.txt" +#define nex_temp_max "t11.txt" +#define nex_baro "t2.txt" +#define nex_rain "t3.txt" +#define nex_rain_hour "t4.txt" +#define nex_weer_text "txt_weer.txt" + +//NexText txt_header = NexText(0, 14, "txt_header"); +//NexText txt_weer = NexText(0, 12, "txt_weer"); + +NexPicture pic_weer = NexPicture(0, 13, "pic_weer"); + +NexDSButton btn_1 = NexDSButton(0, 5, "btn_1"); +NexDSButton btn_2 = NexDSButton(0, 3, "btn_2"); +NexDSButton btn_3 = NexDSButton(0, 4, "btn_3"); +NexDSButton btn_4 = NexDSButton(0, 6, "btn_4"); +NexDSButton btn_5 = NexDSButton(0, 7, "btn_5"); + +char buffer[100] = {0}; + +//global veriables +//Page main +const char* datumtijd; +const char* weer_text; +int main_btn_staandelamp = 0; +int main_btn_tuinverlichting = 0; +int main_btn_hanglamp = 0; +int main_btn_haardverlichting = 0; +int main_btn_rooster = 1; +int main_btn_deurbelstil = 0; + +int alarm_sound = 0; + +int main_pic_weer; +float main_temp_in = 0; +float main_hum_in = 0; +float main_baro = 0; + +float main_temp_out = 0; +float main_hum_out = 0; +float main_temp_min = 0; +float main_temp_max = 0; + +float main_rain = 0; +float main_rain_hour = 0; + +NexTouch *nex_listen_list[] = +{ + &btn_1, &btn_2, &btn_3, &btn_4, &btn_5, + NULL +}; + +void setup_wifi() { + + delay(10); + // We start by connecting to a WiFi network +#ifdef DEBUG + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); +#endif + + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); +#ifdef DEBUG + Serial.print("."); +#endif + } + + randomSeed(micros()); + +#ifdef DEBUG + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +#endif +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { +#ifdef DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { +#ifdef DEBUG + Serial.println("connected"); +#endif + // Once connected, publish an announcement... + client.publish("outTopic", "hello world"); + // ... and resubscribe + client.subscribe("domoticz/out/example/display"); + } else { +#ifdef DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +void setup() { + + pinMode(BUZZER_PIN, OUTPUT); + digitalWrite(BUZZER_PIN, 0); + + pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output + +#ifdef DEBUG + Serial.begin(115200); +#endif + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(mqtt_callback); + + nexInit(); + /* Register the pop event callback function of the dual state button component. */ + btn_1.attachPop(btn_1_PopCallback, &btn_1); + btn_2.attachPop(btn_2_PopCallback, &btn_2); + btn_3.attachPop(btn_3_PopCallback, &btn_3); + btn_4.attachPop(btn_4_PopCallback, &btn_4); + btn_5.attachPop(btn_5_PopCallback, &btn_5); + + //X10 IR Receiver + x10ir.begin(); +} + +void loop() { + + nexLoop(nex_listen_list); + + if (!client.connected()) + { + reconnect(); + } + + client.loop(); + + if(alarm_sound == 1) + { + tone(BUZZER_PIN, 1000, 50); + delay(1000); + } + + long now = millis(); + if (now - lastMsg > 20000) + { + lastMsg = now; + ++value; + } +}