Recent Releases of ModularSensors

ModularSensors - v0.37.0

[!note]
This release has changes to nearly every file in the entire library (ie, hundreds of files).
Many of the changes are spelling and typo fixes found by implementing CSpell code spell checking.
All header files were also modified to include the new library configuration headers.

Changed

  • BREAKING Converted the watch-dog classes in to static classes with all static function and a deleted constructor.
    • Any code that attempted to interact with the watchdog (ie, with a "complex loop") must now call the extendedWatchDog class directly, ie: extendedWatchDog::resetWatchDog(); rather than dataLogger.watchDogTimer.resetWatchDog();
  • BREAKING Renamed markedLocalEpochTime to markedLocalUnixTime to clarify the start of the epoch that we're marking down.
  • BREAKING Renamed markedUTCEpochTime to markedUTCUnixTime to clarify the start of the epoch that we're marking down.
  • Potentially BREAKING: Changed the requirements for a "sane" timestamp to between 2025 and 2035.
    • Moved the value for the sane range into two defines: EARLIEST_SANE_UNIX_TIMESTAMP and LATEST_SANE_UNIX_TIMESTAMP so they can be more easily modified and tracked.
      These defines can be set in the ModSensorConfig.h file.
  • Potentially BREAKING: For calculated variables, the calculation function will only be called if getValue(true) or getValueString(true) is called - that is, the boolean for 'update value' must explicitly be set to true to rerun the calculation function.
    • Previously, the calculation function was re-run every time getValue() or getValueString() was called, regardless of the update value parameter.
      For calculations that were based on the results of other variables that didn't change, this was fine.
      But, for calculations based on new raw readings (ie, calling analogRead()) a new value would be returned each time the function was called.
      I realized this was a problem for analog values I tried to read that reported correctly in the first round, but were saved as junk in the csv and publishers because a new analog reading was being attempted when the thing I was attempting to read was now powered down.
    • The variable array update functions have been modified accordingly.
    • Verify you have the functionality you expect if you use calculated variables.
  • Removed the enable/disable wake pin interrupt at every sleep interval in favor of a single attachment during the begin.
  • Moved all code for communication with the RTC into the new static class loggerClock().
  • Deprecated functions, to be removed in a future version:
    • Logger::setRTCTimeZone(timeZone); use loggerClock::setRTCOffset(_offsetHours) in new code.
    • Logger::getRTCTimeZone(); use loggerClock::getRTCOffset() in new code.
    • Logger::setRTClock(UTCEpochSeconds); use loggerClock::setRTClock(ts, utcOffset, epoch) in new code.
    • Logger::isRTCSane(); use loggerClock::isRTCSane() in new code.
    • Logger::wakeISR(); use loggerClock::rtcISR() in new code.
  • Support timestamps as time_t objects instead of uint32_t where every sensible.
    • The size of a uint32_t is always 32 bits, but the size of the time_t object varies by processor - for some it is 32 bits, for other 64.
  • Changed the watchdog from a fixed 15 minute reset timer to 2x the logging interval (or at least 5 minutes).
  • Modified all examples which define a sercom serial port for SAMD21 processors to require the defines for the supported processors.
    This should only make a difference for my compilation tests, real users should pick out only the chunks of code they want rather than leave conditional code in place.
  • Changed some fill-in-the-blank spots in the menu example to only set the value in a single spot in the code.
  • Unified all defines related to the resolution of the processor ADC and moved them to the new configuration file.
    • Applies only to sensors using the built-in processor ADC:
      • Internal battery, analog light sensor, and analog electrical conductivity
    • You can no-longer set a separate processor resolution for each sensor.
  • You no longer need to input a client object into the constructor for any of the publishers if you are using a loggerModem object.
    • For best results, input a client object to the constructor only if you are NOT using a loggerModem object.
  • Split functionality for the ESP8266 and the ESP32.
    • If you are using an EnviroDIY wifi bee, you should update your code to correctly select the ESP32, which is more feature rich than the ESP8266.
  • Changed the way debugging printouts are generated in the publishers.
  • Changed the default functionality of the "testing" mode.
    • When the button pin is changed to activate testing mode, a single sample will be taken and published immediately.
    • To restore the previous functionality (beginning a loop of 25 measurements) use the configuration/build flag MS_LOGGERBASE_BUTTON_BENCH_TEST.
    • The function for the original testing mode has been renamed to benchTestingMode().
  • Added check for isnan(...) to the Sensor::verifyAndAddMeasurementResult(...) function.
  • Pass pointers to c-style character strings instead of String objects where easily done.
  • Separated functions for setting button/rtc pin modes and attaching their interrupts.
  • Corrected as many spelling errors as I could find.

