|
| 1 | +# Roadmap to 1.0 |
| 2 | + |
| 3 | +Below is a high level roadmap of features / design goals I want to complete on MudPi. |
| 4 | + |
| 5 | +## 0.1 |
| 6 | + |
| 7 | +- [x] Raspberry Pi Teperature Sensor |
| 8 | +- [x] Raspberry Pi Float Sensor |
| 9 | +- [x] Raspberry Pi LCD Screen |
| 10 | + |
| 11 | +## 0.2 |
| 12 | + |
| 13 | +- [x] Pump Support for Raspberry Pi using Relay |
| 14 | +- [x] Use Redis to Store Values / State |
| 15 | + |
| 16 | +## 0.3 |
| 17 | + |
| 18 | +- [x] Load system from a Config File |
| 19 | +- [x] Dynamically Load Sensors |
| 20 | +- [x] Create Main Process and use Multi-Threading |
| 21 | + |
| 22 | +## 0.4 |
| 23 | + |
| 24 | +- [x] Communicate to Arduino |
| 25 | +- [x] Create Arduino Sensor Support |
| 26 | +- [x] Arduino Soil Sensor |
| 27 | +- [x] Arduino Float Sensor |
| 28 | +- [x] Arduino Temperature / Moisture Sensor |
| 29 | +- [x] Arduino Onewire |
| 30 | + |
| 31 | +## 0.5 |
| 32 | + |
| 33 | +- [x] Implement event system and using Redis Pub/Sub |
| 34 | + |
| 35 | +## 0.6 |
| 36 | + |
| 37 | +- [x] Add camera support for raspberry pi cam |
| 38 | + |
| 39 | +## 0.7 |
| 40 | + |
| 41 | +- [x] Refactor Workers to better handle events |
| 42 | +- [x] Refactor Pump into more Configurable Dynamic Relays |
| 43 | + |
| 44 | +### 0.7.1 |
| 45 | + |
| 46 | +- [x] Fix temp sensor fot DHT11 and DHT22 [Bug] |
| 47 | + |
| 48 | +### 0.7.2 |
| 49 | + |
| 50 | +- [x] Fix relay not listening to `Switch` event with a value of `0` [Bug] |
| 51 | + |
| 52 | +### 0.7.3 Pull Request & New Library |
| 53 | + |
| 54 | +- [x] Add "model" to sensor `Humidity` type config |
| 55 | +- [x] Need to Install `Adafruit_DHT` |
| 56 | + |
| 57 | +### 0.7.4 |
| 58 | + |
| 59 | +- [x] Create Arduino Wireless Sensor Node |
| 60 | + - [x] Wifi |
| 61 | + |
| 62 | +## 0.8 |
| 63 | + |
| 64 | +- [x] Add Controls |
| 65 | + - [x] Buttons |
| 66 | + - [x] Momentary |
| 67 | + - [x] Latching ( Switch?) |
| 68 | + - [x] Switches |
| 69 | + - [x] Potentiometer |
| 70 | + - [x] Joystick (Its 2 pots and a button) |
| 71 | +- [x] Add Light intensity sensor |
| 72 | +- [x] Add support for relays on arduino slaves |
| 73 | +- [x] Add controls for solenoids |
| 74 | +- [x] Refactor config file |
| 75 | + - [x] Change key names to match syntax across the file |
| 76 | + - [x] Allow more configuration options |
| 77 | + - [x] Allow workers to be configured |
| 78 | + - [x] Allow channels to be configured |
| 79 | +- [x] Add support for buttons |
| 80 | +- [x] Add Actions |
| 81 | +- [x] Add Triggers |
| 82 | +- [x] Remove old LCD screen worker |
| 83 | +- [x] I2C Support? |
| 84 | + - [x] Sensors |
| 85 | + - [x] BME680 |
| 86 | + - [x] Screens |
| 87 | + - [x] 20x4 |
| 88 | + - [x] 16x2 |
| 89 | +- [x] Catch for No Server Configs |
| 90 | +- [x] Check for KeyErrors in the Configs |
| 91 | +- [x] Allow more empty items in config as default |
| 92 | +- [x] Fix Sensor count on `pi sensor worker` print statement |
| 93 | +- [x] Make print statements depend on debug mode better |
| 94 | +- [x] Fix import of `SwitchControl` to make switches work on `pi_control_worker` |
| 95 | +- [x] Investigate `DHT22` sensor types |
| 96 | +- [x] Add ability to configure redis connection in `variables.py` |
| 97 | + |
| 98 | +- [x] Update nanpy to support Software serial HC12 including channels |
| 99 | + - [x] Not as reliable as wifi |
| 100 | +- [x] Install Script to install all dependencies |
| 101 | +- [x] Add Batteries and Solar Charging |
| 102 | + - [x] Allow readings of charge level and battery percent |
| 103 | +- [x] Allow linked sensors and relays (like float sensor to turn off relay - pump) |
| 104 | +- [x] Allow soil readings on solar nodes |
| 105 | + |
| 106 | +**v0.9.1** |
| 107 | + |
| 108 | +- [x] Add way to trigger dynamic variables in messages to display |
| 109 | + - [x] snippet replacement to redis key lookup |
| 110 | + - [x] Provide a redis [key] between square brackets and it will be replaced with value |
| 111 | +- [x] Add action `sequences` to perform actions with delays between |
| 112 | + - [x] Each step in sequence can have thresholds of its own |
| 113 | + - [x] Can skip to next step using event |
| 114 | + - [x] `SequenceNextStep`, `SequencePreviousStep` |
| 115 | + - [x] If no `duration` is set then you must pass this event to toggle next step |
| 116 | + - [x] Steps have an optional `delay` before triggering actions |
| 117 | + - [x] Emits event on start and end of sequence |
| 118 | + - [x] `SequenceStarted`, `SequenceEnded` |
| 119 | + - [x] Emits event on each step of sequence |
| 120 | + - [x] `SequenceStepStarted`, `SequenceStepEnded` |
| 121 | +- [x] Relay Refactoring |
| 122 | + - [x] The `topic` is no longer required. This will default to `mudpi/relays/[relay_key]` |
| 123 | + - [x] An exception is thrown if no `key` if found in config |
| 124 | + - [x] A `name` will be generated from a `key` if one is not provided |
| 125 | +- [x] Sensors |
| 126 | + - [x] `key` is now be required |
| 127 | + - [x] A `name` will be generated from a `key` if one is not provided |
| 128 | +- [x] Controls |
| 129 | + - [x] `key` is now be required |
| 130 | + - [x] A `name` will be generated from a `key` if one is not provided |
| 131 | +- [x] Merge in Peerys Logger PR#12 |
| 132 | + - [x] Increase debug logging capabilities |
| 133 | + - [x] Update sequences to use new logger |
| 134 | + |
| 135 | +## 0.10.0 |
| 136 | + |
| 137 | +- [x] Updated Socket `Server` to Allow Incoming Data |
| 138 | + - [x] Make the socket server relay events |
| 139 | +- [x] Displays on Nodes |
| 140 | +- [x] Optimize workers to use new `wait` method for faster responses |
| 141 | + - [x] See how its used in `sequence_worker.py` -ERIC NOTE |
| 142 | +- [x] Relay Failsafe Durations |
| 143 | +- [x] Allow `Display` messages to be added to front of the queue |
| 144 | +- [x] Build `StateMachine` that stores state of everything |
| 145 | +- [x] Look into making base `Component` class that all controls and sensors inherit from |
| 146 | +- [x] refactor `Workers` to reduce code duplication |
| 147 | +- [x] Change `event` system to work on adapter pattern |
| 148 | + - [x] `Redis` adapter |
| 149 | + - [x] `MQTT` adapter |
| 150 | +- [x] Update events to be more streamlined |
| 151 | + - [x] Changing event channels to more standard |
| 152 | +- [x] Trigger Groups needs `key` passed down properly |
| 153 | +- [x] Add `before`, `after` and `between` trigger types for **datetime** comparisons |
| 154 | +- [x] Add `sun` triggers that check time against sun data |
| 155 | +- [x] Create a `timer` trigger |
| 156 | + - [x] reset the timer |
| 157 | + - [x] Does something while timer `active` |
| 158 | + - [x] Does something when timer finished |
| 159 | +- [x] Allow password for `redis` |
| 160 | +- [x] Allow password for `mqtt` |
| 161 | +- [x] Add triggers for `nfc` |
| 162 | +- [x] Add tag `sensor` for `nfc` |
| 163 | + |
| 164 | +## 1.0 |
| 165 | + |
| 166 | +- [ ] Update custom actions configs |
| 167 | +- [ ] Add `--clear_cache` flag to clear cache on run |
| 168 | +- [ ] Make a simple `api` |
| 169 | +- [ ] Allow better `templating` in dynamic messages and other areas of system |
| 170 | +- [ ] Merge in the weather API from @icyspace |
| 171 | +- [ ] Add a `Solarbeam` client to connect online |
| 172 | +- [ ] Generic Event Trigger |
| 173 | +- [ ] MCP3208 Updates |
| 174 | +- [ ] Device discovery |
| 175 | + - [ ] Allow configurations to be posted on event system |
| 176 | + - [ ] MQTT |
| 177 | + - [ ] Redis |
| 178 | + - [ ] Socket |
| 179 | +- [ ] Additional Sensor Support |
| 180 | + - [ ] Add Flowmeter Support |
| 181 | + - [ ] Add in PH Sensor support |
| 182 | + - [ ] Add in EC sensor support |
| 183 | + - [ ] Debug the Onewire temp again |
| 184 | + - [ ] Voltage Meter |
| 185 | + - [x] Add in better defaults for float sensors. |
| 186 | +- [x] Allow nanpy to run over wireless serial?? |
| 187 | + |
| 188 | +## 1.0+ |
| 189 | + |
| 190 | +- [ ] Remote control with infrared? |
| 191 | +- [ ] Motion Sensors |
| 192 | +- [ ] Motor Controls |
| 193 | +- [ ] Interface with Homeassistnt IO |
| 194 | +- [ ] Interface with Google home? |
| 195 | +- [ ] `alarms` are like **timers** but require you to shut them off |
| 196 | + |
| 197 | +### *Need Hardware |
| 198 | + |
| 199 | +- [ ] Interface with z-wave |
| 200 | +- [ ] Make Oled display worker? (need parts) |
| 201 | +- [ ] Any additional sensors (could use part donations) |
| 202 | + |
| 203 | +## Non Core Tasks |
| 204 | + |
| 205 | +- [ ] Passive Nodes Can be Provisioned over BLE automaticially |
| 206 | +- [ ] Update config on site |
| 207 | +- [ ] Make Solarbeam proto page |
| 208 | +- [ ] Push assistant changes with solarbeam account |
| 209 | +- [ ] Fix configs on solarbeam dashboard |
| 210 | + |
| 211 | +**Mudpi Gateway / Sensors** |
| 212 | + |
| 213 | +[MudPi Gateway & Firmware](https://www.notion.so/MudPi-Gateway-Firmware-1cb3fc4416b04b5dbd2349a10cfc0fd8) |
| 214 | + |
| 215 | +- [ ] Create MudPi Gateway |
| 216 | + - [ ] 433MHZ | 915MHZ | BLE | LORA |
| 217 | + - [x] Wifi |
| 218 | + - [x] Socket |
| 219 | + - [x] Port 7007 |
| 220 | + - [x] Websockets |
| 221 | + - [x] MQTT |
| 222 | +- [x] Create MudPi Passive sensors firmware |
| 223 | + - [ ] Bluetooth | 433MHZ | 915MHZ | BLE? |
| 224 | + - [x] Wifi? |
| 225 | + - [ ] Allow Wifi to be configured |
| 226 | + - [ ] Fall back to hotspot |
| 227 | + - [ ] Update passive node to support lora |
| 228 | +- [ ] Look into ESP-MESH |
| 229 | + |
| 230 | + |
| 231 | +## Fixes in v0.10.0 to do |
| 232 | + |
| 233 | +- ~~Investigate the displays~~ |
| 234 | +- ~~Make dynamic messages in displays work with substate (i.e. `.` parsing in tag)~~ |
| 235 | +- ~~Make toggles listen to events~~ |
| 236 | +- ~~Fix typos on docs about actions~~ |
| 237 | +- ~~Allow actions to accept data in the configs~~ |
| 238 | + |
| 239 | + ```jsx |
| 240 | + action: 'example.toggle' |
| 241 | + data: |
| 242 | + component_id: 'example' |
| 243 | + state: true |
| 244 | + ``` |
| 245 | + |
| 246 | +- ~~Add `analog` to nanpy sensor docs~~ |
| 247 | +- ~~Restore states for components is not called~~ |
| 248 | +- ~~Make sun sensor check for time on last reading after restore to adjust next update~~ |
| 249 | +- ~~Add UUID to events to prevent issues~~ |
| 250 | +- ~~Fix the GPIO button edge detect~~ |
| 251 | +- ~~Add way to send message to front of display queue~~ |
| 252 | +- ~~Check `state_keys` to make sure component is loaded before restoring~~ |
| 253 | +- ~~Fix the `node` reconnect (There is bad self.config['name'] in debug print)~~ |
0 commit comments