Logo   Development History

Published Source License
Screen Shots
Project Status
Updating Firmware

Reference Information
Development Environment
Development History
I2C Addresses
Module Setup
Network Setup
Processor Module Pinning

PJRC hardware
ESP8266 Information

Development History


Firmware Source Control and Release History

LOGGER Libraries

Many libraries are installed, perhaps some are a consequence of the installation of other libraries or part of the Arduino world. This list shows libraries have been intentionally installed and that the library manager shows as installed. Built in libraries are not listed. Intentional installations in this list are listed with the library revision that was current at the historical point when the the library was added and/or the code was validated. Revision numbers in this list may not be current. Updates to these libraries are shown in the source control revision history below. Libraries installed but used only for other projects are listed in case there is an interaction.

RevisionAdded Library Name
1.2.4 Yes SD
1.2.6 Yes Servo (not used for LOGGER)
1.0.2 Yes SpacebrewYun (not used for LOGGER)
1.2.12 Yes DS3232RTC
2.3.5 Yes OneWire
1.6.0 Yes Time

LOGGER Firmware Source Control and Release History

RevisionSizeZIP file
20200619 Not logged in

Move millisecond time wraparound to services loop. Integrate it with delayed reboot that allows a web request to perform a task to get an ACK page displayed before the reboot occurs. Move reboot notification after button processing so ACK of button press shows the ACK message. Delay reboots by REBOOT_DELAY in all cases.

Rename webStartPage to webservicesStartPage. Make sure all cases do alerts. Rename webEndPage to webservicesEndPage.

20200616 Not logged in

Add ALERTS command to read a file of alert bindings. Add the concept of a valid range for various sensor types. If the sensor is out of range send an alert to the user typically by email. Other alert types are proposed. The entire history of alert bindings is kept in the file on the SD card. As they are read the latest binding overrides all previous bindings. The bindings are read at boot time.

Change how ONEWIRE command works it now accepts the conversion delay and not just a flag as an argument. Increase normal conversion time to 1 second from 750 ms. Looking for why Temperature_0 is always hot. Another onewire device in the same location also shows hotter than ambient. Add more messages when debugMessageLevel is high.

Rename the GETNTP command to NTPGETTIME.

Add PHISTORY command to read parameter history file. Save parameter changes to a history file. If parameters are not recovered from flash read the history file to set them.

Add the concept of user names for sensors. Save and recover at boot these name bindings in a file on the SD card.

Fix a bug in how the SD card is found on old cards. The bug caused the SD card to be missing on every other boot. Rework code to find the SD card on startup. An automatic reboot may happen if the SD card is searched on the old pins on a new board. This only happens after errors or if the SD card ID code fails to find the card at startup. (Possible if the card was missing last time.)

Rename the flag in the startup code that always turns on Access point mode.

Update M2X comments now that it is missing.

Update device ID support for most devices to have a print flag.

Rework the format of the parameter table.

Fix a bug in temperature conversion to degrees F in graphs.

Convert some code to common subroutines in support of changes to establish, save and restore a band of minimum and maximum values for a sensor. Report those values as part of the class. Add printout of min and max values to the table dump of the sensor class. Add setting min and max values to the class. Rework printout code to support setting these values as part of the sensor settings.

Fix nameing of service to print fixed point numbers. Fix stringToLong to work on 32 bit numbers. Expose fixed point printing service and hex printing service.

Fix most web page header printouts to report issues and errors.

Make tinme change reporting quieter unless debugMessageLevel is higher.

20200529 Not logged in

Rework firmware update. Callbacks now available. Reporting of sucess and failure is improved. Two version numbers are created for testing other than the version number these are the same code.

Reconfigure the chart area to get time axis headings to display.

A history of parameter (permanent variable) settings is saved to a file as well as to permament memory. Only the users variables are saved. These will be recovered from the file if reading them from memory fails. In this way the users configuration follows the SD card if that card is moved to new hardware. This also takes care of the intermittent failure to read the parameters from memory.

Increase network timeout to 2000 in hope that will allow code download on a lower quality link.

20200522 Not logged in

Completed email alert system. Time between emails is a new field on several pages.

Add yields when reading files from the SD card. A yield is performed after reading each line. Time history, name history and alert history are all updated.

Add services to emit a sensor name and value to a string.

Suppress NTP time adjustment printout unless debugMessageLevel is elevated.

Web page argument handling is centralized for application specific page arguments and added to all application specific pages. This is the same basic method as has been used for page arguments that are handled by the non-application specific webservices. User warnings generated by webAlertIssues are added to a few pages that did not have them (missing database etc.).

20200520 Not logged in

Install esp8266 version 2.7.1 replacing 2.6.3.

Add controls and web pages for setting alert ranges. Email messages are not sent yet. This adds the ALERTS command. Read the alert ranges (and eventually email configuration) from a file at startup. Add upper and lower limit values to sensors.

Improve initial temperature handling, especially how onewire temperature is reported before the first sample is completed.

Add some services for reading and reporting HEX values. Also for fixed point numbers.

Improve control of Onewire debugging messages.

If a time adjustment can not be written to the history file do not keep trying. The retry happens when the SD card is missing.

Rename the GETNTPTIME command to NTPGETTIME.

20200518 Not logged in

Improve formating of STATUS command output.

Improve messages associated with not finding the SD card. Change the checking protocol for finding the SD card to automatically detect old vs new pinning and prevent continuous crashes when old pinning is selected on hardware with new pinning. Code that intereacts with the SD card now quietly handles a system where the card is not inserted.

Reporting of reboot reasons for software induced reboots did not catch all cases of these and reported some as reboots due to a bug or crash.

A failure to log a NTP clock time adjustment resulted in continuous messages when the SD card was missing. This message is now emitted only once.

The XML history example is now a live link instead of just simple text.

20200516 Not logged in

