Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/destroyedlolo/selene
Automation tool based on MQTT data. Optionnal backends to create "DRM/Cairo" "DirectFB" or "Curses" graphical applications.
https://github.com/destroyedlolo/selene
c curses directfb framework lua mqtt mqtt-data mqtt-smarthome oled-display-ssd1306
Last synced: 2 months ago
JSON representation
Automation tool based on MQTT data. Optionnal backends to create "DRM/Cairo" "DirectFB" or "Curses" graphical applications.
- Host: GitHub
- URL: https://github.com/destroyedlolo/selene
- Owner: destroyedlolo
- License: other
- Created: 2015-04-17T22:14:16.000Z (almost 10 years ago)
- Default Branch: v6
- Last Pushed: 2024-04-13T16:22:17.000Z (9 months ago)
- Last Synced: 2024-04-13T16:38:53.945Z (9 months ago)
- Topics: c, curses, directfb, framework, lua, mqtt, mqtt-data, mqtt-smarthome, oled-display-ssd1306
- Language: C
- Homepage:
- Size: 1.68 MB
- Stars: 14
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Séléné
**Séléné** is a lightweight and versatile framework to build **Lua** event driven application.
**Séléné** provides :
* **tasks list** management : tasks needing to run in sequence or which doesn't need to be real-time are queued. They will be launched when main application thread is idle
* **Asynchronous tasks** : tasks can detach from their mother process. Unlike Lua's coroutine, they are working totally independently, without having to manage concurrent access to their own context. Especially suitable for real-time actions.
* **data exchange** between tasks are managed using shared variables or data queues (have a look on **SelShared** and **Collection** objects). Notez-bien : due to Lua's limitation, *detached tasks* can't access to objects (including functions) declared in the main thread, Shared objects and collections handle data sharing as well as locking to avoid race condition and concurrent access.
* Tasks are waked-up by various types of **events** :
* **timers** (absolute and relative times)
* **MQTT** messages arrivals. Consequently, an external application can trigger tasks by sending an MQTT message. Séléné provides some APIs to expose MQTT payload to Lua scripts and can send new messages.
* **files’ events**
* **Unix events**
* …Thanks to plug-ins, **Séléné** allows to easily create events driven dashboard :
* **Text based** ones using the industry standard *Curses library*
* Graphicals ones :
* Tiny **OLED** displays
* Linux **Framebuffers** so without having to install and manage obese X layer---
## Pluggins dashboard examples
### DRM/Cairo
![DRMCairo](Images/DRMCairo.jpg)
**DRM/Cairo** dashboard *more elaborated graphics especially with transparency*
### DirectFB
![DFB](Images/DFB.png)
**DirectFB** dashboard *flat design due to constraints of the screen used*
### Curses
![Curses](Images/Curses.png)
Textusal **Curses** dashboard *displayed on a old terminal : Séléné only manages the text itself*
---
[docs directory](docs/) containes various ... documentations : installation procedures, API of pluggins ...