Skip to content
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
544 commits
Select commit Hold shift + click to select a range
7b8bb9c
Refactor SQ212, OBS3, and Cyclops to allow either processor or ADS1x1…
SRGDamia1 Feb 24, 2026
3d92c05
Use the AnalogVoltageBase for differential measurements for the Alpha…
SRGDamia1 Feb 24, 2026
c0f7c9e
More description of ADS I2C addresses
SRGDamia1 Feb 24, 2026
2f91e6e
Update ctor docs and delete copy and move ctors
SRGDamia1 Feb 24, 2026
4df6330
Change string construction
SRGDamia1 Feb 24, 2026
28aa021
update includes
SRGDamia1 Feb 24, 2026
dca3e7b
Add f tag to some floats
SRGDamia1 Feb 24, 2026
62cc333
Decrease variable scope
SRGDamia1 Feb 24, 2026
650302e
Made default voltage multiplier 1.0f
SRGDamia1 Feb 24, 2026
f634350
Disambiguate getSensorLocation
SRGDamia1 Feb 24, 2026
e7d704f
float tags
SRGDamia1 Feb 24, 2026
adc82fa
use OPERATING_VOLTAGE for invalid supply voltage
SRGDamia1 Feb 24, 2026
762c7ca
restructure string creation
SRGDamia1 Feb 24, 2026
1a9ad47
Use AnalogVoltageBase for AlalogEC and ALS
SRGDamia1 Feb 24, 2026
74e7b62
Comment change
SRGDamia1 Feb 24, 2026
fb8ae84
Some comments and float tags
SRGDamia1 Feb 24, 2026
cd5319a
const number values
SRGDamia1 Feb 24, 2026
2219914
Verify _analogVoltageReader was created
SRGDamia1 Feb 24, 2026
e287f78
Forward declaration
SRGDamia1 Feb 24, 2026
e2d3a9f
Validate channel
SRGDamia1 Feb 24, 2026
d735cd9
validate supply voltage
SRGDamia1 Feb 24, 2026
bf9137d
default values
SRGDamia1 Feb 24, 2026
d45e149
Remove stupid check
SRGDamia1 Feb 24, 2026
416464b
Remove un-necessary null checks
SRGDamia1 Feb 24, 2026
b518c3c
Update some comments
SRGDamia1 Feb 24, 2026
e620472
Consistent types for analog channels
SRGDamia1 Feb 24, 2026
1efc54d
float tag
SRGDamia1 Feb 24, 2026
d32c696
Check for valid load resistor
SRGDamia1 Feb 24, 2026
d1e28aa
Clarify use of supply voltage, clamp after saturation, use defines fo…
SRGDamia1 Feb 24, 2026
d6c5b9d
Move to initializer
SRGDamia1 Feb 24, 2026
01d1c51
docs and comments
SRGDamia1 Feb 24, 2026
2584b62
Revert "Remove un-necessary null checks"
SRGDamia1 Feb 24, 2026
000ea79
Fix some comments, float tags, magic numbers
SRGDamia1 Feb 25, 2026
27c47da
Fix analog voltage conversion
SRGDamia1 Feb 25, 2026
63b58f1
combine TIADS1x15 constructors
SRGDamia1 Feb 25, 2026
1e11b92
Channel docs
SRGDamia1 Feb 25, 2026
2432a52
Float tags
SRGDamia1 Feb 25, 2026
e94b62f
Add debugging
SRGDamia1 Feb 25, 2026
29f5a04
make epsilon a define
SRGDamia1 Feb 25, 2026
5e19ee3
float casts
SRGDamia1 Feb 25, 2026
dbe3d7f
Validation, spelling, move diff channel out of TIADS1x15Base
SRGDamia1 Feb 25, 2026
5f69ba4
Fix variable sizing
SRGDamia1 Feb 25, 2026
6dc7762
Define for PROCESSOR_ANALOG_MAX_CHANNEL
SRGDamia1 Feb 25, 2026
01b6515
Refactor getSensorLocation for analog to getAnalogLocation depending …
SRGDamia1 Feb 25, 2026
b43db51
Validation, docs, float tags
SRGDamia1 Feb 25, 2026
54c795d
Forward declarations, demote success where possible
SRGDamia1 Feb 25, 2026
35303c6
no -1 default for getAnalogLocation
SRGDamia1 Feb 25, 2026
56e02fb
Doc that default readers are for back compatibility
SRGDamia1 Feb 25, 2026
2c320f9
Rename macro
SRGDamia1 Feb 25, 2026
ca0da38
Refactor TIADS1x15Base to store and configure internal _ads, move par…
SRGDamia1 Feb 25, 2026
a3aaf41
Have ProcessorAnalog and TIADS1x15 take pointers to simplify ctors
SRGDamia1 Feb 25, 2026
1b60ac6
Use utility to make sure objects are really created and pointers are …
SRGDamia1 Feb 25, 2026
446a2e6
Typos, reorder, null validate
SRGDamia1 Feb 25, 2026
b91793c
Back to initializers
SRGDamia1 Feb 25, 2026
a663301
Lots of small fixes
SRGDamia1 Feb 25, 2026
44e7f83
Doc fixes, add develop as a base-ish branch
SRGDamia1 Feb 25, 2026
3ac2659
Updated change log, add some backwards compatibility warnings, fix so…
SRGDamia1 Feb 26, 2026
932c282
Spelling and grammar
SRGDamia1 Feb 26, 2026
78888c6
Delete copy and move constructors
SRGDamia1 Feb 26, 2026
e4f37e8
Update examples
SRGDamia1 Feb 26, 2026
293d602
Update examples again
SRGDamia1 Feb 26, 2026
900d41b
Add functions to calculate analog resolution via AI
SRGDamia1 Feb 26, 2026
0896125
Move function to convert a float resolution to a number of decimal pl…
SRGDamia1 Feb 26, 2026
212fe81
Update ChangeLog.md
SRGDamia1 Feb 26, 2026
180d230
Update ChangeLog.md
SRGDamia1 Feb 26, 2026
a074625
Update ChangeLog.md
SRGDamia1 Feb 26, 2026
e28b7bb
Implement a begin function for analog voltage classes and call it fro…
SRGDamia1 Feb 26, 2026
716dc77
Merge branch 'analog_stuff' of https://github.com/EnviroDIY/ModularSe…
SRGDamia1 Feb 26, 2026
a9ddcc4
Minor fixes
SRGDamia1 Feb 26, 2026
a132175
if the call to create new objects fails the stack is overflowing and …
SRGDamia1 Feb 26, 2026
ea9b009
Properly use ALPHASENSE_CO2_VOLTAGE_MULTIPLIER
SRGDamia1 Feb 26, 2026
14a9b03
Fix ctor order
SRGDamia1 Feb 26, 2026
14e138c
Merge pull request #495 from EnviroDIY/analog_stuff
SRGDamia1 Feb 26, 2026
618e7e5
First cut via AI. Does not work.
SRGDamia1 Feb 26, 2026
4d031e3
Switch to Rob Tillaart's library which reduces footprint with 32-bit …
SRGDamia1 Feb 27, 2026
95afec4
Use single common define for air pressure; correct var name for altitude
SRGDamia1 Feb 27, 2026
b58a6cb
Add static assert checks of defined values
SRGDamia1 Feb 27, 2026
ece4c57
Fix assertion checks
SRGDamia1 Feb 27, 2026
7e7860b
Fix setting of density, typo
SRGDamia1 Feb 27, 2026
313c8a5
Update src/sensors/YosemitechParent.cpp
SRGDamia1 Feb 27, 2026
e1254e5
Update setupGitFilters.bat
SRGDamia1 Feb 27, 2026
a6970e0
Change to bit shifting, add missing dtors, fix some typos and copy er…
SRGDamia1 Feb 27, 2026
91ec2b0
Fix docs
SRGDamia1 Feb 27, 2026
51ae698
Support second hardware I2C; fix name/location issue, fix validation,…
SRGDamia1 Feb 27, 2026
d4cdb7c
Prettier print out
SRGDamia1 Feb 27, 2026
a791940
Support secondary hardware I2C for ADS1x15
SRGDamia1 Feb 27, 2026
f5576b9
Rename validate fxn, remove math, use enums
SRGDamia1 Feb 27, 2026
6c9bd5c
Reorder ctor, fix wire calls
SRGDamia1 Feb 27, 2026
8d2b9d2
Some fixes and formatting
SRGDamia1 Feb 28, 2026
3e84f3e
Step down version until Adafruit creates a release
SRGDamia1 Feb 28, 2026
12bb263
Null checks on wire
SRGDamia1 Feb 28, 2026
4e026c1
AI suggested fixes
SRGDamia1 Feb 28, 2026
8df32e2
Update examples/ReadMe.md
SRGDamia1 Feb 28, 2026
81c97b2
Update src/sensors/ProcessorAnalog.cpp
SRGDamia1 Feb 28, 2026
5b56a33
Update src/sensors/AnalogVoltageBase.h
SRGDamia1 Feb 28, 2026
1e92944
Update TEConnectivityMS5837.h
SRGDamia1 Feb 28, 2026
8abbe83
Update TEConnectivityMS5837.h
SRGDamia1 Feb 28, 2026
8cec3b2
Update VariableArray.h to fix typo
SRGDamia1 Feb 28, 2026
c85a29a
Update src/sensors/ProcessorStats.cpp
SRGDamia1 Feb 28, 2026
2aadc43
Update GeoluxHydroCam.cpp
SRGDamia1 Feb 28, 2026
001f056
Align runtime check with static assert
SRGDamia1 Mar 2, 2026
1269d82
Document 8192 OSR
SRGDamia1 Mar 2, 2026
2b429fd
Clamp, move non-functional define to config and give warning
SRGDamia1 Mar 2, 2026
e4db6eb
Convert second and further constructors into delegating constructors …
SRGDamia1 Mar 2, 2026
8f59d26
loggerClock::setRTClock now returns TRUE when the clock was not set b…
SRGDamia1 Mar 2, 2026
e5e6aa7
Support using onboard NTP for modems where it's implemented
SRGDamia1 Mar 2, 2026
40c0388
minor debug change
SRGDamia1 Mar 2, 2026
aae713a
Fix compiler errors
SRGDamia1 Mar 2, 2026
3b129e3
Woops! 7080 doesn't give epoch!
SRGDamia1 Mar 2, 2026
9894d8f
Update examples/menu_a_la_carte/ReadMe.md
SRGDamia1 Mar 2, 2026
3c90e3a
Gave a default of 5 retries
SRGDamia1 Mar 2, 2026
825b3ac
Fix link
SRGDamia1 Mar 2, 2026
8467987
Fix _remainingShortIntervals size
SRGDamia1 Mar 2, 2026
83af33a
Add nullptr checks
SRGDamia1 Mar 2, 2026
eb6602c
Measurement retries as define for some with known
SRGDamia1 Mar 2, 2026
b6ffdd7
Mark failure when wake fails
SRGDamia1 Mar 2, 2026
7a9d656
Add define for failure value
SRGDamia1 Mar 2, 2026
4bfd28b
Add failure message
SRGDamia1 Mar 2, 2026
7e84d5f
Clamp in setup, not ctor
SRGDamia1 Mar 2, 2026
4c2ba65
Support modems that can get times internally as parts
SRGDamia1 Mar 2, 2026
318ae79
Reorder defines to put config on top
SRGDamia1 Mar 2, 2026
2066e94
Decimal[s] places?
SRGDamia1 Mar 3, 2026
ed9ded6
Decimal place[s] here
SRGDamia1 Mar 3, 2026
cfda215
Merge branch 'develop' into bar02
SRGDamia1 Mar 3, 2026
7edac17
Change default oversampling for BMP3xx
SRGDamia1 Mar 3, 2026
abc5d9e
Fancier pretty print check
SRGDamia1 Mar 3, 2026
0a8ab8b
Don't double validate OSR,, nitpicks
SRGDamia1 Mar 3, 2026
fa02708
Merge pull request #497 from EnviroDIY/bar02
SRGDamia1 Mar 3, 2026
00d183a
Fix NIST time from parts
SRGDamia1 Mar 3, 2026
d686efa
Fix compiler warning
SRGDamia1 Mar 3, 2026
986c1d3
Convert all -9999s to a defined MS_INVALID_VALUE
SRGDamia1 Mar 4, 2026
e290ccf
Use -9999, not -9999.0 as sentinel value
SRGDamia1 Mar 4, 2026
a03732e
Reduce some duplication
SRGDamia1 Mar 4, 2026
ef08e1e
Declared trivial destructors as default
SRGDamia1 Mar 4, 2026
26cdcad
Fix compiler warnings on getNISTTime
SRGDamia1 Mar 4, 2026
1880b6e
default a bunch more destructors
SRGDamia1 Mar 4, 2026
11b181d
Fix retries in the update function
SRGDamia1 Mar 4, 2026
17ca511
Save partially correct values
SRGDamia1 Mar 4, 2026
7103f53
Made destructors override where applicable
SRGDamia1 Mar 4, 2026
8b156d9
Add ifndef checks
SRGDamia1 Mar 4, 2026
784055b
Fix some comments, unmarked overrides
SRGDamia1 Mar 4, 2026
a99860b
Replace the many, many (void) functions with c++ style ()
SRGDamia1 Mar 4, 2026
bf646b2
added static_assert
SRGDamia1 Mar 4, 2026
05d7728
Change to c++ style static casts
SRGDamia1 Mar 4, 2026
c7f9f0c
Fix void call botched in find/replace
SRGDamia1 Mar 4, 2026
805c0d4
Switch to static_assert check
SRGDamia1 Mar 4, 2026
cf7cf9d
small changes
SRGDamia1 Mar 4, 2026
86a3e6f
Reserve strings in all implementations of getSensorLocation
SRGDamia1 Mar 4, 2026
71f99b9
Minor fixes
SRGDamia1 Mar 4, 2026
7cbf90e
clang format
SRGDamia1 Mar 4, 2026
78c720b
Null checks, debugs
SRGDamia1 Mar 4, 2026
19a0ce0
Initializers
SRGDamia1 Mar 4, 2026
be59a4d
Add yields
SRGDamia1 Mar 4, 2026
f719e6e
Fix virtual/override redundancies
SRGDamia1 Mar 4, 2026
73a70e5
Unique status codes
SRGDamia1 Mar 4, 2026
55a61ba
Fix some comments
SRGDamia1 Mar 4, 2026
246c0a4
Reorder ctors
SRGDamia1 Mar 4, 2026
36ebd4e
Extract method
SRGDamia1 Mar 4, 2026
62591e6
Reorder delegating constructors
SRGDamia1 Mar 4, 2026
427fd29
More constructor rearrangements
SRGDamia1 Mar 4, 2026
901f901
Add warnings about client deletion
SRGDamia1 Mar 5, 2026
3196497
Fix issues with sleep pin - not that it works, anyway
SRGDamia1 Mar 5, 2026
08022a7
Add warning about dumping buffer
SRGDamia1 Mar 5, 2026
670204a
check for finite value
SRGDamia1 Mar 5, 2026
1c5bdc4
Fix compiler order warning
SRGDamia1 Mar 5, 2026
fa65dae
Change type of did_respond
SRGDamia1 Mar 5, 2026
f9d2399
Handle timezone issues for mktime fxn
SRGDamia1 Mar 5, 2026
9af36e5
Reorder delegating ctors, fix remaining virtual/override, nitpicks
SRGDamia1 Mar 5, 2026
347eb0b
made initialTransmissions part of the dataPublisher
SRGDamia1 Mar 5, 2026
6c63c53
Rename retry related fxns/vars
SRGDamia1 Mar 5, 2026
3e73f7e
format
SRGDamia1 Mar 5, 2026
426ab65
Allow temp of 0, verified that TinyGSM should return -9999 for bad temp
SRGDamia1 Mar 5, 2026
8bf5d09
Fix overflow compiler warning
SRGDamia1 Mar 5, 2026
1dab51f
Added a config for MAX_NUMBER_SENSORS
SRGDamia1 Mar 5, 2026
dd6e5f9
Made the sensor list a parameter of the variableArray
SRGDamia1 Mar 5, 2026
2e47193
Modify sensorsPowerUp, sensorsWake, sensorsSleep, and sensorsPowerDow…
SRGDamia1 Mar 5, 2026
b396313
Check for matching pointers, instead of rechecking isLastVarFromSensor
SRGDamia1 Mar 5, 2026
34df435
Reduce repeats in begin, use _sensorList in setup
SRGDamia1 Mar 5, 2026
7db8a32
Extract code to check if a sensor can power down into a new function
SRGDamia1 Mar 5, 2026
828bc7e
Extract logic into helpers
SRGDamia1 Mar 5, 2026
8db978e
rename printSensorData to printVariableData with compatibility stub
SRGDamia1 Mar 5, 2026
1cc4d88
rename printSensorDataCSV to printVariableValuesCSV with compatibilit…
SRGDamia1 Mar 5, 2026
9c86135
Add function so sensor can print its own data
SRGDamia1 Mar 5, 2026
0cdc9c6
Remove arguments that aren't honored
SRGDamia1 Mar 6, 2026
9bcdaa2
Change type of tz_offset
SRGDamia1 Mar 6, 2026
be819ff
Fix some typos, spelling, virtual/override redundancy
SRGDamia1 Mar 6, 2026
02a6294
Update clang format; increase PenaltyReturnTypeOnItsOwnLine
SRGDamia1 Mar 6, 2026
d6803ea
Add debug bit opt to printSensorData
SRGDamia1 Mar 6, 2026
d7fbafe
Fix RSSI PWM
SRGDamia1 Mar 6, 2026
8c91fa6
Rename bumpMeasurementAttemptCount to finalizeMeasurementAttempt
SRGDamia1 Mar 6, 2026
ce9336f
Add define for HTTP_VERSION_PREFIX_LEN
SRGDamia1 Mar 6, 2026
432d6bf
Add some comments
SRGDamia1 Mar 6, 2026
2dbe12f
Initialization, null checks
SRGDamia1 Mar 6, 2026
87cb61d
Replace log fxn with builtin bit math
SRGDamia1 Mar 6, 2026
0cdcec0
Always add UUID row to header
SRGDamia1 Mar 6, 2026
2fecf3a
For real handle tz_offset with different types
SRGDamia1 Mar 6, 2026
91212b9
Lots of small changes
SRGDamia1 Mar 6, 2026
db756c1
Add helper for isPinLow
SRGDamia1 Mar 6, 2026
61ece2a
Add helper for sharesPowerPin
SRGDamia1 Mar 6, 2026
8f21784
Remove the pointer to a new object, create object only at use
SRGDamia1 Mar 6, 2026
e241027
Unify MaxBotix retries with rest of library
SRGDamia1 Mar 6, 2026
9627e6a
Clarify retries, simplify bit check for pin state
SRGDamia1 Mar 6, 2026
0d9596f
Made explicit
SRGDamia1 Mar 6, 2026
2d53ac0
Shorten interval logic
SRGDamia1 Mar 6, 2026
780f09b
Move include
SRGDamia1 Mar 6, 2026
bc28302
Fix debugging
SRGDamia1 Mar 6, 2026
a55c5bb
Clarify some comments
SRGDamia1 Mar 6, 2026
a38d2bb
Rename initial/remaining short intervals and transmissions to startup…
SRGDamia1 Mar 6, 2026
ae65f24
Fix useHeater logic
SRGDamia1 Mar 6, 2026
2db8f0a
Fix deprecated shim
SRGDamia1 Mar 6, 2026
96773dc
Fix the punctuation of i.e., in a *lot* of places
SRGDamia1 Mar 6, 2026
1044ddf
Format, switch to define
SRGDamia1 Mar 6, 2026
af7cecc
Fix missing docs and missing wire include
SRGDamia1 Mar 6, 2026
cf4a6c0
Removed all constructors for sensor-associated variables without the …
SRGDamia1 Mar 10, 2026
c0d303d
Removed empty variable constructor and all un-necessary "begin" varia…
SRGDamia1 Mar 10, 2026
779d9fd
Reordered delegating constructors
SRGDamia1 Mar 10, 2026
224eab2
Grammar and spacing changes
SRGDamia1 Mar 10, 2026
a7a5bf1
Ensure response has 12 characters
SRGDamia1 Mar 11, 2026
2f51824
Minor grammar, comments
SRGDamia1 Mar 11, 2026
a55b532
Lots of markdown formatting and grammar errors
SRGDamia1 Mar 12, 2026
ced9e92
Add missing begin
SRGDamia1 Mar 12, 2026
fd65973
More catches in markdown
SRGDamia1 Mar 12, 2026
2fdc98d
Forward declare wire and move include to cpp where possible
SRGDamia1 Mar 12, 2026
c867ffa
Rename analog objects from "base" to "reader"
SRGDamia1 Mar 12, 2026
3553a24
Split the clearValues function
SRGDamia1 Mar 12, 2026
3add2a6
Fix Atlas wire includes
SRGDamia1 Mar 12, 2026
5dd9074
Create helper function initializeMeasurementResult to start all addSi…
SRGDamia1 Mar 12, 2026
c78dd39
Update instructions
SRGDamia1 Mar 12, 2026
bb18d13
Remove the out-of-date library dependencies page
SRGDamia1 Mar 12, 2026
4621374
Revert "Forward declare wire and move include to cpp where possible"
SRGDamia1 Mar 12, 2026
8640b73
Moved more processor specifics into KnownProcessors and use config as…
SRGDamia1 Mar 12, 2026
a209266
Reran clang format
SRGDamia1 Mar 12, 2026
45b4178
Fix doxygen errors
SRGDamia1 Mar 12, 2026
44f7a24
Remove processors with multiple possible voltages or unverified values
SRGDamia1 Mar 12, 2026
1c2606c
F strings
SRGDamia1 Mar 12, 2026
4b1dc07
Remove redundant check
SRGDamia1 Mar 12, 2026
5edb26e
Fix guard path
SRGDamia1 Mar 12, 2026
c1bda7f
Restore older functionality of clearValues
SRGDamia1 Mar 12, 2026
747c649
Clear count value regardless of read success (original functionality)
SRGDamia1 Mar 12, 2026
9bc4bbf
doc changes
SRGDamia1 Mar 12, 2026
e82c71a
Missed renames
SRGDamia1 Mar 12, 2026
6d81ae8
Some minor changes
SRGDamia1 Mar 12, 2026
6b9e424
Reduce magic numbers, add some docs
SRGDamia1 Mar 13, 2026
e7153d3
Added min/max range values for variables where I knew it. Not yet used.
SRGDamia1 Mar 13, 2026
0356f5e
Overwrite instead of append file
SRGDamia1 Mar 13, 2026
ba2a27a
Comment and static assertion
SRGDamia1 Mar 13, 2026
83f5972
Remove static casts
SRGDamia1 Mar 13, 2026
1bb6fb6
Bump DHT library version
SRGDamia1 Mar 13, 2026
1b8fdc4
Bump DHT sensor library
SRGDamia1 Mar 16, 2026
79165f6
Use deep instead of deep+
SRGDamia1 Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
early_access: false
enable_free_tier: true
language: en
tone_instructions: ''
knowledge_base:
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
linear:
team_keys: []
chat:
auto_reply: true
reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
poem: false
review_status: true
collapse_walkthrough: true
path_filters:
- '!**/dependencies.json'
- '!**/cspell.json'
- '!**/platformio.ini'
path_instructions:
- path: '**/*.h'
instructions: >-
Review the C++ code, point out issues relative to principles of clean
code, expressiveness, and performance.
- path: '**/*.cpp'
instructions: >-
Review the C++ code, point out issues relative to principles of clean
code, expressiveness, and performance.
tools:
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 90000
languagetool:
enabled: true
disabled_rules:
- EN_UNPAIRED_BRACKETS
disabled_categories:
- TYPOS
- TYPOGRAPHY
- CASING
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
auto_review:
enabled: true
ignore_title_keywords:
- WIP
labels: []
drafts: true
base_branches:
- master
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
*.bat text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
Expand All @@ -27,8 +28,16 @@
.travis.yml export-ignore
id_rsa.enc export-ignore