Add the concept of a user name for a sensor. These names are logged in a side file on the SD card in a way that post analysis could show what name was in use when a sample was taken. The USER_NAME command is added to test the internal support for this feature. The feature is seen on the Sensor Configuration page.

A test command 'LED' to turn the built in LED on and off is added.

Off by one errors that caused inaccurate sampling time when not sleeping are fixed. The bug was introduced with the sleep code.

Reset of the I2C bus is integrated with the I2C code. A bus reset function is added and used in the I2C code. The reset must still be coordinated with the I/O power code because powering on I2C chips without proper reset can cause latchup. The code to support this is moved around, but, it still works the same way. The I2C reset routine now calls the power code. Other I2C code calls the reset code. The power code must still always do an I2C reset.

M2X code now aborts without putting data on web pages if off. AT&T no longer supports M2X.

Names of some networkservices routines now follow the module naming convention.

Security checks are updated to allow pages to display differently when writing is not allowed (signature not given). This is used on the Sensor Configuration page as part of user names for a sensor.

Table row framing is moved out of the low level Sensor print code. The caller is now responsible for row framing. The sensor print just puts out the TD fields of the row.

Some disabled debug code is put under DEBUG_LEVEL control rather than being completely turned off.

The Access Point name is displayed on the system status panel.

The frequency of NTP time logs in the time history is reduced. One occurs at each non-sleeping boot. Small adjustments may not be logged.

20200511 Not logged in

Log when time is set to keep a record that allows database fixup. Setting time from the database is always logged. Setting time from other sources is logged if the other source is of high quality and a low quality log happened. There is no need to log high quality times if one already happened. The DB_TIME_SET command is added to test and support this. A timehistory web page is added.

Fix bugs associated with multiple files to read/write and improve logic to save space in the namehistory code.

Handle some fringe cases in taking samples and starting to sleep where negative time in MS was not being compared correctly and resulting in a failure to sleep.

Reboot on MS timer wraparound. This is every 24 days.

When entering deep sleep use the lowest power RF_DISABLED wakeup mode.

Improve messages for the DEBUG command.

20200510 Not logged in

Some change in a prior release caused pulse counting pin pulses to cause a crash. This is fixed by conditioning the SCL and SDA pins to be input types in the ISR. The problem caused a panic in a yield call, probably by the Wire code fixing or handling an error condition.

Fix DEBUG command so it can set level 0.

Add support for dynamic adjustment of microsecond to millisecond ratio. Reduce jitter allowed to 2 seconds.

Repair formatting of pin changes messages.

Allow longer delays in network setup and search for networks.

Improve reports associate with edge sensitive device detection.

Deep sleep for network startup checks hardware startup state rather than the software shutdown flag.

20200508 Not logged in

Add DEBUG command to control debugging output. Many changes to control messages. This works in cooperation with the DEBUG_LEVEL macros which now only enable and disable code. Which outputs are emitted are now controlled by the DEBUG command. The setting of the debugMessageLevel is stored permanently. Remove the VERBOSE command, this replaces that function.

Add DEEP_SLEEP command to test deep sleep mode.

Control output pin state prior to deep sleep. Add code to put pins in a low power state that can be used even if not sleeping.

Add reports for the status of the flash database. Control them based on the DEBUG command.

Improve handling of GPS sentences and how they report time adjustments. GPS sentence parsing is lightly tested.

Add reports of the previous I/O power status to the POWER command.

Change the database header to use tenth seconds to measure time between samples. The old version used milliseconds and stored the value in 16 bits. Both database type are recognized and using an old database is safe. the DATABASE_MINOR_VERSION is now 4.

Add the capability of deep sleeping between samples. When this is enable web access is no longer available. The device must be power cycled to regain web access. NOTE: pressing the reboot button does not look like a power cycle to the software and will not regain access, this looks the same as a wake from deep sleep to the software. The network and associate web services are not turned on after a deep sleep. If deep sleeping is on after a power cycle the system will stay awake for a while so the user can regain control via normal web activity. Two power cycles may be required. NTP time services are not read when waking from deep sleep, a clock chip is required. Code download controls and prevents deep sleeping for an extended interval.

Completely restructure the dataservices module related to how it decides to take the next sample. Taking samples prior to knowing the time is no longer supported. These changes are in support of the deep sleep capability. Improved debug message handling is part of this change.

Rename the DataBaseState_t enum DatabaseOldVersion to DatabaseBadVersion. Update the debug messages related to it.

Update DEBUG message control for DLVR pressure.

Update DEBUG message control for MAX11615.

Update DEBUG message control for SI7006A20.

Update DEBUG message control for TCA9539.

Update DEBUG message control for MS8607.

Update DEBUG message control for Onewire. Improve clock chip support. Add retries for clock chip communication.

Allow the USB flash device to be controlled by GPIO10 or GPIO16 depending on the processor board version. Automatically detect and remember the board type based on the presence of a clock chip. Old boards can handle the presence of a clock chip so long as the first time the processor board is started the clock chip is not present. The processor notices and remembers this in a permanent variable. If permanent variables are cleared the value of FLASH_SS_PIN may have to be reset manually, 16 for old boards 10 for new.

Rename all flashservices global routines and variables to have the complete prefix in their name.

Record the time to boot (in milliseconds). This is used in deep sleeping.

Counts of unexpected reboots are improved. Deep sleep is not counted as a reboot.

Network startup code is moved to the network module in anticipation of being able to start and stop these services dynamically. That is not yet implemented.

The loggerYield() functions at startup behave differently, not forcing samples out so startup can complete properly.

Add retries to reading permanent variables.

Handle negative times when dumping amounts of time.

Formatting in the version printout is improved.

Web page controls for deep sleep are added. The methods of controling and responding to buttons are improved and are now used for sleeping ON/OFF and temperature units selection. Button background color control is fixed and allows for a selectable color when a button is emitted.

