Logo   Software Revisions

Published Source License
Screen Shots
SD Card Issues
Updating Firmware

Reference Information
Airflow Setup
Development Environment
I2C Addresses
Module Switches Setup
Processor Module Pinning
WattNode Modbus Adapter

Development History
Project Status
Software Revisions

PJRC hardware
ESP8266 Information


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.8.3 Yes Adafruit Busio (1.8.2 was used up to 1(104)) (1.7.3 was used up to 1(102)), (1.7.2 was used up to 1(88)).
1.2.12 Yes DS3232RTC
1.5.9 Yes ILI9342, (likely not used for LOGGER)
2.3.5 Yes OneWire
1.2.4 Yes SD
1.3.3 Yes SparkFun Micro OLED Breakout
2.0.9 Yes SparkFun BME280
2.0.1 Yes SparkFun CCS811
1.0.2 Yes SparkFun VCNL4040
1.1.4 Yes SparkFun VEML6075
1.2.9 Yes SparkFun VL53L1X
1.2.6 Yes Servo (not used for LOGGER)
1.0.2 Yes SpacebrewYun (not used for LOGGER)
1.6.1 Yes Time (1.6.0 was used up to 1(102)

LOGGER Firmware Source Control and Release History

RevisionSizeZIP fileChanges
NextRelease Not logged in

Pending changes follow.

20220422 Not logged in

Add parameter to determine if processor pins are used for I/O or for SCL and SDA of the I2C bus. I2C devices now report by counting if they are in use. The MS8607 must decide if the pins are used for I/O because there is one on the processor module. Otherwise if an I2C device is present I2C is used an I/O pins are disabled.

Pin counting is now performed with interrupts off as an interlock.

Improve warning when SensorTypeID_t does not fit in one byte.

Properly report VCNL404 messages (were reporting as BME280).

Do not try and start ranging when the VL53L1X is not present.

Reorder menu items into alphabetical order.

20211112 Not logged in

Fix problems showing BME280 sensors that are not present.

Fix help for GAS command.

Add distance report for VL53L1X, add SDdistance datatype. Add this device to data reporting.

Add SDuvIndex datatype for UV index. Disable some code for the obsolete VEML6075. Complete and disable the output and database entries for this device.

Correct the output of the SDpresence datatype so all format types work.

Comment correction for ESP32 platform differences.

Add a distance page and a UV index page.

20211029 Not logged in

Add 'Object Present' sensor using previously implemented VCNL4040 code for proximity, add SDpresence datatype and PROXIMITY_THRESHOLD parameter for it. 'Object Present' is now in data history, associated graphs etc. New menu link and associated HTML page name added also.

Update presentation for missing slave ID detection.

20211019 Not logged in

Update comments in .H files for BME280 and CCS811 to reflect that they now log values.

Update comments in LOGGER.INO to reflect that OSAPI.H, TWI.h and user_interface.h are properly left out. The commented out lines will eventually be removed.

In LOGGERWIFI.H note that using WiFi.h does not work for the ESP8266 platform.

Add VCNL4040 and VL5311 reads to performSensorReading.

Update comments in SparkFunCCS811.cpp to discuss what is added.

Add code to support VCNL4040 using SparkFun Libraries. Support for creating the sensor and logging values is not added yet.

Add empty service routine to read VL53L1X values. The sensor is not created yet and real values are not read.

20210927 Not logged in

Added Sparkfun VEML library 1.1.4.

Adafruit GFX Library was 1.10.10 now 1.10.12.

Database expanded to 256 bytes per sample, version 4. Old version 3 still supported if it is found on an SD card. Some support for version 2. The new version will be created when a database is created. Configuration header size increased to match element size. A performance issue noted in the code no loger seems to occur. Expansion of header and sensors is conditional on database version. Report database version. Report that a check is needed for too many pulse counters in new database versions that might expand the number.

When a database file does not have a complete sample at the end treat it as a read error.

Number of sensors expanded to 128.

BME280 temperature/pressure/humidity added to database. SparkFun library used to read values instead of private code. Add SensorBME280 device.

CCS811 CO2 and tVOC added to database. SparkFun ibrary used to read values. Add SensorCCS811 device.

MQTT publishes that the LOGGER is listening for commands.

MQtt publish both a complete message as before and a latest value message.

MS8607 atmospheric pressure is never negative. Same for humidity.

Turn debugging off in parsing.cpp.

Note that processor voltage might be better as unsigned, but do not change it.

Add datatypes for CO2 and tVOC.

Report space available for additional sensors.

Fix off by one bugs comparing sensorID to MAX_SENSORS.

While dumping an element only do a loggerFastYield between sensors. This caused a stack dump.

Make several devices quiet when debugMessageLevel is low and the device is not found. Disabled when debugging is on in the module.

Note that the VEML6075 is obsolete and should not be added to the database. Use the SparkFun library to read the values. There are conflicts between direct register reads and using the library, notes added.

Add menu items and web pages for gasses (CO2) and volatile compounds (tVOC). Alphabetize sensor list in the menu.

20210905 Not logged in

CCS811 library debugged on LOGGER, ESP32 Dev Module and SparkFun ESP32 Thing platforms. Lots of issues resloved. Notes in the SparkFunCCS811.cpp module.

SparkFun libraries distributed to SparkFun.

20210913 Not logged in

SparkFun modules posted to Github site.

Print more limited CCS811 data on reads for verification.

Improve DEBUG_LEVEL conditions on CCS811.

Mark CCS811 as missing each time ccs811Init is called. Report more registers.

Report the platform in the STATUS command.

Add flash services dump to DATABASE command.

Handle ESP32 vs ESP8266 platform differences in file system calls. Filenames must start with path on ESP32. FILE_APPEND is missing on ESP8266. Establish pins that work for SD card support on the ESP32. The OLD_FLASH_SS_PIN is not used on the ESP32. Directory listing is supported on ESP32.

Correct report of sample older than the start of the database error.

Resolve platform differences related to the Wire interface.

Rename platform detecting conditionals to use longer ARDUINO_xxx names.

Repair calculation of temperature and humidity for the MS8607.

Update pin initialization table to accomodate ESP32 pin usage.

20210902 Not logged in

Library update to Adafruit Busio 1.9.1 was 1.9.0

ESP8266 board update to 3.0.2 FAILS still using 2.7.4. The HTTPupdate interface is deprecated and removed. Need to figure out how to replace it.

Major rework to SparkFun CCS811 libraries. Handle error cases and required delays. Add dump services in the LOGGER code that expose the issues and report problems.

Change style of I2C register setting to better support arbitrary devices allowing registers to be set and read.

Some updates to PIN command controls to allow for more ESP32 pins and better management of ON, OFF and input and pullup cases.

ESP32 conditionals added to support environment changes on that platform. Changes related to web server support, which pins are used for I2C. Updates to I2C reset methods.

I2C pin control changes to properly use pullups and never drive the pin high. High is achieved by changing the pin to an input. Add published busy test for hard coded I2C support.

More frequent watchdog feeds are required in startup and other places related to ESP32 platform.

Properly report illegal or absent temperatures on dumps.

Use library code for the BME280. Use library code for the CCS811 but the library needs major improvements so take a private copy.

In TCA9539 first determine if the I2C address is a BME280 and do not configure the TCA9539 if so.

Make #if (DEBUG_LEVEL > 0) the pervasive style of testing. Do not allow missing parens.

Make the update class name symbolic so a different name can be used on the ESP32 platform.

Add reporting of ESP32 libraries to the copyright notices.

20210820 Not logged in

ESP32 platform builds and loads. It comes up and talks to the serial port. It finds the network and gets an IP address. The web browser does not bring up pages. Most of the code is not tested. CCS811 is not found.

LED_BUILTIN is not available onthe ESP32. Set it to pin 34.

Wire.requestFrom expects slightly different data types on ESP32.

Rework iotuplink.cpp to handle include file names and arguments for ESP32.

Move watchdog services to a module and call them as subroutines so ESP32 platform differences can be handled in one place.

Rework reboot reason logic to handle ESP32 differences. Add a normalized hardware reason to help use common code.

Create loggerwifi.h as a central place for ESP32 WiFi include file differences.

Disable WiFi sleep code for ESP32. The services are not present.

Disabel deep sleep for ESP32.

Rework update.cpp to handle different ESP32 class names and include file names. Disable callbacks on ESP32 because they are not available.

Use hardware serial ports instead of software serial ports for Modbus interface. Likely a different serial port than 0 must be used.

Many changes to SD card output. The ESP8266 supported '.write' with String and pointer to char * arguments. The ESP32 does not. New routines to write to File objects are created and used pervasively. This needs more robut testting on files written to the SD card to save parameters, save Time status and many others. This occurs in files: emailalerts.cpp, flashservices.cpp, namehistory.cpp, parameters.cpp, timehistory.cpp, usersensornames.cpp

20210815 Not logged in

Library update to Adafruit Busio 1.8.3 was 1.8.2

Update libraries, likely code from these is not in use. RTClib may be used.
Adafruit LED Backpack Library was 1.1.9 now 1.1.10.
Adafruit SleepyDog Library was 1.4.0 now 1.5.0.
RTClib 1.14.1 was 1.13.0.
Add ESP32 board, version 1.0.6 is used.

Annotae changes needed for expanding the LogElement_t size. No changes made yet.

Centralize the inclusion of WiFi.h so board dependancies can be in one place.

Move use of WiFiClientSecure.h to inside the emailsender.cpp module which uses it instead of the .h file.

Deprecate the use of TWI.h, osapi.h and user_interface.h these no longer seem necessary.

Move inclusion of SoftwareSerial.h and HardwareSerial.h to the .CPP file of wattnodertu instead of the .H.

Added support (but not data storage) for VL53L1X, BME280 and CCS811.

Rework CHANGER to expand the LogElement_t size to 256 and to parse either the old or new format.

20210730 Not logged in

PROXIMITY and UV commands added to support VEML6075 optical UV light and VCNL4040 UV light, White light and Proximity sensors. These sensors are not yet added to the database and can only be accessed by their commands.

MS5637 barometric pressure is now supported by updating the MS8607 support. The new sensor is exactly the same without the humidity.

i2cWriteBlock is used by the new sensors. Long delay in that code appropriate for EEPROM writes is eliminated. Success is now reported.

Clearing I2C devices by pushing multiple clocks is improved. New devices do not assume that power cycles are available. Sparcfun connections do not support power cycling these devices.

sensorLibrary debug messages improved and then turned off.

Sleeping headers on the configuration page added.

Sketch uses 551589 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50652 bytes (61%) of dynamic memory, leaving 31268 bytes for local variables. Maximum is 81920 bytes.

20210718 Not logged in

Feature added to display Modbus SlaveID.

Modus version included.

Expose wattNodeMeter as a global.

Sketch uses 552665 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50700 bytes (61%) of dynamic memory, leaving 31220 bytes for local variables. Maximum is 81920 bytes. 31268 bytes for local variables. Maximum is 81920 bytes.

20210712 Not logged in

MQTT subscribes to messages correctly.

MQTT support.

Sketch uses 550961 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50708 bytes (61%) of dynamic memory, leaving 31212 bytes for local variables. Maximum is 81920 bytes.

20210709 Not logged in

Library update to Adafruit Busio 1.8.2. Library time update to 1.6.1

Basic integration with MQTT. Test code publishes a hello world message and recieves an inTopic message. No user interface or data services yet.

Sketch uses 548797 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50756 bytes (61%) of dynamic memory, leaving 31164 bytes for local variables. Maximum is 81920 bytes.

20210702 Not logged in

Modus version included.

Turn off dataservices debug code.

Increase KWH sensor count for modbus build.

Limit to Kwh sensor for Kwh pages.

Do not put Kwh sensors in the generic sensor list, causes confusion when the graphs do not work.

Repair names of energy registers.

Improve main menu naming.

Sketch uses 544637 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50352 bytes (61%) of dynamic memory, leaving 31568 bytes for local variables. Maximum is 81920 bytes.

20210701 Not logged in

Increase allowed jitter to 4.

Rework some Sensor library code for better code sharing.

Add some menu links to give direct access to Modbus setup and units settings.

Sketch uses 547069 bytes (57%) of program storage space. Maximum is 958448 bytes.
Global variables use 50360 bytes (61%) of dynamic memory, leaving 31560 bytes for local variables. Maximum is 81920 bytes.

20210618 Not logged in

Convert modbus floating point values to use decimal places of the wattnoderegisters.h table to convert floating point numbers to internal fixed point numbers that go into the database. Consider changing what is stored to store the floating point number in all cases where 4 bytes are used.

Add proper reporting of Meter type Kwh sensors as different from pulse count type Kwh sensors.

Better documentation of Modbus parallel tables of entries and the tables that control which registers are logged.

Add notes about the library bug related to 0 length messages invoked indirectly from i2cservicesReadFromSlave.

Rework the selector support to handle Meter and pulse count Kwh sensors.

Improve network status time reporting to include the time of the report in human form.

Improve time collection from the clock chip to report debug information includeing human readable time.

Use shared routines for some HEX and fixed point printouts.

Sketch uses 546973 bytes (57%) of program storage space. Maximum is 958448 bytes.
Global variables use 50360 bytes (61%) of dynamic memory, leaving 31560 bytes for local variables. Maximum is 81920 bytes.

20210608 Not logged in

Fix library bug for TWI loop count of 0.

Better handling of modbus kwh energy values. Pass them as floating point results. Store them as floating point for previous vs current cell of table and graph.

Reduce intervals loop to 16 per cycle instead of 32. The larger group took too long before letting other tasks go.

Sketch uses 546081 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50032 bytes (61%) of dynamic memory, leaving 31888 bytes for local variables. Maximum is 81920 bytes.

20210531 Not logged in

Modbus graphs work. More testing needed. Provide counting of Kwh sensors. Add menu item for Kwh meter senors as differentiated from pulse counters. Reduce number of modbus registers in standard build so they fit in the database block.

Enhance ELEMENT command to take a unix time.

Improve database and element dumps.

Sketch uses 544333 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50032 bytes (61%) of dynamic memory, leaving 31888 bytes for local variables. Maximum is 81920 bytes.

20210526 Not logged in

Add support for Modbus Kwh differences from one sample to the next, similar to pulse counting.

When ~DR interrupts occur at too high a rate postpone I/O card reads so the processing does not become overwhelmed.

Sketch uses 541137 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50040 bytes (61%) of dynamic memory, leaving 31880 bytes for local variables. Maximum is 81920 bytes.

20210524 Not logged in

Some updates to handling of unconfigured LAN.

Improved time update reporting.

Sketch uses 539909 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50032 bytes (61%) of dynamic memory, leaving 31888 bytes for local variables. Maximum is 81920 bytes.

20210521 Not logged in

Turn off debugging code in many places. Leave it on in networking. Make some places depend on debugMessageLevel that used to depend on DEBUG_LEVEL of high numbers.

Rework checks for LAN configuration. Turn off network report if no LAN is configured.

Add markers with ???? for places to add Modbus kwh support.

Sketch uses 539053 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50028 bytes (61%) of dynamic memory, leaving 31892 bytes for local variables. Maximum is 81920 bytes.
Global variables use 50036 bytes (61%) of dynamic memory, leaving 31884 bytes for local variables. Maximum is 81920 bytes.

20210516 Not logged in

IoT support output value setting from a server. Cooperates with web pages on the server to set output values on command. An example of the usage is the Ventus2 Charger Control system.

Elevate some debugging messages to debugMessageLevel 2 and above.

Fix bugs in network reconnect support. Improve debugging messages in that module.

Partial implementation of SDkwh. Goal is to have that data type work like pulse conting for Kwh.

Repair Boot time reports that sometimes had negative values. Simplify the code using millis() to determine the uptime.

Comments in time services.

Sketch uses 547609 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50036 bytes (61%) of dynamic memory, leaving 31884 bytes for local variables. Maximum is 81920 bytes.

20210510 Not logged in

Change handling of MS8607 to suppress display of missing sensors when modbus is present.

Report MAC address on web page.

Sketch uses 530796 bytes (50%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50004 bytes (61%) of dynamic memory, leaving 31916 bytes for local variables. Maximum is 81920 bytes.

20210509 Not logged in

First Modbus release

Updated modbus web page message.

Improve debug messaging for WattNode sensor.

Update report of SDseconds datatype. Frequency of modbus 1035 is floating point not integer output repaired.

Sketch uses 530796 bytes (50%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50004 bytes (61%) of dynamic memory, leaving 31916 bytes for local variables. Maximum is 81920 bytes.

20210421 Not logged in

Read Differential pressure prior to each web page display to make the sensor update faster for web page display.

Sketch uses 545265 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50024 bytes (61%) of dynamic memory, leaving 31896 bytes for local variables. Maximum is 81920 bytes.

20210418 Not logged in

DEBUG control of reading ADC one at a timve vs 8 at a time.

20210416a Not logged in

Allow writing of airflow permanent parameters.

Sketch uses 545061 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50024 bytes (61%) of dynamic memory, leaving 31896 bytes for local variables. Maximum is 81920 bytes.

20210416 Not logged in

Repair computation using area factor to get correct result. Allow proper input of area factor.

Move airflow parameter settings around to isolate them to the airflow sensor currently in use.

Add a (secret) method to erase all parameters: PARAMETER ERASE ALL.

Add CRLF to some error messages.

Increase sixe of decimalPlaces to allow for 4 digit fixed point fractions.

Sketch uses 545065 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50024 bytes (61%) of dynamic memory, leaving 31896 bytes for local variables. Maximum is 81920 bytes.

20210414 Not logged in

Complete airflow sensor support for HC210. Add range setting. Add a web page for Airflow setup. Add automatic refresh to airflow page.

Add Airflow Sensor zeroing for all differential pressure sensors.

Correct serial number printout at startup.

Parameter SET button on pages is now in same column as the field.

Convert to an array of Differential Pressure sensors allow the sensor type to be automatically identified.

Sketch uses 544665 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 50020 bytes (61%) of dynamic memory, leaving 31900 bytes for local variables. Maximum is 81920 bytes.

20210410 Not logged in

Allow console serial number setting.

Add Command to test Pressure sensor init.

Add DLVR_INIT command. Improve SERIAL command to allow setting serial number.

Rework many hex print routines to use serialHEXxxx style usage that saves space.

Complete support for Superior Sensor Technology sensor. Many I2C sensors can now be checked for at the same address. Only one can exist.

Sketch uses 543477 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49952 bytes (60%) of dynamic memory, leaving 31968 bytes for local variables. Maximum is 81920 bytes.

20210409 Not logged in

Airflow page automatically refreshes. Provide for dfferential pressure transducer zeroing. Remove special pressure datatypes.

Add Command to test Pressure sensor init.

Rework many hex print routines to use serialHEXxxx style usage that saves space.

Complete support for Superior Sensor Technology sensor. Many I2C sensors can now be checked for at the same address. Only one can exist.

Sketch uses 543477 bytes (52%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49952 bytes (60%) of dynamic memory, leaving 31968 bytes for local variables. Maximum is 81920 bytes.

20210407 Not logged in

Add Superior Technology sensor to DLVR module. Implementation of read is incomplete.

Update Airflow display to get proper decimal places.

Change names of DLVR routines to be non-vendor specific.

MAX11615 improve documentation and setup of device.

Move conversion of inches to FPM to be a service.

Sketch uses 542097 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49924 bytes (60%) of dynamic memory, leaving 31996 bytes for local variables. Maximum is 81920 bytes.

20210404 Not logged in

Add mimimalist airflow page in a new airflow.cpp module.

Change Millivolts from a ration of 1024 to a ratio of 1000, the conversion from counts in 1024 ratio is moved into the device reading code. Other voltage readers do not have the same ratio. COde to support datatype conversion is moved to one place.

More instrumentation in MS11615 code. There is a bug reading voltage on pins 1-7 not 0.

Guage vs differential DLVR parameter added.

Sketch uses 541292 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49868 bytes (60%) of dynamic memory, leaving 32052 bytes for local variables. Maximum is 81920 bytes.

20210328 Not logged in

Update libraries, like code from these is not in use. RTClib may be used.
Adafruit GFX Library was 1.10.6 now 1.10.7.

Some usage of printHEXnumber routines to save space. Create LN versions of them.

Allow pressure from DLVR to be 32 bits. Provide for multiple DLVR sensors at different addresses each sensor controls the number of decimal places and bits to store in the database. Split the sensor creation to allow for compatibility. Provide a pressure range configuration variable for DLVR sensors. Likely will need more than one, but this may become part of the sensor address configuration. Rework what prints in various debug modes. Compute pressure in 64 bits in anticipation of DHLR sensors which use 24 bit shifts.

Add units conversion for SDpressure types. FPM is calculated by formula from inches w.g.

Move Modbus sensor creation to processorSensors. Still needs to have conflict resolution dealt with.

More debug output control in Modbus code.

Add retries to MS8607 calibration reading. This is likely not necessary the CRC errors that motivated it were caused by having two sensors attached at once. Improve debug reporting.

Split settings page moving pulse counter rations to a new page.

Improve button action list to save appropriate variables to permanent memory. Use variable setting feature in several places in the list.

Sketch uses 539676 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49788 bytes (60%) of dynamic memory, leaving 32132 bytes for local variables. Maximum is 81920 bytes.

20210327 Not logged in

Change DLVR initialization to support seperate invocations for each address. Add a second invocation. Change datatype name to not mention the I2C address.

The library core_esp8266_si2c.cpp lost the patch for 0 length Twi::readFrom call. Updated in the library.

Better control of modbus debug messages.

Fix finding ADC when modbus code is present. Better I2C init is required.

Remove M2X from menu. Support for the page remains.

20210325 Not logged in

Isolate DLVR debugging code to DEBUG_LEVEL conditionals and adjust which messages print with varying debugMessageLevel.

Perform a power cycle at DLVR startup. On Rev 3 hardware startup worked. On Rev 4 hardware the device was not found without the reset that happens in the I/O power ON cycle.

Disable IOT uplink when the time is set to 0. Add a message to the web page to indicate this.

Record the start time for I/O power on.

Change pressure units description to inH2O.

20210324 Not logged in

A number of string copies from PRGMEM storage were broken. These were in the area of parameter storage and recovery. Web pages associated with these parameter settings would hang due to a processor crash when the parameter was set. The FPSTR construct was missing in many of these places.

Logging of WattNode/Modbus registers is now defined by a separate table from the table that defines the register usage.

Reporting of unused Modbus methods is now only at hiher DEBUG_LEVEL settings.

Reading sequences of Modbus registers now does retries on failures or errors.

Handling readback of Modbus write operations is improved or created.

Handling of Modbus replies is centralized and cleaned up.

Database overflow is reported if too many sensors are created. Summary of database space is improved.

Code space is saved when DEBUG_LEVEL is 0 in the parameters module.

MODBUS_EXCLUSIVE is turned off. New information is emitted with the version number if it is on. When this is on many sensors are not put in the database creating more space for modbus registers. Turning it on saves code space for those sensor creations.

Sensor dumping no longer puts out two copies of the units.

Units are now available in two forms, the abbreviation used when a number is output and the name associated with a description or column heading.

A modbus address of 0xff is present when parameter memory is not initialized. This is now treated as Modbus devices not being present.

Several new unit types are created associated with modbus register reporting.

The voltage units were split into DC volts typically from an ADC and AC units typically from WattNode Modbus devices. A new web page is created for presenting AC voltages.

A combined printout of a number with leading space is created. This can occasionally save space.

Format for web emissions printed extra stuff because of missing break; statements.

A combined printout of number and hex number is created and used in a number of places to save space.

Several strings as arguments to printouts were missing the F() construct to force those strings to program space.

Samples newer than the database were incorrectly reported.

Database catchup reported long code delays when it should have allowed them.

Some delays were too short and when debug code was turned on reported loop too long messages.

Names used for too long a time in service loops were changed to show they are calls from the main loop.

Sketch uses 535396 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49672 bytes (60%) of dynamic memory, leaving 32248 bytes for local variables. Maximum is 81920 bytes.

20210322 Not logged in

This is version 1(84).

Added AC volts units. There be issues with DC volt presentations. Needs investigation.

Added MODBUS_EXCLUSIVE switch that configures the sensors to not create I2C sensors saving room in 128 bytes for more Modbus sensors. Still not room for all. This also saves code space.

Sketch uses 521832 bytes (49%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49628 bytes (60%) of dynamic memory, leaving 32292 bytes for local variables. Maximum is 81920 bytes.

20210320 Not logged in

Complete logging of Modbus registers. Only a limited number are possible due to space restrictions competing with other registers. I/O expander logging could be disabled to expand the number of modbus registers.

Report space required for all dynamic modbus registers.

Sketch uses 535580 bytes (51%) of program storage space. Maximum is 1044464 bytes.
Global variables use 49664 bytes (60%) of dynamic memory, leaving 32256 bytes for local variables. Maximum is 81920 bytes.

20210318 Not logged in

Improve Modbus instructions.

Consolidate function naming code saving space.

Rename some subroutines for clarity on their purpose.

Report unexpected functions for the WattNode meter.

Handle Write responses only as packets are received. Eliminate packet processing for those packets.

Add sleep support to Modbus code.

20210317 Not logged in

Fix problems setting values. Add hex input.

Fix issues with modbux reads. Resolve some interference issues. Add refresh button to modbus pages. Update instructions.

20210316 Not logged in

Add retries to sequenced Modbus reads.

20210314 Not logged in

Modbus integrated with base logger. Some issues remain with modbus and I2C interference. Modbus test implementation is no longer in use and the code is out of date.

20210309 Not logged in

No changes to base logger. Modbus test implementation now included. Completed service routines adding CRC check on returned packet from meter.

20210301 Not logged in

Update libraries, likely code from these is not in use. RTClib may be used.
Adafruit GFX Library was 1.10.2 now 1.10.6.
Adafruit GPS was 1.5.2 now 1.5.4.
Adafruit LET Backpack 1.1.9 (1.1.8 was used up to 1(88)).
Adafruit SleepyDog Library was 1.3.2 now 1.4.0.
Adafruit STMPE610 was 1.1.2 now 1.1.3.
Adafruit TouchScreen was 1.1.0 now 1.1.1.
RTClib 1.13.0 (was 1.12.0 then 1.12.5 up to 1(88)).

20210227 Not logged in

Improvements to time chip handling, mostly associated with debug reporting enabled at DEBUG 1. When to update system clock and when to update time chip is improved. Reports now show how much drift has occured.

Copyright and version updates.

20210223 Not logged in

Fix error in onewire debug dump code.

Improvements to MS8607 debug code. Add retries for failed conversion starts. New modules seem to require this.

Improvements to sensor reporting for IoT uplink. Sensors can now be properly created in the loghistory.php service.

Improvements to sensor counts and space reporting.

Loaded this version in all new modules from Network PCB.

20210104 Not logged in

First backup since the conversion to the Unix based DRAGONNORTHserver.

Improvements to IoT uplink code. Turn on Debugging. Turn off link simulation. Better handling of desired output for pins. Might be working. Emit URL for debugging purposes when an uplink is done. Improvements and bug fixes in loghistory.php.

Improvements to sensor reporting for IoT uplink. Sensors can now be properly created in the loghistory.php service.

Error checking improvements in TCA9539 handling.

Repairs to Onewire handling of long delays. Bug fixes in timeout handling. Prevents improper handling of onewire devices when it takes too long. Onewire system now gets notified to handle the problem properly.

20201017 Not logged in

Uplink of native LOGGER sensors on the loggeriotsetup page now works. The sensor is uplinked with a bogus sequence number of the unix time stamp for the sample time. Interactions to get historic sensor values filled in remain.

20201016 Not logged in

Complete iotuplink controls for I/O pins. The stubs mentioned in the 20200927 submission are resolved. Parsing $DESIRED-OUTPUT <name> <value> in a page read by the LOGGER tells the system to set the desired value of an I/O pin. The pin is not changed to an output by this that must be done by controlling the pin on the web pages. $END-STATUS tells the LOGGER that all commands are complete. The LOGGER IoT page Test IO Setting button causes a page read. The page may contain commands. Reporting sensor status will read pages as confirmation and will see these commands. This confirmation is not completely implemented yet.

Add a requirement to type DESTROY in a new field when initializing the database.

Update database creation to require a safe (NTP) time when creating a new database. Improve errors associated with this.

Add additional test button to IOT control page. Test is to trigger pin output state updates. This is a test mechanism only which tests the connectivity of the control mechanisms to the page read from the server.

Add code to handle desired output pin states. This is supported only by stubs and not connected to the real outputs yet.

Parse two arguments from $keyword lines in IOT response.

20200908 Not logged in

Upgrade to Arduino 1.8.13.

Rework reboot for wraparound. Noticed a bug after a month of operation. Did not check if the bug was still present, that is hard to do. Force a reboot now if current millis is greater than 2**31.

20200728 Not logged in

LOGHISTORY.PHP CreateDatabase action works. AddSample action works. CreateNode action is NIY and should be updated to create sensors and associated datatypes on the node. CreateSensor action is NIY. Trivial display of history works.

20200728 Not logged in

Added LOGHISTORY.PHP to the web page. This creates and displays entries in a simple database in the cloud. Eventually code will be added to the LOGGER to create entries and display them much as M2X did. Nothing on the LOGGER side yet and the tables are primative. Nodes and sensor creation forms exist and do nothing. A few table entries are displayed. A few samples are displayed. Mostly created so code will be backed up.

20200809 Not logged in

Added a LOGGER IoT server page that mirrors the M2X page. Not all fields are available yet. Both pages are operational. Instructions in the M2X page are updated to reflect that AT&T has discontinued M2X support.

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.

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

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.

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.

20170514 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.

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.

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 pages copyright 2016-2022 by Dragonnorth Group (Michael Newman).
Send comments and corrections to:
Webmaster: mnewman@dragonnorth.com