All notable changes the imagenode project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Improving documentation content, layout, arrangement and flow.
- Developing a "large image buffer" using the new Python 3.8 SharedMemory
class. The idea: have the camera capture main thread put images in a very
large (up to available memory; could be 3GB on RPi 4 models). Allow sending
of images in a separate
multiprocessing
process that empties the buffer by sending images via imageZMQ. The advantage over the existingsend_threading
option would be using a 2nd process (and a different RPi core) rather than a 2nd thread running on the same core to send images. - Adding the ability to capture images from stored image files as a substitute for capturing images from a camera. Will allow testing and tuning of options from real world images gathered by imagenodes scattered around the farm. The existing stored image library is large and could potentially be used for adding machine learning capability to the RPi imagenodes.
- Added a
REP_watcher
yaml option which tests for REP-sent-but-no-timely-REQ received. This eliminated the need forsignal.SIGALRM
, which does not work in Python threads, such as when thesend_threading
yaml option is used. The newREP_watcher
option defaults toTrue
. - Added the sending of a startup event message that is sent each time the imagenode is restarted.
- Added code and docs to support DHT11 & DHT22 temperature / humidity sensors (Thanks to @sbkirby.)
- Added yaml options, code and docs for the full range of PiCamera settings (Thanks to @sbkirby.)
- Added a
receive_test.py
program to enable FPS timed testing of different SendQueue alternatives. Made thereceive_test.py
Windows friendly by eliminating dependence on Linux signal SIGALRM.
- Made the detect_motion method work with both OpenCV v3.x and v4.x
findContours()
method. This method returns tuples of 2 or 3 values depending on the openCV version. The imagenode detect_motion method now works correctly with both OpenCV versions.
- Added
send_threading
option to allow image sending to hub to happen in a separate thread. When this option is specified in the yaml settings file, camera capture and detection take place in the main thread and sending images via imageZMQ happens in a separate thread. - Reorganized previous docs/release-history.rst into this more standardized HISTORY.md file.
- Updated Research and Development Roadmap.
- Fixed broken cv2.findCountours() when upgrading to OpenCV 4.x
- Multiple fixes to all documentation files.
- Added
stall_watcher
option and functionality to monitor whether main imagenode process has "stalled". End program if stall detected. Uses systemd service unit to restart after exit. Added theimagenode.service
example systemd service unit file to main repository directory. - Added Release and Version History.
- Added Research and Development Roadmap.
- Multiple fixes to all documentation files.
- Added
exposure_mode
option to allow choosing PiCamera exposure_mode. Very helpful with Infrared PiCamera "Noir" and infrared lights.
- Conditionally import GPIO only if needed. Fixes import error when GPIO pins not used, or when running NOT on a Raspberry Pi.
- Fixed a number of documentation broken links and formatting errors.
- Multiple fixes to all documentation files.
- Restructured test files & testing documentation to make them consistent.
- First commit to GitHub
- Major refactoring after 13 months of testing previous version.
- Includes motion detector, light detector, temperature sensor, LED light control via GPIO pins.
- First early prototype of
imagenode
running on 2 RPi's with 1 imagehub.