Some potential bugs are fixed due to a failure to wake up for a cycle when a web page controlled value is changed. Wakeup is now set whenever a web page resets and reloads. Performing this task is centralized.

When the used gets a web page sleep is prevented for a time. Currently set to 3 minutes.

Update DS3232RTC to 1.2.12 from 1.2.9

Update library Adafruit Circuit Playground to 1.10.4 from 1.10.3. Notice that the include of SD.H works properly if placed at the top of the module. It also appears that a memory leak when the NTP time server was probed is now fixed.

20200423 Not logged in

Add testing of light and deep sleep. Add support for clock chip periodic interrupts to allow testing of a possible sleep methodology. Also add support for deep sleep (from a web page button) and associated recovery by reboot of the system. This support is still only for testing sleep characteristics. In debug modes control an I/O card output pin as deep sleep is entered for testing.

Add support for the SD card FLASH_SS_PIN to be in different places to free up GPIO16 for deep sleep recovery.

Improve time detection and reporting of test that turns network by holding down the onewire data line.

Increase the NTP time request interval to 4 hours from 1. This is based on observations of how often a real change is needed.

Make some subroutines local to their module which helps Doxygen warnings.

Save some space in non-debug mode by turning off symbolic names for pins.

Add code to stand down the pin states when entering sleep. This will also be a place to put code that stands down I/O devices, but, there is no such code currently required.

Many comment upgrades to reduce Doxygen errors and warnings.

Some additional files added to the backup.

20200417 Not logged in

Upgrade to Arduino 1.8.12.

Add CLOCK_INTERRUPTS command to test clock chip periodic interrupts. This command and the associated support is presently for testing only. It was used to determing that clock chip interrupts can cause a processor reboot which might support deep sleeping. Deep sleep is more likely to be supported by use of ESP features that involve connecting GPIO16 to RST and need another I/O pin (GPIO10 on the ESP-12E).

Improve discussion of element logging that is skipped because time in the database is the same or newer than the time of the element to be logged.

Improve timeout handling for web sending interactions. This eliminates an issue where distant or slow connections got dropouts in pages being presented.

Add pin definitions for GPIO9 and GPIO10. Improve notes about FLASH_SS_PIN for planned change to use GPIO10 for this purpose on the next hardware spin freeing GPIO16 for sleep wakeup code that reboots the processor by connecting GPIO16 to the processor RST pin.

Improve handling of ~DR signals. Most of changes relate to improved error handling and reporting when an additional cycle is required because ~DR stayed on after the first pass. Some cases get postponed until the next cycle with flags set to improve reporting of why postponement happened. An extra read is done to see if the ~DR signal clears on the first cycle or is a real indication of new processing required. Which device address saw changes is reported when pin changes are checked so high level code can take appropriate action and do better logging.

Watch the onewire signal to see if switch SW1 is held down. This is (will be) used as an indication that networking should be turned on for an interval. Incomplete battery handling related to turning on the network and turning it off so sleeping can occur is added. Some battery operation support is added but this support is largely incomplete.

Save a modest amount of code space by keeping pin names in a data table only when debugging is turned on.

Add discussion of sleep modes. Improve discussion of sleep strategy. Add debugging feature that sets I/O pin 16 when shallow sleeping should occur. Add more sleep testing features. Sleep implementation is not complete.

The pins on the AC card used to detect which card is present need a pullup. Drive them high to save power when the pullup is in place. This also prevents multiple ~DR interrupts when the pins are left floating.

Make NTP time services quieter unless debugging is turned on. Improve messages when delta to NTP report is 0.

Change menu to have an Exports section currently populated by the XML page.

Code space report:

Sketch uses 459024 bytes (43%) of program storage space.
Maximum is 1044464 bytes.

Global variables use 44100 bytes (53%) of dynamic memory, leaving 37820 bytes for local variables.
Maximum is 81920 bytes.

20200309 Not logged in

Same as 1x67 with different version number to test downloads.

20200309 Not logged in

Revet timeout on WiFiClient to 1000 after parsing header. The short timeout is requred to allow command lines to operate promptly. If the timeout is left short fragments of the web page are lost on slower clients or distant network connections.

20200307 Not logged in

Increase handleClient delay to 1500.

Break up some long lines is number INPUT on web pages.

Report code update errors in some cases.

Add additional yields to sensor reads. Do not do flush of web streams at each yield.

20200306a Not logged in

Add loggerFastYield and call it wherever loggerYield is done wvery N times.

20200306 Not logged in

Change loggerYield to not do a flush.

20200304 Not logged in

Better reporting of NOT_DATA_READY.

Improve sequencing of the OneWire sampling and other uses of the OneWire pin. (for WiFi on period trigger).

Add support for triggering a WiFi network on period. The network is still always on, just the trigger of the on period is implemented.

Shrink the size of some blocks of web page data to the network.

Add additional DEBUG reporting of pin state and pin on periods.

20200207 Not logged in

Install esp8266 version 2.6.3 replacing 2.6.2.

Rework buffering sending partial content to the server. The old method could have gotten errors when only a partial string remained depending on exactly how Stirng.substring worked.

Reformat command table.

Add Data Map page to display the map of the datastructure saved at each sample interval. Move some definitions to independent modules that can be shared with the CHANGER code.

Some space savings in static string allocations.

Make last temperature a signed number.

Better checking if humidity and pressure devices are both present at address 0x40. Add a warning to the user.

Add the concept of named periods.

Add the concept of boolean permanent variables. Use it to add display in degrees F vs degrees C.

20191226 Not logged in

Resolve a number of minor compiler warnings, removes some arguments and some routines. Enable more compiler warnings.

Provide for boolean permanent variables. This still needs to display the choices as a selection of YES or NO as values instead of numbers.

Allow Names for Periods to contain spaces.

Add background colors to Named Period columns.

Move parameter setting from page arguments to a central subroutine. Call page starting routines more uniformly providing for security and button handling. Fixes some non-working REBOOT buttons. Add the concept of parameters resolution that is only allowed when writing is allowed to permit these support routines to be more general.