Added

  • CONFIGURATION Added a two configuration files (ModSensorConfig.h and ModSensorDebugConfig.h) that all files read from to check for configuration-related defines.
    This allows Arduino IDE users who are unable to use build flags to more easily configure the library or enable debugging.
    It also allows PlatformIO users to avoid the time-consuming re-compile of all their libraries required when changing build flags.
    • ALL library configuration build flags previously in any other header file for the library have been moved into the ModSensorConfig.h file, including ADC, SDI-12, and variable array options.
  • Added support for caching readings in RAM and sending in batches.
    This currently only works on the EnviroDIY/Monitor My Watershed Publisher.
    Thank you to Thomas Watson for this work.
  • Created a new ClockSupport module with the loggerClock and epochStart static classes.
  • Added support for the Micro Crystal RV-8803-C7 high accuracy, ultra low power Real-Time-Clock Module.
  • Added support for multiple 'epoch' types starting at January 1, 1970 (UNIX), January 1, 2000 (Arduino and others), January 5, 1980 (GPST), and January 1, 1900 (NIST time and NTP protocols).
    • This allows you to input the epoch you're using in every single function that deals with a uint32_t or epoch type timestamp.
      If no epoch start is given, it is assumed to be UNIX (January 1, 1970).
    • The supported epochs are given in the enum epochStart.
  • Storing _buttonPinMode internally.
  • Added a single define (MS_OUTPUT) to use for all outputs from ModularSensors.
  • Added support for sending printouts and debugging to two different serial ports. This is useful for devices (like SAMD) that use a built in USB serial port which is turned off when the device sleeps. If MS_2ND_OUTPUT is defined, output will go to both MS_2ND_OUTPUT and to MS_OUTPUT.
  • Added example code for flashing boards with a neo-pixel in the menu example.
  • NEW SENSOR Added support for Geolux HydroCam
  • NEW SENSOR Added support for ANB Sensors pH Sensors
  • Added a generic time formatting function.
  • NEW PUBLISHER Added a new publisher to AWS IoT Core over MQTT
    • A doorway to new possibilities: Unlike every other publisher, the AWS IoT Core publisher supports two-way communication with a settable callback on received messages.
  • NEW PUBLISHER Added a new publisher to AWS S3 buckets using pre-signed URLs
  • Added structure to publish metadata to publishers - intended to be used only at startup and once a day at noon.
  • Added start-up helper function makeInitialConnections() to publish metadata and sync the clock.
  • Added function getVarResolutionAtI(uint8_t)
  • Added support for full CRC checking for SDI-12 sensors.
    • This includes simplistic retries, but does not fully implement the SDI-12 protocols triple inner and outer loop retry requirements.
  • Added the ability for publishers to make an initial connection to publish metadata.
    • At present this is implemented in the IoT Core publisher - which sends all the metadata for each variable - and the ThingSpeak publisher - which changes channel and field names to match the logger configuration.
  • Added a generic generateFileName(bool include_time, const char* extension, const char* filePrefix) function to the logger which can be used to assemble a prefix, timestamp, and extension into a new filename.
  • Added more options to some of the logger and publisher begin functions.
  • Added helper functions to create and delete clients using TinyGSM.
  • Added more clear functions for checking and setting sensor status bits.
  • Added code spell checking configuration (cspell).

Removed

  • BREAKING: Removed the "built-in" GsmClient within the LoggerModem objects.
    • This means you cannot access a client with &modem.gsmClient.
    • Most of the examples used the &modem.gsmClient pattern! This means many people will need to change their code!
  • BREAKING: Removed the function setNowUTCEpoch(uint32_t).
    • Although public, this was never intended to be used externally.
  • Potentially BREAKING: Removed support for any functions using the Sodaq "DateTime" class.
  • Potentially BREAKING: Removed ability to have PRINTOUT, MS_DBG, and MS_DEEP_DBG output going to different serial ports
    • Defines for STANDARD_SERIAL_OUTPUT, DEBUGGING_SERIAL_OUTPUT, and DEEP_DEBUGGING_SERIAL_OUTPUT are all ignored.
      Use the single define MS_OUTPUT for all outputs.
      If MS_OUTPUT is not defined, a default will be used (generally Serial or USBSerial).
      If you do not want any output, define MS_SILENT.
  • Removed internal functions for setting file times; replaced with SdFat's dateTimeCallback.
  • Added python script to run clang-format on all source files.

Fixed

  • Tested and brought the SAMD51 processor to full functionality.
    • While the SAMD51 was nominally supported previously, it was not functional with the latest boot loaders and core for the SAMD51.
  • Updated the ThingSpeak publisher to the current ThingSpeak MQTT protocol. The older protocol was deprecated and non-functional.
    • This requires a user name, password, and client ID for the MQTT connection in addition to the channel number. The MQTT key and channel key are no longer used.
  • Ensure that the SDI-12 object is always ended.
  • Fixed some timing issues discovered when implementing the status bit checking functions.

Known Bugs

  • SEVERE Sensors that require two or more power pins are treated as only requiring the first one within the variableArray and if the second or further power pin is a primary power pin with any other sensor, then the secondary pin will be turned off with the other sensor completes even if the sensor where that pin is secondary is not finished.
    • This is a serious issue for sensors that are both slow and require powered secondary communication adapters or relays - like the Geolux HydroCam or the ANB Sensors pH sensors.
    • Possible work-arounds
      • Wire required adapters to the same pin as that providing primary power.
      • 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."

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] 5 months ago

