Commit Graph

58 Commits

Author SHA1 Message Date
9dbf9be428 Simplify MQTT messaging
Simply add the entire mosquitto message as a JSON entity, not a string.
The simple case now looks like:
      "mqtt": [ {"topic": "/s/cmnd/5C:CF:7F:20:29:6E/Power", "message": "On"} ]

Sending an RPC to Mongoose OS looks like:
      "mqtt": [ {"topic": "esp32_XXXXXX/rpc/Button.Touch", "message": {"args": {"idx":0}}} ]
2018-01-02 00:20:15 +01:00
0ea78abf4c Add extra debounce delay in button presses. Trigger on button-up. 2018-01-02 00:19:37 +01:00
0dae252eb4 Add device_id to widget_name.c 2017-12-22 17:13:35 +01:00
ecf0a9a2fc Add tft.enable flag, gate the use of ILI9341/STMPE610 on it.
- For esp8266 (lightswitch w/o touchscreen), set tft.enable=false
- For esp32 (lightswitch w/ touchscreen), set it to true.

Clean up mos.yml flags per architecture type.
- Button is always 0,2
- Relay0 at 16 for ESP8266, as that's NodeMCU v2's onboard LED.
- Relay0 at 13 for ESP32, as that's Featherwing's onboard LED
2017-12-22 10:23:15 +01:00
44a84dd1bc Fix some compiler lint for esp8266 2017-12-21 22:38:23 +01:00
1cbd2130db Add lightswitch to this firmware 2017-12-20 17:04:51 +01:00
7ba19c8372 Make screen work at 480x320 as well as 320x240 2017-12-07 01:28:27 +01:00
7c3f699275 Make widgets span the get_screenWidth() value 2017-12-07 00:00:13 +01:00
84ff733bbb Call mgos_ili9341_set_rotation(); Reduce inactivity_timeout to 10s 2017-12-03 14:12:34 +01:00
84dfb7c516 Register prometheus callback only once 2017-12-02 23:49:53 +01:00
fae52bb543 Add MQTT buttons! 2017-12-02 23:34:16 +01:00
2b756cee3d Add 'mqtt' field -- a \001 delimited string of topics+messages to send 2017-12-02 21:29:42 +01:00
b8e5637c8b First start of MQTT buttons 2017-12-02 16:51:09 +01:00
c315de560f Fix non-void return in screen_widget_broadcast() 2017-12-02 15:33:56 +01:00
cda842da53 Implement EV_WIDGET_DRAW and call screen_widget_broadcast() on screen loads 2017-12-02 14:23:14 +01:00
f7a62fce48 Add screen_widget_broadcast() 2017-12-02 14:18:54 +01:00
ef4451b81f Initial stab at WIDGET_LOADSCREEN and navigation 2017-12-02 14:15:22 +01:00
980ac4c7cf Remove 'user_data' arg from widget_set_handler 2017-12-02 13:42:32 +01:00
5a283bd87f Set w->user_data to 'screen' for type=WIDGET_TYPE_LOADSCREEN 2017-12-02 13:37:00 +01:00
c3a71a9b69 Add widget_default_destroy() 2017-12-02 13:33:51 +01:00
4e1a9f4c2a Change images to DIFs for faster drawing 2017-12-02 12:22:14 +01:00
b9a0578d5b Allow app to compile for ESP8266 - add some conditionals based on mos.platform 2017-12-01 19:21:01 +01:00
95e2835871 Draw images as blue roundrects; Add labels to non-imagery widgets, if they are set 2017-12-01 16:16:57 +01:00
e7f674fa6f Show the use of multiple fonts 2017-12-01 15:43:03 +01:00
eab5f31a92 Move to Native SPI implementations of ILI9341 and STMPE610 2017-12-01 13:57:43 +01:00
5b80d88b86 Extend keepalive if the user is currently touching the screen -- this avoids the screen fading out on presses longer than the inactivity timeout 2017-11-28 15:58:46 +01:00
7041526a39 Small formatting changes; Set backlight on before SMTPE610 2017-11-28 15:32:54 +01:00
9fc40fd800 New implementation of backlight based on persistent keepalive timer, rather than oneshot timer 2017-11-28 15:32:27 +01:00
c35d959c1a Rewrite widget_battery_render() to assume full at 4100mV, clipping 'h' between [0,12] 2017-11-28 10:26:29 +01:00
801e4435ce Call battery 'full' at 4100mV 2017-11-28 09:01:13 +01:00
4b851ef144 Measured the MCU to shut off at 3500mV -- update widget_battery() to match what I saw 2017-11-28 07:02:33 +01:00
f87fec5ed0 Add battery calibration values 2017-11-27 23:14:17 +01:00
72f757a913 Add prometheus hook for battery voltage 2017-11-27 22:59:26 +01:00
4aa8c56f40 add widget_battery() which shows the LiPo state of charge 2017-11-27 22:36:38 +01:00
d07a0e053c Backlight support. TOUCH events feed backlight_keepalive(); After a timeout, we fade the backlight to 0 using timers. When the backlight is not active, TOUCH events are not passed to widgets, but the backlight is re-enabled; Add some flags to mos.yml to drive timeout and PWM pin for the backlight on Featherwing 2017-11-27 21:30:01 +01:00
ed9906a0bf Move to RoundRect() -- draw RED on TOUCH_DOWN, GREEN on TOUCH_UP 2017-11-26 22:23:35 +01:00
ed98d2de7c Trigger draw on TOUCH_UP 2017-11-26 22:13:49 +01:00
25cad76432 Move to PNG imagery 2017-11-26 21:04:58 +01:00
d5e01dedd2 Simplify screen: make it absolute and fill the whole TFT 2017-11-26 20:07:26 +01:00
3cb5fc18e7 add widget_ev_to_str(); Pass 'ed' through to EV_WIDGET_TOUCH_{UP,DOWN} calls 2017-11-26 19:27:57 +01:00
e826324244 Plumb default_widget_handler and default_user_data for widgets read from JSON/File 2017-11-26 19:06:44 +01:00
fda8b332db Add 'type', 'label', rename 'icon' to 'img' in widget 2017-11-26 18:41:17 +01:00
c6f5fc3b8f Fix use-after-free bug 2017-11-26 18:06:17 +01:00
fb7e2a650d Allow screen to be seen by other files (needed by widget_name.c) 2017-11-26 17:32:29 +01:00
5f07481d22 Do not destroy on TIMER/TOUCH_{UP,DOWN} 2017-11-26 17:32:00 +01:00
82c9999138 Add WIDGET_NAME_SCREEN; Fix null deref in WIDGET_NAME_SSID 2017-11-26 17:31:24 +01:00
ddb026217a Avoid calling widgets without handlers 2017-11-26 17:14:11 +01:00
63f1088e7a Call EV_WIDGET_CREATE upon first installing of set_handler() 2017-11-26 16:25:05 +01:00
64af496314 Factor out widget_set_{handler,timer}() from app 2017-11-26 16:10:51 +01:00
83b0d346ae Add unit tests that catch invalid 'screen' and 'widget' JSON data. 2017-11-26 16:01:08 +01:00