Provide for content in the EMAIL_TEST command.

Add temperature units of F vs C. Remove a table of unit names in favor of code that emits the name. This allows the names to adjust for the units that change (C vs F).

20191222 Not logged in

Remove use of time.h in favor of timelib.h.

Add Named Periods services and web page. Allowing user to establish a name for a data set.

Add support for the MAX31826 temperature reading. The EEPROM is not supported.

20191220 Not logged in

Recognize the DS28EA000 and treat it as a simple temperature device. Recognize the DS28E07 and properly ignore it as an unrecognized device.

Fix bug in Firmware reload page that ignored the button.

Recognize and ignore several additonal onewire device types.

Convert to non-secure email sending. Now operational and turned on. No alerts configured yet to send messages.

SMTP configuration parameters for email reporting added. Service routine updated to simpler interface.

Rework storage of permanent variable names so they do not consume dynamic data storage.

Secure SMTP sending class removed. It did not work probably due to space conflicts.

Save space in RAM by better String and F() usage. Make command list into a macro. Make pararmeter list into a macro.

Move getField to general purpose services.

Normalize include file names. Fix capitalization.

Install Servo by Michael Margolois 1.1.6 replacing 1.1.5.

20191216 Not logged in

Install Arduino AVR version 1.8.2 replacing 1.8.1.

Install esp8266 version 2.6.2 replacing 2.6.1.

Install Time by Michael Margolois 1.5.0 replacing 1.4.0.

Add test code for sending email. There are issuse with space and security. This test currently disables normal processing it is currently turned off.

Improve use of F() and associated String calls to save space.

20191213 Not logged in

Add web page for reload of firmware.

Many space saving updates by eliminating conversions to String types before calls to subroutines. Some of these improve performance by eliminating the free storage allocation of creating strings. More such optimizations remain.

20191209 Not logged in

Add HANG commmand for testing watchdog reboots.

Formating updates for output.

Rework checking for delays to use more common code, use more static string arguments and to disable more cases unless debugging is turned on.

Add support for the DS2417 and DS2415 time chips. Accept time from a time chip when it is available on startup. Rework onewire code to allow for chips that do not supply a CRC with their data. (This code is now tested.)

Add user visible reports of too many onewire devices seen.

Report changes in stored parameters only when there is a differnce.

Detect reboot causes better. Note reboots due to system power up and count unexpected reboots independently from power on reboots our update reboots. Report more reboot type information.

Remove underline decorations from menu items. Rework some menu formatting.

Add UPDATE command to update from a Binary file on the Dragonnorth server. Web page support not yet available.

Install Adafruit Circuit Playground version 1.10.3. replacing 1.10.2.

20191121 Not logged in

Install Adafruit Circuit Playground version 1.10.2 replacing 1.10.1. Install esp8266 board version 2.6.1 replacing 2.5.2.

Update routines that check for delay to use constant ROM string arguments. Rename a number of these routines to use different names based on argument type. Find a bug with the inclusion of the SD.h library that caused conversion to dynamic strings at the call to the time routines.

Change web page output to include CR LF after each block of HTML. This makes automatic formatting work when the source HTML is captured from the browser and placed in an editor.

Improve comments associated with ISRs, sleeping and locking.

Add code to support onewire clock chips DS2417 and DS2415. Add detection and reporting of a number of other onewire sensors without support for those sensors. Set time from these chips at boot and store time in them as time is set by other means. One of the chips is selected to use for this purpose. The same chip will always be selected in a static hardware configuration. This code is untested.
Rename some routines and variables in anticipation of adding onewire sensors other than temperature.

20191114 Not logged in

Provide menu items for more sensor types.

Move all javascript to the head portion of the web page.

Improve timeservices debug reporting.

Fix bug reporting time since boot when time is not yet set.

GPM and LPM implementation completed.

Change the ESP command to be a CPU command.

Isolate time checks from loggerYield.

Testing and status code added to espserver.cpp.

Proper recovery of pin types at boot.

Convert time checks for delay to use constant string arguments.

Improve some time checks. Remove a few unnecessary checks. Isolate what the checks apply to so reporting will be better.

Resolve issues passing F() arguments to subroutines that were quietly converting arguments of ROM strings to String type.

20191104 Not logged in

Correct errors in production of web pages that resulted in non-matching blocks. This causes some devices to look like they had lost data.

20191030 Not logged in

Add loggerYield calls in web services support code to ensure data is logged while waiting for web services.

20191028 Not logged in

Also built as 1(47)-127.

When a line from a WiFi client and the line is not terminated with a LF wait a little while (10ms) to see if more characters show up. This resolves issues where clicking on a button seemed to lose the arguments that were used to display the current page.

Find and partially repair issues in client handling that resulted in poor performance when the LOGGER satisfied a request for a web page. The original code was stuck in handleClient() until the web client terminiated (or a related timeout occured). This failure improved by limiting the retry activity to 550 ms. The handleClient() routine was called frequently (this is now required). The new timeout limits how long waiting can be.

Handle parameters to a web page that use only LF to end a line. CR LF pairs are still what is normally expected. A lone CR is never expected. This prevented long hangs when the lone LF occured.

Initialize pins to be inputs by default. Improve pin status initialization related to recovering pin status at startup. Do not recover pin status for pins that control edge detection hardware.

Rework menu to improve clarity, seperate items derived from pulses from actual sensors. Expose Temperature, Humidity and voltage directly.

Improve delay checking. Adjust some allowed delay times to larger numbers.

Improve some comment formatting to support DOXYGEN.

Improve reporting of NTP time updated when no time difference is noticed.

Make I/O expander pin configurations and desired outputs part of the data saved across reboots.

20191023 Not logged in

Add table to get liters per minute from pulses. Gallons per minute are computed internally from liters per minute units.

