my_user_config.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. /*
  2. my_user_config.h - user specific configuration for Sonoff-Tasmota
  3. Copyright (C) 2018 Theo Arends
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. #ifndef _MY_USER_CONFIG_H_
  16. #define _MY_USER_CONFIG_H_
  17. /*********************************************************************************************\
  18. * This file consists of TWO sections.
  19. *
  20. * SECTION 1:
  21. * The first section contains PARAMETERS overriding flash settings if define CFG_HOLDER is CHANGED.
  22. * All parameters can be persistent changed online using commands via MQTT, WebConsole or Serial.
  23. * Corresponding MQTT/Serial/Console commands are shown in [brackets]
  24. *
  25. * SECTION 2:
  26. * The second section contains Enabled and Disabled FEATURES allowing different program size.
  27. * Changes in this section do NOT need a change of define CFG_HOLDER.
  28. *
  29. * ATTENTION:
  30. * Users are advised to use the user_config_override.h file for most changes.
  31. \*********************************************************************************************/
  32. //#define USE_CONFIG_OVERRIDE // Uncomment to use user_config_override.h file. See README.md
  33. /*********************************************************************************************\
  34. * SECTION 1
  35. * - After initial load any change here only take effect if CFG_HOLDER is changed too
  36. \*********************************************************************************************/
  37. // -- Master parameter control --------------------
  38. #define CFG_HOLDER 4617 // [Reset 1] Change this value (max 32000) to load SECTION1 configuration parameters to flash
  39. // -- Project -------------------------------------
  40. #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter
  41. // If not selected the default will be SONOFF_BASIC
  42. //#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h
  43. #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds)
  44. #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable)
  45. // -- Wifi ----------------------------------------
  46. #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address
  47. #define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address
  48. #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask
  49. #define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY)
  50. #define STA_SSID1 "" // [Ssid1] Wifi SSID
  51. #define STA_PASS1 "" // [Password1] Wifi password
  52. #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID
  53. #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password
  54. #define WIFI_CONFIG_TOOL WIFI_RETRY // [WifiConfig] Default tool if wifi fails to connect
  55. // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL)
  56. #define WIFI_CONFIG_NO_SSID WIFI_WPSCONFIG // Default tool if wifi fails to connect and no SSID is configured
  57. // (WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_SERIAL)
  58. // *** NOTE: When WPS is disabled by USE_WPS below, WIFI_WPSCONFIG will execute WIFI_MANAGER ***
  59. // *** NOTE: When WIFI_MANAGER is disabled by USE_WEBSERVER below, WIFI_MANAGER will execute WIFI_SMARTCONFIG ***
  60. // *** NOTE: When WIFI_SMARTCONFIG is disabled by USE_SMARTCONFIG below, WIFI_SMARTCONFIG will execute WIFI_SERIAL ***
  61. // -- Syslog --------------------------------------
  62. #define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host
  63. #define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port
  64. #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE)
  65. #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE)
  66. #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE)
  67. // -- Ota -----------------------------------------
  68. #define OTA_URL "http://thehackbox.org/tasmota/release/sonoff.bin" // [OtaUrl]
  69. // -- MQTT ----------------------------------------
  70. #define MQTT_USE 1 // [SetOption3] Select default MQTT use (0 = Off, 1 = On)
  71. #define MQTT_HOST "" // [MqttHost]
  72. #define MQTT_FINGERPRINT1 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint1]
  73. #define MQTT_FINGERPRINT2 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint2]
  74. #define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT)
  75. #define MQTT_USER "DVES_USER" // [MqttUser] MQTT user
  76. #define MQTT_PASS "DVES_PASS" // [MqttPassword] MQTT password
  77. #define MQTT_BUTTON_RETAIN 0 // [ButtonRetain] Button may send retain flag (0 = off, 1 = on)
  78. #define MQTT_POWER_RETAIN 0 // [PowerRetain] Power status message may send retain flag (0 = off, 1 = on)
  79. #define MQTT_SWITCH_RETAIN 0 // [SwitchRetain] Switch may send retain flag (0 = off, 1 = on)
  80. #define MQTT_BUTTON_SWITCH_FORCE_LOCAL 0 // [SetOption61] Force local operation when button/switch topic is set (0 = off, 1 = on)
  81. #define MQTT_STATUS_OFF "OFF" // [StateText1] Command or Status result when turned off (needs to be a string like "0" or "Off")
  82. #define MQTT_STATUS_ON "ON" // [StateText2] Command or Status result when turned on (needs to be a string like "1" or "On")
  83. #define MQTT_CMND_TOGGLE "TOGGLE" // [StateText3] Command to send when toggling (needs to be a string like "2" or "Toggle")
  84. #define MQTT_CMND_HOLD "HOLD" // [StateText4] Command to send when button is kept down for over KEY_HOLD_TIME * 0.1 seconds (needs to be a string like "HOLD")
  85. // -- MQTT topics ---------------------------------
  86. // Example "tasmota/bedroom/%topic%/%prefix%/" up to 80 characers
  87. #define MQTT_FULLTOPIC "%prefix%/%topic%/" // [FullTopic] Subscribe and Publish full topic name - Legacy topic
  88. // %prefix% token options
  89. #define SUB_PREFIX "cmnd" // [Prefix1] Sonoff devices subscribe to %prefix%/%topic% being SUB_PREFIX/MQTT_TOPIC and SUB_PREFIX/MQTT_GRPTOPIC
  90. #define PUB_PREFIX "stat" // [Prefix2] Sonoff devices publish to %prefix%/%topic% being PUB_PREFIX/MQTT_TOPIC
  91. #define PUB_PREFIX2 "tele" // [Prefix3] Sonoff devices publish telemetry data to %prefix%/%topic% being PUB_PREFIX2/MQTT_TOPIC/UPTIME, POWER and TIME
  92. // May be named the same as PUB_PREFIX
  93. // %topic% token options (also ButtonTopic and SwitchTopic)
  94. #define MQTT_TOPIC PROJECT // [Topic] (unique) MQTT device topic, set to 'PROJECT "_%06X"' for unique topic including device MAC address
  95. #define MQTT_GRPTOPIC "sonoffs" // [GroupTopic] MQTT Group topic
  96. #define MQTT_BUTTON_TOPIC "0" // [ButtonTopic] MQTT button topic, "0" = same as MQTT_TOPIC, set to 'PROJECT "_BTN_%06X"' for unique topic including device MAC address
  97. #define MQTT_SWITCH_TOPIC "0" // [SwitchTopic] MQTT button topic, "0" = same as MQTT_TOPIC, set to 'PROJECT "_SW_%06X"' for unique topic including device MAC address
  98. #define MQTT_CLIENT_ID "DVES_%06X" // [MqttClient] Also fall back topic using Chip Id = last 6 characters of MAC address
  99. // -- MQTT - Telemetry ----------------------------
  100. #define TELE_PERIOD 300 // [TelePeriod] Telemetry (0 = disable, 10 - 3600 seconds)
  101. // -- MQTT - Domoticz -----------------------------
  102. #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds)
  103. // -- MQTT - Home Assistant Discovery -------------
  104. #define HOME_ASSISTANT_DISCOVERY_ENABLE 0 // [SetOption19] Home Assistant Discovery (0 = Disable, 1 = Enable)
  105. // -- HTTP ----------------------------------------
  106. #define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin)
  107. #define WEB_PASSWORD "" // [WebPassword] Web server Admin mode Password for WEB_USERNAME (empty string = Disable)
  108. #define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa
  109. #define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo (single relay/light) or Hue Bridge emulation (multi relay/light) (EMUL_NONE, EMUL_WEMO or EMUL_HUE)
  110. // -- Time - Up to three NTP servers in your region
  111. #define NTP_SERVER1 "pool.ntp.org" // [NtpServer1] Select first NTP server by name or IP address (129.250.35.250)
  112. #define NTP_SERVER2 "nl.pool.ntp.org" // [NtpServer2] Select second NTP server by name or IP address (5.39.184.5)
  113. #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67)
  114. // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes
  115. #define TIME_DST_HEMISPHERE North // [TimeDst] Hemisphere (0 or North, 1 or South)
  116. #define TIME_DST_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth)
  117. #define TIME_DST_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat)
  118. #define TIME_DST_MONTH Mar // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec)
  119. #define TIME_DST_HOUR 2 // Hour (0 to 23)
  120. #define TIME_DST_OFFSET +120 // Offset from UTC in minutes (-780 to +780)
  121. // -- Time - Start Standard Time and timezone offset from UTC in minutes
  122. #define TIME_STD_HEMISPHERE North // [TimeStd] Hemisphere (0 or North, 1 or South)
  123. #define TIME_STD_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth)
  124. #define TIME_STD_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat)
  125. #define TIME_STD_MONTH Oct // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec)
  126. #define TIME_STD_HOUR 3 // Hour (0 to 23)
  127. #define TIME_STD_OFFSET +60 // Offset from UTC in minutes (-780 to +780)
  128. // -- Location ------------------------------------
  129. #define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset
  130. #define LONGITUDE 2.294442 // [Longitude] Your location to be used with sunrise and sunset
  131. // -- Application ---------------------------------
  132. #define APP_TIMEZONE 1 // [Timezone] +1 hour (Amsterdam) (-13 .. 14 = hours from UTC, 99 = use TIME_DST/TIME_STD)
  133. #define APP_LEDSTATE LED_POWER // [LedState] Function of led
  134. // (LED_OFF, LED_POWER, LED_MQTTSUB, LED_POWER_MQTTSUB, LED_MQTTPUB, LED_POWER_MQTTPUB, LED_MQTT, LED_POWER_MQTT)
  135. #define APP_PULSETIME 0 // [PulseTime] Time in 0.1 Sec to turn off power for relay 1 (0 = disabled)
  136. #define APP_POWERON_STATE POWER_ALL_SAVED // [PowerOnState] Power On Relay state
  137. // (POWER_ALL_OFF, POWER_ALL_ON, POWER_ALL_SAVED_TOGGLE, POWER_ALL_SAVED, POWER_ALL_ALWAYS_ON, POWER_ALL_OFF_PULSETIME_ON)
  138. #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1
  139. #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000)
  140. #define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec)
  141. #define KEY_DEBOUNCE_TIME 50 // [ButtonDebounce] Number of mSeconds button press debounce time
  142. #define KEY_HOLD_TIME 40 // [SetOption32] Number of 0.1 seconds to hold Button or external Pushbutton before sending HOLD message
  143. #define SWITCH_DEBOUNCE_TIME 50 // [SwitchDebounce] Number of mSeconds switch press debounce time
  144. #define SWITCH_MODE TOGGLE // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE (the wall switch state)
  145. #define WS2812_LEDS 30 // [Pixels] Number of WS2812 LEDs to start with (max is 512)
  146. #define TEMP_CONVERSION 0 // [SetOption8] Return temperature in (0 = Celsius or 1 = Fahrenheit)
  147. #define PRESSURE_CONVERSION 0 // [SetOption24] Return pressure in (0 = hPa or 1 = mmHg)
  148. #define TEMP_RESOLUTION 1 // [TempRes] Maximum number of decimals (0 - 3) showing sensor Temperature
  149. #define HUMIDITY_RESOLUTION 1 // [HumRes] Maximum number of decimals (0 - 3) showing sensor Humidity
  150. #define PRESSURE_RESOLUTION 1 // [PressRes] Maximum number of decimals (0 - 3) showing sensor Pressure
  151. #define ENERGY_RESOLUTION 3 // [EnergyRes] Maximum number of decimals (0 - 5) showing energy usage in kWh
  152. #define CALC_RESOLUTION 3 // [CalcRes] Maximum number of decimals (0 - 7) used in commands ADD, SUB, MULT and SCALE
  153. /*********************************************************************************************\
  154. * END OF SECTION 1
  155. *
  156. * SECTION 2
  157. * - Enable a feature by removing both // in front of it
  158. * - Disable a feature by preceding it with //
  159. \*********************************************************************************************/
  160. // -- Localization --------------------------------
  161. // If non selected the default en-GB will be used
  162. //#define MY_LANGUAGE bg-BG // Bulgarian in Bulgaria
  163. //#define MY_LANGUAGE cs-CZ // Czech in Czech
  164. //#define MY_LANGUAGE de-DE // German in Germany
  165. //#define MY_LANGUAGE el-GR // Greek in Greece
  166. //#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default
  167. //#define MY_LANGUAGE es-AR // Spanish in Argentina
  168. //#define MY_LANGUAGE fr-FR // French in France
  169. //#define MY_LANGUAGE he-HE // Hebrew in Israel
  170. //#define MY_LANGUAGE hu-HU // Hungarian in Hungary
  171. //#define MY_LANGUAGE it-IT // Italian in Italy
  172. //#define MY_LANGUAGE nl-NL // Dutch in the Netherlands
  173. //#define MY_LANGUAGE pl-PL // Polish in Poland
  174. //#define MY_LANGUAGE pt-BR // Portuguese in Brazil
  175. //#define MY_LANGUAGE pt-PT // Portuguese in Portugal
  176. //#define MY_LANGUAGE ru-RU // Russian in Russia
  177. //#define MY_LANGUAGE sk-SK // Slovak in Slovakia
  178. //#define MY_LANGUAGE sv-SE // Swedish in Sweden
  179. //#define MY_LANGUAGE tr-TR // Turkish in Turkey
  180. //#define MY_LANGUAGE uk-UK // Ukrainian in Ukrain
  181. //#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China
  182. //#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan
  183. // -- Wifi Config tools ---------------------------
  184. #define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 13 as used by Wifi Manager web GUI
  185. //#define USE_WPS // Add support for WPS as initial wifi configuration tool (+33k code, 1k mem (5k mem with core v2.4.2+))
  186. //#define USE_SMARTCONFIG // Add support for Wifi SmartConfig as initial wifi configuration tool (+23k code, +0.6k mem)
  187. // -- OTA -----------------------------------------
  188. //#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+13k code)
  189. /*-------------------------------------------------------------------------------------------*\
  190. * Select ONE of possible MQTT library types below
  191. \*-------------------------------------------------------------------------------------------*/
  192. // Default MQTT driver for both non-TLS and TLS connections. Latest library version (20181016) does not block network if MQTT server is unavailable.
  193. #define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library
  194. // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support
  195. //#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 (core 2.3.0), +14k4 (core 2.4.2 lwip2) code, +4k mem) - non-TLS only
  196. // Alternative MQTT driver does not block network when MQTT server is unavailable. TLS should work but needs to be tested.
  197. //#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem)
  198. // -- MQTT ----------------------------------------
  199. #define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on)
  200. // -- MQTT - Domoticz -----------------------------
  201. #define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem)
  202. #define DOMOTICZ_IN_TOPIC "domoticz/in" // Domoticz Input Topic
  203. #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic
  204. // -- MQTT - Home Assistant Discovery -------------
  205. #define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code)
  206. #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix
  207. // -- MQTT - TLS ----------------------------------
  208. // !!! TLS uses a LOT OF MEMORY so be careful to enable other options at the same time !!!
  209. //#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem)
  210. // #define USE_MQTT_TLS_CA_CERT // Use LetsEncrypt Certificate from sonoff_letsencrypt.h - Not supported with core 2.3.0
  211. // -- KNX IP Protocol -----------------------------
  212. //#define USE_KNX // Enable KNX IP Protocol Support (+9.4k code, +3k7 mem)
  213. #define USE_KNX_WEB_MENU // Enable KNX WEB MENU (+8.3k code, +144 mem)
  214. // -- HTTP ----------------------------------------
  215. #define USE_WEBSERVER // Enable web server and Wifi Manager (+66k code, +8k mem)
  216. #define WEB_PORT 80 // Web server Port for User and Admin mode
  217. #define WEB_USERNAME "admin" // Web server Admin mode user name
  218. #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem)
  219. // -- mDNS ----------------------------------------
  220. #define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem)
  221. #define WEBSERVER_ADVERTISE // Provide access to webserver by name <Hostname>.local/
  222. #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found)
  223. // -- Time ----------------------------------------
  224. #define USE_TIMERS // Add support for up to 16 timers (+2k2 code)
  225. #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code)
  226. #define USE_SUNRISE // Add support for Sunrise and sunset tools (+16k)
  227. #define SUNRISE_DAWN_ANGLE DAWN_NORMAL // Select desired Dawn Angle from (DAWN_NORMAL, DAWN_CIVIL, DAWN_NAUTIC, DAWN_ASTRONOMIC)
  228. // -- Rules ---------------------------------------
  229. #define USE_RULES // Add support for rules (+4k4 code)
  230. // -- Internal Analog input -----------------------
  231. #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
  232. // -- One wire sensors ----------------------------
  233. // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors
  234. //#define USE_DS18x20_LEGACY // Optional for more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code)
  235. #define USE_DS18x20 // Optional for more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code)
  236. // #define W1_PARASITE_POWER // If using USE_DS18x20 then optimize for parasite powered sensors
  237. // -- I2C sensors ---------------------------------
  238. #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram)
  239. #ifdef USE_I2C
  240. #define USE_SHT // Enable SHT1X sensor (+1k4 code)
  241. #define USE_HTU // Enable HTU21/SI7013/SI7020/SI7021 sensor (I2C address 0x40) (+1k5 code)
  242. #define USE_BMP // Enable BMP085/BMP180/BMP280/BME280 sensors (I2C addresses 0x76 and 0x77) (+4k4 code)
  243. // #define USE_BME680 // Enable support for BME680 sensor using Bosch BME680 library (+4k code)
  244. #define USE_BH1750 // Enable BH1750 sensor (I2C address 0x23 or 0x5C) (+0k5 code)
  245. // #define USE_VEML6070 // Enable VEML6070 sensor (I2C addresses 0x38 and 0x39) (+1k5 code)
  246. #define USE_VEML6070_RSET 270000 // VEML6070, Rset in Ohm used on PCB board, default 270K = 270000ohm, range for this sensor: 220K ... 1Meg
  247. #define USE_VEML6070_SHOW_RAW // VEML6070, shows the raw value of UV-A
  248. // #define USE_ADS1115 // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) based on Adafruit ADS1x15 library (no library needed) (+0k7 code)
  249. // #define USE_ADS1115_I2CDEV // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code)
  250. // #define USE_INA219 // Enable INA219 (I2C address 0x40, 0x41 0x44 or 0x45) Low voltage and current sensor (+1k code)
  251. #define USE_SHT3X // Enable SHT3x (I2C address 0x44 or 0x45) or SHTC3 (I2C address 0x70) sensor (+0k7 code)
  252. // #define USE_TSL2561 // Enable TSL2561 sensor (I2C address 0x29, 0x39 or 0x49) using library Joba_Tsl2561 (+2k3 code)
  253. // #define USE_MGS // Enable Xadow and Grove Mutichannel Gas sensor using library Multichannel_Gas_Sensor (+10k code)
  254. #define MGS_SENSOR_ADDR 0x04 // Default Mutichannel Gas sensor i2c address
  255. #define USE_SGP30 // Enable SGP30 sensor (I2C address 0x58) (+1k1 code)
  256. // #define USE_SI1145 // Enable SI1145/46/47 sensor (I2C address 0x60) (+1k code)
  257. #define USE_LM75AD // Enable LM75AD sensor (I2C addresses 0x48 - 0x4F) (+0k5 code)
  258. // #define USE_APDS9960 // Enable APDS9960 Proximity Sensor (I2C address 0x39). Disables SHT and VEML6070 (+4k7 code)
  259. // #define USE_MCP230xx // Enable MCP23008/MCP23017 - Must define I2C Address in #define USE_MCP230xx_ADDR below - range 0x20 - 0x27 (+4k7 code)
  260. // #define USE_MCP230xx_ADDR 0x20 // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x27 - set according to your wired setup)
  261. // #define USE_MCP230xx_OUTPUT // Enable MCP23008/MCP23017 OUTPUT support through sensor29 commands (+1k5 code)
  262. // #define USE_MCP230xx_DISPLAYOUTPUT // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code)
  263. // #define USE_PCA9685 // Enable PCA9685 I2C HW PWM Driver - Must define I2C Address in #define USE_PCA9685_ADDR below - range 0x40 - 0x47 (+1k4 code)
  264. // #define USE_PCA9685_ADDR 0x40 // Enable PCA9685 I2C Address to use (Must be within range 0x40 through 0x47 - set according to your wired setup)
  265. // #define USE_PCA9685_FREQ 50 // Define default PWM frequency in Hz to be used (must be within 24 to 1526) - If other value is used, it will rever to 50Hz
  266. // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code)
  267. // #define USE_CCS811 // Enable CCS811 sensor (I2C address 0x5A) (+2k2 code)
  268. // #define USE_MPU6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) (+3K3 of code and 188 Bytes of RAM)
  269. // #define USE_MPU6050_DMP // Enable in MPU6050 to use the DMP on the chip, should create better results (+8k6 of code)
  270. // #define USE_DS3231 // Enable DS3231 external RTC in case no Wifi is avaliable. See docs in the source file (+1k2 code)
  271. // #define USE_RTC_ADDR 0x68 // Default I2C address 0x68
  272. // #define USE_MGC3130 // Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem)
  273. // #define USE_DISPLAY // Add I2C Display Support (+2k code)
  274. #define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0
  275. #define USE_DISPLAY_LCD // [DisplayModel 1] Enable Lcd display (I2C addresses 0x27 and 0x3F) (+6k code)
  276. #define USE_DISPLAY_SSD1306 // [DisplayModel 2] Enable SSD1306 Oled 128x64 display (I2C addresses 0x3C and 0x3D) (+16k code)
  277. #define USE_DISPLAY_MATRIX // [DisplayModel 3] Enable 8x8 Matrix display (I2C adresseses see below) (+11k code)
  278. #define MTX_ADDRESS1 0x71 // [DisplayAddress1] I2C address of first 8x8 matrix module
  279. #define MTX_ADDRESS2 0x74 // [DisplayAddress2] I2C address of second 8x8 matrix module
  280. #define MTX_ADDRESS3 0x75 // [DisplayAddress3] I2C address of third 8x8 matrix module
  281. #define MTX_ADDRESS4 0x72 // [DisplayAddress4] I2C address of fourth 8x8 matrix module
  282. #define MTX_ADDRESS5 0x73 // [DisplayAddress5] I2C address of fifth 8x8 matrix module
  283. #define MTX_ADDRESS6 0x76 // [DisplayAddress6] I2C address of sixth 8x8 matrix module
  284. #define MTX_ADDRESS7 0x00 // [DisplayAddress7] I2C address of seventh 8x8 matrix module
  285. #define MTX_ADDRESS8 0x00 // [DisplayAddress8] I2C address of eigth 8x8 matrix module
  286. #endif // USE_I2C
  287. // -- SPI sensors ---------------------------------
  288. //#define USE_SPI // Hardware SPI using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK) in addition to two user selectable GPIOs(CS and DC)
  289. #ifdef USE_SPI
  290. #ifndef USE_DISPLAY
  291. #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT
  292. #endif
  293. #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code)
  294. // #define USE_DISPLAY_EPAPER_29 // [DisplayModel 5] Enable e-paper 2.9 inch display (+19k code)
  295. #endif // USE_SPI
  296. // -- Serial sensors ------------------------------
  297. #define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code)
  298. #define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code)
  299. #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1)
  300. #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1)
  301. #define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code)
  302. #define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code)
  303. #define WORKING_PERIOD 5 // Working period of the SDS Sensor, Takes a reading every X Minutes
  304. #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code)
  305. //#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code)
  306. #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud)
  307. #define USE_SDM220 // Add extra parameters for SDM220 (+0k1 code)
  308. //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code)
  309. #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud)
  310. //#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop
  311. #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max)
  312. #define USE_TUYA_DIMMER // Add support for Tuya Serial Dimmer
  313. #define TUYA_DIMMER_ID 0 // Default dimmer Id
  314. #define USE_ARMTRONIX_DIMMERS // Add support for Armtronix Dimmers (+1k4 code)
  315. #define USE_PS_16_DZ // Add support for PS-16-DZ Dimmer
  316. //#define USE_AZ7798 // Add support for AZ-Instrument 7798 CO2 datalogger (+1k6 code)
  317. // Power monitoring sensors -----------------------
  318. #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code)
  319. #define USE_PZEM_AC // Add support for PZEM014,016 Energy monitor (+1k1 code)
  320. #define USE_PZEM_DC // Add support for PZEM003,017 Energy monitor (+1k1 code)
  321. #define USE_MCP39F501 // Add support for MCP39F501 Energy monitor as used in Shelly 2 (+3k1 code)
  322. // -- Low level interface devices -----------------
  323. #define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k3 code, 0k3 mem, 48 iram)
  324. // #define USE_IR_HVAC // Support for HVAC (Toshiba, Mitsubishi and LG) system using IR (+3k5 code)
  325. #define USE_IR_RECEIVE // Support for IR receiver (+7k2 code, 264 iram)
  326. #define IR_RCV_BUFFER_SIZE 100 // Max number of packets allowed in capture buffer (default 100 (*2 bytes ram))
  327. #define IR_RCV_TIMEOUT 15 // Number of milli-Seconds of no-more-data before we consider a message ended (default 15)
  328. #define IR_RCV_MIN_UNKNOWN_SIZE 6 // Set the smallest sized "UNKNOWN" message packets we actually care about (default 6)
  329. #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by //
  330. #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW)
  331. // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow
  332. #define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0))
  333. #define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code)
  334. //#define USE_TM1638 // Add support for TM1638 switches copying Switch1 .. Switch8 (+1k code)
  335. #define USE_HX711 // Add support for HX711 load cell (+1k5 code)
  336. // #define USE_HX711_GUI // Add optional web GUI to HX711 as scale (+1k8 code)
  337. #define USE_RF_FLASH // Add support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB (+3k code)
  338. #define USE_TX20_WIND_SENSOR // Add support for La Crosse TX20 anemometer (+2k code)
  339. #define USE_RC_SWITCH // Add support for RF transceiver using library RcSwitch (+2k7 code, 460 iram)
  340. //#define USE_RF_SENSOR // Add support for RF sensor receiver (434MHz or 868MHz) (+0k8 code)
  341. // #define USE_THEO_V2 // Add support for decoding Theo V2 sensors as documented on https://sidweb.nl using 434MHz RF sensor receiver (+1k4 code)
  342. // #define USE_ALECTO_V2 // Add support for decoding Alecto V2 sensors like ACH2010, WS3000 and DKW2012 weather stations using 868MHz RF sensor receiver (+1k7 code)
  343. /*********************************************************************************************\
  344. * Debug features are only supported in development branch
  345. \*********************************************************************************************/
  346. //#define USE_DEBUG_DRIVER // Use xdrv_99_debug.ino providing commands CpuChk, CfgXor, CfgDump, CfgPeek and CfgPoke
  347. /*********************************************************************************************\
  348. * Optional firmware configurations
  349. * Select none or just one for optional features and sensors as configured in sonoff_post.h
  350. * See RELEASENOTES.md for selected features
  351. \*********************************************************************************************/
  352. //#define USE_CLASSIC // Create sonoff-classic with initial configuration tools WPS, SmartConfig and WifiManager
  353. //#define USE_BASIC // Create sonoff-basic with no sensors
  354. //#define USE_SENSORS // Create sonoff-sensors with useful sensors enabled
  355. //#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation
  356. //#define USE_DISPLAYS // Create sonoff-display with display drivers enabled
  357. //#define BE_MINIMAL // Create sonoff-minimal as intermediate firmware for OTA-MAGIC
  358. /*********************************************************************************************\
  359. * No user configurable items below
  360. \*********************************************************************************************/
  361. #if defined(USE_MQTT_TLS) && defined(USE_WEBSERVER)
  362. #error "Select either USE_MQTT_TLS or USE_WEBSERVER as there is just not enough memory to play with"
  363. #endif
  364. #endif // _MY_USER_CONFIG_H_