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
MudPiclass to centrally store data for all components - MudPi is now a python package and runs like standard pacakge
- Configurations
- Added
Configclass 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
redisadapter for redis support - Added
mqttadapter 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_extensionsfolder
- State
- State is now handled by an internal state manager
- Now stored with better data such as timestamps
- State is backed up in
redisand restored on restart
- Actions
- Made actions available for all components for better control
- Actions can be called via triggers or events
- Added
actionextension for to allow custom actions from configs - Components expose standard actions (i.e. toggle automatically adds 'turn_on' action)
- Sensors
- Added
sensorextension for existing sensor logic - Migrated old sensors into new components
- Split sensors into more appropriate groupings
- Added Support for
redissensor - Added support for
mqttsensor - Sensors have a
force_updateaction to trigger immediate updates.
- Added
- Controls
- Added
controlextension for existing control logic - Migrated over old controls to new components
- Added
- Camera
- Added
cameraextension 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
rtspextension with camera for RTSP IP camera support - Camera exposes
capture_imageandcapture_recodingactions - Added options for controlling
filenamethat is saved - Added options to put camera in image or recording mode
- Added options for better image control (size, quality etc)
- Added
- Triggers
- Added
triggerextension 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
typeandformat - Add
before,afterandbetweentrigger types for datetime comparisons - Add
suntriggers that check time against sun data
- Added
- Automation Sequences
- Added
sequenceextension 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
relaysintotogglesfor more accurate representation - Added
toggleextension for existing relay logic - Migrated over old relays into the new toggle components
- Added option to
invert_stateon a toggle for reversed toggles - Added options
max_durationas failsafe to cutoff long running toggles - Toggle exposes
turn_on,turn_off, andtoggleactions
- Renamed
- Socket
- Added
socketextension 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
nanpyextension 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
displayextension for existing displays - Migrated over displays to new components
- Added more configuration options
- Updated display loop for faster response
- Added
message_limitto 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
waitmethod 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
triggerevents
- 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
sensoris 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
sequencesto 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
durationis set then you must pass this event to toggle next step
-
- Steps have an optional
delaybefore triggering actions - Emits event on start and end of sequence
-
SequenceStarted,SequenceEnded
-
- Emits event on each step of sequence
-
SequenceStepStarted,SequenceStepEnded
-
- Relay Refactoring
- The
topicis no longer required. This will default tomudpi/relays/[relay_key] - An exception is thrown if no
keyif found in config - A
namewill be generated from akeyif one is not provided
- The
- Sensors
-
keyis now be required - A
namewill be generated from akeyif one is not provided
-
- Controls
-
keyis now be required - A
namewill be generated from akeyif 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
Cameracan now reset image counter when aTimelapseevent 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
controltrigger type - Added
sensortrigger type - Added
timetrigger type - Created trigger worker to manage triggers
- Added Actions feature
- Added support for
eventactions - Added support for
commandactions - Added
nested_sourcefor sensor triggers