Add humidity page. Rework menu to identify sensors and pin types.

Change default home page.

Add Voltages to the menu. Make selection of sensor types more generic.

In handleClient go back to looping until the client is available or disconnects.

20191021 Not logged in

Some changes prior to 20191009 are reported here.

Report timing and status in espserver.cpp. This helps find a bug in web page header parsing where lines formed without CR LF pairs wait for a timeout. The timeout is reduced but the bug is not really repaired.

Update comment format for improved DOXYGEN parsing.

Change the network up test timing so it uses 13 minutes instead of 10. This helps determing what the cause of a reboot is.

Add the ICACHE_RAM_ATTR attribute to ISR routines so the latest version of the locator will place them properly.

Add flow services for LPM based on a counter. The ratios are hard coded and need to be updated. A parallel set of pages for GPM should also be implemented using the same set of ratios and a known ratio between liters and gallons.

When running as an access point do not go to the WAN for time.

Improve messages printed when an NTP time update shows no delta.

Update copyright and version notices.

Add direct menu support for presenting temperature pages.

Add additional reporting of long delays with timeservicesCheckForDelay calls.

Remove license grants to Airborne Sensors.

20191009 Not logged in

Convert to Arduino 1.8.10 and update libraries to the latest versions.

Rework as needed for Windows 10 and winzip 24. Repair some zip operations to include more things in the release.

20171224 Not logged in

Allow "" for the value of a parameter to clear the value in the PARAMETER_SET command.

Add a page to report average RPM in an interval based on the pulse count inputs.

Do a better job of limiting to pulse counting pins. Used for new RPM page and on the Kilowatt hours page.

Repair some off by 1 issues in the number of columns in a graph and lines in a table of values. Also update the start and end times of the graph so the first and last bars are not partially obscured.

Initialze the map of pulse counting pins to sensorID. This fixes a latent bug if the map was ever used with some cells uninitialized. This also allows the RPM and Kwh pages to skip pins that are not pulse counting pins. The old code worked because the pulse counting pins were always in a group at the beginning of the list of pins.

Add a test to see if a sensor ID is a pulse counting pin.

Fix error reports for non-existant parameter name to include an EOL.

20171030 Not logged in

Report cause of reboots.

Report count of reboots.

Detect software reboots and report that as the cause of a reboot. A software reload followed by a reset button push will report a cause of UNKNOWN.

Add SLEEP command support for making the network sleep. This is only for power consumption testing during a controlled sleep.

20171008 Not logged in

Repaired reboot reason so it is reset after each boot. It should now say the reboot reason is unknown if a crash occured. Add a count of the number of reboots.

Report the array of bits that marks if a variable should be uploaded to the M2X cloud as a numeric value instead of a string.

Turn on reporting of database start and end times and indexes.

20170913 Not logged in

Added GPS fix parsing commands. They only look at the time and are largely untested. If a $GPZDA message is recieved on the serial port the time is set. Time services are updated to log that the time setting came from a GPS message.

Added the concept of a read transaction to flash processing. This eliminates the need to open and close the file for each sample that is read and dramatically improves the speed of displaying a large number of points.

20170903 Not logged in

Added Sleep command for testing low power processor sleep modes. The implementation is incomplete.

Report the last reboot cause in a number of places.

Fix format of MAC address reporting.

Fix reporting of numeric permament variables.

Provide a link to the security setting page in the main menu.

20170615 Not logged in

Rename all public i2cservices routines to start with the full prefix 'i2cservices'.

Update some ??? comments to improve the discussions. Make some into @@@ comments.

Proper humidity reporting from the MS8607 pressure/temperature/humidity device. More complete temperature compensation as well.

Add 10 minutes as an allowed interval for the time between samples. Add a quarter of the year as an allowed time period in the choices of web presentations.

20170522 Not logged in

DNS now works. The Time server is first tried via DNS lookup. If that fails there is a static IP coded that may work.

Fix a bug in the detection of the AC module. The module will now only operate if the jumper above left of R82 is shorted. the 1(32) version would never detect an AC module.

The calculation of the MS8607 pressure and temperature now do the second order adjustment specified in the data sheet. This is a complex change to the calculation with two inflection points one at 20C and the other at -15C.

I/O expander pins are renamed IOx_P00 - IOx_P17.

20170521 Not logged in

When a reboot occurs if time is not available use the latest time in the database.

Improve DNS code, but, using it hangs when it tries to translate the name of the time server. Update the static IP of the default time server.

Add more debugging printouts to the onewire code.

Add Atmospheric Pressure datatype and use it to report MS8607 pressure in millibars.

Add automatic detection of I/O module type. Report if an unexpected type is at any address. Allowing 4 I/O modules of arbitrary type is possible but the database would then need to handle configurations differently or pre-allocate all possible types.

Rename the DVLR table of I2C addresses.

20170515 Not logged in

Update MS8607 code to properly read an convert pressure and temperature values. Humidity still has no response, does not seem to be a hardware issue, several modules fail in the same way. Lots of issues and inefficient time to read remain to be resolved.

Report the hardware serial number in web pages and version printouts.

Update parameter reporting to have number, string and HEX types. This makes reports of Onewire devices better. There is no support for the HEX type to be a settable parameter.

20170430 Not logged in

Released as 1(30)-100

Prevent early error about how long onewire waits for the first result.

Report I2C errors more cleanly.

Add SerialNumber parameter to allow a Logger hardware serial number to be set and reported. The software only allows it to be set once.

Repair temperature sensor creation for placeholder temperature sensors.

Improved MS8607 support still does not properly detect and initialize the component. Add sensor types to support MS8607.

Initialize onewire sensors in a better place so temperature sensors will always be in the same place in the database structure.

Change AC detector bit order of the I/O chip to match the production layout as built by AMI.

Report Serial number on the web pages.

20170424 Not logged in

Updates to recognize different types of I/O cards that occur at the same I2C address.

