mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-04 03:18:10 +10:00
* Add AS3935 lightning sensor support Implements meshtastic/firmware#10774: an AS3935Sensor (TelemetrySensor subclass) that reports lightning_strike_count_1h and lightning_distance_km on the normal environment telemetry interval, like a rain gauge - strikes are counted over a fixed rolling ~1h window and read non-destructively, so replying to a peer's telemetry request in between broadcasts can't silently drop counted strikes. The AS3935's IRQ pin (opt-in per board via AS3935_IRQ) is polled with a plain digitalRead() in runOnce(), deliberately not attachInterrupt(): the IRQ line is a level that stays asserted until its interrupt register is read, so polling can't miss an event regardless of timing, matching the SparkFun library's own reference examples. An interrupt would also buy nothing here even setting that aside - classification requires an I2C read (readInterruptReg(), which itself calls delay(2) per the datasheet's settle-time requirement), and blocking I2C/delay() calls aren't safe from ISR context on any of this codebase's target platforms, so the ISR could only ever set a flag for later draining - no less work than just polling the pin directly on the next tick. A genuine lightning classification also requests an immediate out-of-cycle send via a new EnvironmentTelemetryModule:: requestImmediateSend() hook. There's no fixed debounce on the request itself - EnvironmentTelemetryModule's existing airtime/duty-cycle gate already paces every send, so it sends as often as airtime allows rather than an arbitrary fixed rate. The request does expire after 5 minutes unfulfilled, so it can't fire an arbitrarily stale broadcast if airtime was blocked for a long stretch. The AS3935's I2C addresses (0x01-0x03) fall inside the range this codebase's I2C scanner otherwise skips as reserved, so detection is a small dedicated probe gated behind AS3935_IRQ and respecting the caller's address filter, rather than a change to the general scan loop. Presence is confirmed via a register write/readback round-trip rather than a fixed expected value, since the AS3935 has no WHOAMI register and a power-on-reset-only check can't survive a warm reboot that doesn't power-cycle the sensor (initDevice() permanently rewrites that register on first configuration). Generated files under src/mesh/generated/ are intentionally excluded from this commit - they're regenerated from the protobufs submodule by update_protobufs.yml, and hand edits get overwritten and conflict once the companion protobufs PR merges and the submodule pointer updates. Assisted-by: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Andrew Yong <me@ndoo.sg> * fix(as3935): calibration and telemetry logging initDevice() never called the library's calibrateOsc(). The AS3935's internal oscillators are calibrated against the antenna's resonance, which the AFE/watchdog/spike-rejection thresholds depend on; without it, only a directly-driven IRQ pin (bypassing detection entirely) reacted during testing. The sensor could already have a historical detection event latching the IRQ pin high before our initialization. Added an explicit drain read after the IRQ pin is configured, so the sensor doesn't start out stuck asserting IRQ. EnvironmentTelemetryModule::sendTelemetry() logs every other environment metric category on send but was missing lightning; added a matching log line. Assisted-by: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Andrew Yong <me@ndoo.sg> * Support AS3935 without an IRQ line, make the antenna trim configurable Detection no longer requires AS3935_IRQ. The probe is gated like the other environmental sensors, so an I2C-only breakout is found on any board. Where AS3935_IRQ is defined the pin still gates the I2C read, otherwise runOnce() polls the interrupt register, which latches until read. Antenna tuning capacitance moves to AdminMessage.sensor_config.as3935_config, persisted to /prefs/as3935.dat and defaulting to 96pF. The chip does not retain it across power loss. Disturbers are masked in the chip, since runOnce() now polls every second. The lightning telemetry log is guarded so nodes without the sensor no longer log it on every send. Requires meshtastic/protobufs#981. * Revert protobufs pointer to the develop baseline The submodule bump conflicts on merge and the generated headers come from an out of band CI job, so the pointer moves with that job rather than in this branch. * Report lightning strikes over a true rolling hour strikeCountWindow was zeroed on a fixed interval, so lightning_strike_count_1h reported strikes since the last reset rather than over the preceding hour. RollingCounter is a fixed memory sliding window: one counter per bucket, nothing stored per event, so a storm cannot grow it. The ring holds one bucket more than the window needs so none is recycled while part of it is still inside, and the oldest bucket contributes only the fraction still in range. Both are needed to hold the span at exactly the window length rather than letting it drift by a bucket either way. Expiry is exact to one bucket rather than to the event, which is below the 5 minute floor on mesh telemetry sends. The distance expires with the last strike in the window instead of on the interval reset. Covered by test/test_rolling_counter. * Widen the RollingCounter edge weighting to 64 bit counts * inWindow is a 32 bit product, so a bucket holding more than 2^32 / BucketMs events wraps. At a 5 minute width that is about 14k: a bucket of 50000 reported 11367 instead of 40000 once it reached the window edge. Below the threshold nothing changes, so lightning was unaffected, but the helper is meant to be reused by counters with far higher rates. test_large_burst_at_window_edge covers it. The existing burst test sampled only inside the window, where the bucket is whole and never weighted. * Trim RollingCounter comments to the house limit --------- Signed-off-by: Andrew Yong <me@ndoo.sg> Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
271 lines
17 KiB
INI
271 lines
17 KiB
INI
; PlatformIO Project Configuration File
|
|
; https://docs.platformio.org/page/projectconf.html
|
|
|
|
[platformio]
|
|
default_envs = heltec-v3
|
|
|
|
extra_configs =
|
|
variants/*/*.ini
|
|
variants/*/*/platformio.ini
|
|
variants/*/diy/*/platformio.ini
|
|
src/graphics/niche/InkHUD/PlatformioConfig.ini
|
|
|
|
description = Meshtastic
|
|
|
|
; Shared E-Ink hardware layer (chipset drivers, panel profiles, backlight).
|
|
; Variants opt in by extending this env; unconverted variants keep the legacy
|
|
; EInkDisplay2/EInkDynamicDisplay stack. See src/graphics/eink/.
|
|
[niche]
|
|
build_src_filter =
|
|
+<graphics/eink/>
|
|
build_flags =
|
|
-D MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
|
|
|
[env]
|
|
test_build_src = true
|
|
extra_scripts =
|
|
pre:bin/platformio-pre.py
|
|
bin/platformio-custom.py
|
|
post:extra_scripts/nrf54l15_linker.py
|
|
; note: we add src to our include search path so that lmic_project_config can override
|
|
; note: TINYGPS_OPTION_NO_CUSTOM_FIELDS is VERY important. We don't use custom fields and somewhere in that pile
|
|
; of code is a heap corruption bug!
|
|
; FIXME: fix lib/BluetoothOTA dependency back on src/ so we can remove -Isrc
|
|
; The Radiolib stuff will speed up building considerably. Exclud all the stuff we dont need.
|
|
build_flags = -Wno-missing-field-initializers
|
|
|
|
-Wno-format
|
|
-Isrc -Isrc/mesh -Isrc/mesh/generated -Isrc/gps -Isrc/buzz -Wl,-Map,"${platformio.build_dir}"/output.map
|
|
-DUSE_THREAD_NAMES
|
|
-DTINYGPS_OPTION_NO_CUSTOM_FIELDS
|
|
-DPB_ENABLE_MALLOC=1
|
|
-DPB_VALIDATE_UTF8=1
|
|
-DRADIOLIB_EXCLUDE_CC1101=1
|
|
-DRADIOLIB_EXCLUDE_NRF24=1
|
|
-DRADIOLIB_EXCLUDE_RF69=1
|
|
-DRADIOLIB_EXCLUDE_SX1231=1
|
|
-DRADIOLIB_EXCLUDE_SX1233=1
|
|
-DRADIOLIB_EXCLUDE_SI443X=1
|
|
-DRADIOLIB_EXCLUDE_RFM2X=1
|
|
-DRADIOLIB_EXCLUDE_AFSK=1
|
|
-DRADIOLIB_EXCLUDE_BELL=1
|
|
-DRADIOLIB_EXCLUDE_HELLSCHREIBER=1
|
|
-DRADIOLIB_EXCLUDE_MORSE=1
|
|
-DRADIOLIB_EXCLUDE_RTTY=1
|
|
-DRADIOLIB_EXCLUDE_SSTV=1
|
|
-DRADIOLIB_EXCLUDE_AX25=1
|
|
-DRADIOLIB_EXCLUDE_DIRECT_RECEIVE=1
|
|
-DRADIOLIB_EXCLUDE_BELL=1
|
|
-DRADIOLIB_EXCLUDE_PAGER=1
|
|
-DRADIOLIB_EXCLUDE_FSK4=1
|
|
-DRADIOLIB_EXCLUDE_APRS=1
|
|
-DRADIOLIB_EXCLUDE_ADSB=1
|
|
-DRADIOLIB_EXCLUDE_LORAWAN=1
|
|
-DMESHTASTIC_EXCLUDE_DROPZONE=1
|
|
-DMESHTASTIC_EXCLUDE_REPLYBOT=1
|
|
-DMESHTASTIC_EXCLUDE_RANGETEST=1
|
|
-DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1
|
|
-DMESHTASTIC_EXCLUDE_HEALTH_TELEMETRY=1
|
|
-DMESHTASTIC_EXCLUDE_POWERSTRESS=1 ; exclude power stress test module from main firmware
|
|
-DMESHTASTIC_EXCLUDE_GENERIC_THREAD_MODULE=1
|
|
-DMESHTASTIC_EXCLUDE_POWERMON=1
|
|
-D MAX_THREADS=40 ; As we've split modules, we have more threads to manage
|
|
#-DBUILD_EPOCH=$UNIX_TIME ; set in platformio-custom.py now
|
|
#-D OLED_PL=1
|
|
#-D DEBUG_HEAP=1 ; uncomment to add free heap space / memory leak debugging logs
|
|
#-D DEBUG_LOOP_TIMING=1 ; uncomment to add main loop timing logs
|
|
|
|
monitor_speed = 115200
|
|
monitor_filters = direct
|
|
lib_deps =
|
|
# renovate: datasource=git-refs depName=meshtastic-esp8266-oled-ssd1306 packageName=https://github.com/meshtastic/esp8266-oled-ssd1306 gitBranch=master
|
|
https://github.com/meshtastic/esp8266-oled-ssd1306/archive/ace0fcbc108d357e1801cc24a45ba8a80e160c9b.zip
|
|
# renovate: datasource=git-refs depName=meshtastic-OneButton packageName=https://github.com/meshtastic/OneButton gitBranch=master
|
|
https://github.com/meshtastic/OneButton/archive/fa352d668c53f290cfa480a5f79ad422cd828c70.zip
|
|
# renovate: datasource=git-refs depName=meshtastic-arduino-fsm packageName=https://github.com/meshtastic/arduino-fsm gitBranch=master
|
|
https://github.com/meshtastic/arduino-fsm/archive/7db3702bf0cfe97b783d6c72595e3f38e0b19159.zip
|
|
# renovate: datasource=git-refs depName=meshtastic-TinyGPSPlus packageName=https://github.com/meshtastic/TinyGPSPlus gitBranch=master
|
|
https://github.com/meshtastic/TinyGPSPlus/archive/71a82db35f3b973440044c476d4bcdc673b104f4.zip
|
|
# renovate: datasource=git-refs depName=meshtastic-ArduinoThread packageName=https://github.com/meshtastic/ArduinoThread gitBranch=master
|
|
https://github.com/meshtastic/ArduinoThread/archive/b841b0415721f1341ea41cccfb4adccfaf951567.zip
|
|
# renovate: datasource=github-tags depName=Nanopb packageName=nanopb/nanopb
|
|
https://github.com/nanopb/nanopb/archive/refs/tags/nanopb-0.4.9.1.zip
|
|
# renovate: datasource=github-tags depName=ErriezCRC32 packageName=Erriez/ErriezCRC32
|
|
https://github.com/Erriez/ErriezCRC32/archive/refs/tags/1.0.1.zip
|
|
|
|
; Used for the code analysis in PIO Home / Inspect
|
|
check_tool = cppcheck
|
|
check_skip_packages = yes
|
|
check_flags =
|
|
-DAPP_VERSION=1.0.0
|
|
--suppressions-list=suppressions.txt
|
|
--inline-suppr
|
|
|
|
; Common settings for conventional (non Portduino) Arduino targets
|
|
[arduino_base]
|
|
framework = arduino
|
|
lib_deps =
|
|
${env.lib_deps}
|
|
# renovate: datasource=github-tags depName=NonBlockingRTTTL packageName=end2endzone/NonBlockingRTTTL
|
|
https://github.com/end2endzone/NonBlockingRTTTL/archive/refs/tags/1.4.0.zip
|
|
build_unflags =
|
|
-std=c++11
|
|
-std=gnu++11
|
|
build_flags = ${env.build_flags} -Os
|
|
-std=gnu++17
|
|
build_src_filter = ${env.build_src_filter} -<platform/> +<platform/extra_variants/> -<graphics/niche/> -<graphics/eink/>
|
|
|
|
; Common libs for communicating over TCP/IP networks such as MQTT
|
|
[networking_base]
|
|
lib_deps =
|
|
# renovate: datasource=github-tags depName=TBPubSubClient packageName=thingsboard/pubsubclient
|
|
https://github.com/thingsboard/pubsubclient/archive/refs/tags/v2.12.1.zip
|
|
# renovate: datasource=github-tags depName=NTPClient packageName=arduino-libraries/NTPClient
|
|
https://github.com/arduino-libraries/NTPClient/archive/refs/tags/3.2.1.zip
|
|
|
|
; Extra TCP/IP networking libs for supported devices
|
|
[networking_extra]
|
|
lib_deps =
|
|
# renovate: datasource=github-tags depName=Syslog packageName=arcao/Syslog
|
|
https://github.com/arcao/Syslog/archive/refs/tags/v2.0.zip
|
|
|
|
[radiolib_base]
|
|
lib_deps =
|
|
# renovate: datasource=github-tags depName=RadioLib packageName=jgromes/RadioLib
|
|
https://github.com/jgromes/RadioLib/archive/6d8934836678d8894e3d556550475b37dce3e2b6.zip
|
|
|
|
[device-ui_base]
|
|
lib_deps =
|
|
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
|
https://github.com/meshtastic/device-ui/archive/adfbd3811a53b6aed0649c8d8f078118c042a407.zip
|
|
custom_sdkconfig =
|
|
# CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC is not set
|
|
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
|
|
|
|
; Common libs for environmental measurements in telemetry module
|
|
[environmental_base]
|
|
lib_deps =
|
|
# renovate: datasource=github-tags depName=Adafruit BusIO packageName=adafruit/Adafruit_BusIO
|
|
https://github.com/adafruit/Adafruit_BusIO/archive/refs/tags/1.17.4.zip
|
|
# renovate: datasource=github-tags depName=Adafruit Unified Sensor packageName=adafruit/Adafruit_Sensor
|
|
https://github.com/adafruit/Adafruit_Sensor/archive/refs/tags/1.1.15.zip
|
|
# renovate: datasource=github-tags depName=Adafruit GFX packageName=adafruit/Adafruit-GFX-Library
|
|
https://github.com/adafruit/Adafruit-GFX-Library/archive/refs/tags/1.12.6.zip
|
|
# renovate: datasource=github-tags depName=NeoPixel packageName=adafruit/Adafruit_NeoPixel
|
|
https://github.com/adafruit/Adafruit_NeoPixel/archive/1.15.5.zip
|
|
# renovate: datasource=github-tags depName=Adafruit SSD1306 packageName=adafruit/Adafruit_SSD1306
|
|
https://github.com/adafruit/Adafruit_SSD1306/archive/2.5.17.zip
|
|
# renovate: datasource=github-tags depName=Adafruit BMP280 packageName=adafruit/Adafruit_BMP280_Library
|
|
https://github.com/adafruit/Adafruit_BMP280_Library/archive/refs/tags/3.0.0.zip
|
|
# renovate: datasource=github-tags depName=Adafruit BMP085 packageName=adafruit/Adafruit-BMP085-Library
|
|
https://github.com/adafruit/Adafruit-BMP085-Library/archive/refs/tags/1.2.4.zip
|
|
# renovate: datasource=github-tags depName=Adafruit BME280 packageName=adafruit/Adafruit_BME280_Library
|
|
https://github.com/adafruit/Adafruit_BME280_Library/archive/refs/tags/2.3.0.zip
|
|
# renovate: datasource=github-tags depName=Adafruit DPS310 packageName=adafruit/Adafruit_DPS310
|
|
https://github.com/adafruit/Adafruit_DPS310/archive/refs/tags/1.1.6.zip
|
|
# renovate: datasource=github-tags depName=Adafruit SH110x packageName=adafruit/Adafruit_SH110x
|
|
https://github.com/adafruit/Adafruit_SH110x/archive/2.1.15.zip
|
|
# renovate: datasource=github-tags depName=Adafruit MCP9808 packageName=adafruit/Adafruit_MCP9808_Library
|
|
https://github.com/adafruit/Adafruit_MCP9808_Library/archive/refs/tags/2.0.2.zip
|
|
# renovate: datasource=github-tags depName=Adafruit INA260 packageName=adafruit/Adafruit_INA260
|
|
https://github.com/adafruit/Adafruit_INA260/archive/refs/tags/1.5.3.zip
|
|
# renovate: datasource=github-tags depName=Adafruit INA219 packageName=adafruit/Adafruit_INA219
|
|
https://github.com/adafruit/Adafruit_INA219/archive/refs/tags/1.2.3.zip
|
|
# renovate: datasource=github-tags depName=Adafruit MPU6050 packageName=adafruit/Adafruit_MPU6050
|
|
https://github.com/adafruit/Adafruit_MPU6050/archive/refs/tags/2.2.9.zip
|
|
# renovate: datasource=github-tags depName=Adafruit LIS3DH packageName=adafruit/Adafruit_LIS3DH
|
|
https://github.com/adafruit/Adafruit_LIS3DH/archive/refs/tags/1.3.0.zip
|
|
# renovate: datasource=github-tags depName=Adafruit AHTX0 packageName=adafruit/Adafruit_AHTX0
|
|
https://github.com/adafruit/Adafruit_AHTX0/archive/refs/tags/2.0.6.zip
|
|
# renovate: datasource=github-tags depName=Adafruit LSM6DS packageName=adafruit/Adafruit_LSM6DS
|
|
https://github.com/adafruit/Adafruit_LSM6DS/archive/refs/tags/4.7.4.zip
|
|
# renovate: datasource=github-tags depName=Adafruit TSL2591 packageName=adafruit/Adafruit_TSL2591_Library
|
|
https://github.com/adafruit/Adafruit_TSL2591_Library/archive/refs/tags/1.4.5.zip
|
|
# renovate: datasource=github-tags depName=EmotiBit MLX90632 packageName=emotibit/EmotiBit_MLX90632
|
|
https://github.com/EmotiBit/EmotiBit_MLX90632/archive/refs/tags/v1.0.8.zip
|
|
# renovate: datasource=github-tags depName=Adafruit MLX90614 packageName=adafruit/Adafruit-MLX90614-Library
|
|
https://github.com/adafruit/Adafruit-MLX90614-Library/archive/refs/tags/2.1.6.zip
|
|
# renovate: datasource=github-tags depName=INA3221_RT packageName=RobTillaart/INA3221_RT
|
|
https://github.com/RobTillaart/INA3221_RT/archive/refs/tags/0.4.2.zip
|
|
# renovate: datasource=github-tags depName=QMC5883L Compass packageName=mprograms/QMC5883LCompass
|
|
https://github.com/mprograms/QMC5883LCompass/archive/refs/tags/v1.2.3.zip
|
|
# renovate: datasource=github-tags depName=DFRobot_RTU packageName=dfrobot/DFRobot_RTU
|
|
https://github.com/DFRobot/DFRobot_RTU/archive/refs/tags/V1.0.6.zip
|
|
# renovate: datasource=git-refs depName=DFRobot_RainfallSensor packageName=https://github.com/DFRobot/DFRobot_RainfallSensor gitBranch=master
|
|
https://github.com/DFRobot/DFRobot_RainfallSensor/archive/38fea5e02b40a5430be6dab39a99a6f6347d667e.zip
|
|
# renovate: datasource=github-tags depName=SparkFun AS3935 packageName=sparkfun/SparkFun_AS3935_Lightning_Detector_Arduino_Library
|
|
https://github.com/sparkfun/SparkFun_AS3935_Lightning_Detector_Arduino_Library/archive/refs/tags/v1.4.9.zip
|
|
# renovate: datasource=github-tags depName=INA226 packageName=robtillaart/INA226
|
|
https://github.com/RobTillaart/INA226/archive/refs/tags/0.6.6.zip
|
|
# renovate: datasource=github-tags depName=SparkFun MAX3010x packageName=sparkfun/SparkFun_MAX3010x_Sensor_Library
|
|
https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library/archive/refs/tags/v1.1.2.zip
|
|
# renovate: datasource=github-tags depName=SparkFun 9DoF IMU Breakout ICM 20948 packageName=sparkfun/SparkFun_ICM-20948_ArduinoLibrary
|
|
https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/archive/refs/tags/v1.3.2.zip
|
|
# renovate: datasource=github-tags depName=TDK InvenSense ICM42670P packageName=tdk-invn-oss/motion.arduino.ICM42670P
|
|
https://github.com/tdk-invn-oss/motion.arduino.ICM42670P/archive/refs/tags/1.0.8.zip
|
|
# renovate: datasource=github-tags depName=Adafruit LTR390 Library packageName=adafruit/Adafruit_LTR390
|
|
https://github.com/adafruit/Adafruit_LTR390/archive/refs/tags/1.1.2.zip
|
|
# renovate: datasource=github-tags depName=Adafruit PCT2075 packageName=adafruit/Adafruit_PCT2075
|
|
https://github.com/adafruit/Adafruit_PCT2075/archive/1.3.1.zip
|
|
# renovate: datasource=github-tags depName=DFRobot_BMM150 packageName=dfrobot/DFRobot_BMM150
|
|
https://github.com/DFRobot/DFRobot_BMM150/archive/refs/tags/V1.0.0.zip
|
|
# renovate: datasource=github-tags depName=SparkFun MMC5983MA Magnetometer packageName=sparkfun/SparkFun_MMC5983MA_Magnetometer_Arduino_Library
|
|
https://github.com/sparkfun/SparkFun_MMC5983MA_Magnetometer_Arduino_Library/archive/v1.1.5.zip
|
|
# renovate: datasource=github-tags depName=Adafruit_TSL2561 packageName=adafruit/Adafruit_TSL2561
|
|
https://github.com/adafruit/Adafruit_TSL2561/archive/refs/tags/1.1.3.zip
|
|
# renovate: datasource=github-tags depName=BH1750_WE packageName=wollewald/BH1750_WE
|
|
https://github.com/wollewald/BH1750_WE/archive/refs/tags/1.1.10.zip
|
|
# renovate: datasource=git-refs depName=Fusion packageName=https://github.com/meshtastic/Fusion gitBranch=main
|
|
https://github.com/meshtastic/Fusion/archive/936e1eb1e5ea19e8f4ed467526f91adeebb4f53c.zip
|
|
# renovate: datasource=github-tags depName=Sensirion Core packageName=sensirion/arduino-core
|
|
https://github.com/Sensirion/arduino-core/archive/refs/tags/0.7.3.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD4x packageName=sensirion/arduino-i2c-scd4x
|
|
https://github.com/Sensirion/arduino-i2c-scd4x/archive/refs/tags/1.1.0.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SFA3x packageName=sensirion/arduino-i2c-sfa3x
|
|
https://github.com/Sensirion/arduino-i2c-sfa3x/archive/refs/tags/1.0.0.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD30 packageName=sensirion/arduino-i2c-scd30
|
|
https://github.com/Sensirion/arduino-i2c-scd30/archive/1.1.1.zip
|
|
# renovate: datasource=github-tags depName=arduino-sht packageName=sensirion/arduino-sht
|
|
https://github.com/Sensirion/arduino-sht/archive/refs/tags/v1.2.6.zip
|
|
# renovate: datasource=github-tags depName=SPA06_003 packageName=adafruit/Adafruit_SPA06_003
|
|
https://github.com/adafruit/Adafruit_SPA06_003/archive/refs/tags/1.0.2.zip
|
|
# renovate: datasource=github-tags depName=Seeed_PM2_5_sensor_HM3301 packageName=meshtastic/Seeed_PM2_5_sensor_HM3301
|
|
https://github.com/meshtastic/Seeed_PM2_5_sensor_HM3301/archive/2704ca254c7e2136c52ac23198dd05f5ba1e2f04.zip
|
|
|
|
; Extra environmental sensor libraries (not included in native / portduino).
|
|
; BME680/BME688 IAQ comes from the in-tree open estimator (BME680IaqEstimator);
|
|
; the proprietary Bosch BSEC blob (measured ~37-39 KB flash + ~4-5 KB static
|
|
; RAM per image) is intentionally not linked anywhere.
|
|
[environmental_extra]
|
|
lib_deps =
|
|
# renovate: datasource=github-tags depName=Adafruit BMP3XX packageName=adafruit/Adafruit_BMP3XX
|
|
https://github.com/adafruit/Adafruit_BMP3XX/archive/refs/tags/2.1.6.zip
|
|
# renovate: datasource=github-tags depName=Adafruit MAX1704X packageName=adafruit/Adafruit_MAX1704X
|
|
https://github.com/adafruit/Adafruit_MAX1704X/archive/refs/tags/1.0.3.zip
|
|
# renovate: datasource=github-tags depName=Adafruit LPS2X packageName=adafruit/Adafruit_LPS2X
|
|
https://github.com/adafruit/Adafruit_LPS2X/archive/refs/tags/2.0.6.zip
|
|
# renovate: datasource=github-tags depName=Adafruit VEML7700 packageName=adafruit/Adafruit_VEML7700
|
|
https://github.com/adafruit/Adafruit_VEML7700/archive/refs/tags/2.1.6.zip
|
|
# renovate: datasource=github-tags depName=SparkFun Qwiic Scale NAU7802 packageName=sparkfun/SparkFun_Qwiic_Scale_NAU7802_Arduino_Library
|
|
https://github.com/sparkfun/SparkFun_Qwiic_Scale_NAU7802_Arduino_Library/archive/refs/tags/v1.0.6.zip
|
|
# renovate: datasource=custom.pio depName=ClosedCube OPT3001 packageName=closedcube/library/ClosedCube OPT3001
|
|
closedcube/ClosedCube OPT3001@1.1.2
|
|
# renovate: datasource=git-refs depName=meshtastic-DFRobot_LarkWeatherStation packageName=https://github.com/meshtastic/DFRobot_LarkWeatherStation gitBranch=master
|
|
https://github.com/meshtastic/DFRobot_LarkWeatherStation/archive/4de3a9cadef0f6a5220a8a906cf9775b02b0040d.zip
|
|
# renovate: datasource=github-tags depName=Sensirion Core packageName=sensirion/arduino-core
|
|
https://github.com/Sensirion/arduino-core/archive/refs/tags/0.7.3.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD4x packageName=sensirion/arduino-i2c-scd4x
|
|
https://github.com/Sensirion/arduino-i2c-scd4x/archive/refs/tags/1.1.0.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SFA3x packageName=sensirion/arduino-i2c-sfa3x
|
|
https://github.com/Sensirion/arduino-i2c-sfa3x/archive/refs/tags/1.0.0.zip
|
|
# renovate: datasource=github-tags depName=Sensirion I2C SCD30 packageName=sensirion/arduino-i2c-scd30
|
|
https://github.com/Sensirion/arduino-i2c-scd30/archive/1.1.1.zip
|
|
# renovate: datasource=github-tags depName=arduino-sht packageName=sensirion/arduino-sht
|
|
https://github.com/Sensirion/arduino-sht/archive/refs/tags/v1.2.6.zip
|
|
# renovate: datasource=custom.pio depName=Adafruit ADS1X15 packageName=adafruit/library/Adafruit ADS1X15 Library
|
|
https://github.com/adafruit/Adafruit_ADS1X15/archive/refs/tags/2.6.2.zip
|
|
# renovate: datasource=github-tags depName=Adafruit DS248x packageName=adafruit/Adafruit_DS248x
|
|
https://github.com/adafruit/Adafruit_DS248x/archive/refs/tags/1.2.0.zip
|
|
# renovate: datasource=github-tags depName=Adafruit_BME680 packageName=adafruit/Adafruit_BME680
|
|
https://github.com/adafruit/Adafruit_BME680/archive/refs/tags/2.0.6.zip
|