https://github.com/destroyedlolo/majordome
Events based automation tool based on timers and MQTT messages arrival. The application is a galaxy of small Lua tasks.
https://github.com/destroyedlolo/majordome
lua mqtt-message scenarii smarthome
Last synced: about 1 year ago
JSON representation
Events based automation tool based on timers and MQTT messages arrival. The application is a galaxy of small Lua tasks.
- Host: GitHub
- URL: https://github.com/destroyedlolo/majordome
- Owner: destroyedlolo
- License: other
- Created: 2016-05-09T20:22:35.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-10-27T16:57:38.000Z (over 1 year ago)
- Last Synced: 2024-10-28T00:31:38.453Z (over 1 year ago)
- Topics: lua, mqtt-message, scenarii, smarthome
- Language: C++
- Homepage:
- Size: 794 KB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A lightweight, event driven **Automation System**.

[](https://github.com/destroyedlolo/Majordome/releases/latest)
[](https://github.com/destroyedlolo/Majordome/releases/latest)
(no commit for long time doesn't mean this project is stalling but reached a stable state and I switched to others activities :relaxed:)
----
> [!IMPORTANT]
> **Master** branch is the stable, well tested and industries grade version.
> **Toile** and **V6** branches are currently on heavy development. It's not yet fully tested and stable (i.e. subject to changes).
----
Within **Majordome**, your application is built around a galaxy of small tasks orchestrated by efficient but resource conservative mechanisms.
You organize your code into independent and **stateless Lua functions** that are called when an event happened and/or conditions are met (*like what AWS Lambda does*). Tasks are executed only if necessary in the massively threaded Majordome engine, resulting in an as reduced as possible system footprint.
As of **V6**, you can also feed industries standard **PostgreSQL** databases with incoming data in a *LowCode* (or even *NoCode*) way. Take a look on [comprehensive provided example](Documentations/Database/SamplesCode).
Following the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle), **Majordome** depends mainly on **MQTT messaging** and **timers** to trigger tasks, delegating real world communication to other dedicated components (like [Marcel](https://github.com/destroyedlolo/Marcel) in my case).
---
Typical use-cases :
---
- Smart home automation [^1]
- SCADA automation
- centralizing data gathering and processing, fault detection
- your imagination is the limit ...
---
[Documentations](/Documentations/) explains how to configure automation within Majordome
---
Any contributions are greatly appreciated.
[^1]: **Majordome**, with the help of **Marcel** for the "*real world*" part, drive my smart house for 7 years without any glitches. See `MaMaison` branch for this complete and real life implementation.