ModularSensors - v0.36.0

DOI

Changed

  • Applied markdown lint to markdown files
  • Bumped TinyGSM dependency
    • Changed datatypes for modem voltage outputs.
  • Switched from Soligen fork of ADS1115 library to the standard Adafruit version. #456
  • Rearranged documation of examples
  • Consistently apply all pre-processor defined checks with function-like syntax
  • Consistently check for both __AVR__ and ARDUINO_ARCH_AVR in all cases.
    • Not all AVR boards defin __AVR__ within the PlatformIO system, which was confusing the SCons preprocessor.
  • Modified implementation of initial short logging intervals.
  • Allow non-sleep before returing from testing or logging functions.
  • Modified returns of modem variables from uint's to int's for consistency with the latest version of TinyGSM.
  • Add pre-processor macro for number of times to attempt to update the clock.

Added

  • Added support for Yosemitech Y513 Blue Green Algae Sensor thanks to @aufdenkampe #476
  • Added support for Alphasense CO2 Sensor thanks to @aufdenkampe #457
  • Added support for Turner Turbidity Plus thanks to @mbarneytu #361
  • Added complete paramter documentation where it was missing thanks to @SRGDamia1

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 1 year ago

ModularSensors - v0.35.1

v0.35.1 2024-08-26

This is a hot-fix type release, pushing out fixes for sleeping for the SAMD21. It is not fully tested. If you are not using a SAMD21, please stick to version 0.35.0 until 0.36 is released.

Changed

  • BREAKING Switched default clock for SAMD21 from the built-in 32bit RTC to the DS3231.
    This is not be a permanent change.
  • Switched to reusable workflows for CI

Fixed

Fixed clock configuration for SAMD21

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 1 year ago

ModularSensors - v0.35.0

Changed

  • BREAKING Refactored how the publisher transmit buffer works. This will require adjustment to custom data publishers.
  • Update GitHub actions
  • Remove date from copyright for easier tracking
  • Turn modem off at end of setup, regardless of time
  • Clean function to set file timestamp on SD card
  • Use equation rather than table for CSQ
  • Only polling modem for enabled parameters
  • INCREASED THE MAXIMUM NUMBER OF VARIABLES FROM A SINGLE SENSOR and implemented an option to set this by build flag.
    • This will increase memory use for the entire library.
      If you are not using the GroPoint sensors which require many variables, I recommend you change this value via the build flag -D MAX_NUMBER_VARS=8
  • Allow all WiFi modems to first attempt to connect using existing on-modem saved credentials rather than immediately sending new credentials.
  • Add further debug printouts to the processor stats

Added

Removed

  • Removed the (unused) sendOffset parameter from dataPublisherBase.

Fixed

  • Minor bug fixes for XBee Wifi
  • Handle no SIM card response from SIM7080G (EnviroDIY LTE Bee)
  • Fixed Keller debugging output.
  • Fixed file reference for SDFat 2.2.3

Known Issues

  • The modem hardware, firmware, and serial number is only implemented for the Digi XBee WiFi.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 2 years ago

ModularSensors - v0.34.0

Changed

  • BREAKING - Removed support for light sleep on Espressif modules.
    This changes the order of the constructor for the ESP32 and ESP8266!
    • The light sleep mode is non-functional anyway, and confusion over the sleep request pin was putting the board in a position not to sleep at all.
  • Minor tweek to clang-format
  • Moved all variable initialization to default header values and initializer lists
  • Converted all "c-style" casts to static casts
  • Switched cases of strcat and strcpy to snprintf
  • Specify python version 3.x for actions (used by PlatformIO)