Add MS8607 pressure device. Add I2C support for a read operation without reading data.

Add a hardware version that is stored as a permanent variable. Currently not needed to ID hardware.

Update onewire testing to give new parts found a unique new Temperature_xxx name. Realize that 8 temperature parts should always be created, but, not done yet.

Fix some outputting formating.

20170327 Not logged in

Emit uints as part of sensor information on sensors page.

Add controls to emit hours, minutes and seconds fields as part of an ammount of time output. Emit the hours and seconds in a few places where that makes the interface more understandable.

Add a new control to set number of columns as an amount of time which computes the count based on the current time span.

Make calculation of interval a part of the start and end times central function. This fixes bugs in setting the interval and presenting it properly.

Update the chart boilerplate. This may improve the emission of time labels at the bottom of the chart.

Improve some Doxygen comments.

Fix bug in calculation of average amps in an interval.

20170315 Not logged in

Set a more sensible DEFAULT_INTERVAL.

Report system status in menu panel.

Rework formatting of version numbers on version page and in footer.

Rework time capture for all interval reporting pages per suggestions from David.

Limit heap space reports at startup.

Turn off M2X debugging. Turn off network debugging.

Improve reporting of sensors in use, use report in menu status.

Improve and correct reporting of amount of time to show leading 0s. Same for emitting a number. Control leading 0s when emitting a number to supply them or not as appropriate.

Report time since logging started.

Fix area of graph to allow more digits in column units.

20170309 Not logged in

Record when logging started and present up time.

Print a list of networks at startup. This seems to clear up a number of hangs and bad presentations when the LAN network can not be found.

Isolate database declarations so they can be used in a PC application.

Enable M2X debugging reports.

Increase columns in the graph.

20170216 Not logged in

Increase delay that triggers console reports of long usage.

Add buttons to move forward/back by Minute, Hour, Day, Week, Month and Year. Change misspelled names of selector subroutines.

Update size of numeric input fields to match real number sizes.

When pulse counting pins are not available report that KW and Pulse count pages are not available.

Improve time delay reporting at the start of web page display.

20170213 Not logged in

Improve the reporting in the STATUS command.

Add a CONNECT command to force a network reconnect. Add logic to the network module that allows users of the network to report sucess or failure on usage. If a bunch of failures happen in a row try to reconnect to the network.

Improve handling of the sensors that need to call a pre-read function a while before taking a sample. Make sure that a failure in wait for completion of the pre-read routines prior to taking a sample does not prevent the system from taking the next sample.

Rework pulse pin handling to do the counting in ISRs. When the I2C system is busy during the ISR then postpone the count for the main loop. This prevents missed counts due to long operation times in the main loop.

Improve yield reporting for excessive time taken in the main loop routines.

Add control of which sensors are supposed to uplink to M2X. (Cloud logging.)

Improve onewire reporting of errors. Add retries when a CRC error occurs on a read. Add improvements to make sure parasitic reads will work properly. Test parasitic reads (two sensors are OK).

Fix a number of places that should have used SensorID_t datatype.

Reconcile a number of ??? comments.

Once we know the time never decide that time is invalid. Invalid time can prevent logging in the database.

20170210 Not logged in

Convert pulse sensing to an ISR so pulses will not get missed when there are long intervals in the main loop. Add ISR read support to the I2C module. Postpone the pulse counting if the interrupt occurs during some other I2C read. Read all pins as a single word to reduce the I2C traffic. Handle cases where the pins are scatterd among many I2C modules.

Rename i2cXXX routines to be i2cservicesXXX.

Add a watchdog test command. Try to ensure that the watchdog is on and will fire if code does not run. There still appear to be system hangs that do not fire the watchdog.

Print the Sensor ID to the console when verbose printing the sensor info.

Eliminate loggerYield with no indication of what code wants to yield.

Make checking for unexpected delays the responsibility of the routines called out of the main loop. The main loop retains one check for 500ms. Any delay that makes a major contribution to that must be checked in the service code.

Report the reason for the last reboot.

20170207 Not logged in

Fix a bug where changing the start and end times did not update the graph until the next page load.

Add the ESP command to dump processor characteristics and space.

Add M2X reports of all sensors in an element as one HTTP message. Previous code did these one at a time. Change reporting of sensor names to report the C string version of the name.

Add reports of heap storage usage. Reboot if heap storage gets low. Add a report variable that logs in permanent memory the reason for the last reboot.

20170205 Not logged in

Report lists of sensors on lines of a table instead of as lines with line breaks.

Integrage M2X. Add a configuration page for M2X. Report periodically to M2X. Add the concept of fetching a floating point value for a SensorIR in an element.

Improve checking for maximum expected delays to allow for long delays that are expected. The previous code had a fixed maximum.

20170202 Not logged in

Prevent divide by 0 if the number of intervals is small.

Fix several bugs in the calculation of intervals and the presentation of intervals that msde the table and graph different from each other and had the endpoints different from the declared time span.

Fix a bug where the table at the end of a page was not closed properly.

20170131 Not logged in

Add loggerYield() and call it in many places to allow database sampling and logging to go on in the face of other task activity. Report long time delays.

Add checks for long task delays.

Fix a bug where a blank line intended for the web output was being printed to the console.

Fix a bug in the counting of disabled sensors.

Add a discussion of how pin counting should be moved to an ISR. This is not implemented yet.

Add fractional amount of time printing services. Use these services to print the length of intervals being graphed and the total time presented in the graph.

20170129 Not logged in

Fix I/O pin control page so a sensible pin of an I/O module that is present is always selected and displayed as the default pin. (Previously tried to display a pin of a missing module.)

Prevent a divide by 0 error in calculating temperature when bad data is returned from a onewire device (all 0s were probably observed).

Fix a bug in calculation of pulses over all time and in calculation of total pulses. Old code got too few counts and the all time calculation stopped at the end of the interval being inspected.

