Sfoglia il codice sorgente

add new kitchen sink lights and add wakeup option to all-off button.

Thomas Buck 4 mesi fa
parent
commit
b44998dd8c
3 ha cambiato i file con 39 aggiunte e 10 eliminazioni
  1. 1
    0
      include/ui.h
  2. 8
    0
      src/mqtt.cpp
  3. 30
    10
      src/ui.cpp

+ 1
- 0
include/ui.h Vedi File

@@ -31,6 +31,7 @@ struct ui_status {
31 31
     bool light_amp;
32 32
     bool light_box;
33 33
     enum bathroom_light_states bathroom_lights;
34
+    bool light_sink;
34 35
 };
35 36
 
36 37
 extern struct ui_status ui_status;

+ 8
- 0
src/mqtt.cpp Vedi File

@@ -174,6 +174,10 @@ static void mqttCallback(char* topic, byte* payload, unsigned int length) {
174 174
         }
175 175
         prev_status.bathroom_lights = ui_status.bathroom_lights;
176 176
         ui_progress(UI_UPDATE);
177
+    } else if (ts == "livingroom/light_sink/cmnd/POWER") {
178
+        ui_status.light_sink = state ? true : false;
179
+        prev_status.light_sink = ui_status.light_sink;
180
+        ui_progress(UI_UPDATE);
177 181
     }
178 182
 #endif // FEATURE_UI
179 183
 
@@ -247,6 +251,7 @@ static void mqttReconnect() {
247 251
         mqtt.subscribe("livingroom/workbench/cmnd/POWER");
248 252
         mqtt.subscribe("livingroom/amp/cmnd/POWER");
249 253
         mqtt.subscribe("bathroom/force_light");
254
+        mqtt.subscribe("livingroom/light_sink/cmnd/POWER");
250 255
 #endif // FEATURE_UI
251 256
     }
252 257
 }
@@ -321,6 +326,9 @@ void writeMQTT_UI(void) {
321 326
             mqttPublish("bathroom/force_light", "none", true);
322 327
         }
323 328
     }
329
+    if (curr_status.light_sink != prev_status.light_sink) {
330
+        mqttPublish("livingroom/light_sink/cmnd/POWER", curr_status.light_sink ? "on" : "off", true);
331
+    }
324 332
 
325 333
     prev_status = curr_status;
326 334
 }

+ 30
- 10
src/ui.cpp Vedi File

@@ -112,10 +112,10 @@ static void draw_livingroom1(void) {
112 112
                 ui_status.light_workspace ? TFT_GREEN : TFT_RED);
113 113
 
114 114
     // 3
115
-    draw_button("Lights Kitchen",
115
+    draw_button("Lights Sink",
116 116
                 BTNS_OFF_X + BTN_W / 2,
117 117
                 BTNS_OFF_Y + BTN_H / 2 + (BTN_H + BTN_GAP) * 2,
118
-                ui_status.light_kitchen ? TFT_GREEN : TFT_RED);
118
+                ui_status.light_sink ? TFT_GREEN : TFT_RED);
119 119
 
120 120
     // 4
121 121
     draw_button("Sound Amp.",
@@ -124,7 +124,10 @@ static void draw_livingroom1(void) {
124 124
                 ui_status.sound_amplifier ? TFT_GREEN : TFT_RED);
125 125
 
126 126
     // 5
127
-    draw_button("All Lights Off",
127
+    bool on = ui_status.light_corner || ui_status.light_sink || ui_status.light_workspace
128
+            || ui_status.light_amp || ui_status.light_bench || ui_status.light_box
129
+            || ui_status.light_kitchen || ui_status.light_pc;
130
+    draw_button(on ? "All Lights Off" : "Wake Up Lights",
128 131
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
129 132
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
130 133
                 TFT_MAGENTA);
@@ -143,6 +146,12 @@ static void draw_livingroom2(void) {
143 146
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
144 147
                 ui_status.light_bench ? TFT_GREEN : TFT_RED);
145 148
 
149
+    // 3
150
+    draw_button("Lights Kitchen",
151
+                BTNS_OFF_X + BTN_W / 2,
152
+                BTNS_OFF_Y + BTN_H / 2 + (BTN_H + BTN_GAP) * 2,
153
+                ui_status.light_kitchen ? TFT_GREEN : TFT_RED);
154
+
146 155
     // 4
147 156
     draw_button("Lights Amp.",
148 157
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
@@ -371,6 +380,8 @@ void ui_run(void) {
371 380
         } else if ((p.x >= BTNS_OFF_X) && (p.x <= BTNS_OFF_X + BTN_W) && (p.y >= (BTNS_OFF_Y + BTN_H * 2 + BTN_GAP * 2)) && (p.y <= (BTNS_OFF_Y + BTN_H * 2 + BTN_GAP * 2 + BTN_H))) {
372 381
             // 3
373 382
             if (ui_page == UI_LIVINGROOM1) {
383
+                INVERT_BOOL(ui_status.light_sink);
384
+            } else if (ui_page == UI_LIVINGROOM2) {
374 385
                 INVERT_BOOL(ui_status.light_kitchen);
375 386
             }
376 387
             writeMQTT_UI();
@@ -387,13 +398,22 @@ void ui_run(void) {
387 398
         } else if ((p.x >= BTNS_OFF_X + BTN_W + BTN_GAP) && (p.x <= BTNS_OFF_X + BTN_W + BTN_GAP + BTN_W) && (p.y >= (BTNS_OFF_Y + BTN_H + BTN_GAP)) && (p.y <= (BTNS_OFF_Y + BTN_H + BTN_GAP + BTN_H))) {
388 399
             // 5
389 400
             if (ui_page == UI_LIVINGROOM1) {
390
-                ui_status.light_amp = false;
391
-                ui_status.light_kitchen = false;
392
-                ui_status.light_bench= false;
393
-                ui_status.light_workspace = false;
394
-                ui_status.light_pc = false;
395
-                ui_status.light_corner = false;
396
-                ui_status.light_box = false;
401
+                bool on = ui_status.light_corner || ui_status.light_sink || ui_status.light_workspace
402
+                        || ui_status.light_amp || ui_status.light_bench || ui_status.light_box
403
+                        || ui_status.light_kitchen || ui_status.light_pc;
404
+                if (on) {
405
+                    ui_status.light_amp = false;
406
+                    ui_status.light_kitchen = false;
407
+                    ui_status.light_bench= false;
408
+                    ui_status.light_workspace = false;
409
+                    ui_status.light_pc = false;
410
+                    ui_status.light_corner = false;
411
+                    ui_status.light_box = false;
412
+                    ui_status.light_sink = false;
413
+                } else {
414
+                    ui_status.light_corner = true;
415
+                    ui_status.light_sink = true;
416
+                }
397 417
             } else if (ui_page == UI_LIVINGROOM2) {
398 418
                 INVERT_BOOL(ui_status.light_box);
399 419
             } else if (ui_page == UI_BATHROOM) {

Loading…
Annulla
Salva