Browse Source

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

Thomas Buck 4 months ago
parent
commit
b44998dd8c
3 changed files with 39 additions and 10 deletions
  1. 1
    0
      include/ui.h
  2. 8
    0
      src/mqtt.cpp
  3. 30
    10
      src/ui.cpp

+ 1
- 0
include/ui.h View File

31
     bool light_amp;
31
     bool light_amp;
32
     bool light_box;
32
     bool light_box;
33
     enum bathroom_light_states bathroom_lights;
33
     enum bathroom_light_states bathroom_lights;
34
+    bool light_sink;
34
 };
35
 };
35
 
36
 
36
 extern struct ui_status ui_status;
37
 extern struct ui_status ui_status;

+ 8
- 0
src/mqtt.cpp View File

174
         }
174
         }
175
         prev_status.bathroom_lights = ui_status.bathroom_lights;
175
         prev_status.bathroom_lights = ui_status.bathroom_lights;
176
         ui_progress(UI_UPDATE);
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
 #endif // FEATURE_UI
182
 #endif // FEATURE_UI
179
 
183
 
247
         mqtt.subscribe("livingroom/workbench/cmnd/POWER");
251
         mqtt.subscribe("livingroom/workbench/cmnd/POWER");
248
         mqtt.subscribe("livingroom/amp/cmnd/POWER");
252
         mqtt.subscribe("livingroom/amp/cmnd/POWER");
249
         mqtt.subscribe("bathroom/force_light");
253
         mqtt.subscribe("bathroom/force_light");
254
+        mqtt.subscribe("livingroom/light_sink/cmnd/POWER");
250
 #endif // FEATURE_UI
255
 #endif // FEATURE_UI
251
     }
256
     }
252
 }
257
 }
321
             mqttPublish("bathroom/force_light", "none", true);
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
     prev_status = curr_status;
333
     prev_status = curr_status;
326
 }
334
 }

+ 30
- 10
src/ui.cpp View File

112
                 ui_status.light_workspace ? TFT_GREEN : TFT_RED);
112
                 ui_status.light_workspace ? TFT_GREEN : TFT_RED);
113
 
113
 
114
     // 3
114
     // 3
115
-    draw_button("Lights Kitchen",
115
+    draw_button("Lights Sink",
116
                 BTNS_OFF_X + BTN_W / 2,
116
                 BTNS_OFF_X + BTN_W / 2,
117
                 BTNS_OFF_Y + BTN_H / 2 + (BTN_H + BTN_GAP) * 2,
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
     // 4
120
     // 4
121
     draw_button("Sound Amp.",
121
     draw_button("Sound Amp.",
124
                 ui_status.sound_amplifier ? TFT_GREEN : TFT_RED);
124
                 ui_status.sound_amplifier ? TFT_GREEN : TFT_RED);
125
 
125
 
126
     // 5
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
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
131
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
129
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
132
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
130
                 TFT_MAGENTA);
133
                 TFT_MAGENTA);
143
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
146
                 BTNS_OFF_Y + BTN_H / 2 + BTN_H + BTN_GAP,
144
                 ui_status.light_bench ? TFT_GREEN : TFT_RED);
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
     // 4
155
     // 4
147
     draw_button("Lights Amp.",
156
     draw_button("Lights Amp.",
148
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
157
                 BTNS_OFF_X + BTN_W / 2 + BTN_W + BTN_GAP,
371
         } 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))) {
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
             // 3
381
             // 3
373
             if (ui_page == UI_LIVINGROOM1) {
382
             if (ui_page == UI_LIVINGROOM1) {
383
+                INVERT_BOOL(ui_status.light_sink);
384
+            } else if (ui_page == UI_LIVINGROOM2) {
374
                 INVERT_BOOL(ui_status.light_kitchen);
385
                 INVERT_BOOL(ui_status.light_kitchen);
375
             }
386
             }
376
             writeMQTT_UI();
387
             writeMQTT_UI();
387
         } 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))) {
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
             // 5
399
             // 5
389
             if (ui_page == UI_LIVINGROOM1) {
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
             } else if (ui_page == UI_LIVINGROOM2) {
417
             } else if (ui_page == UI_LIVINGROOM2) {
398
                 INVERT_BOOL(ui_status.light_box);
418
                 INVERT_BOOL(ui_status.light_box);
399
             } else if (ui_page == UI_BATHROOM) {
419
             } else if (ui_page == UI_BATHROOM) {

Loading…
Cancel
Save