Added

  • Support Campbell RainVUE10 SDI-12 Precipitation Sensor #416
  • Support YosemiTech Y700 Pressor Sensor (#421)

Removed

Fixed

  • Fixed bug in YosemiTech Y4000 Sonde (#420)
  • Fixed non-concurrent data fetch for SDI-12 when NOT using debugging.
  • Fixed internet connection when in "testing mode"
  • Allow a non-zero wait time for SDI-12 sensors
  • Fixed outdated GitHub actions

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 3 years ago

ModularSensors - v0.33.4

DOI

Fixed

  • Increased warm-up and measurement time for Campbell ClariVUE-10 to work with the latest version of the sensor.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 3 years ago

ModularSensors - v0.33.3

Fixed

  • Increased measurement time for Hydros21 to work with the latest version of the sensor.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 4 years ago

ModularSensors - v0.33.2

Fixed

  • Fixed script to install and zip libraries for a release

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 4 years ago

ModularSensors - v0.33.1

Changed

Added

  • Added a typedef and header for the ESP32
    • This is just another name to the ESP8266 class to help any who don't know they're identical for our purposes.
  • Example: Created a new DRWI wifi example for workshop.

Removed

Fixed


Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 4 years ago

ModularSensors - v0.33.0

Changed

  • Breaking: Renamed the static markedEpochTime variable to markedLocalEpochTime.
    • This was sometimes used in "complex" loops. Code utilizing it will have to be changed.
    • This is part of the effort to clarify where localized and UTC time are being used.
      We recommend a logger's real time clock always be set in UTC and then localized for printing and storing data.
  • Breaking: Renamed the function setNowEpoch(uint32_t) to setNowUTCEpoch(uint32_t).
    • Although public, this was never intended to be used externally.
  • Breaking: Renamed the YosemiTech Y550 COD sensor as Y551. See below.
  • Potentially Breaking: Changed the default "button" interrupt pin mode from INPUT_PULLUP to INPUT and created optional arguments to the setTestingModePin and setLoggerPins functions to specify the pin mode and pull-up resistor state.
    • INPUT is the proper mode for the Mayfly.
      The Mayfly has an external pull down on the button pin with the button being active high.
      This means having the pull-up resistors on negates the button signal.
      The pin mode had been set as INPUT_PULLUP for the button, backwards for the Mayfly, since July of 2017.
      By some electrical luck, with the 0.x versions of the Mayfly, the external pull-down on the button pin was strong enough to out-weigh the incorretly activated pull-up resistors and an interrupt was still registered when the button was pressed.
      With a different pull-down resistor on the Mayfly 1.x, the button no longer registers with the pull-up resistors active.
      So, for most of our users with Mayflies, this will be a fix.
      But for anyone using a different board/processor/button configuration that depended on the processor pull-up resistors, this will be a breaking change and they will need to specify the button mode in the setTestingModePin or setLoggerPins function to return to the previous behavior.
  • Added a longer warm up time and removed some of the modem set-up to work with the ESP-IDF AT firmware versions >2.0
  • Made sure that all example clock synchronization happens at noon instead of midnight.
  • Renamed Classes: Renamed several classes for internal consistency.
    These are not breaking changes at this time; the old class names are still usable.
    • Rename class MPL115A2 to FreescaleMPL115A2
    • Rename class MPL115A2_Pressure to FreescaleMPL115A2_Pressure
    • Rename class MPL115A2_Temp to FreescaleMPL115A2_Temp
    • Rename class TIINA219_Volt to TIINA219_Voltage
    • Rename class PaleoTerraRedox_Volt to PaleoTerraRedox_Voltage
    • Rename class ExternalVoltage to TIADS1x15
    • Rename class ExternalVoltage_Volt to TIADS1x15_Voltage
  • Documentation: Migrated to latest version of Doxygen (1.9.3).

Added

  • Sensor Added support for the YosemiTech Y551 COD Sensor, which makes a UV254 light absorption and translates it to estimates of Chemical Oxygen Demand (COD) (or Total Organic Carbon (TOC)) and Turbidity.
    • NOTE that this upgrade removes the earlier Y550 from the library, as it was never tested and is no longer available form YosemiTech. If anyone has a Y550 sensor, the Y551 commands should work. Let us know if they don't.
  • Sensor Added support for the YosemiTech Y560 Ammonium Probe, which is a mini sonde for three Ion Selective Electrode (ISE) sensors (pH, NH4+, K+) that together are used to provide a corrected estimate of total ammonium nitrogen (NH4_N) in mg/L.
    • NOTE that this release only includes outputs for NH4_N, pH, and temperature. A future release will also include estimates of potassium (K) and raw potential values from each of the electrodes.
  • Sensor Added support for the SDI-12 In-Situ Level TROLL 400, 500 & 700 Data Loggers
  • Sensor Added support for the Sensirion SHT40 relative humidity and temperature sensor
  • Sensor Added support for the Everlight ALS-PT19 ambient light sensor
  • Sensor Added support for the Bosch SensorTec BMP388 and BMP390 pressure sensors

Removed

Fixed

  • Fixed memory leak for AOSong AM2315 thanks to @neilh10

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 4 years ago

ModularSensors - v0.32.2

Changed

  • Restructured SDI-12 slightly to break out the start measurement functionality into a new function.
  • Modified Decagon 5-TM and Meter Teros 11 to use the SDI-12 get results function rather than addSingleMeasurmentResult.
    This will allow both sensors to honor the 'non-concurrent' flag, if that is set.
    Previously, they would not have.
  • Documentation: Migrated to latest version of Doxygen (1.9.2).
    This required some changes with m.css to properly ignore the doxyfile.xml the current version generates.

Added

  • Board: Adds 1.0 and 1.1 as valid version numbers for the Mayfly. Does not yet support any new features of those boards.
  • Add a new parameter (internal variable) to the sensor base class for the number of internally calculated variables.
    These are used for values that we would always calculate for a sensor and depend only on the raw results of that single sensor.
    This is separate from any calculated variables that are created on-the-fly and depend on multiple other sensors.
    In many cases, this is 0 and in most of the other cases the value is informational only.
    For the SDI-12 sensors, I'm actually using this to make sure I'm getting the number of values expected.
  • Sensor: Added support for v0.2.0 of the EnviroDIY/TippingBucketRainCounter device firmware, which added capability to count rotations on a reed-switch anemometer and fixed a critical bug that failed to count high rainfall rates.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 4 years ago

ModularSensors - v0.32.0

Reinstate support for AOSong DHT

Changed

  • Documentation: Restructured the changelog
  • Documentation: Restyled and corrected documentation links for new and renamed DRWI examples
  • Continuous Integration: Updated changelog reader and automated releaser

Added

  • Restored support for AOSong DHT sensor.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 4 years ago

ModularSensors - v0.31.2

Bug fixes

  • Fixed build matrix to remove DHT

New Features

  • Temporarily REMOVED support for AOSong DHT sensor.
    • Intend to restore this after updating to support newest Adafruit DHT library

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 4 years ago

ModularSensors - v0.31.0

New Features

  • Temporarily REMOVED support for AOSong DHT sensor.
    • Intend to restore this after updating to support newest Adafruit DHT library

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 4 years ago

ModularSensors - v0.30.0

DOI

New Features

  • Added support for Campbell ClariVUE10 turbidity sensor
  • REMOVED support for SoftwareWire for Atlas sensors.
    • The only supported version of a bit-banged (software) version of I2C removed inheritance from the core Wire library.
      Without inheritance, the parseFloat functions used by the Atlas sensors will not work.
      As I think this feature was completely unused for the Atlas sensors and I see no reason to use it with sensors that have completely flexible addressing, I removed it.

Improvements

  • Changed build flags and created a pre-commit hook for myself to update the menu build matrix

Bug fixes

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] over 4 years ago

ModularSensors - v0.28.5

Downloads

ModularSensors_Dependencies_v0.28.5.zip

  • contains this version of ModularSensors and the proper versions of all of its dependencies.

New Features

  • Created a new module for the Meter Hydros 21. This is exactly identical to the Decagon CTD in everything but the name. The Decagon CTD module still exists and can be used. No old code needs to be adjusted for this change. Moving forward, the two can be used interchangeably. The addition was only made to stop complaints about typing in an older name.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 5 years ago

ModularSensors - v0.28.4

Downloads

ModularSensors_Dependencies_v0.28.4.zip

  • contains this version of ModularSensors and the proper versions of all of its dependencies.

Improvements

  • Allow each SDI-12 sensor to set the necessary command delay for that sensor.
    • Per protocol, sensors are allowed to take up to 100ms after receiving a break before being ready to receive a command.
      This allows each sensor to specify what delay it needs.
      This was added to support conflicting delay needs; the RDO needed a short delay, the newest Meter sensors do not respond properly if the delay is added.
  • For SDI-12 sensors, add repeated attempts to start a measurement if the first attempt unexpectedly fails.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 5 years ago

ModularSensors - v0.28.3

Downloads

ModularSensors_Dependencies_v0.28.3.zip

  • contains this version of ModularSensors and the proper versions of all of its dependencies.

Bug Fixes

  • Use a valid semantic version number

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] almost 5 years ago

