2017-05-13 12:02:10 +01:00
/*
2019-10-27 10:13:24 +00:00
settings . h - setting variables for Tasmota
2017-05-13 12:02:10 +01:00
2019-12-31 13:23:34 +00:00
Copyright ( C ) 2020 Theo Arends
2017-05-13 12:02:10 +01:00
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
2017-02-19 16:49:17 +00:00
2017-10-18 17:22:34 +01:00
# ifndef _SETTINGS_H_
# define _SETTINGS_H_
2019-03-31 10:59:04 +01:00
const uint8_t PARAM8_SIZE = 18 ; // Number of param bytes (SetOption)
2017-06-16 13:33:49 +01:00
2018-08-28 16:34:51 +01:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
2017-06-06 22:23:23 +01:00
uint32_t data ; // Allow bit manipulation using SetOption
2018-07-03 11:48:56 +01:00
struct { // SetOption0 .. SetOption31
2019-03-01 14:37:22 +00:00
uint32_t save_state : 1 ; // bit 0 - SetOption0 - Save power state and use after restart
uint32_t button_restrict : 1 ; // bit 1 - SetOption1 - Control button multipress
2019-10-22 17:34:41 +01:00
uint32_t ex_value_units : 1 ; // bit 2 - SetOption2 - Add units to JSON status messages - removed 6.6.0.21
2019-11-03 11:33:36 +00:00
uint32_t mqtt_enabled : 1 ; // bit 3 - SetOption3 - Enable MQTT
2019-03-01 14:37:22 +00:00
uint32_t mqtt_response : 1 ; // bit 4 - SetOption4 - Switch between MQTT RESULT or COMMAND
uint32_t mqtt_power_retain : 1 ; // bit 5 - CMND_POWERRETAIN
uint32_t mqtt_button_retain : 1 ; // bit 6 - CMND_BUTTONRETAIN
uint32_t mqtt_switch_retain : 1 ; // bit 7 - CMND_SWITCHRETAIN
uint32_t temperature_conversion : 1 ; // bit 8 - SetOption8 - Switch between Celsius or Fahrenheit
uint32_t mqtt_sensor_retain : 1 ; // bit 9 - CMND_SENSORRETAIN
uint32_t mqtt_offline : 1 ; // bit 10 - SetOption10 - Control MQTT LWT message format
uint32_t button_swap : 1 ; // bit 11 (v5.1.6) - SetOption11 - Swap button single and double press functionality
uint32_t stop_flash_rotate : 1 ; // bit 12 (v5.2.0) - SetOption12 - Switch between dynamic or fixed slot flash save location
uint32_t button_single : 1 ; // bit 13 (v5.4.0) - SetOption13 - Support only single press to speed up button press recognition
2019-11-03 11:33:36 +00:00
uint32_t interlock : 1 ; // bit 14 (v5.6.0) - CMND_INTERLOCK - Enable/disable interlock
2019-03-01 14:37:22 +00:00
uint32_t pwm_control : 1 ; // bit 15 (v5.8.1) - SetOption15 - Switch between commands PWM or COLOR/DIMMER/CT/CHANNEL
uint32_t ws_clock_reverse : 1 ; // bit 16 (v5.8.1) - SetOption16 - Switch between clockwise or counter-clockwise
2019-11-03 11:33:36 +00:00
uint32_t decimal_text : 1 ; // bit 17 (v5.8.1) - SetOption17 - Switch between decimal or hexadecimal output (0 = hexadecimal, 1 = decimal)
2019-03-01 14:37:22 +00:00
uint32_t light_signal : 1 ; // bit 18 (v5.10.0c) - SetOption18 - Pair light signal with CO2 sensor
2020-11-03 13:34:02 +00:00
uint32_t hass_discovery : 1 ; // bit 19 (v5.11.1a) - SetOption19 - Control Home Assistant automatic discovery (See SetOption59)
2019-03-01 14:37:22 +00:00
uint32_t not_power_linked : 1 ; // bit 20 (v5.11.1f) - SetOption20 - Control power in relation to Dimmer/Color/Ct changes
uint32_t no_power_on_check : 1 ; // bit 21 (v5.11.1i) - SetOption21 - Show voltage even if powered off
uint32_t mqtt_serial : 1 ; // bit 22 (v5.12.0f) - CMND_SERIALSEND and CMND_SERIALLOG
uint32_t mqtt_serial_raw : 1 ; // bit 23 (v6.1.1c) - CMND_SERIALSEND3
uint32_t pressure_conversion : 1 ; // bit 24 (v6.3.0.2) - SetOption24 - Switch between hPa or mmHg pressure unit
uint32_t knx_enabled : 1 ; // bit 25 (v5.12.0l) - CMND_KNX_ENABLED
uint32_t device_index_enable : 1 ; // bit 26 (v5.13.1a) - SetOption26 - Switch between POWER or POWER1
uint32_t knx_enable_enhancement : 1 ; // bit 27 (v5.14.0a) - CMND_KNX_ENHANCED
2019-11-03 11:33:36 +00:00
uint32_t rf_receive_decimal : 1 ; // bit 28 (v6.0.0a) - SetOption28 - RF receive data format (0 = hexadecimal, 1 = decimal)
uint32_t ir_receive_decimal : 1 ; // bit 29 (v6.0.0a) - SetOption29 - IR receive data format (0 = hexadecimal, 1 = decimal)
2019-03-01 14:37:22 +00:00
uint32_t hass_light : 1 ; // bit 30 (v6.0.0b) - SetOption30 - Enforce HAss autodiscovery as light
uint32_t global_state : 1 ; // bit 31 (v6.1.0) - SetOption31 - Control link led blinking
2017-05-11 16:47:34 +01:00
} ;
2017-10-18 17:22:34 +01:00
} SysBitfield ;
2017-05-03 17:19:13 +01:00
2018-08-28 16:34:51 +01:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
2017-11-11 11:33:30 +00:00
uint32_t data ; // Allow bit manipulation using SetOption
2018-07-03 11:48:56 +01:00
struct { // SetOption50 .. SetOption81
2019-03-01 14:37:22 +00:00
uint32_t timers_enable : 1 ; // bit 0 (v6.1.1b) - CMND_TIMERS
uint32_t user_esp8285_enable : 1 ; // bit 1 (v6.1.1.14) - SetOption51 - Enable ESP8285 user GPIO's
uint32_t time_append_timezone : 1 ; // bit 2 (v6.2.1.2) - SetOption52 - Append timezone to JSON time
uint32_t gui_hostname_ip : 1 ; // bit 3 (v6.2.1.20) - SetOption53 - Show hostanme and IP address in GUI main menu
uint32_t tuya_apply_o20 : 1 ; // bit 4 (v6.3.0.4) - SetOption54 - Apply SetOption20 settings to Tuya device
uint32_t mdns_enabled : 1 ; // bit 5 (v6.4.1.4) - SetOption55 - Control mDNS service
uint32_t use_wifi_scan : 1 ; // bit 6 (v6.3.0.10) - SetOption56 - Scan wifi network at restart for configured AP's
uint32_t use_wifi_rescan : 1 ; // bit 7 (v6.3.0.10) - SetOption57 - Scan wifi network every 44 minutes for configured AP's
uint32_t receive_raw : 1 ; // bit 8 (v6.3.0.11) - SetOption58 - Add IR Raw data to JSON message
uint32_t hass_tele_on_power : 1 ; // bit 9 (v6.3.0.13) - SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT
2018-12-01 17:53:42 +00:00
uint32_t sleep_normal : 1 ; // bit 10 (v6.3.0.15) - SetOption60 - Enable normal sleep instead of dynamic sleep
2019-01-07 15:43:03 +00:00
uint32_t button_switch_force_local : 1 ; // bit 11 (v6.3.0.16) - SetOption61 - Force local operation when button/switch topic is set
2019-02-21 20:27:52 +00:00
uint32_t no_hold_retain : 1 ; // bit 12 (v6.4.1.19) - SetOption62 - Don't use retain flag on HOLD messages
2019-04-18 15:24:46 +01:00
uint32_t no_power_feedback : 1 ; // bit 13 (v6.5.0.9) - SetOption63 - Don't scan relay power state at restart
2019-05-17 13:23:21 +01:00
uint32_t use_underscore : 1 ; // bit 14 (v6.5.0.12) - SetOption64 - Enable "_" instead of "-" as sensor index separator
2019-10-18 14:18:39 +01:00
uint32_t fast_power_cycle_disable : 1 ; // bit 15 (v6.6.0.20) - SetOption65 - Disable fast power cycle detection for device reset
2019-10-28 12:36:04 +00:00
uint32_t tuya_serial_mqtt_publish : 1 ; // bit 16 (v6.6.0.21) - SetOption66 - Enable TuyaMcuReceived messages over Mqtt
2019-07-14 14:23:02 +01:00
uint32_t buzzer_enable : 1 ; // bit 17 (v6.6.0.1) - SetOption67 - Enable buzzer when available
2019-08-07 11:08:13 +01:00
uint32_t pwm_multi_channels : 1 ; // bit 18 (v6.6.0.3) - SetOption68 - Enable multi-channels PWM instead of Color PWM
2019-10-28 12:36:04 +00:00
uint32_t ex_tuya_dimmer_min_limit : 1 ; // bit 19 (v6.6.0.5) - SetOption69 - Limits Tuya dimmers to minimum of 10% (25) when enabled.
2019-08-27 16:01:12 +01:00
uint32_t energy_weekend : 1 ; // bit 20 (v6.6.0.8) - CMND_TARIFF
2019-10-02 10:24:51 +01:00
uint32_t dds2382_model : 1 ; // bit 21 (v6.6.0.14) - SetOption71 - Select different Modbus registers for Active Energy (#6531)
2019-11-03 12:51:22 +00:00
uint32_t hardware_energy_total : 1 ; // bit 22 (v6.6.0.15) - SetOption72 - Enable hardware energy total counter as reference (#6561)
2020-04-16 13:59:01 +01:00
uint32_t mqtt_buttons : 1 ; // bit 23 (v8.2.0.3) - SetOption73 - Detach buttons from relays and enable MQTT action state for multipress
2020-04-14 15:51:00 +01:00
uint32_t ds18x20_internal_pullup : 1 ; // bit 24 (v7.0.0.1) - SetOption74 - Enable internal pullup for single DS18x20 sensor
2019-10-31 16:24:06 +00:00
uint32_t grouptopic_mode : 1 ; // bit 25 (v7.0.0.1) - SetOption75 - GroupTopic replaces %topic% (0) or fixed topic cmnd/grouptopic (1)
2019-11-15 10:50:41 +00:00
uint32_t bootcount_update : 1 ; // bit 26 (v7.0.0.4) - SetOption76 - Enable incrementing bootcount when deepsleep is enabled
2019-11-29 12:11:35 +00:00
uint32_t slider_dimmer_stay_on : 1 ; // bit 27 (v7.0.0.6) - SetOption77 - Do not power off if slider moved to far left
2019-12-20 17:24:20 +00:00
uint32_t compatibility_check : 1 ; // bit 28 (v7.1.2.6) - SetOption78 - Disable OTA compatibility check
2019-12-28 14:47:30 +00:00
uint32_t counter_reset_on_tele : 1 ; // bit 29 (v8.1.0.1) - SetOption79 - Enable resetting of counters after telemetry was sent
2019-10-01 15:33:39 +01:00
uint32_t shutter_mode : 1 ; // bit 30 (v6.6.0.14) - SetOption80 - Enable shutter support
uint32_t pcf8574_ports_inverted : 1 ; // bit 31 (v6.6.0.14) - SetOption81 - Invert all ports on PCF8574 devices
2018-07-03 11:48:56 +01:00
} ;
} SysBitfield3 ;
2019-10-31 11:12:48 +00:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
uint32_t data ; // Allow bit manipulation using SetOption
struct { // SetOption82 .. SetOption113
2020-01-17 23:02:01 +00:00
uint32_t alexa_ct_range : 1 ; // bit 0 (v8.1.0.2) - SetOption82 - Reduced CT range for Alexa
2020-01-26 22:08:52 +00:00
uint32_t zigbee_use_names : 1 ; // bit 1 (v8.1.0.4) - SetOption83 - Use FriendlyNames instead of ShortAddresses when possible
uint32_t awsiot_shadow : 1 ; // bit 2 (v8.1.0.5) - SetOption84 - (AWS IoT) publish MQTT state to a device shadow
2020-02-24 15:47:41 +00:00
uint32_t device_groups_enabled : 1 ; // bit 3 (v8.1.0.9) - SetOption85 - Enable Device Groups
2020-02-27 14:10:42 +00:00
uint32_t led_timeout : 1 ; // bit 4 (v8.1.0.9) - SetOption86 - PWM Dimmer Turn brightness LED's off 5 seconds after last change
uint32_t powered_off_led : 1 ; // bit 5 (v8.1.0.9) - SetOption87 - PWM Dimmer Turn red LED on when powered off
2020-08-09 16:16:15 +01:00
uint32_t multiple_device_groups : 1 ; // bit 6 (v8.1.0.9) - SetOption88 - Enable relays in separate device groups/PWM Dimmer Buttons control remote devices
2020-03-04 20:00:57 +00:00
uint32_t zigbee_distinct_topics : 1 ; // bit 7 (v8.1.0.10) - SetOption89 - Distinct MQTT topics per device for Zigbee (#7835)
2020-04-01 13:05:30 +01:00
uint32_t only_json_message : 1 ; // bit 8 (v8.2.0.3) - SetOption90 - Disable non-json MQTT response
2020-04-06 09:46:17 +01:00
uint32_t fade_at_startup : 1 ; // bit 9 (v8.2.0.3) - SetOption91 - Enable light fading at start/power on
2020-04-28 10:09:56 +01:00
uint32_t pwm_ct_mode : 1 ; // bit 10 (v8.2.0.4) - SetOption92 - Set PWM Mode from regular PWM to ColorTemp control (Xiaomi Philips ...)
2020-05-08 18:33:20 +01:00
uint32_t compress_rules_cpu : 1 ; // bit 11 (v8.2.0.6) - SetOption93 - Keep uncompressed rules in memory to avoid CPU load of uncompressing at each tick
2020-06-03 07:09:28 +01:00
uint32_t max6675 : 1 ; // bit 12 (v8.3.1.2) - SetOption94 - Implement simpler MAX6675 protocol instead of MAX31855
2020-06-15 17:27:04 +01:00
uint32_t network_wifi : 1 ; // bit 13 (v8.3.1.3) - CMND_WIFI
2020-07-02 17:13:14 +01:00
uint32_t network_ethernet : 1 ; // bit 14 (v8.3.1.3) - CMND_ETHERNET
2020-06-29 15:01:55 +01:00
uint32_t tuyamcu_baudrate : 1 ; // bit 15 (v8.3.1.6) - SetOption97 - Set Baud rate for TuyaMCU serial communication (0 = 9600 or 1 = 115200)
2020-07-02 17:13:14 +01:00
uint32_t rotary_uses_rules : 1 ; // bit 16 (v8.3.1.6) - SetOption98 - Use rules instead of light control
2020-07-19 14:57:37 +01:00
uint32_t zerocross_dimmer : 1 ; // bit 17 (v8.3.1.4) - SetOption99 - Enable zerocross dimmer on PWM DIMMER
uint32_t remove_zbreceived : 1 ; // bit 18 (v8.3.1.7) - SetOption100 - Remove ZbReceived form JSON message
2020-07-20 18:30:32 +01:00
uint32_t zb_index_ep : 1 ; // bit 19 (v8.3.1.7) - SetOption101 - Add the source endpoint as suffix to attributes, ex `Power3` instead of `Power` if sent from endpoint 3
2020-08-11 18:57:39 +01:00
uint32_t teleinfo_baudrate : 1 ; // bit 20 (v8.4.0.1) - SetOption102 - Set Baud rate for Teleinfo communication (0 = 1200 or 1 = 9600)
2020-08-14 18:55:39 +01:00
uint32_t mqtt_tls : 1 ; // bit 21 (v8.4.0.1) - SetOption103 - Enable TLS mode (requires TLS version)
uint32_t mqtt_no_retain : 1 ; // bit 22 (v8.4.0.1) - SetOption104 - No Retain - disable all MQTT retained messages, some brokers don't support it: AWS IoT, Losant
uint32_t white_blend_mode : 1 ; // bit 23 (v8.4.0.1) - SetOption105 - White Blend Mode - used to be `RGBWWTable` last value `0`, now deprecated in favor of this option
uint32_t virtual_ct : 1 ; // bit 24 (v8.4.0.1) - SetOption106 - Virtual CT - Creates a virtual White ColorTemp for RGBW lights
uint32_t virtual_ct_cw : 1 ; // bit 25 (v8.4.0.1) - SetOption107 - Virtual CT Channel - signals whether the hardware white is cold CW (true) or warm WW (false)
2020-08-27 17:54:53 +01:00
uint32_t teleinfo_rawdata : 1 ; // bit 26 (v8.4.0.2) - SetOption108 - enable Teleinfo + Tasmota Energy device (0) or Teleinfo raw data only (1)
uint32_t alexa_gen_1 : 1 ; // bit 27 (v8.4.0.3) - SetOption109 - Alexa gen1 mode - if you only have Echo Dot 2nd gen devices
2020-09-12 09:57:54 +01:00
uint32_t zb_disable_autobind : 1 ; // bit 28 (v8.5.0.1) - SetOption110 - disable Zigbee auto-config when pairing new devices
2020-09-15 08:40:36 +01:00
uint32_t buzzer_freq_mode : 1 ; // bit 29 (v8.5.0.1) - SetOption111 - Use frequency output for buzzer pin instead of on/off signal
2020-09-19 12:43:14 +01:00
uint32_t zb_topic_fname : 1 ; // bit 30 (v8.5.0.1) - SetOption112 - Use friendly name in zigbee topic (use with SetOption89)
2020-10-25 11:59:24 +00:00
uint32_t rotary_poweron_dimlow : 1 ; // bit 31 (v9.0.0.2) - SetOption113 - Set dimmer low on rotary dial after power off
2019-10-31 11:12:48 +00:00
} ;
} SysBitfield4 ;
2020-08-13 15:49:11 +01:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
uint32_t data ; // Allow bit manipulation using SetOption
struct { // SetOption114 .. SetOption145
2020-11-14 12:34:39 +00:00
uint32_t mqtt_switches : 1 ; // bit 0 (v9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes
uint32_t mi32_enable : 1 ; // bit 1 (v9.1.0.1) - SetOption115 - Enable ESP32 MI32 BLE
uint32_t zb_disable_autoquery : 1 ; // bit 2 (v9.1.0.1) - SetOption116 - Disable auto-query of zigbee lights and devices
2020-08-13 15:49:11 +01:00
uint32_t spare03 : 1 ; // bit 3
uint32_t spare04 : 1 ; // bit 4
uint32_t spare05 : 1 ; // bit 5
uint32_t spare06 : 1 ; // bit 6
uint32_t spare07 : 1 ; // bit 7
uint32_t spare08 : 1 ; // bit 8
uint32_t spare09 : 1 ; // bit 9
uint32_t spare10 : 1 ; // bit 10
uint32_t spare11 : 1 ; // bit 11
uint32_t spare12 : 1 ; // bit 12
uint32_t spare13 : 1 ; // bit 13
uint32_t spare14 : 1 ; // bit 14
uint32_t spare15 : 1 ; // bit 15
uint32_t spare16 : 1 ; // bit 16
uint32_t spare17 : 1 ; // bit 17
uint32_t spare18 : 1 ; // bit 18
uint32_t spare19 : 1 ; // bit 19
uint32_t spare20 : 1 ; // bit 20
uint32_t spare21 : 1 ; // bit 21
uint32_t spare22 : 1 ; // bit 22
uint32_t spare23 : 1 ; // bit 23
uint32_t spare24 : 1 ; // bit 24
uint32_t spare25 : 1 ; // bit 25
uint32_t spare26 : 1 ; // bit 26
uint32_t spare27 : 1 ; // bit 27
uint32_t spare28 : 1 ; // bit 28
uint32_t spare29 : 1 ; // bit 29
uint32_t spare30 : 1 ; // bit 30
uint32_t spare31 : 1 ; // bit 31
} ;
} SysBitfield5 ;
2018-07-03 11:48:56 +01:00
typedef union {
uint32_t data ; // Allow bit manipulation
2017-11-11 11:33:30 +00:00
struct {
uint32_t spare00 : 1 ;
2020-03-02 13:00:57 +00:00
uint32_t speed_conversion : 3 ; // (v8.1.0.10) - Tx2x sensor
uint32_t time_format : 2 ; // (v6.6.0.9) - CMND_TIME
2018-11-27 00:16:09 +00:00
uint32_t calc_resolution : 3 ;
2018-10-08 13:39:36 +01:00
uint32_t weight_resolution : 2 ;
2018-09-07 17:15:47 +01:00
uint32_t frequency_resolution : 2 ;
2018-07-28 16:25:42 +01:00
uint32_t axis_resolution : 2 ;
2017-11-11 11:33:30 +00:00
uint32_t current_resolution : 2 ;
uint32_t voltage_resolution : 2 ;
uint32_t wattage_resolution : 2 ;
uint32_t emulation : 2 ;
uint32_t energy_resolution : 3 ;
uint32_t pressure_resolution : 2 ;
uint32_t humidity_resolution : 2 ;
uint32_t temperature_resolution : 2 ;
} ;
} SysBitfield2 ;
2018-05-13 17:54:21 +01:00
typedef union {
uint16_t data ;
struct {
uint16_t hemis : 1 ; // bit 0 = 0=Northern, 1=Southern Hemisphere (=Opposite DST/STD)
uint16_t week : 3 ; // bits 1 - 3 = 0=Last week of the month, 1=First, 2=Second, 3=Third, 4=Fourth
uint16_t month : 4 ; // bits 4 - 7 = 1=Jan, 2=Feb, ... 12=Dec
uint16_t dow : 3 ; // bits 8 - 10 = day of week, 1=Sun, 2=Mon, ... 7=Sat
uint16_t hour : 5 ; // bits 11 - 15 = 0-23
} ;
} TimeRule ;
2018-03-23 16:20:20 +00:00
typedef union {
uint32_t data ;
struct {
2018-04-18 16:28:45 +01:00
uint32_t time : 11 ; // bits 0 - 10 = minutes in a day
uint32_t window : 4 ; // bits 11 - 14 = minutes random window
uint32_t repeat : 1 ; // bit 15
uint32_t days : 7 ; // bits 16 - 22 = week day mask
uint32_t device : 4 ; // bits 23 - 26 = 16 devices
uint32_t power : 2 ; // bits 27 - 28 = 4 power states - Off, On, Toggle, Blink or Rule
2018-04-25 16:27:40 +01:00
uint32_t mode : 2 ; // bits 29 - 30 = timer modes - 0 = Scheduler, 1 = Sunrise, 2 = Sunset
2018-04-18 16:28:45 +01:00
uint32_t arm : 1 ; // bit 31
2018-03-23 16:20:20 +00:00
} ;
} Timer ;
2020-05-08 16:17:09 +01:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
uint32_t data ;
struct {
uint32_t stream : 1 ;
uint32_t mirror : 1 ;
uint32_t flip : 1 ;
uint32_t spare3 : 1 ;
uint32_t spare4 : 1 ;
uint32_t spare5 : 1 ;
uint32_t spare6 : 1 ;
uint32_t spare7 : 1 ;
uint32_t spare8 : 1 ;
uint32_t spare9 : 1 ;
uint32_t spare10 : 1 ;
uint32_t spare11 : 1 ;
uint32_t spare12 : 1 ;
uint32_t spare13 : 1 ;
uint32_t spare14 : 1 ;
uint32_t spare15 : 1 ;
uint32_t spare16 : 1 ;
uint32_t spare17 : 1 ;
uint32_t spare18 : 1 ;
uint32_t contrast : 3 ;
uint32_t brightness : 3 ;
uint32_t saturation : 3 ;
uint32_t resolution : 4 ;
} ;
} WebCamCfg ;
2018-07-02 09:22:01 +01:00
typedef union {
2018-08-21 21:12:40 +01:00
uint16_t data ;
2018-07-02 09:22:01 +01:00
struct {
2018-08-21 21:43:56 +01:00
uint16_t pinmode : 3 ; // Pin mode (1 through 6)
uint16_t pullup : 1 ; // Enable internal weak pull-up resistor
uint16_t saved_state : 1 ; // Save output state, if used.
uint16_t int_report_mode : 2 ; // Interrupt reporting mode 0 = immediate telemetry & event, 1 = immediate event only, 2 = immediate telemetry only
uint16_t int_report_defer : 4 ; // Number of interrupts to ignore until reporting (default 0, max 15)
2018-08-25 20:15:41 +01:00
uint16_t int_count_en : 1 ; // Enable interrupt counter for this pin
2018-12-06 22:55:44 +00:00
uint16_t int_retain_flag : 1 ; // Report if interrupt occured for pin in next teleperiod
2018-08-21 21:43:56 +01:00
uint16_t spare13 : 1 ;
uint16_t spare14 : 1 ;
uint16_t spare15 : 1 ;
2018-07-02 09:22:01 +01:00
} ;
} Mcp230xxCfg ;
2019-02-01 16:46:37 +00:00
typedef union {
uint8_t data ;
struct {
uint8_t spare0 : 1 ;
uint8_t spare1 : 1 ;
2020-06-01 17:00:56 +01:00
uint8_t bh1750_2_resolution : 2 ;
uint8_t bh1750_1_resolution : 2 ; // Sensor10 1,2,3
2019-09-22 11:53:15 +01:00
uint8_t hx711_json_weight_change : 1 ; // Sensor34 8,x - Enable JSON message on weight change
2019-02-01 16:46:37 +00:00
uint8_t mhz19b_abc_disable : 1 ; // Disable ABC (Automatic Baseline Correction for MHZ19(B) (0 = Enabled (default), 1 = Disabled with Sensor15 command)
} ;
} SensorCfg1 ;
2019-02-11 18:21:49 +00:00
2020-10-02 18:40:45 +01:00
typedef union {
uint8_t data ;
struct {
uint8_t pwm_count : 3 ; // Number of PWMs to use for light
uint8_t spare3 : 1 ;
uint8_t spare4 : 1 ;
uint8_t spare5 : 1 ;
uint8_t spare6 : 1 ;
uint8_t spare7 : 1 ;
} ;
} PWMDimmerCfg ;
2020-04-11 00:48:37 +01:00
typedef union {
uint8_t data ;
2020-04-12 11:35:58 +01:00
struct {
2020-04-11 00:48:37 +01:00
uint8_t nf_autotune : 1 ; // Autotune the NF Noise Level
2020-04-12 11:35:58 +01:00
uint8_t dist_autotune : 1 ; // Autotune Disturber on/off
2020-09-03 08:37:10 +01:00
uint8_t nf_autotune_both : 1 ; // Autotune over both Areas: INDOORS/OUDOORS
2020-04-11 00:48:37 +01:00
uint8_t mqtt_only_Light_Event : 1 ; // mqtt only if lightning Irq
2020-09-03 08:37:10 +01:00
uint8_t suppress_irq_no_Event : 1 ; // suppress mqtt "IRQ with no Event". (Chip Bug)
2020-04-11 00:48:37 +01:00
uint8_t spare5 : 1 ;
uint8_t spare6 : 1 ;
uint8_t spare7 : 1 ;
} ;
} As3935IntCfg ;
typedef union {
uint16_t data ;
2020-04-12 11:35:58 +01:00
struct {
2020-04-11 00:48:37 +01:00
uint16_t nf_autotune_time : 4 ; // NF Noise Autotune Time
2020-04-12 11:35:58 +01:00
uint16_t dist_autotune_time : 4 ; // Disturber Autotune Time
2020-04-11 00:48:37 +01:00
uint16_t nf_autotune_min : 4 ; // Min Stages
uint16_t spare3 : 4 ;
} ;
} As3935Param ;
2019-08-25 13:58:45 +01:00
typedef struct {
uint32_t usage1_kWhtotal ;
2019-09-20 11:59:34 +01:00
uint32_t usage2_kWhtotal ;
2019-08-25 13:58:45 +01:00
uint32_t return1_kWhtotal ;
uint32_t return2_kWhtotal ;
uint32_t last_return_kWhtotal ;
2019-09-20 11:59:34 +01:00
uint32_t last_usage_kWhtotal ;
2019-08-25 13:58:45 +01:00
} EnergyUsage ;
2020-04-16 13:59:01 +01:00
typedef struct {
2019-09-03 11:23:44 +01:00
uint8_t fnid = 0 ;
uint8_t dpid = 0 ;
} TuyaFnidDpidMap ;
2019-12-22 15:53:51 +00:00
const uint32_t settings_text_size = 699 ; // Settings.text_pool[size] = Settings.display_model (2D2) - Settings.text_pool (017)
2019-09-03 11:23:44 +01:00
const uint8_t MAX_TUYA_FUNCTIONS = 16 ;
2020-04-19 14:36:04 +01:00
struct {
2020-10-11 10:31:46 +01:00
uint16_t cfg_holder ; // 000 v6 header
2019-04-02 14:47:39 +01:00
uint16_t cfg_size ; // 002
2018-06-02 15:59:09 +01:00
unsigned long save_flag ; // 004
unsigned long version ; // 008
2019-04-02 14:47:39 +01:00
uint16_t bootcount ; // 00C
uint16_t cfg_crc ; // 00E
2018-06-02 15:59:09 +01:00
SysBitfield flag ; // 010
2017-10-18 17:22:34 +01:00
int16_t save_data ; // 014
2017-10-10 14:40:02 +01:00
int8_t timezone ; // 016
2019-12-13 11:05:07 +00:00
2020-04-09 10:40:26 +01:00
// Start of char array storing all parameter strings ********
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
char text_pool [ 101 ] ; // 017 Was ota_url[101] - size is settings_text_size
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
char ex_mqtt_prefix [ 3 ] [ 11 ] ; // 07C Free since 8.0.0.1
2019-12-22 15:53:51 +00:00
uint8_t ex_baudrate ; // 09D
2019-12-13 11:05:07 +00:00
uint8_t ex_seriallog_level ; // 09E
uint8_t ex_sta_config ; // 09F
uint8_t ex_sta_active ; // 0A0
2019-12-22 15:53:51 +00:00
char ex_sta_ssid [ 2 ] [ 33 ] ; // 0A1
char ex_sta_pwd [ 2 ] [ 65 ] ; // 0E3
char ex_hostname [ 33 ] ; // 165
char ex_syslog_host [ 33 ] ; // 186
2019-12-13 11:05:07 +00:00
uint8_t ex_rule_stop ; // 1A7
uint16_t ex_syslog_port ; // 1A8
uint8_t ex_syslog_level ; // 1AA
uint8_t ex_webserver ; // 1AB
uint8_t ex_weblog_level ; // 1AC
uint8_t ex_mqtt_fingerprint [ 2 ] [ 20 ] ; // 1AD
2020-10-11 10:31:46 +01:00
uint8_t ex_ex_adc_param_type ; // 1D5
2019-12-14 12:16:55 +00:00
uint8_t ex_free_1d6 [ 10 ] ; // 1D6
SysBitfield4 ex_flag4 ; // 1E0
uint8_t ex_serial_config ; // 1E4
uint8_t ex_wifi_output_power ; // 1E5
uint8_t ex_shutter_accuracy ; // 1E6
uint8_t ex_mqttlog_level ; // 1E7
uint8_t ex_sps30_inuse_hours ; // 1E8
2019-12-22 15:53:51 +00:00
char ex_mqtt_host [ 33 ] ; // 1E9
uint16_t ex_mqtt_port ; // 20A
char ex_mqtt_client [ 33 ] ; // 20C
char ex_mqtt_user [ 33 ] ; // 22D
char ex_mqtt_pwd [ 33 ] ; // 24E
char ex_mqtt_topic [ 33 ] ; // 26F
char ex_button_topic [ 33 ] ; // 290
char ex_mqtt_grptopic [ 33 ] ; // 2B1
2019-12-13 11:05:07 +00:00
2020-04-09 10:40:26 +01:00
// End of single char array of 698 chars max ****************
2019-12-13 11:05:07 +00:00
2018-01-05 11:26:19 +00:00
uint8_t display_model ; // 2D2
uint8_t display_mode ; // 2D3
uint8_t display_refresh ; // 2D4
uint8_t display_rows ; // 2D5
uint8_t display_cols [ 2 ] ; // 2D6
uint8_t display_address [ 8 ] ; // 2D8
uint8_t display_dimmer ; // 2E0
uint8_t display_size ; // 2E1
2018-05-14 22:22:29 +01:00
TimeRule tflag [ 2 ] ; // 2E2
2017-10-18 17:22:34 +01:00
uint16_t pwm_frequency ; // 2E6
2017-10-10 14:40:02 +01:00
power_t power ; // 2E8
2017-10-18 17:22:34 +01:00
uint16_t pwm_value [ MAX_PWMS ] ; // 2EC
2018-06-02 15:59:09 +01:00
int16_t altitude ; // 2F6
2017-10-10 14:40:02 +01:00
uint16_t tele_period ; // 2F8
2018-08-20 17:07:19 +01:00
uint8_t display_rotate ; // 2FA
2017-10-10 14:40:02 +01:00
uint8_t ledstate ; // 2FB
2018-07-03 11:48:56 +01:00
uint8_t param [ PARAM8_SIZE ] ; // 2FC SetOption32 .. SetOption49
2018-05-14 22:22:29 +01:00
int16_t toffset [ 2 ] ; // 30E
2018-08-23 10:49:17 +01:00
uint8_t display_font ; // 312
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
char ex_state_text [ 4 ] [ 11 ] ; // 313 Free since 8.0.0.1
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
uint8_t tuyamcu_topic ; // 33F Manage tuyaSend topic. ex_energy_power_delta on 6.6.0.20, replaced on 8.5.0.1
2017-10-10 14:40:02 +01:00
uint16_t domoticz_update_timer ; // 340
2017-10-18 17:22:34 +01:00
uint16_t pwm_range ; // 342
2018-02-03 22:25:05 +00:00
unsigned long domoticz_relay_idx [ MAX_DOMOTICZ_IDX ] ; // 344
unsigned long domoticz_key_idx [ MAX_DOMOTICZ_IDX ] ; // 354
2020-10-11 10:31:46 +01:00
unsigned long energy_power_calibration ; // 364
2018-02-03 22:25:05 +00:00
unsigned long energy_voltage_calibration ; // 368
unsigned long energy_current_calibration ; // 36C
2017-12-16 14:51:45 +00:00
unsigned long energy_kWhtoday ; // 370
unsigned long energy_kWhyesterday ; // 374
uint16_t energy_kWhdoy ; // 378
uint16_t energy_min_power ; // 37A
uint16_t energy_max_power ; // 37C
uint16_t energy_min_voltage ; // 37E
uint16_t energy_max_voltage ; // 380
uint16_t energy_min_current ; // 382
uint16_t energy_max_current ; // 384
2020-10-11 10:31:46 +01:00
uint16_t energy_max_power_limit ; // 386 MaxPowerLimit
uint16_t energy_max_power_limit_hold ; // 388 MaxPowerLimitHold
uint16_t energy_max_power_limit_window ; // 38A MaxPowerLimitWindow
uint16_t energy_max_power_safe_limit ; // 38C MaxSafePowerLimit
uint16_t energy_max_power_safe_limit_hold ; // 38E MaxSafePowerLimitHold
uint16_t energy_max_power_safe_limit_window ; // 390 MaxSafePowerLimitWindow
uint16_t energy_max_energy ; // 392 MaxEnergy
uint16_t energy_max_energy_start ; // 394 MaxEnergyStart
2017-10-10 14:40:02 +01:00
uint16_t mqtt_retry ; // 396
uint8_t poweronstate ; // 398
2017-11-15 22:07:45 +00:00
uint8_t last_module ; // 399
2017-10-10 14:40:02 +01:00
uint16_t blinktime ; // 39A
uint16_t blinkcount ; // 39C
2018-03-10 16:58:54 +00:00
uint16_t light_rotation ; // 39E
2018-07-03 11:48:56 +01:00
SysBitfield3 flag3 ; // 3A0
2020-10-11 10:31:46 +01:00
uint8_t switchmode [ MAX_SWITCHES ] ; // 3A4
myio my_gp ; // 3AC 2 x 18 bytes (ESP8266) / 2 x 40 bytes (ESP32)
2020-04-28 17:27:07 +01:00
# ifdef ESP8266
2020-09-29 17:10:21 +01:00
uint16_t gpio16_converted ; // 3D0
uint8_t free_esp8266_3D2 [ 42 ] ; // 3D2
2020-09-25 17:15:31 +01:00
# endif
2020-10-11 10:31:46 +01:00
mytmplt user_template ; // 3FC 2 x 15 bytes (ESP8266) / 2 x 37 bytes (ESP32)
2020-09-25 17:15:31 +01:00
# ifdef ESP8266
2020-10-11 10:31:46 +01:00
2020-09-25 17:15:31 +01:00
uint8_t free_esp8266_41A [ 55 ] ; // 41A
2020-10-11 10:31:46 +01:00
2020-04-28 17:27:07 +01:00
# else // ESP32
2020-06-16 17:36:49 +01:00
uint8_t eth_type ; // 446
uint8_t eth_clk_mode ; // 447
2020-04-28 17:27:07 +01:00
2020-06-16 17:36:49 +01:00
uint8_t free_esp32_448 [ 4 ] ; // 448
2020-05-08 16:17:09 +01:00
WebCamCfg webcam_config ; // 44C
2020-06-16 17:36:49 +01:00
uint8_t eth_address ; // 450
2020-04-28 17:27:07 +01:00
# endif // ESP8266 - ESP32
2018-03-20 13:31:11 +00:00
char serial_delimiter ; // 451
2019-12-13 11:05:07 +00:00
uint8_t seriallog_level ; // 452
2017-10-10 14:40:02 +01:00
uint8_t sleep ; // 453
2017-12-22 13:55:24 +00:00
uint16_t domoticz_switch_idx [ MAX_DOMOTICZ_IDX ] ; // 454
uint16_t domoticz_sensor_idx [ MAX_DOMOTICZ_SNS_IDX ] ; // 45C
2017-10-10 14:40:02 +01:00
uint8_t module ; // 474
2017-10-23 11:18:15 +01:00
uint8_t ws_color [ 4 ] [ 3 ] ; // 475
uint8_t ws_width [ 3 ] ; // 481
2020-04-16 13:59:01 +01:00
# ifdef ESP8266
2020-10-11 10:31:46 +01:00
myio8 ex_my_gp8 ; // 484 17 bytes (ESP8266) - Free since 9.0.0.1
2020-04-16 13:59:01 +01:00
# else // ESP32
2020-10-11 10:31:46 +01:00
2020-04-16 13:59:01 +01:00
uint8_t free_esp32_484 [ 17 ] ; // 484
2020-10-11 10:31:46 +01:00
2020-04-16 13:59:01 +01:00
# endif // ESP8266 - ESP32
2020-10-11 10:31:46 +01:00
uint8_t ex_my_adc0 ; // 495 Free since 9.0.0.1
2020-04-16 13:59:01 +01:00
2017-10-26 15:33:33 +01:00
uint16_t light_pixels ; // 496
uint8_t light_color [ 5 ] ; // 498
uint8_t light_correction ; // 49D
uint8_t light_dimmer ; // 49E
2018-05-24 13:25:52 +01:00
uint8_t rule_enabled ; // 49F
2020-10-11 10:31:46 +01:00
uint8_t rule_once ; // 4A0 Bit 6+7 used by xdrv_10_scripter
2017-10-26 15:33:33 +01:00
uint8_t light_fade ; // 4A1
uint8_t light_speed ; // 4A2
uint8_t light_scheme ; // 4A3
uint8_t light_width ; // 4A4
2019-01-28 13:08:33 +00:00
uint8_t knx_GA_registered ; // 4A5 Number of Group Address to read
2017-10-26 15:33:33 +01:00
uint16_t light_wakeup ; // 4A6
2019-01-28 13:08:33 +00:00
uint8_t knx_CB_registered ; // 4A8 Number of Group Address to write
2019-12-22 15:53:51 +00:00
2020-10-11 10:31:46 +01:00
char ex_web_password [ 33 ] ; // 4A9 Free since 8.0.0.1
2019-12-22 15:53:51 +00:00
2019-01-25 16:46:27 +00:00
uint8_t interlock [ MAX_INTERLOCKS ] ; // 4CA
2019-12-22 15:53:51 +00:00
2020-10-11 10:31:46 +01:00
char ex_ntp_server [ 3 ] [ 33 ] ; // 4CE Free since 8.0.0.1
2019-12-22 15:53:51 +00:00
2019-01-28 13:08:33 +00:00
uint8_t ina219_mode ; // 531
2020-10-11 10:31:46 +01:00
uint16_t pulse_timer [ MAX_PULSETIMERS ] ; // 532
2018-08-27 11:01:20 +01:00
uint16_t button_debounce ; // 542
2017-10-10 14:40:02 +01:00
uint32_t ip_address [ 4 ] ; // 544
2018-06-02 15:59:09 +01:00
unsigned long energy_kWhtotal ; // 554
2019-12-22 15:53:51 +00:00
2020-10-11 10:31:46 +01:00
char ex_mqtt_fulltopic [ 100 ] ; // 558 Free since 8.0.0.1
2019-12-22 15:53:51 +00:00
2018-06-02 15:59:09 +01:00
SysBitfield2 flag2 ; // 5BC
2017-10-18 17:22:34 +01:00
unsigned long pulse_counter [ MAX_COUNTERS ] ; // 5C0
uint16_t pulse_counter_type ; // 5D0
uint16_t pulse_counter_debounce ; // 5D2
uint8_t rf_code [ 17 ] [ 9 ] ; // 5D4
2018-11-01 12:00:05 +00:00
uint8_t timezone_minutes ; // 66D
2018-08-27 11:01:20 +01:00
uint16_t switch_debounce ; // 66E
2018-03-23 16:20:20 +00:00
Timer timer [ MAX_TIMERS ] ; // 670
2018-04-05 11:49:43 +01:00
int latitude ; // 6B0
int longitude ; // 6B4
2018-04-17 14:34:18 +01:00
uint16_t knx_physsical_addr ; // 6B8 (address_t is a uint16_t)
uint16_t knx_GA_addr [ MAX_KNX_GA ] ; // 6BA (address_t is a uint16_t) x KNX_max_GA
uint16_t knx_CB_addr [ MAX_KNX_CB ] ; // 6CE (address_t is a uint16_t) x KNX_max_CB
2019-01-28 13:08:33 +00:00
uint8_t knx_GA_param [ MAX_KNX_GA ] ; // 6E2 Type of Input (relay changed, button pressed, sensor read <-teleperiod)
uint8_t knx_CB_param [ MAX_KNX_CB ] ; // 6EC Type of Output (set relay, toggle relay, reply sensor value)
2018-07-02 09:22:01 +01:00
Mcp230xxCfg mcp230xx_config [ 16 ] ; // 6F6
2018-08-21 21:12:40 +01:00
uint8_t mcp230xx_int_prio ; // 716
2019-02-01 16:46:37 +00:00
SensorCfg1 SensorBits1 ; // 717 On/Off settings used by Sensor Commands
2018-08-25 20:15:41 +01:00
uint16_t mcp230xx_int_timer ; // 718
2018-09-29 15:55:53 +01:00
uint8_t rgbwwTable [ 5 ] ; // 71A
2019-02-11 18:21:49 +00:00
uint8_t user_template_base ; // 71F
2020-03-29 16:41:31 +01:00
char user_template_name [ 15 ] ; // 720 15 bytes - Backward compatibility since v8.2.0.3
2020-04-16 13:59:01 +01:00
# ifdef ESP8266
2020-10-11 10:31:46 +01:00
mytmplt8285 ex_user_template8 ; // 72F 14 bytes (ESP8266) - Free since 9.0.0.1
2020-04-16 13:59:01 +01:00
# else // ESP32
2020-10-11 10:31:46 +01:00
2020-04-16 13:59:01 +01:00
uint8_t free_esp32_72f [ 14 ] ; // 72F
2020-10-11 10:31:46 +01:00
2020-04-16 13:59:01 +01:00
# endif // ESP8266 - ESP32
2019-10-18 09:32:48 +01:00
uint8_t novasds_startingoffset ; // 73D
2019-04-09 12:56:19 +01:00
uint8_t web_color [ 18 ] [ 3 ] ; // 73E
2019-07-23 13:05:42 +01:00
uint16_t display_width ; // 774
uint16_t display_height ; // 776
2019-08-28 11:02:27 +01:00
uint16_t baudrate ; // 778
uint16_t sbaudrate ; // 77A
2019-08-25 13:58:45 +01:00
EnergyUsage energy_usage ; // 77C
2020-10-11 10:31:46 +01:00
uint32_t ex_adc_param1 ; // 794 Free since 9.0.0.1
uint32_t ex_adc_param2 ; // 798 Free since 9.0.0.1
int ex_adc_param3 ; // 79C Free since 9.0.0.1
2018-11-07 09:30:03 +00:00
uint32_t monitors ; // 7A0
2020-10-11 10:31:46 +01:00
uint32_t sensors [ 3 ] ; // 7A4 Normal WebSensor, Debug SetSensor
2018-11-07 09:30:03 +00:00
uint32_t displays ; // 7B0
2018-10-30 16:04:19 +00:00
uint32_t energy_kWhtotal_time ; // 7B4
2020-10-11 10:31:46 +01:00
unsigned long weight_item ; // 7B8 Weight of one item in gram * 10
2019-04-10 13:26:36 +01:00
uint16_t ledmask ; // 7BC
2020-10-11 10:31:46 +01:00
uint16_t weight_max ; // 7BE Total max weight in kilogram
unsigned long weight_reference ; // 7C0 Reference weight in gram
2018-10-08 13:39:36 +01:00
unsigned long weight_calibration ; // 7C4
2020-10-11 10:31:46 +01:00
unsigned long energy_frequency_calibration ; // 7C8 Also used by HX711 to save last weight
2018-10-08 13:39:36 +01:00
uint16_t web_refresh ; // 7CC
2019-12-22 15:53:51 +00:00
char script_pram [ 5 ] [ 10 ] ; // 7CE
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
char rules [ MAX_RULE_SETS ] [ MAX_RULE_SIZE ] ; // 800 Uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b
2019-12-13 11:05:07 +00:00
2020-10-11 10:31:46 +01:00
TuyaFnidDpidMap tuya_fnid_map [ MAX_TUYA_FUNCTIONS ] ; // E00 32 bytes
2019-09-08 10:26:54 +01:00
uint16_t ina226_r_shunt [ 4 ] ; // E20
uint16_t ina226_i_fs [ 4 ] ; // E28
2019-09-25 13:24:49 +01:00
uint16_t tariff [ 4 ] [ 2 ] ; // E30
2019-09-29 17:00:01 +01:00
uint16_t shutter_opentime [ MAX_SHUTTERS ] ; // E40
uint16_t shutter_closetime [ MAX_SHUTTERS ] ; // E48
int16_t shuttercoeff [ 5 ] [ MAX_SHUTTERS ] ; // E50
2020-10-11 10:31:46 +01:00
uint8_t shutter_options [ MAX_SHUTTERS ] ; // E78
2019-09-29 17:00:01 +01:00
uint8_t shutter_set50percent [ MAX_SHUTTERS ] ; // E7C
uint8_t shutter_position [ MAX_SHUTTERS ] ; // E80
uint8_t shutter_startrelay [ MAX_SHUTTERS ] ; // E84
2019-10-01 15:33:39 +01:00
uint8_t pcf8574_config [ MAX_PCF8574 ] ; // E88
2020-05-07 09:58:17 +01:00
uint8_t ot_hot_water_setpoint ; // E8C
uint8_t ot_boiler_setpoint ; // E8D
uint8_t ot_flags ; // E8E
2020-05-25 09:21:36 +01:00
uint8_t ledpwm_mask ; // E8F
2019-10-14 15:12:59 +01:00
uint16_t dimmer_hw_min ; // E90
uint16_t dimmer_hw_max ; // E92
uint32_t deepsleep ; // E94
2020-10-11 10:31:46 +01:00
uint16_t hass_new_discovery ; // E98 ex2_energy_power_delta on 8.4.0.3, replaced on 8.5.0.1
2019-11-02 12:25:23 +00:00
uint8_t shutter_motordelay [ MAX_SHUTTERS ] ; // E9A
2019-11-18 11:15:49 +00:00
int8_t temp_comp ; // E9E
2019-12-11 10:54:27 +00:00
uint8_t weight_change ; // E9F
2020-10-11 10:31:46 +01:00
uint8_t web_color2 [ 2 ] [ 3 ] ; // EA0 Needs to be on integer / 3 distance from web_color
2019-12-22 15:53:51 +00:00
2020-10-11 10:31:46 +01:00
char ex_cors_domain [ 33 ] ; // EA6 Free since 8.0.0.1
2019-12-22 15:53:51 +00:00
2019-12-13 11:05:07 +00:00
uint8_t sta_config ; // EC7
uint8_t sta_active ; // EC8
uint8_t rule_stop ; // EC9
uint16_t syslog_port ; // ECA
uint8_t syslog_level ; // ECC
uint8_t webserver ; // ECD
uint8_t weblog_level ; // ECE
uint8_t mqtt_fingerprint [ 2 ] [ 20 ] ; // ECF
2020-10-11 10:31:46 +01:00
uint8_t ex_adc_param_type ; // EF7 Free since 9.0.0.1
2019-12-14 12:16:55 +00:00
SysBitfield4 flag4 ; // EF8
uint16_t mqtt_port ; // EFC
uint8_t serial_config ; // EFE
uint8_t wifi_output_power ; // EFF
uint8_t shutter_accuracy ; // F00
uint8_t mqttlog_level ; // F01
uint8_t sps30_inuse_hours ; // F02
2020-01-02 14:12:59 +00:00
uint8_t hotplug_scan ; // F03
2020-02-26 13:39:27 +00:00
uint8_t bri_power_on ; // F04
2020-10-02 18:40:45 +01:00
PWMDimmerCfg pwm_dimmer_cfg ; // F05
2020-02-26 13:39:27 +00:00
uint8_t bri_preset_low ; // F06
uint8_t bri_preset_high ; // F07
2020-03-16 17:29:55 +00:00
int8_t hum_comp ; // F08
2020-04-09 10:40:26 +01:00
uint8_t wifi_channel ; // F09
uint8_t wifi_bssid [ 6 ] ; // F0A
2020-04-11 00:48:37 +01:00
uint8_t as3935_sensor_cfg [ 5 ] ; // F10
As3935IntCfg as3935_functions ; // F15
As3935Param as3935_parameter ; // F16
2020-04-11 09:35:31 +01:00
uint64_t zb_ext_panid ; // F18
uint64_t zb_precfgkey_l ; // F20
uint64_t zb_precfgkey_h ; // F28
uint16_t zb_pan_id ; // F30
uint8_t zb_channel ; // F32
2020-10-10 15:19:37 +01:00
int8_t zb_txradio_dbm ; // F33
2020-04-12 11:35:58 +01:00
uint16_t pms_wake_interval ; // F34
2020-04-17 10:57:09 +01:00
uint8_t config_version ; // F36
2020-04-26 18:21:10 +01:00
uint8_t windmeter_pulses_x_rot ; // F37
uint16_t windmeter_radius ; // F38
uint16_t windmeter_pulse_debounce ; // F3A
int16_t windmeter_speed_factor ; // F3C
2020-04-28 13:02:05 +01:00
uint8_t windmeter_tele_pchange ; // F3E
2020-06-17 13:06:46 +01:00
uint8_t ledpwm_on ; // F3F
uint8_t ledpwm_off ; // F40
2020-06-15 18:22:56 +01:00
uint8_t tcp_baudrate ; // F41
2020-06-17 13:06:46 +01:00
uint8_t fallback_module ; // F42
2020-09-09 08:40:28 +01:00
uint8_t shutter_mode ; // F43
2020-08-23 17:29:16 +01:00
uint16_t energy_power_delta [ 3 ] ; // F44
2020-09-09 14:27:43 +01:00
uint16_t shutter_pwmrange [ 2 ] [ MAX_SHUTTERS ] ; // F4A
2020-10-30 13:49:36 +00:00
uint8_t dimmer_step ; // F5A
2020-11-14 15:43:32 +00:00
uint8_t shd_leading_edge ; // F5B
uint16_t shd_warmup_brightness ; // F5C
uint8_t shd_warmup_time ; // F5E
uint8_t free_f5e [ 84 ] ; // F5E - Decrement if adding new Setting variables just above and below
2019-08-25 13:58:45 +01:00
2020-04-16 13:59:01 +01:00
// Only 32 bit boundary variables below
2020-08-23 17:29:16 +01:00
SysBitfield5 flag5 ; // FB4
2020-10-11 10:31:46 +01:00
uint16_t pulse_counter_debounce_low ; // FB8
uint16_t pulse_counter_debounce_high ; // FBA
2020-02-24 18:41:12 +00:00
uint32_t keeloq_master_msb ; // FBC
uint32_t keeloq_master_lsb ; // FC0
uint32_t keeloq_serial ; // FC4
uint32_t keeloq_count ; // FC8
2020-10-11 10:31:46 +01:00
uint32_t device_group_share_in ; // FCC Bitmask of device group items imported
uint32_t device_group_share_out ; // FD0 Bitmask of device group items exported
2020-02-07 11:38:10 +00:00
uint32_t bootcount_reset_time ; // FD4
2020-10-11 10:31:46 +01:00
int ex_adc_param4 ; // FD8 Free since 9.0.0.1
2020-01-02 13:47:33 +00:00
uint32_t shutter_button [ MAX_KEYS ] ; // FDC
2020-10-11 10:31:46 +01:00
uint32_t i2c_drivers [ 3 ] ; // FEC I2cDriver
2019-09-05 09:41:08 +01:00
uint32_t cfg_timestamp ; // FF8
2019-09-05 15:56:02 +01:00
uint32_t cfg_crc32 ; // FFC
2017-10-18 17:22:34 +01:00
} Settings ;
2017-02-19 16:49:17 +00:00
2020-04-19 12:08:04 +01:00
typedef struct {
2020-10-11 10:31:46 +01:00
uint16_t valid ; // 280 (RTC memory offset 100 - sizeof(RTCRBT))
2018-09-24 17:16:35 +01:00
uint8_t fast_reboot_count ; // 282
uint8_t free_003 [ 1 ] ; // 283
2020-04-19 12:08:04 +01:00
} TRtcReboot ;
TRtcReboot RtcReboot ;
2020-04-19 13:18:12 +01:00
# ifdef ESP32
RTC_NOINIT_ATTR TRtcReboot RtcDataReboot ;
# endif
2018-09-04 15:22:34 +01:00
2020-04-19 12:08:04 +01:00
typedef struct {
2020-10-11 10:31:46 +01:00
uint16_t valid ; // 290 (RTC memory offset 100)
2019-01-28 13:08:33 +00:00
uint8_t oswatch_blocked_loop ; // 292
2018-09-24 17:16:35 +01:00
uint8_t ota_loader ; // 293
unsigned long energy_kWhtoday ; // 294
unsigned long energy_kWhtotal ; // 298
2020-10-12 12:44:32 +01:00
volatile unsigned long pulse_counter [ MAX_COUNTERS ] ; // 29C - See #9521 why volatile
2018-09-24 17:16:35 +01:00
power_t power ; // 2AC
2019-08-25 13:58:45 +01:00
EnergyUsage energy_usage ; // 2B0
2019-10-14 15:12:59 +01:00
unsigned long nextwakeup ; // 2C8
2019-10-14 15:47:47 +01:00
uint8_t free_004 [ 4 ] ; // 2CC
2019-10-14 15:12:59 +01:00
uint32_t ultradeepsleep ; // 2D0
uint16_t deepsleep_slip ; // 2D4
uint8_t free_022 [ 22 ] ; // 2D6
2018-09-24 17:16:35 +01:00
// 2EC - 2FF free locations
2020-04-19 12:08:04 +01:00
} TRtcSettings ;
TRtcSettings RtcSettings ;
2020-04-19 13:18:12 +01:00
# ifdef ESP32
RTC_NOINIT_ATTR TRtcSettings RtcDataSettings ;
# endif
2017-10-18 17:22:34 +01:00
struct TIME_T {
uint8_t second ;
uint8_t minute ;
uint8_t hour ;
uint8_t day_of_week ; // sunday is day 1
uint8_t day_of_month ;
uint8_t month ;
char name_of_month [ 4 ] ;
uint16_t day_of_year ;
uint16_t year ;
2018-02-07 16:50:02 +00:00
unsigned long days ;
2017-10-18 17:22:34 +01:00
unsigned long valid ;
} RtcTime ;
2018-01-05 11:26:19 +00:00
struct XDRVMAILBOX {
2019-01-28 13:08:33 +00:00
bool grpflg ;
2019-07-24 10:10:15 +01:00
bool usridx ;
2019-08-13 15:10:47 +01:00
uint16_t command_code ;
2019-07-27 10:13:41 +01:00
uint32_t index ;
uint32_t data_len ;
int32_t payload ;
2018-01-05 11:26:19 +00:00
char * topic ;
char * data ;
2019-07-26 09:21:36 +01:00
char * command ;
2018-01-05 11:26:19 +00:00
} XdrvMailbox ;
2019-09-29 17:00:01 +01:00
# ifdef USE_SHUTTER
2020-06-14 11:36:44 +01:00
const uint8_t MAX_RULES_FLAG = 11 ; // Number of bits used in RulesBitfield (tricky I know...)
2019-09-29 17:00:01 +01:00
# else
2020-06-14 11:36:44 +01:00
const uint8_t MAX_RULES_FLAG = 9 ; // Number of bits used in RulesBitfield (tricky I know...)
2019-09-29 17:00:01 +01:00
# endif // USE_SHUTTER
2018-08-28 16:34:51 +01:00
typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
2018-06-25 17:00:20 +01:00
uint16_t data ; // Allow bit manipulation
struct {
2020-06-14 11:36:44 +01:00
uint16_t system_init : 1 ; // Changing layout here needs adjustments in xdrv_10_rules.ino too
2018-06-25 17:00:20 +01:00
uint16_t system_boot : 1 ;
uint16_t time_init : 1 ;
uint16_t time_set : 1 ;
uint16_t mqtt_connected : 1 ;
uint16_t mqtt_disconnected : 1 ;
2018-07-28 14:06:31 +01:00
uint16_t wifi_connected : 1 ;
uint16_t wifi_disconnected : 1 ;
Add command WebColor
* Add rule Http#Initialized
* Add command WebColor to change non-persistent GUI colors on the fly
Use a rule like:
rule3 on http#initialized do webcolor {"webcolor":["#eeeeee","#181818","#4f4f4f","#000000","#dddddd","#008000","#222222","#ff0000","#008000","#ffffff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#ffffff","#999999","#000000"]} endon
or
rule3 on http#initialized do webcolor {"webcolor":["#eee","#181818","#4f4f4f","#000","#ddd","#008000","#222"]} endon
to make color changes persistent)
2019-04-08 21:37:39 +01:00
uint16_t http_init : 1 ;
2019-09-29 17:00:01 +01:00
uint16_t shutter_moved : 1 ;
uint16_t shutter_moving : 1 ;
2018-06-25 17:00:20 +01:00
uint16_t spare11 : 1 ;
uint16_t spare12 : 1 ;
uint16_t spare13 : 1 ;
uint16_t spare14 : 1 ;
uint16_t spare15 : 1 ;
} ;
} RulesBitfield ;
2018-07-07 16:30:58 +01:00
typedef union {
uint8_t data ;
struct {
2020-06-15 17:27:04 +01:00
uint8_t network_down : 1 ;
2018-07-07 16:30:58 +01:00
uint8_t mqtt_down : 1 ;
2020-06-15 17:27:04 +01:00
uint8_t wifi_down : 1 ;
uint8_t eth_down : 1 ;
2018-07-07 16:30:58 +01:00
uint8_t spare04 : 1 ;
uint8_t spare05 : 1 ;
uint8_t spare06 : 1 ;
uint8_t spare07 : 1 ;
} ;
} StateBitfield ;
2017-09-02 13:37:02 +01:00
// See issue https://github.com/esp8266/Arduino/issues/2913
2020-08-03 17:21:34 +01:00
# ifdef ESP8266
2017-03-14 17:03:25 +00:00
# ifdef USE_ADC_VCC
2017-09-02 13:37:02 +01:00
ADC_MODE ( ADC_VCC ) ; // Set ADC input for Power Supply Voltage usage
2017-03-14 17:03:25 +00:00
# endif
2020-08-03 17:21:34 +01:00
# endif
2017-10-18 17:22:34 +01:00
2018-07-21 17:06:24 +01:00
# endif // _SETTINGS_H_