; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[platformio]
src_dir = main
include_dir = main

extra_configs =
  environments.ini
  tests/*_env.ini
  *_env.ini

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                 ENVIRONMENT CHOICE                                   ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Uncomment the env line corresponding to your board and modules required,              ;
;you can also adapt the modules by removing the corresponding lines in the env detail  ;
; if you go to the build flag section of your env you will see that some User_config.h ;
; parameters can be overwritten here, for example the gateway name.                    ;
; If you want to avoid the lost of your environments at each update you can put them   ;
; into a separate file called prod_env.ini, it will be automatically read by pio       ;
; an example (prod_env.ini.example) is available into the same folder as this file.    ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;default_envs = rfbridge
;default_envs = rfbridge-direct
;default_envs = esp32dev-all-test
;default_envs = esp32dev-rf
;default_envs = esp32dev-pilight
;default_envs = esp32dev-pilight-cc1101
;default_envs = esp32dev-somfy-cc1101
;default_envs = esp32dev-pilight-somfy-cc1101
;default_envs = esp32dev-weatherstation
;default_envs = esp32dev-gf-sun-inverter
;default_envs = esp32dev-ir
;default_envs = esp32dev-ble
;default_envs = esp32dev-ble-mqtt-undecoded
;default_envs = esp32dev-ble-aws
;default_envs = esp32feather-ble
;default_envs = esp32-lolin32lite-ble
;default_envs = esp32-olimex-gtw-ble-eth
;default_envs = esp32-olimex-gtw-ble-poe
;default_envs = esp32-olimex-gtw-ble-poe-iso
;default_envs = esp32-wt32-eth01-ble-eth
;default_envs = esp32-olimex-gtw-ble-wifi
;default_envs = esp32-m5stick-ble
;default_envs = esp32-m5stack-ble
;default_envs = esp32-m5tough-ble
;default_envs = esp32-m5stick-c-ble
;default_envs = esp32-m5stick-cp-ble
;default_envs = esp32-m5atom-matrix
;default_envs = esp32-m5atom-lite
;default_envs = esp32doitv1-aithinker-r01-sx1278
;default_envs = esp32dev-rtl_433
;default_envs = heltec-rtl_433
;default_envs = heltec-ble
;default_envs = lilygo-rtl_433
;default_envs = lilygo-ble
;default_envs = esp32dev-multi_receiver
;default_envs = tinypico-ble
;default_envs = ttgo-lora32-v1-868
;default_envs = ttgo-lora32-v1-915
;default_envs = ttgo-t-beam
;default_envs = heltec-wifi-lora-32-868
;default_envs = heltec-wifi-lora-32-915
;default_envs = shelly-plus1
;default_envs = nodemcuv2-all-test
;default_envs = nodemcuv2-fastled-test
;default_envs = nodemcuv2-2g
;default_envs = nodemcuv2-ir
;default_envs = nodemcuv2-rs232
;default_envs = avatto-bakeey-ir
;default_envs = nodemcuv2-rf
;default_envs = nodemcuv2-rf-cc1101
;default_envs = nodemcuv2-somfy-cc1101
;default_envs = manual-wifi-test
;default_envs = nodemcuv2-mqtt-fw-test
;default_envs = rf-wifi-gateway
;default_envs = nodemcuv2-rf2
;default_envs = nodemcuv2-rf2-cc1101
;default_envs = nodemcuv2-pilight
;default_envs = nodemcuv2-weatherstation
;default_envs = sonoff-basic
;default_envs = sonoff-basic-rfr3
;default_envs = atmega-all-test
;default_envs = uno-rf
;default_envs = uno-fastled
;default_envs = esp32dev-ble-datatest
;default_envs = esp32s3-dev-c1-ble
;default_envs = esp32c3-dev-m1-ble
;default_envs = airm2m_core_esp32c3
;default_envs = esp32c3-dev-c2-ble
;default_envs = lolin_c3_mini
;default_envs = thingpulse-espgateway
;default_envs = thingpulse-espgateway-ethernet

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                              ENVIRONMENTS PARAMETERS                                 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Libraries and parameters shared accross environements                                 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[libraries]
arduinojson = ArduinoJson@6.18.3
arduinolog = https://github.com/1technophile/Arduino-Log.git#d13cd80
pubsubclient = PubSubClient@2.8
rc-switch = https://github.com/1technophile/rc-switch.git#98537e9
newremoteswitch = https://github.com/1technophile/NewRemoteSwitch.git#8eb980e
ble = https://github.com/h2zero/NimBLE-Arduino.git#1.4.1
irremoteesp = IRremoteESP8266@2.8.2
irremote = https://github.com/z3t0/Arduino-IRremote.git#1c08a37
lora = https://github.com/sandeepmistry/arduino-LoRa.git#f4a1d27
esppilight = ESPiLight@0.17.0
rfWeatherStation = WeatherStationDataRx@0.3.1
rfm69 = https://github.com/LowPowerLab/RFM69.git#2e915ea
rfm69spi = https://github.com/lowpowerlab/spiflash.git#9c0c2b9
rfm69_low-power = Low-Power@1.6
dht = DHT sensor library@1.3.2
unifiedsensor = Adafruit Unified Sensor@1.1.4
tsl2561 = Adafruit TSL2561@1.0.3
bme280 = SparkFun BME280@2.0.4
bmp180 = BMP180#efac46bd8d
htu21 = SparkFun HTU21D Humidity and Temperature Sensor Breakout@1.1.3
ahtx0 = Adafruit AHTX0
ina226 = https://github.com/jarzebski/Arduino-INA226.git#968a684
a6lib = https://github.com/h2zero/A6lib
wifimanager32 = https://github.com/tzapu/WiFiManager.git#9f5981e
wifimanager8266 = https://github.com/tzapu/WiFiManager.git#2.0.5-beta
ethernet = Ethernet
esp8266_mdns = esp8266_mdns
wire = Wire
fastled = fastled/FastLED@3.5.0
adafruit_neopixel = adafruit/Adafruit NeoPixel@^1.11.0
onewire = paulstoffregen/OneWire@2.3.7
dallastemperature = DallasTemperature
m5stickc = M5StickC@0.2.0
m5stickcp = https://github.com/m5stack/M5StickC-Plus.git#0.0.2
m5stack = M5Stack@0.3.1
m5tough = https://github.com/m5stack/M5Tough.git#b502416
smartrc-cc1101-driver-lib = SmartRC-CC1101-Driver-Lib@2.5.7
stl = https://github.com/mike-matera/ArduinoSTL.git#7411816
shtc3 = https://github.com/sparkfun/SparkFun_SHTC3_Arduino_Library
somfy_remote=Somfy_Remote_Lib@0.3.0
rtl_433_ESP = https://github.com/NorthernMan54/rtl_433_ESP.git#v0.3.0
emodbus =  miq19/eModbus@1.0.0
gfSunInverter = https://github.com/BlackSmith/GFSunInverter.git#v1.0.1
decoder = https://github.com/theengs/decoder.git#v1.5.7
ssd1306 = https://github.com/ThingPulse/esp8266-oled-ssd1306.git#f96fd6a
lm75 = jeremycole/I2C Temperature Sensors derived from the LM75@^1.0.3
rn8209 = https://github.com/theengs/RN8209C-SDK.git#arduino

[env]
framework = arduino
lib_deps =
  ${libraries.pubsubclient}
  ${libraries.arduinojson}
  ${libraries.arduinolog}
build_flags =
  -w ; supress all warnings
;  -E ; generate precompiled source file (.pio/build/*/src/main.ino.cpp.o), use for precompilator debuging only (prevent compilation to succeed)
;  '-DLOG_LEVEL=LOG_LEVEL_TRACE'  ; Enable trace level logging
monitor_speed = 115200