ModularSensors - v0.28.01

Downloads

ModularSensors_Dependencies_v0.28.01.zip

  • contains this version of ModularSensors and the proper versions of all of its dependencies.

Bug Fixes

  • Fixes an EGREGIOUS error in the SDI-12 code causing the code to lock up if debugging was off (but always work with it on)
  • Fix GitHub action for pull requests.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] about 5 years ago

ModularSensors - v0.27.8

Fix GitHub Action

Downloads

ModularSensors_Dependencies_0.27.8.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Improvements:

  • Update instructions for examples
  • Update developer instructions

Bug Fixes

  • Fixes an error in the GitHub action to post a release
  • Fixes a compiler error for non-concurrent SDI-12 sensors.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] about 5 years ago

ModularSensors - v0.27.5

Multiple new Sensors and Workflows

Downloads

ModularSensors_Dependencies_0.27.5.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the library zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of library zip to your project's 'lib' folder.

New Features:

New Sensors:

  • PaleoTerra Redox sensors
  • Northern Widget Tally Counters
  • simple analog electrical conductance sensors
  • InSitu RDO PRO-X rugged dissolved oxygen sensors

New Publisher:

  • Add Soracom/Ubidots as a data publisher

Other New Features:

  • Migrated from Travis CI to Github Actions for continuous integration
  • Deprecated wiki, moving contents to docs folder where needed
  • Add static variable for marked time in UTC
  • Add user name and password for GSM/SIM for XBee Cellular
  • Support software I2C or secondary hardware I2C for all sensors possible

Improvements:

  • Complete re-styling of the Doxygen output to be similar to envirodiy.org
  • Add enourmous amounts of documentation
  • Improved explanations and added walkthrough of menu a la carte example
  • Added example calculating specific conductance where applicable
  • For SDI-12 sensors, added calls to additional data commands (D1-D9) if full number of expected results are not returned by D0.
  • For SDI-12 sensors, added ability to disable concurrent measurements using the build flag MS_SDI12_NON_CONCURRENT.
    • NOTE: Setting the build flag disables concurrent measurements for ALL SDI-12 sensors!

Known Issues

  • The instructions for using most of the examples are out of date.