# Setup scripts
setupGitFilters.bat export-ignore
setupGitFilters.ps1 export-ignore

# Platformio
platformio.ini export-ignore

# Shell Scripts
*.sh export-ignore

# filters
*.ino filter=smudgePasswords
ModSensorDebugConfig.h filter=disableDebug
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ archive/
compile_tests/
logger_test*/
ex_one_offs/*
filters/*
runDoxygen.bat
docs/examples/*
docs/examples.dox_x
Expand Down
71 changes: 68 additions & 3 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,78 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

### Changed

- Made the enabling and disabling of the watchdog the very first and very last steps of sleep to keep the watchdog enabled through the whole getting ready for bed and waking up process.
- **ANB pH**
- **BREAKING** The constructor has changed!
The logging interval has been added as a required parameter for the constructor!
- Changed timing slightly and simplified timing logic.
- **Renamed** The EnviroDIYPublisher has been renamed the MonitorMyWatershedPublisher.
This reflects changes to the website from years ago.
There is a shell file and typedef to maintain backwards compatibility.
- Changed capitalization of `setInitialShortIntervals(#)` function
- Previously the 'i' of initial was not capitalized.
- The old `setinitialShortIntervals` remains available via compatibility shim in LoggerBase.h, so existing code is unaffected.
- Bumped several dependencies - including crucial bug fixes to SensorModbusMaster.
- Re-wrote most of the logic for looping variables within the complete update function of the VariableArray.
- Simplified the `addSingleMeasurementResult()` function of all sensors to use an internal function to help set the bits and timing values and to quit sooner if the measurement was not started successfully.
- The `verifyAndAddMeasurementResult()` is now consistently used in all sensors and is only called when the sensor successfully returned a measurement response.
- Also removed all places where sensor values were re-set to -9999 after a measurement failed and then that -9999 was sent to the `verifyAndAddMeasurementResult()` function.
These resets were an awkward attempt to deal with bad values before feeding any bad values to the `verifyAndAddMeasurementResult()` function which was previously always called even if the sensor returned junk.
This was probably a hold-over from incorrect implementation and calling of the clearValues function deep in the library history.
- Also made the return from the `addSingleMeasurementResult()` function consistently false for a bad sensor response and true for a good one - where it's possible to tell the difference.
- The Sensor::clearValues() function now resets the attempt and retry counts in addition to setting all values in the value array to -9999.
- Re-wrote some of the logic of the `completeUpdate()` function.
Also added optional arguments to the `completeUpdate()` function to allow users to specify if the sensors should be powered/woken.
- The `updateAllSensors()` function is now deprecated.
Use `completeUpdate(false, false, false, false)` instead.
- Previously the `updateAllSensors()` function asked all sensors to update their values, skipping all power, wake, and sleep steps while the `completeUpdate()` function duplicated that functionality and added the power, wake, and sleep.
The two functions have been consolidated into one function with four arguments, one each for power on, wake, sleep, and power off.
To achieve the same functionality as the old `updateAllSensors()` function (ie, only updating values), set all the arguments to false.
- Applied many suggestions from Code Rabbit AI.
- Moved outdated examples to a new "Outdated" folder, with a subfolder for the DRWI examples
- When importing TinyGSM for the modem objects, the specific modem client headers are now imported directly rather than importing the TinyGsmClient.h header which defines typedefs for the sub-types.

### Added

- **Added support for retrying measurements for all sensors**.
- Each sensor now supports a number of possible retry attempts for when the sensor returns a bad or no value.
The number of retry attempts can be set using the `setAllowedMeasurementRetries(uint8_t)` function.
- The number of retries is independent of the number of measurements to average.
A retry is performed when a sensor doesn't report a value or reports an error value.
If multiple retries are needed, only the result of the final (successful) retry is stored.
When multiple 'measurements to average' are requested, the values of each successful measurement is stored and averaged.
Measurements that return bad values even after retries are still not included in averaging.
- The default number of retry attempts for most sensors is 1.
- Made a secondary power pin a property of all sensors.
- Added internal function to run the steps of setting the timing and bits after a measurement.
- Added setter and getter functions for sensor timing variables.
These values should generally be set in the specific sensor constructors and only changed if you know what you're doing.
- `setWarmUpTime(uint32_t warmUpTime_ms)`
- `getWarmUpTime()`
- `setStabilizationTime(uint32_t stabilizationTime_ms)`
- `getStabilizationTime()`
- `setMeasurementTime(uint32_t measurementTime_ms)`
- `getMeasurementTime()`
- Added the functions `Sensor::clearStatus()`,`Sensor::clearPowerStatus()`,`Sensor::clearWakeStatus()`,and `Sensor::clearMeasurementStatus()` which reset some or all of the sensor status bits and related timing variables.
- **NEW SENSOR** Added a new sensor for simple analog voltage using the built-in processor ADC
- Added KnownProcessors.h and moved defines values for supported built-in sensors on known processors to that file.
- This affects ProcessorStats and the Everlight ALS PT-19.
- Added a new example specific to the [EnviroDIY Monitoring Station Kit](https://www.envirodiy.org/product/envirodiy-monitoring-station-kit/).

### Removed

- Unused `_maxSamplesToAverage` parameter of the VariableArray and the `countMaxToAverage()` function.
- Unnecessary copy doc calls for inherited functions and properties.
- All overrides of the powerUp and powerDown functions that are no longer needed since all sensors have two power pins built in.
- References to the EnviroDIY data portal.
- All defines from example sketches.
- Defining values to be used by TinyGSM and/or the MQTT library here in addition to any defines in ModSensorConfig.h or in a build configuration can lead to One Definition Rule violations because the define values are used when creating the classes from the templates in TinyGSM.

### Fixed

- Fixed major bug where sensors with two power pins where either was shared with another sensor may be turned off inappropriately when one of the other sensors was turned off.
- Correctly retry NIST sync on XBees when a not-sane timestamp is returned.

***

## [0.37.0]
Expand Down Expand Up @@ -149,7 +213,6 @@ If you do not want any output, define `MS_SILENT`.
- Wire required adapters such that they are continuously powered.
- If you must switch the power to both the sensor and an adapter and either the sensor power or the adapter power are shared with a pin that provides power to any other sensor, call the shared power pin the "sensor" power and the other the "adapter."


***

## [0.36.0]
Expand Down Expand Up @@ -697,7 +760,7 @@ Watchdogs and More
- A watch-dog timer has been implemented for both the AVR and SAMD21 (and 51) boards to restart the boards in case of failure during logging
- The watch-dog is turned off during sleep to save power, so recovery is only possible if the failure is while the processor is awake.
- Added support for Meter Teros 11 soil moisture and temperature sensor
- Implemented a function to verify that UUID's are at least correctly formed and unique - though it does not verify that they are valid.
- Implemented a function to verify that UUIDs are at least correctly formed and unique - though it does not verify that they are valid.
- Pushing to the master branch of this repo will now also cause a re-run of the travis script that updates the EnviroDIY "Libraries" repository.
- Added debugging variables to modems to track how long they are powered/active.

Expand Down Expand Up @@ -878,7 +941,7 @@ Bug fix and example re-working

### Fixed

- Fixes bug in sending data to the WikiWatershed / [Monitor My Watershed](https://monitormywatershed.org/) data sharing portal.
- Fixes bug in sending data to [Monitor My Watershed](https://monitormywatershed.org).

***

Expand Down Expand Up @@ -1146,3 +1209,5 @@ Our first release of the modular sensors library to support easily logging data
<!--! @tableofcontents{HTML:1} -->

<!--! @m_footernavigation -->

<!-- cspell:words isnan GPST arounds strcat strcpy PULLUP TIINA Wextra setinitialShortIntervals -->
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ For some generalized information about attaching sensors to an Arduino style boa
## Data Endpoints<!--! {#mainpage_data_receivers} -->

Within ModularSensors, the "dataPublisher" objects add the functionality to send data to remote web services.
The currently supported services are the [Monitor My Watershed data portal](http://data.envirodiy.org/), [ThingSpeak](https://thingspeak.com/), the [Ubidots IoT platform](https://ubidots.com), [Amazon Web Services IoT Core](https://aws.amazon.com/iot-core/), and [Amazon Web Services Simple Storage Service (S3)](https://aws.amazon.com/s3/).
The currently supported services are [Monitor My Watershed](https://monitormywatershed.org), [ThingSpeak](https://thingspeak.com), the [Ubidots IoT platform](https://ubidots.com), [Amazon Web Services IoT Core](https://aws.amazon.com/iot-core), and [Amazon Web Services Simple Storage Service (S3)](https://aws.amazon.com/s3).

- [Monitor My Watershed/EnviroDIY Data Portal](https://envirodiy.github.io/ModularSensors/class_enviro_d_i_y_publisher.html)
- [Monitor My Watershed](https://envirodiy.github.io/ModularSensors/class_monitor_my_watershed_publisher.html)
- [ThingSpeak](https://envirodiy.github.io/ModularSensors/class_thing_speak_publisher.html)
- [Ubidots IoT platform](https://envirodiy.github.io/ModularSensors/class_ubidots_publisher.html)
- [AWS IoT Core](https://envirodiy.github.io/ModularSensors/class_a_w_s___io_t___publisher.html)
Expand Down Expand Up @@ -150,7 +150,7 @@ For information common to all modems and for tables of the proper class, baud ra
Open an [issue](https://github.com/EnviroDIY/ModularSensors/issues) to suggest and discuss potential changes/additions.
Feel free to open issues about any bugs you find or any sensors you would like to have added.

If you would like to directly help with the coding development of the library, there are some [tips here](https://envirodiy.github.io/ModularSensors/page_developer_setup.html) on how to set up PlatformIO so you can fork the library and test programs while in the library repo.
If you would like to directly help with the coding development of the library, there are some [tips and instructions here](https://envirodiy.github.io/ModularSensors/page_developer_setup.html) on how to set up PlatformIO so you can fork the library and test programs while in the library repo.
Please *take time to familiarize yourself with the [terminology, classes and data structures](https://envirodiy.github.io/ModularSensors/page_library_terminology.html) this library uses*.
This library is built to fully take advantage of Objecting Oriented Programing (OOP) approaches and is larger and more complicated than many Arduino libraries.
There is doxygen-created documentation on our [github pages](https://envirodiy.github.io/ModularSensors/index.html) and an *enormous* number of comments and debugging printouts in the code itself to help you get going.
Expand Down
Loading
Loading