Below is a high level roadmap of features / design goals I want to complete on MudPi.
- Raspberry Pi Teperature Sensor
- Raspberry Pi Float Sensor
- Raspberry Pi LCD Screen
- Pump Support for Raspberry Pi using Relay
- Use Redis to Store Values / State
- Load system from a Config File
- Dynamically Load Sensors
- Create Main Process and use Multi-Threading
- Communicate to Arduino
- Create Arduino Sensor Support
- Arduino Soil Sensor
- Arduino Float Sensor
- Arduino Temperature / Moisture Sensor
- Arduino Onewire
- Implement event system and using Redis Pub/Sub
- Add camera support for raspberry pi cam
- Refactor Workers to better handle events
- Refactor Pump into more Configurable Dynamic Relays
- Fix temp sensor fot DHT11 and DHT22 [Bug]
- Fix relay not listening to
Switch
event with a value of0
[Bug]
- Add "model" to sensor
Humidity
type config - Need to Install
Adafruit_DHT
- Create Arduino Wireless Sensor Node
- Wifi
-
Add Controls
- Buttons
- Momentary
- Latching ( Switch?)
- Switches
- Potentiometer
- Joystick (Its 2 pots and a button)
- Buttons
-
Add Light intensity sensor
-
Add support for relays on arduino slaves
-
Add controls for solenoids
-
Refactor config file
- Change key names to match syntax across the file
- Allow more configuration options
- Allow workers to be configured
- Allow channels to be configured
-
Add support for buttons
-
Add Actions
-
Add Triggers
-
Remove old LCD screen worker
-
I2C Support?
- Sensors
- BME680
- Screens
- 20x4
- 16x2
- Sensors
-
Catch for No Server Configs
-
Check for KeyErrors in the Configs
-
Allow more empty items in config as default
-
Fix Sensor count on
pi sensor worker
print statement -
Make print statements depend on debug mode better
-
Fix import of
SwitchControl
to make switches work onpi_control_worker
-
Investigate
DHT22
sensor types -
Add ability to configure redis connection in
variables.py
-
Update nanpy to support Software serial HC12 including channels
- Not as reliable as wifi
-
Install Script to install all dependencies
-
Add Batteries and Solar Charging
- Allow readings of charge level and battery percent
-
Allow linked sensors and relays (like float sensor to turn off relay - pump)
-
Allow soil readings on solar nodes
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 action
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
- Updated Socket
Server
to Allow Incoming Data- Make the socket server relay events
- Displays on Nodes
- Optimize workers to use new
wait
method for faster responses- See how its used in
sequence_worker.py
-ERIC NOTE
- See how its used in
- Relay Failsafe Durations
- Allow
Display
messages to be added to front of the queue - Build
StateMachine
that stores state of everything - Look into making base
Component
class that all controls and sensors inherit from - refactor
Workers
to reduce code duplication - Change
event
system to work on adapter pattern-
Redis
adapter -
MQTT
adapter
-
- Update events to be more streamlined
- Changing event channels to more standard
- Trigger Groups needs
key
passed down properly - Add
before
,after
andbetween
trigger types for datetime comparisons - Add
sun
triggers that check time against sun data - Create a
timer
trigger- reset the timer
- Does something while timer
active
- Does something when timer finished
- Allow password for
redis
- Allow password for
mqtt
- Add triggers for
nfc
- Add tag
sensor
fornfc
- Update custom actions configs
- Add
--clear_cache
flag to clear cache on run - Make a simple
api
- Allow better
templating
in dynamic messages and other areas of system - Merge in the weather API from @icyspace
- Add a
Solarbeam
client to connect online - Generic Event Trigger
- MCP3208 Updates
- Device discovery
- Allow configurations to be posted on event system
- MQTT
- Redis
- Socket
- Additional Sensor Support
- Add Flowmeter Support
- Add in PH Sensor support
- Add in EC sensor support
- Debug the Onewire temp again
- Voltage Meter
- Add in better defaults for float sensors.
- Allow nanpy to run over wireless serial??
- Remote control with infrared?
- Motion Sensors
- Motor Controls
- Interface with Homeassistnt IO
- Interface with Google home?
-
alarms
are like timers but require you to shut them off
- Interface with z-wave
- Make Oled display worker? (need parts)
- Any additional sensors (could use part donations)
- Passive Nodes Can be Provisioned over BLE automaticially
- Update config on site
- Make Solarbeam proto page
- Push assistant changes with solarbeam account
- Fix configs on solarbeam dashboard
Mudpi Gateway / Sensors
- Create MudPi Gateway
- 433MHZ | 915MHZ | BLE | LORA
- Wifi
- Socket
- Port 7007
- Websockets
- MQTT
- Create MudPi Passive sensors firmware
- Bluetooth | 433MHZ | 915MHZ | BLE?
- Wifi?
- Allow Wifi to be configured
- Fall back to hotspot
- Update passive node to support lora
- Look into ESP-MESH
-
Investigate the displays -
Make dynamic messages in displays work with substate (i.e..
parsing in tag) -
Make toggles listen to events -
Fix typos on docs about actions -
Allow actions to accept data in the configsaction: 'example.toggle' data: component_id: 'example' state: true
-
Addanalog
to nanpy sensor docs -
Restore states for components is not called -
Make sun sensor check for time on last reading after restore to adjust next update -
Add UUID to events to prevent issues -
Fix the GPIO button edge detect -
Add way to send message to front of display queue -
Checkstate_keys
to make sure component is loaded before restoring -
Fix thenode
reconnect (There is bad self.config['name'] in debug print)