Sustainable Development - Knowledge Platforms - C++
Published by github-actions[bot] about 5 years ago

ModularSensors - v0.25.0: Styling & Doxygen Code Documentation

DOI

Downloads

libraries_v0.25.0.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the library zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of library zip to your project's 'lib' folder.

Change Log

New Features:

Improvements:

  • Improved C++ code styling elements in every file in the library, to:
  • Encapsulated modem wake check logic into a function and checking for status using a quick AT ping if no other option is available.
    • This will only affect modems/breakouts that depend on a pulse on their wake pin to turn on or off but for whatever reason don't have a separate status pin connected to the mcu. I do not recommend this configuration.
  • Always re-set the pin mode of a sensor power pin before attempting to turn it on.
    • This could come into play when first attempting to power on a sensor before the initial setup if the pin mode on the sensor power pin was set to input by whatever program the mcu had run prior to running ModularSensors code.

Bug Fixes

For more details, see Pull Request #309: The style sheet

Sustainable Development - Knowledge Platforms - C++
Published by aufdenkampe over 5 years ago

ModularSensors - v0.24.1: Modem Restructuring

DOI

Downloads

libraries_v0.24.1.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the library zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of library zip to your project's 'lib' folder.

Change Log

Improvements

Restructured modem so that it no longer operates as a sensor. Variables tied to the modem are now effectively calculated variables and all values from the modem will be offset by 1 sending cycle (ie, the signal strength posted will always be the strength from the prior send, not the current one).

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 6 years ago

ModularSensors - v0.23.13: More agressive attempts to set clock

DOI

Downloads

libraries_v0.23.13.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the library zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of library zip to your project's 'lib' folder.

Change Log

Improvements:

  • Much more aggressive attempts to set the clock if the time is not reasonable - before 01Sep2019 or after 01Jan2025.
    • The LED will flicker and warnings will be sent over the serial port for invalid times at every check.
    • The logDataAndPublish function will attempt to synchronize the clock at every measurement until a valid time is received.
    • The NIST sync will attempt to open the socket to the daytime server up to 12 times trying to get a valid response.
  • Using automatic network technology and carrier profile for Digi LTE-M XBee3's - with the current firmware there is not a significant time savings in manually selecting the carrier and manually selecting the carrier gives no options when the relative signal strength of the carriers changes.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 6 years ago

ModularSensors - v0.23.11: Watchdogs and More

DOI

Downloads

libraries_v0.23.11.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the libraries.zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of libraries.zip to your project's 'lib' folder.

Change Log

New Features:

  • 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 Terros 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.
  • 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.

Improvements:

  • Added extra compile tests in the menu a la carte example.
  • Improvements made to nearly all modem modules
  • Restore XBee access to resets by TinyGSM

Bug Fixes

  • Fixed all compiler warnings seen with the -Wextra flag (mostly by adding technically-unnecessary-but-visually-helpful braces)
  • Fixed issue with creating a calculated variable without a UUID

Known Issues

  • polling the AM2315 more frequently than every 2 seconds will now return a bad value (-9999) rather than returning the same value multiple times. This is a reflection of a change in the Adafruit library. The measurement time set for the sensor has always been this long so this issue should never be seen unless you attempt to call get measurement results from the AM2315 without first waiting for the measurement completion. The update function and all variable array functions should behave properly.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 6 years ago

ModularSensors - v0.22.5: Modem Simplification

DOI

NOTE: This release is NOT backwards compatible with previous releases.

  • All code must be updated to the current format for modems and time zones to work with this version of the library.

Downloads

libraries.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the libraries.zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of libraries.zip to your project's 'lib' folder.

Change Log

New Features:

  • LoggerModem has become a parent class. All modems now exist as separate subclass objects.
    • This should greatly simplify creating a modem object in code.
    • Currently supported modems:
      • Digi XBee and XBee3 cellular modems of all types running in transparent mode
      • Digi XBee3 cellular LTE-M modems in bypass mode (this is in addition to transparent mode)
      • Digi XBee cellular 3G global modems in bypass mode (this is in addition to transparent mode)
      • Digi XBee Wifi S6B modules
      • Sodaq UBee LTE-M (SARA R410M)
      • Sodaq UBee 3G (SARA U201)
      • Sodaq 2GBee R6/R7
      • Sodaq 2GBee R4, Adafruit Fona, and other SIMComm SIM800 modules
      • Botletics and other SIMCom SIM7000 modules
      • Dragino, Nimbelink, and other Quectel BG96 modules
      • Nimbelink LTE-M Verizon
      • Espressif ESP8266 based modules
    • The older way of creating a modem object and feeding it wake/sleep functions is no longer supported.
  • The real time clock's timezone can now be explicit set (as opposed to setting the logger timezone and the offset between the RTC and the logger)
    • The function to set the logger timezone has been renamed from setTimeZone to setLoggerTimeZone.

Improvements:

  • Daily clock synchronization has been moved from midnight to noon. For loggers with solar charging, this should place the extra draw of the modem to do the synchronization to a time of peak charging.
  • All "send" data functions have been renamed to "publish" to line up with module names.
  • Updated AM2315 to use most current Adafruit library (2.0.0)

