easytarget / easytarget/SBCEye

V2: Move all data gatherers into a plugin system.

Open
#31 0 comments 0 reactions 0 assignees View on GitHub
enhancement Low Pri
Dominant language
Python
Stars
8
Forks
2
PR merge metrics
No merged PRs in 30d

Description

V2 architecture:
- `overwatch.py` main loop only services hardware and the data dictionary, it does handle any senses or work with sensed data directly.
- performs startup, config, log setup, schedule init and running, signal handling and all other 'housekeeping' tasks
- provides gpio, I2C (and SPI) bus objects for the gatherers to use.
- directly handles all the button pin functions
- spawns rrdb, http, display and alert tasks/processes that drive the core functionality
- provides the global `data{}` dictionary
- uses queues for display and alerts by extending the dictionary methods for `data{}`
- gatherers focus on a single dataset, currently: 'system', 'environment', 'connectivity', 'pin'
- init
- updater
- handler for http (show_panel)
- Attributes (optional) for rrdb (limits, formats, graph)
- Attributes (optional) for display
- log directly
- alerters
- TBD: a plugin system for alerting
- run in a separate process, possibly demonised so it can alert if the main process dies..
- Pass the `data{}` dict to it via a Queue, same as for the display sub-process
- Allow it to pass data back to the Web interface and display can show alerts?

In General:
- We currently have tables defined in the http, rrd and display classes that should be moved out and become attributes provided by the relevant data gatherers.
- the http server needs to become 'data neutral' as well, gatherers need to provide their own generators (emitting a formatted http table header and rows) so that the `httpserver.py` module can become data neutral.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.