Add support for reporting Watt Hours, similar to reporting pulses but adjusting units and adjusting for the ratio of pulses to milliwatt hours. Add 8 permanent variables to manage the adjustment. As defaults Pulse_0 and Pulse_1 are set up for 15 amp CTs. Pulse_2-5 are set up for 100 amp CTs and Pulse6-7 are set up for 400 amp CTs.

Clean up naming of subroutines that read earliest sample time and newest sample time.

Improve handling and reporting of onewire devices that as a result of read errors get bad values for counts per degree C.

Fix selection of I/O pins to restrict selection to only pins of I/O modules that are present.

Try to put time markers on the graphs X axis. Not working correctly yet.

Save RAM at web page registration by using String(F("")) construct.

20170125a Not logged in

Additional improvement to database catchup.

XML control page implemented. Menu updated to go to that page which invokes the original XML download with user supplied arguments. Some documentation on the page for the XML download.

Onewire devices now convert temperature in parallel reducing the total time to less than 1 second. Sampling 1 per second should now work.

20170125 Not logged in

Much faster database catchup.

20170123a Not logged in

Fix a bug in XML output where the closing tags were lost.

20170123 Not logged in

Rename menu items. Create Sensors page with only the values. Create Sensor configuration page with all sensor details.

20170122 Not logged in

Fix a bug in graphing when illegal values are present in the database. Those values must get a placeholder in the array of elements being graphed or the graph will not display.

Truncate the DLVR_Temp sensor name so it fits in the available space in the internal table of names.

Rework the naming in the menu, changes the names of some pages. Use History and Sensors for the new names. Sensors now does a simple list of all sensors.

Use 'Columns in the Graph' and 'Lines in the table' instead of 'Samples'.

Change the name of the Sensors page to Current Sensor Values have it emit the non-verbose form. Add a Sensor Configurations page with the verbose sensor output.

Fix discussion of adding Temperature sensors to wait in the right places.

Add verbose printout to sensor printing, this changes how XML is emitted by not emitting the units field for sensor printout.

Add verbose/non-verbose dump to the SENSORS command.

20170121 Not logged in

Handle cases where there are no points to graph. Give a sensible user depiction.

Better reporting of database existence and creation. Report database issues on web pages. Sequence the database up so retries are handled nicely and the system is quiet if the database is missing from a missing card.

Improve handling and reporting of time between samples. Report times that are too long to read all temperatures.

Repair time triggers to work off the millis() counter rather than the Unix clock. This resolves issues if the clock jumps due to time setting.

Resolve issues where sensor reading might need more time to complete befor a sample is logged.

Improve debugging printout to use the DEBUG_LEVEL symbol pervasively. Better control what is printed in cases where the level is set to 1.

Improve the naming of sensors to hide the I2C address in most cases while still keeping sensor names unique.

Improve some internal subroutine calls to accept String arguments and use the F("") structure to reduce the RAM footprint.

Add a reboot button to the network configuration page.

Keep track of number of sensors displayed so web pages can produduce errors or sensible messages when there is no underlying data. Print a sensible message instead of a chart with an obscure message.

Improve reporting of Si7006 configuration and state. Improve knowlege of when the device is present because serial number read errors occur with high processor voltage.

Make date and time reporting for web pages part of the timeservices module

Report the I2C address used when reporting the sensor details.

20170117 Not logged in

Put hacks in core_esp8266_si2c.c library to better identify why writes fail. Include bug fix for 0 length reads.

Fix minor compilation problems in SMALL_CONSOLE build.

Fix problems in output conversion of DLVR sensor. Disable DEBUG_PRINT outputs.

Fix problems in determining if a humidity sensor is present. Fix problems reading the user register and the heater configuration, report these values. Attempt to fix reading the serial number but that does not seem to work. Code around the issue. Add commands to better debug I2C issues.

Add reset support to i2cservices. Add commands to pulse the SDA and SCL lines. Turn off DEBUG_OUTPUT in I2C reporting.

Fix compilation warnings for initialization order in espserver.cpp. Fix compilation warnings for unused arguments in several modules.

Rework I/O card power on sequence and reset the I2C support when power is turned on.

Clean up presentation of Access point and Network to join. Add setting sample reading frequency.

Clean up reporting of illegal temperatures and of temperatures that take on the initial value in flash.

20170113 Not logged in

Version 1(8)-52.

Improve ISCAN to do single address on request.

Allow disabling of EXPERT mode.

Change default bytes of address for IREAD command.

Resolve a number of compile time warnings related to comparing different data types.

Add DEBUG_OUTPUT to I2C reporting so it can be turned off.

Change some menu item names. Add Version to the menu. Print copyright notices for Lesser GPL libraries.

Fix a bug in reporting of missing I/O pins so it reports NO PINS when the board is missing.

Fix a bug in triggering time updates from the web pages. Report if time is not set.

Make use of GMT obvious.

20170110 Not logged in

Add a web page to manage the database. Add a mechanisim to erase the database. Add a reboot button.

Add a web page to manage the onewire history. Add a mechanism to erase the onewire history. Add a reboot button. Move the onewire history list to this page. Change the names of the sensors in the list to Temperature_xx from ONEWIRE_xx.

Complete the DLVR pressure sensor services.

Rework use of constant strings to store them in flash. Make more service subroutines accept strings instead of constant pointers because a quoted string is actually stored in RAM. Use the F("") structure to force strings to flash. Use println instead of \n. Review consoleio, security, sensorlibrary, services, tca9539, timeservices, webservices, webpages and xmlservices modules.

Use service routines to test argument presence so F("") can be used as arguments instead of simple quoted strings.

Repair elapsed time comparisons in i2cservices to avoid wraparound bugs. Fix handling in i2cReadFromSlave to not use write operations.

No longer use a delay in the search for networks. It is not needed.

Normalize the language that discusses permanent variables to call them parameters in user facing locations.