Bug Fixes

  • Fixed #259 where time zones offset by more than 9 hours from UTC would not work correctly.
  • Fixed #183 where enabling debugging would cause non AVR boards to crash.
  • Adjusted some timing parameters for the SIM800 based on testing.

Known Issues

  • polling the AM2315 more frequently than every 2 seconds will now return a bad value (-9999) rather than returning the same value multiple times. This is a reflection of a change in the Adafruit library. The measurement time set for the sensor has always been this long so this issue should never be seen unless you attempt to call get measurement results from the AM2315 without first waiting for the measurement completion. The update function and all variable array functions should behave properly.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 6 years ago

ModularSensors - v0.21.4: Deep debug error

Downloads

libraries.zip contains this version of ModularSensors and the proper versions of all of its dependencies.

Installing on the Arduino IDE:

In your the Arduino Software (IDE), import the libraries.zip file following the instructions for "Manual Installation" from https://www.arduino.cc/en/Guide/Libraries#toc5. You cannot directly import the zip using the Arduino Library Manager because it contains multiple libraries.

Installing for PlatformIO:

Extract the contents of libraries.zip to your project's 'lib' folder.

Change Log

Bug Fixes

  • Fixed minor bug in debugging created in previous release

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 7 years ago

ModularSensors - v0.21.3: Minor Bugs and Simplified Debugging

New Features:

  • Gave every header file a unique debugging define statement so each file can be debugged individually by building with the build flag -DMS_xxx_DEBUG where xxx is the file name in upper case.
    • Some files also have a "deep" debugging option with -DMS_xxx_DEBUG_DEEP
  • Created examples for LearnEnviroDIYCode

Bug Fixes:

  • Fixed a bug causing modem to not be turned because the processor thought it was on already
  • Corrected warm-up timing for Yosemitech Sonde
  • Typo fixes in comments

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 7 years ago

ModularSensors - v0.21.2: Fix write to SD card

