Commit Graph

364 Commits

Author SHA1 Message Date
Maxim Prokhorov
f0f6f1b8c9 utils: simplify version + revision into just version 2021-01-04 06:05:04 +03:00
DmitryBlinov
5aeb24f263 garland: new module (#2408)
Port of https://github.com/Vasil-Pahomov/ArWs2812 from Arduino to ESP8266
Implementing garland of WS2812

Co-authored-by: Dmitry Blinov <dblinov@blackberry.com>
2020-12-24 17:44:59 +03:00
Maxim Prokhorov
aec13cef63 ntp: clean-up
resolve #2327, #2220

- remove legacy support in the webui
- format datetime strings on the device, use NTP panel to display them both
- migrate from the old ntpOffset + ntpDST + ntpRegion to ntpTZ
2020-09-30 11:41:18 +03:00
Max Prokhorov
d63228ef50 wifi: update to justwifi development version (#2347)
- support 32 byte hostname / ssid
- support 64 byte passphrase
- slightly reduce amount of memory allocations
- tweak initialization paths to call persistent(false) as early as possible
2020-09-10 01:05:02 +03:00
Max Prokhorov
d9cb35f781 sensor: streamline correction settings (#2265)
* wip

* template common operation

* more

* ui

* fix naming issues

* remove old constraints

* oops

* dummy sensor

* rearrange bmx280 magnitudes
2020-05-31 05:49:34 +03:00
Eric Chauvet
21e75bef51 Kingart curtain switch UI support (#2250)
* Completed kingart curtain switch support:
Added Web UI controls and view in status
Added power up behaviour (nothing, close, open, last position)
Added curtain style (Roller, etc...) for UI status and to be used in MQTT

* Checked commit before PR. Added html gulp static files generated.

* Corrected a code refactor error which make the MQTT messages not handling position from received messages. Added comment to debug tab to show how to enable debug

* Use the maximum compression for gzip. A byte is a byte :)

* Update code/espurna/curtain_kingart.cpp

Co-authored-by: Max Prokhorov <prokhorov.max@outlook.com>

* Variable name prefix update
Added public set position function and curtain count

* Added Scheduler new type : curtain

* Add curtain schedule support and correct the 12h bug when adding a slot (00:00 after refresh). Default Hour is 12h

* Code cleaning.
Schedule support.
Light support is having an issue with new schedules corrected here.

* I let do better by the specialists

* Curtain init statues

* Coding style corrections

* Removed debug stuff from now - will be back later with the right way

* rebuild webui

* revert 435f1c5e03 schHour default, rebuild ui

Co-authored-by: Eric Chauvet <eric.chauvet@test-tree.com>
Co-authored-by: Max Prokhorov <prokhorov.max@outlook.com>
2020-05-18 02:19:50 +03:00
Max Prokhorov
cae50fa544 sensor/emon: refactoring (#2213)
- Update sensor classes to support a generic way to store energy values
- Update sensor conversion code to deal with units and not magnitudes
- Add magnitude<->unit for sensors, generic way of defining used unit. Convert from sensor magnitude unit to the one used for display.
- Reset energy value based on index through external means (MQTT, HTTP)
- Rework energy timestamping, update webui with 'last saved' value

While this solves the energy conversion issues and we are finally seeing the real value, what I don't really like:
- KilowattHour and WattHour are separate enum tags, thus sort-of are different types altogether
- Conversion code in Energy object should probably use some generic 'ratio' calculation? (https://en.cppreference.com/w/cpp/numeric/ratio/ratio)
- We are still using runtime checks to do calculations and depend that sensor outputs only one specific value type.

Consider this a fix for energy display / storage and preliminary work on sensor.ino
Further sensor refactoring... soon.
2020-04-08 00:37:26 +03:00
Max Prokhorov
917ce8de83 Optional Web(UI) OTA (#2190)
* web: optional OTA support

* add prototype

* hide under websupport
2020-03-20 21:05:04 +03:00
Max Prokhorov
80825590a5 LED Updates (#2170)
* support GPIO setting in WebUI
* experimental led pattern support
* support loading settings in setup() (not yet fully working)
2020-03-13 07:01:14 +03:00
Max Prokhorov
ba3e6267e6 Button pin provider & runtime settings (#2162)
* wip

* cleanup buttons-through-serial code, remove hw mention from button module

* remove wip

* implement mqtt settings

* fixup struct members, dual no longer allocates debouncer

* add missing debounceevent lib

* fix missing event_handler, update names

* fix namespace

* drop lib

* fix int<->bool comparison

* Move gpio16 handling from DigitalPin to EventHandler

* Cleanup debounceevent headers

* Don't expect system headers to be included

* re 70b54c489f - no allocation, for real

* Adjust settings names

* dont retain by default

* unused

* typo

* Fix length type (ref 6017ad9474)

* Move pin class outside of debounce lib, lowercase ns

* move event handling inside of button_t

* refactor config. ..._MODE -> _CONFIG, ..._MODE_... -> ..._ACTION_...

* fix test

* naming

* move indexed value to header

* refactor actions into direct opts

* fix webui, fix buttons not respecting old user setting

* change button config format from bitmask to a struct, adjust settings conversion

* proxy some more header defautls, fix web kv

* gpiopin

* adjust webui func to support every setting

* clarify single-return event->string

* fix dual setting

* fix dual packet condition, de-duplicate funcs

* fix bogus warning
2020-03-13 04:42:40 +03:00
Sammy BAUER
f73917decc Configure Thingspeak URL at runtime (#2124)
* Permit thingspeak urn edit

* Update thinkspeak.ino

* Update index.html

* Replace Host, Port, and URL with Address in Thingspeak

* Create AsyncThingspeak object

Create AsyncThingspeak object to contain the url of the component.

* replace pointer by class member

Thingspeak class improvement to answer Max's question:
why use a pointer when it can be a class member?
So now address parameter isn't a pointer anymore.

* Update Thingspeak address on post
2020-02-09 01:15:27 +03:00
Max Prokhorov
ba3ec47ed0 NTP: use sntp app from lwip on latest Cores, replace ntpclientlib (#2132)
* ntp: try using sntp app from lwip, drop ntpclientlib

* fix display

* thermostat: fix day and month getters

* test build sizes with scheduler

* use system timers for once-a-minute scheduling, no polling

* tick

* avoid timestamps, use tm

* drop utc rpn operator, add utc_hour and utc_dow

* try to build with old implementation too

* dep

* notify ws

* progmem

* cleanup types

* offset tm values by 1 to match existing schedules

* avoid using ntpclientlib with rpn

* test. show debug strings in sch

* fix secureclient

* consts, fix unsyncing when changing tz (and not triggering sntp after reinit for some reason)

* startup time in seconds

* same delay as lwip

* header

* assume build timestamp is unixtime

* cache server value

* fmt

* typo

* handle dhcp request

* rename

* web

* TZ.h

* add notice about what alias means

* fix disabling NTP_SUPPORT

* scheduled ticker

* same behaviour as old module

* rollback rpn dependency check, utc_ prefixes

* ...

* comments, refactor naming
2020-02-04 06:17:40 +03:00
foxman69
e3887da8a0 WebUI: Fix scheduler panel tabindex= values (#2096)
* added data-settings-max value to html

* fixed: use the value and not the defenition of the function

* the schedules variable already starts from 0 not need to increment

* another misuse of function as variable
2020-01-13 14:33:28 +03:00
Max Prokhorov
43cf926468 ha: try to avoid conflict with useCSS (#2075) 2019-12-21 00:07:10 +03:00
Max Prokhorov
0f02256860 Small fixes (#2071)
* web: fix rfb node generator syntax, do not send as basic settings

* ha: allocate discovery object later
2019-12-19 00:56:29 +03:00
Max Prokhorov
8e7854b04e WebUI fix change detection of input elements (#1986)
- use setOriginalsFromValues function right after elements had changed and
**only** with those elements
- add checkbox handling to setOriginalsFromValues to match hasChanged
- apply hasChanged after value is set to refresh originals after saving
- change parts that already set 'original' attribute manually

This was sort-of broken, because original attr never worked as intended. 
Also fix possible OOM for large WebUI images, since sending full config each time means that we need more memory to buffer and parse it.
2019-12-18 17:45:51 +03:00
foxman69
5cf687ffc1 WebUI: Fixed small aesthetic problem (#2038)
* Fixed small esthetic problem

* Changed to legend
2019-12-09 09:22:51 +03:00
Max Prokhorov
15accf8090 web: check sch_last existence (#2050) 2019-12-09 07:40:36 +03:00
Max Prokhorov
849f8cf920 Rules RPN (#1984)
* RPN rules (WIP)

* RPN rules web interface, MQTT inputs

* Stickyness, rpn.ops,...

* Perform light updates only when value changes

* Improve wsSend performance

* Revert PR test

* Check TERMINAL_SUPPORT for _rpnInitCommands and remove unused variable

* Fix merge

* formatting

* disable by default (?)

* changelog

* comment

* remove debug function wrappers in favour of var activation

* fixup! comment
2019-11-10 07:01:50 +03:00
foxman69
4343457b9e Support restore last schedule (#1948)
* Added restore last schedule support

* Merged RestoreLastScheduleState function into the _schCheck function

* handle lights in restore action

* hide webui chbox when not using scheduler

* use settings instead of struct member, hide under ifdef scheduler_support

* relayLastSchedule uses SCHEDULER_RESTORE_LAST_SCHEDULE as default

* Changed all the variable names to be the same so there would be no confusions

* Fixed client side to create an array from relayLastschedule

* Fixed cosmetic issue with the toggle display in webui

* Fixed variable name and disabled comparison at the end

* Added another check if the switch type is light provider

* Changed variables naming

* Naming mistake
2019-11-06 14:25:42 +03:00
Xose Pérez
8b7eea6c72 ESPurna base image for Tuya Convert 2019-10-11 17:44:47 +02:00
Max Prokhorov
0bf07f166e web: update to jquery 3.4.1 and wheelcolorpicker 3.0.8 2019-09-07 12:37:31 +03:00
Max Prokhorov
d4311211ad Lock relay status on boot (#1705)
* relays: locked status

* remove debug

* Disable relay toggle when locked

* fixup! Disable relay toggle when locked

* Send lock with status, fix "disable" condition

* typo

* Update WebUI
2019-08-13 00:33:27 +03:00
copyrights
9ceca44770 Two channel CCT (#1732)
* add CCT support for 2 channel boards

* update webinterface description

* add 2 channel CCT to homeassistant and domoticz

* remove domoticz two channel cct support.
2019-05-27 02:47:58 +03:00
m-kozlowski
471a6387fb Separate device name for alexa integration (#1727)
Allow defining custom device name for alexa integration, other than hostname.
Still uses hostname as a fallback.
2019-05-23 06:22:18 +03:00
Max Prokhorov
193cebdbab RF/RFBRIDGE Update (#1693)
- remove optional RFRAW_SUPPORT
- enable module when RF_SUPPORT=1, optionally enable RCSwitch
- reorder ifdef checks to treat RFB_DIRECT and old RF_SUPPORT the same
- rename RF_PIN to RFB_RX_PIN
- depend on RF_SUPPORT instead of ITEAD_SONOFF_RFBRIDGE
- runtime TX & RX PIN setting
2019-05-08 23:57:18 +03:00
DmitryBlinov
bb33dfd102 Thermostat upgrade (#1711)
* Add "Enable Thermostat" switch

* Add heater/cooler thermostat mode
2019-05-02 01:06:14 +03:00
Xose Pérez
9c3a6e6548 Merge branch 'webui/switch-typo' of https://github.com/mcspr/espurna into mcspr-webui/switch-typo 2019-03-25 12:41:28 +01:00
Xose Pérez
f40b621637 Merge branch 'sync_first' of https://github.com/foxel/espurna into foxel-sync_first 2019-03-25 12:39:35 +01:00
Xose Pérez
5d5e9155e5 Merge pull request #1603 from ElderJoy/thermostat
Add thermostat module
2019-03-25 12:23:11 +01:00
Max Prokhorov
920c205d61 spaces 2019-03-23 06:41:55 +03:00
Xose Pérez
0987e01950 Allow to configure all LEDs from UI (#1429) 2019-03-21 22:31:11 +01:00
Dmitry Blinov
376205c9bb Merge branch 'dev' into thermostat
# Conflicts:
#	code/espurna/config/webui.h
#	code/espurna/data/index.all.html.gz
#	code/espurna/data/index.light.html.gz
#	code/espurna/data/index.rfbridge.html.gz
#	code/espurna/data/index.rfm69.html.gz
#	code/espurna/data/index.sensor.html.gz
#	code/espurna/data/index.small.html.gz
#	code/espurna/espurna.ino
#	code/espurna/static/index.all.html.gz.h
#	code/espurna/static/index.light.html.gz.h
#	code/espurna/static/index.rfbridge.html.gz.h
#	code/espurna/static/index.rfm69.html.gz.h
#	code/espurna/static/index.sensor.html.gz.h
#	code/espurna/static/index.small.html.gz.h
#	code/espurna/web.ino
#	code/gulpfile.js
#	code/html/index.html
2019-03-08 01:35:36 +02:00
Dmitry Blinov
ec39ac5c88 Fix conflicts:
1. Add thermostat to the espurna_modules in progmem.h
2. Add thermostat to webui, gulp, html, js.
3. in general.h MQTT_USE_JSON returned to 0 by default and 1 if thermostat enabled.
2019-03-08 01:02:11 +02:00
Andrey F. Kupreychik
bf705b282f SYNC_FIRST mode 2019-03-06 21:42:19 +07:00
Andrey F. Kupreychik
609e047f95 Merge remote-tracking branch 'xoseperez/dev' into lightfox-dual 2019-03-05 22:44:29 +07:00
Dmitry Blinov
af07494f00 Add thermostat module 2019-03-03 12:17:34 +02:00
Xose Pérez
c4aadd62d5 Merge pull request #1561 from mcspr/mqtt/group-receive-only
MQTT relay group: receive-only mode
2019-02-25 06:13:58 +01:00
Malachi Soord
c8231860ac [copyright-update] Update for 2019 2019-02-23 22:35:49 +01:00
Andrey F. Kupreychik
86bccaf74f Merge remote-tracking branch 'xoseperez/dev' into lightfox-dual 2019-02-22 11:51:56 +07:00
Max Prokhorov
65af8373cb Merge remote-tracking branch 'origin/dev' into mqtt/group-receive-only 2019-02-22 04:59:12 +03:00
Xose Pérez
c824d861cf Add note on WiFi tab about hostname (#1555) 2019-02-21 23:41:44 +01:00
Max Prokhorov
a53b66d55a Relay MQTT group sync mode setting 2019-02-20 08:36:26 +03:00
Xose Pérez
3b6c64c075 Merge pull request #1535 from mcspr/hass/stream-config
Print each HA config entry separately
2019-02-10 22:25:53 +01:00
Xose Pérez
e184128a77 Fix heartbeat dropdown size 2019-02-10 19:33:49 +01:00
Max Prokhorov
e1ddcc533c do html escaping on the client 2019-02-09 18:22:08 +03:00
Xose Pérez
f6b8baf37d Adding description field to web UI, reporting it via MQTT (#1523) 2019-02-08 17:08:40 +01:00
Martins Ierags
951cc77dfb Fixes regarding @xoseperez comments 2019-01-12 12:29:45 +02:00
Martins Ierags
465b5230ff Configure Heartbeat & option HEARTBEAT_REPEAT_STATUS:
- Heartbeat mode and interval configuration added to WebUI ADMIN page
- New option HEARTBEAT_REPEAT_STATUS: on device startup full heartbeat information and after HEARTBEAT_INTERVAL only STATUS report.
- Enhanced first heartbeat message - on device startup it will send heartbeat after ntpSynced will be true to get device time.

P.S. Code is tested. Web part is not compiled, and not tested. I hope it will work :)
2019-01-06 17:23:05 +02:00
Andrey F. Kupreychik
bcb36c1859 Merge remote-tracking branch 'xoseperez/dev' into lightfox-dual 2019-01-04 19:10:04 +07:00