Update usage of "" to be F("") where possible.

Add services to support empty string detection and indentation printout.

Add indentation control in sensor printout. Fix indentation of the XML file output.

20170107 Not logged in

Fix a bug where a disabled sensor could be emitted.

Fix a bug in the code that prevents creation of duplicate uniqueIDs. Handle creation of a duplicate correctly, turn the sensor on when identified.

Find and repair a number of prints of single characters that put the character in a string instead of emitting it directly.

Report totals sensors and bits used in SENSOR summary.

Store onewire sensors found in permanent variables. For all of the sensors read from permanent variables create a sensor and disable the sensor. As the sensors are detected enable them. This ensures that the temperatures will have the same name and location in the database and thus that sensor data reported against a single unique ID will always come from the same sensor. Improve reporting of sensors found and the associated IDs.

Add the concept of reporting a string of HEX digits to permanent paramters, this is used for onwire IDs.

Tickle the watchdog more places in initialization.

Use symbolic program name for access point SSID creation.

Code around missing TimeLib.h in older Arduino versions.

Report element storage time in microseconds rather than milliseconds.

Update printout of Version and copyright at startup.

Rework a number of printout services to have dump styles which return a String and print styles to emit a string.

Improve clarity of database version reporting.

Update pressure sensor initialization and humidity sensor initialization to always create the sensors and to disable the sensors if not present.

Decommit non-blocking flash services support.

Rework I2C console messages to improve clarity of the printout showing what is an I2C address.

Rework use of setTime to report time differences and use proper units as arguments to prevent compile time errors.

20170105 Not logged in

Released as 1(4)-43

Add onewire historical sensor setup to keep sensor ID and order in the face of sensor removal and addition.

Rename consoleioLoop to avoid a conflict with a new library.

20170104 Not logged in

Improved startup reporting. Improved version reporting. Improved onewire dumping. Improve formatting of network status output.

Fix Onewire temperature error reporting to properly emit ILLEGAL_TEMPERATURE value and to properly hide any data reports with that value.

Handle onewire temperature reads in sequence by creating onewireservicesLoop(). Manage type S parts and non-type S parts better and with less special code.

Create a generic mechanism to preread sensors that require long setup times N seconds before a sample is logged.

Tickle the watchdog more places during startup. Add yield() calls in places to allow better networking behavior.

Improve EEPROM writing to avoid writes that do not change the value.

Increase allowed command lengths in console I/O.

Added DLVR support including PRESSURE command. (Device reading is not working.)

Rework I2C conversions to run in the background.

When saving a parameter to the EEPROM skip the write if the value is unchanged.

Update format of I2C address output to include leading 0s.

Pervasive change to string constants to use the F() mechanism and reduce the dynamic memory used for strings by 25K bytes.

20170101 Not logged in

Add time measurement to the STATUS command.

Perform better WiFi initialization to make power cycles more reliable.

Review all ??? comments. Trigger time update from the web on button press.

20161230 Not logged in

Limit output to a single sensor works. Sensors all will configure to the same place in the 128 byte block. Improve interval totals.

20161224 Not logged in

Major restructure of sensor creation and reporting. Trying to reinit sensors with the same uniqueIDs and failing.

20161220 Not logged in

Number of sensors increased. Number of pulse counters increased. Output order on web page changed to newest first.

20161219 Not logged in

Humidity sensor works.

20161205 Not logged in

ADC pin sensing works. Latches do not.

20161129 Not logged in

Update ADC input. Partly working.

20161116 Not logged in

Rework release and build mechanisms.

Update ONEWIRE command to read all devices present.

Fix reading method of PIN command to properly get the port address. Still crashes if used.

20161113 Not logged in

Addition of NETWORK command to display network status on the console.

20160328 Not logged in

Addition of security model. Addition of DOXYGEN documentation.

20160323 Not logged in

XML file creation.

20160322 Not logged in

Manual time setting on a web page.

20160320 Not logged in

Pulse counting removed from processor and moved to TCA9539 sensor module.

20160315 Not logged in

Major rework for common code with ESPcamera.

20160311 Not logged in

Chip select for SD card was on GPIO 15, when the small PJRC adapter is used this causes a problem when booting, the device boot to the boot loader all the time. This control has been moved to GPIO 16 to avoid this issue.

20160311 Not logged in

TCA9539 I/O Control from web page is complete.

Update formatting of Sensor output. Update naming of some controls.

20160309 Not logged in

Rework Sensor configuration to work a bit at a time. Configure individual processor pins and individual pins of the TCA9539. Interval counting is disabled.

Integration of TCA9539 works for input and output. Output controlled only from console commands. Input integrated with web pages.

20160307 Not logged in

Mode reporting updated. Format of samples repaired.

20160226 Not logged in

I2C reading and identify is working. Not yet doing anything with the I2C parts. Currently recognize an I/O expander and a Pressure sensor.

20160224 Not logged in

Accept manual time setting as OK for database use.

20160223 Not logged in

Better logic at startup for AP mode choices. Better error reporting for network issues. Stay in AP startup mode if we don't know what network to join.

20160222a Not logged in

Added a restriction of data types for display.

20160222 Not logged in

Issues with adding Frequency1 were an alignment fault trying to read a 4 byte value on a 2 byte boundary. These issues are now resolved.

20160221 Not logged in

Pulse counting back on. I2C off. Frequency1 off. Frequency2 on. Graphing improvements.

20160215a Not logged in

Rework to use new log format which supports dynamic variable creation. Lots of formatting changes. Rework I/O to use the virtual print class to enable better sharing.

20160215 Not logged in

Added OneWire support. Added automatic configuration. Added new element format, dumps and associated support but not yet using it for logging. Added sensors page that lists sensors detected. Added IP address to network page.

Logger by Dragonnorth Group (Michael Newman). Send comments and corrections to:
Webmaster: mnewman@dragonnorth.com