[com]
esp8266_platform = espressif8266@4.1.0
esp32_platform = espressif32@6.1.0
esp32_solo_platform = https://github.com/tasmota/platform-espressif32/releases/download/v.2.0.5/platform-espressif32-v.2.0.5.zip
atmelavr_platform = atmelavr@3.3.0

[com-esp] ; Used by all ESP8266/ESP8285 based builds
lib_deps =
  ${env.lib_deps}
build_flags =
  ${env.build_flags}
  '-DENV_NAME="$PIOENV"'
  '-DZmqttDiscovery="HADiscovery"'
  '-DTRACE=1'
  '-DMQTTsetMQTT'
  '-DMQTT_HTTPS_FW_UPDATE'
  ;'-DCORE_DEBUG_LEVEL=4'

[com-esp32] ; Used by all ESP32 based builds
lib_deps =
  ${env.lib_deps}
  ${libraries.wifimanager32}
build_flags =
  ${env.build_flags}
  '-DENV_NAME="$PIOENV"'
  '-DZmqttDiscovery="HADiscovery"'
  '-DTRACE=1'
  '-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED'
  '-DCONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED'
  '-DMQTTsetMQTT'
  '-DMQTT_HTTPS_FW_UPDATE'
  ;'-DCORE_DEBUG_LEVEL=4'
  '-DZwebUI="WebUI"'  ; enable WebUI as a default for all ESP32 builds ( the module only enables for ESP32 based builds )
  '-DARDUINO_LOOP_STACK_SIZE=9600' ; The firmware upgrade options needs a large amount of free stack, ~9600

[com-arduino]
lib_deps =
  ${env.lib_deps}
  ${libraries.ethernet}
build_flags =
  ${env.build_flags}
  '-DZmqttDiscovery="HADiscovery"'
  '-DTRACE=1'

[com-arduino-low-memory]
lib_deps =
  ${env.lib_deps}
  ${libraries.ethernet}
build_flags =
  ${env.build_flags}
  '-DsimpleReceiving=false'