Bug Fixes

  • Fixed bug intoduced in 0.21.0 preventing writing to SD card - file must be closed (not sync'ed)

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 7 years ago

ModularSensors - v0.21.0: Support for all Atlas Scientific I2C sensors, compiler-safe begin functions

DOI

New Features:

  • Added full support for all Atlas Scientific EZO curcuits and sensors that support I2C
    • CO2
    • DO (dissolved oxygen)
    • EC (conductivity)
    • ORP (oxidation/reduction potential)
    • pH
    • RTD (temperature
  • Created empty constructors for the logger, publisher, variable array, and variable classes and all of their subclasses. For all classes created a corresponding "begin" function to set internal class object values.
    • See note for more details: https://github.com/EnviroDIY/ModularSensors/commit/b1a619ed74bc790743bce35b3a4e78a2d2237b22
    • The order of input arguments for all variable objects has changed. For variable subclasses (ie, variables from sensors), there is no change to the user. For calculated variable objects, all code must be updated! Please check the structure in the examples! Older code will compile without error but the variable metadata fields will be incorrectly populated.
  • Very preliminary support for SD cards with switchable power

Improvements:

  • Eliminated any time-out waits on libraries using the Wire class
  • Simplified the logger begin function - the removed functionality should be called in individual program setup functions
    • Removed clock sync
    • Removed logger file creation
    • Removed sensor setup
  • Moved the check for setup from the wake function to the startSingleMeasurement function for all sensors
    • Previously, the first time the wake was called for a function, the status bit for setup was checked and if the sensor had not been setup, the setup function was called. This will no longer happen the first time the wake function is called, but instead the first time the startSingleMeasurement function is called. The main motivator for the change was the modem which could end up behaving strangely because the setup function actually called the wake function internally.
  • Improved example coding for SARA R410 cellular modules

Bug Fixes

  • Fixed call to a null pointer causing the array's completeUpdate to crash with calculated variables
  • Fixed source of ADS1x15 dependency
  • Removed "default" wake/sleep functions from modem. These were non-working skeleton functions.

Known Issues

  • Running some I2C sensors on switched power will cause unrecoverable hangs at the first call to any other I2C peripheral (ie, the DS3231 RTC) after sensor power is turned off. This is a hardware problem and is un-fixable within this library.
  • The sensor class and all of its subclasses still require input arguments in the constructor.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 7 years ago

ModularSensors - v0.19.6: Modem Improvements & ADS1X15 Generalization

DOI

New Features:

  • Added ADS1015 as an optional analog to digital converter (ADC) for boards other than the Mayfly

Improvements:

  • Modem waits for signal strength return before sending data
  • Other modem tweaks
  • Restructuring of data publishers

Bug Fixes

  • Fixed bug with ADS1115 for M0/SAM21

Sustainable Development - Knowledge Platforms - C++
Published by aufdenkampe almost 7 years ago

ModularSensors - v0.19.3: Bug fix and example re-working

Improvements:

  • Re-works the examples to remove duplication between them.

Bug Fixes:

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 about 7 years ago

ModularSensors - v0.19.2: Decreased Data Consumption

New Features:

  • Added ThingSpeak support via MQTT (PubSubClient is now a required dependency)
  • Added support for TI INA219 thanks to @neilh21 (Adafruit INA219 library is now a required dependency)

Improvements:

  • Reduced telemetry data consumption (by half in one test) and therefore overall power use, by creating an outgoing text buffer.
    • Note : the default buffer size is quite large, decrease it to decrease program memory size.
  • Refactored data publishers as a new class rather than subclasses of loggers

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 about 7 years ago

ModularSensors - v0.17.2: Major Update!

New Features & Improvements

NOTE: THIS RELEASE DESTROYS BACKWARDS COMPATIBILITY!!

  • All .ino sketch files will need to be updated to follow the updated examples.
  • All library dependencies will need to be updated to match versions in the library.json file.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 7 years ago

ModularSensors - v0.12.2: Calculated variables and bug fixes

New features and improvements:

  • Implemented real calculated variables, from PR #153, closing issue #127 (Create generic calculated variables).

Bug fixes

See PR #160 for a full list of improvements and fixes.

NOTE: This THIS RELEASE DESTROYS BACKWARDS COMPATIBILITY!! All .ino files will need to be updated to follow the updated examples.

Sustainable Development - Knowledge Platforms - C++
Published by aufdenkampe over 7 years ago

ModularSensors - Fixed Longer Logger Intervals and Improved Documentation

  • Fixed variable type for logging interval from uint8_t to uint16_t allowing consistent logging at intervals greater than 5 minutes

  • Improved documentation for examples

  • Applying "sensor testing mode" more consistently in examples

  • Made variables necessary for sensor testing mode with custom loops public

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 8 years ago

ModularSensors - Added sensors and fixed timing bugs

New sensors:

  • Added support for Freescale MPL115A2 pressure sensor
  • Added support for Keller Acculevel
  • Added support for Yosemitech Y4000 multi-parameter sonde
  • Added support for a generic "voltage" measurement on an ADS1115 with and without a voltage divider
  • Added support for an external rain tipping bucket counter deployed using the EnviroDIY TippingBucketRainGauge library and communicating with the main logger via I2C

New examples and documentation:

  • Added some helpful details on the default I2C addresses of several sensors
  • Expanded explanations of sensor and variable terminology in ReadMe
  • Added 2 new examples of creating a calculated variable from those variables directly measured by multiple sensors
  • Minor corrections to Yosemitech sensor resolution and accuracy.

Bug Fixes and other Tweeks:

  • Fixed major bug causing sensors with long stabilization times to not be updated
  • Tweeked code generating csv's and json outputs to allow a modified csv or json to be written to the SD card or posted to data.EnviroDIY.org
  • Removed the "checkForUpdate()" function. When asking for a value from a variable, you now must explicitly state whether you want the variable to ask its parent sensor for an updated value or not. By default, it will not ask the parent sensor to update, but only return the last value received or -9999 if a value has never been received.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 8 years ago

ModularSensors - Timing Improvements

Major restructuring of sensor status and internal sensor time stamps to improve efficiency when using variables/sensors in arrays - this makes sensor/variable order much less important

Restructured Zebra Tech D-Opto

Added MS5803, external voltage, and external tip counter

Fixed bugs with modem and 5TM

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 8 years ago

ModularSensors - Fixes bugs in description and examples

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 about 8 years ago

ModularSensors - Uniformity of missing values, averaging for all sensors

  • Allows all sensors to be averaged
  • More uniform return of -9999 for missing/bad values
  • Better time synching
  • Example platformio.ini files

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 about 8 years ago

ModularSensors - 0.5.4-beta

  • Added Yosemitech brand sensors which communicate via RS485
  • Improvements to modem support and debugging
  • Clock synchronization fixes
  • Improved examples
  • Renaming of a large number of internal variables
  • Library metadata and dependency fixes
  • Inching closer to full support for SAMD21 (M0/Zero) processors, though still some bugs present.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 about 8 years ago

ModularSensors - Beta Release 0.3.0

Added the Apogee SQ-212 PAR sensor.

Changed the interrupt library to EnableInterrupt, which now controls all interrupts.

Added the modem as a "sensor" which can return it's signal strength as a variable.

Added a "debugging" mode, accessible by pushing a button while the checkForDebugMode function is running.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 8 years ago

ModularSensors - Impoved setup functions

Slight rearrangement of setup functions to improve efficiency.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 over 8 years ago

ModularSensors - Another beta release

Shorted time allowed to attempt to turn Bee on/off

Added a check that Bee is on before trying to connect to network

Shorted wait for network time to 55 sec (from 60)

Put disconnect step within if block so it only tries to disconnect if it was connected in the first place

Fixed extra spaces in CSV

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 9 years ago

ModularSensors - Initial release

Our first release of the modular sensors library to support easily logging data from a variety of environmental sensors and sending that data to the EnviroDIY data portal.

Sustainable Development - Knowledge Platforms - C++
Published by SRGDamia1 almost 9 years ago