Releases: mudpi/mudpi-core
Version v0.10.0
v0.10.0
This is the largest update to MudPi since the project started. Every system has been refactored and better incorporated into a more cohesive system. Many items have been organized in a new extension system to keep updates more manageable with a growing number of additions (from multiple contributors). In this update I really took a long time to think about a foundation for MudPi to sit on going forward. This would then lend to a more stable core without the need for as many breaking changes. Much of the old main file has have been refactored into core systems. With this update providing a more solid framework I can continue to work on more supporting resources and content. Previously with each major breaking change it would require time consuming revisions across multiple areas. I am excited for these changes and what it enables me to work on next. The documentation has already been updated to reflect this version.
- Complete refactor of all systems
- Created a
MudPi
class to centrally store data for all components - MudPi is now a python package and runs like standard pacakge
- Configurations
- Added
Config
class to handle configurations - Added YAML support
- Allowed any filename for configurations
- Added ability to convert JSON to YAML configs
- Added feature to create default config
- Added
- Events
- Overhauled the event system to a event manager
- Consolidated events across the system to better groupings
- Added adapters for event system to run on.
- Added
redis
adapter for redis support - Added
mqtt
adapter for mqtt support
- Added
- Core events can now run on multiple channels at once
- Changed events to be more uniform in format
- Extensions
- Added an extension system to dynamically load systems with components
- Converted all existing components into appropriate extensions
- Extensions dynamically load based on config files and install requirements as needed
- Custom extensions can load from
custom_extensions
folder
- State
- State is now handled by an internal state manager
- Now stored with better data such as timestamps
- State is backed up in
redis
and restored on restart
- Actions
- Made actions available for all components for better control
- Actions can be called via triggers or events
- Added
action
extension for to allow custom actions from configs - Components expose standard actions (i.e. toggle automatically adds 'turn_on' action)
- Sensors
- Added
sensor
extension for existing sensor logic - Migrated old sensors into new components
- Split sensors into more appropriate groupings
- Added Support for
redis
sensor - Added support for
mqtt
sensor - Sensors have a
force_update
action to trigger immediate updates.
- Added
- Controls
- Added
control
extension for existing control logic - Migrated over old controls to new components
- Added
- Camera
- Added
camera
extension for existing camera logic - Migrated over old camera to new components
- Added feature to save video recordings
- Added option to name files by date or sequentially
- Fix picamera blocks during updates
- Added
rtsp
extension with camera for RTSP IP camera support - Camera exposes
capture_image
andcapture_recoding
actions - Added options for controlling
filename
that is saved - Added options to put camera in image or recording mode
- Added options for better image control (size, quality etc)
- Added
- Triggers
- Added
trigger
extension for existing trigger logic - Migrated over old triggers into new components and interfaces
- Updated trigger groups to be an actual trigger class
- Triggers can now be solo and part of a group
- Triggers can be part of multiple groups
- Triggers now just call
actions
- Updated threshold checks for better error handling
- Thresholds now allow formatting and type casting through
type
andformat
- Add
before
,after
andbetween
trigger types for datetime comparisons - Add
sun
triggers that check time against sun data
- Added
- Automation Sequences
- Added
sequence
extension for existing sequence logic - Migrated over old sequence to new components
- Added actions for interaction instead of manually linking them to triggers
- Updated threshold checks for better error handling
- Addded option to skip a step
- Added
- Toggles
- Renamed
relays
intotoggles
for more accurate representation - Added
toggle
extension for existing relay logic - Migrated over old relays into the new toggle components
- Added option to
invert_state
on a toggle for reversed toggles - Added options
max_duration
as failsafe to cutoff long running toggles - Toggle exposes
turn_on
,turn_off
, andtoggle
actions
- Renamed
- Socket
- Added
socket
extension for the existing socket server - Migrated over the old socker server to new components
- Allow more than one socket server to be created (still 1 per port)
- Allow events to be relayed through socket server to event system
- Added
- Nodes
- Added
nanpy
extension for the existing node logic - Migrted over node controls and sensors to new components
- Created a central connection for nodes to try and reduce broken connections
- Added support for lcd displays to nodes
- Updated connection logic for nodes for better operations
- Added
- Displays
- Added
display
extension for existing displays - Migrated over displays to new components
- Added more configuration options
- Updated display loop for faster response
- Added
message_limit
to prevent clogged display queues - Added way to send message to front of queue
- Added
- Logger
- added a
log_formatted()
function for better formatting in output.
- added a
- Worker
- Worker now is just one general class, removed need for others
- Optimize workers to use new
wait
method for faster responses
- MQTT
- Added support for MQTT
- Added adapter to use MQTT for the core event bus
- Added credentials for MQTT broker connection
- NFC Tags
- Added support for NFC tags and readers
- Allow NFC tag data as
sensor
- Added support for writing to NFC tags
- Added security options for NFC tags
- NFC tags can
trigger
events
- Sun
- Added support for a sun api
- Gather sunset, sunrise data based on a location
- Trigger actions based on sun times
- Timer
- Added a timer for elapsed timed functions
- Timer can be stopped, started, reset, paused, and restarted
- Timer triggers fire an action after set
duration
- Timer
sensor
is used to track timer data
- Plus tons of other items I forgot to note (docs are updated though)
Version v0.9.1
- Add way to trigger dynamic variables in messages to display
- snippet replacement to redis key lookup
- Provide a redis [key] between square brackets and it will be replaced with value
- Add automation
sequences
to perform actions with delays between- Each step in sequence can have thresholds of its own
- Can skip to next step using event
-
SequenceNextStep
,SequencePreviousStep
- If no
duration
is set then you must pass this event to toggle next step
-
- Steps have an optional
delay
before triggering actions - Emits event on start and end of sequence
-
SequenceStarted
,SequenceEnded
-
- Emits event on each step of sequence
-
SequenceStepStarted
,SequenceStepEnded
-
- Relay Refactoring
- The
topic
is no longer required. This will default tomudpi/relays/[relay_key]
- An exception is thrown if no
key
if found in config - A
name
will be generated from akey
if one is not provided
- The
- Sensors
-
key
is now be required - A
name
will be generated from akey
if one is not provided
-
- Controls
-
key
is now be required - A
name
will be generated from akey
if one is not provided
-
- Merge in Peerys Logger PR#12
- Increase debug logging capabilities
- Update sequences to use new logger
Version v0.9.0
v0.9.0
- Refactored Redis Connection to Allow Remotes
- Refactored Workers to Accept Single Redis Instance
- Refactored Workers
- Refactored Init Process
- Cleaned up old features
- Added Better Checks for Null Configs
- Move Workers Into Appropriate Folders
- Better logging
- Cleaned up folder structure
- Cleaned up Float Sensor
- Revamped Light Sensor to Work with Complete Modules
- Added better config defaults for DHT sensor
- Added Relays to Nodes
- Added an ArduinoRelayWorker to handle node relays
v.8.14
- Added LCD Worker
- Added Support for I2C LCD
-- 20x4
-- 16x2
-- 16x2 RGB
-- PCF Driver
-- MCP Driver
-- Added Message Queue for Displays
v8.13
- Added I2C Worker
- Added Support for BME680
Version v0.8.11
- Imported the missing switch controls in the worker.
- Updated display on sensor count to be correct
Version v0.8.10
Better error tracing for debugging
Bug fixes to the node workers.
- Added better support for empty configs
- Fixed an error with MCP worker
Version v0.8.9
Bug fixes on the camera worker for better operations and more responsive feedback
Version v0.8.8
- Added a camera listener to listen for commands while running
Camera
can now reset image counter when aTimelapse
event is emitted
Version v0.8.7
Fixed some issues in the configs when certain values were strings that needed to be integers by checking and casting these values.
Version v0.8.6
- Triggers can now be defined in a group
- Trigger groups require all triggers active to execute actions
- Updated triggers to work with groups without changing single trigger functions
Version v0.8.5
- Added Triggers feature
- Added
control
trigger type - Added
sensor
trigger type - Added
time
trigger type - Created trigger worker to manage triggers
- Added Actions feature
- Added support for
event
actions - Added support for
command
actions - Added
nested_source
for sensor triggers