Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrvandalo/light-control
mqtt light control with location tracking
https://github.com/mrvandalo/light-control
iot lights mqtt
Last synced: 3 months ago
JSON representation
mqtt light control with location tracking
- Host: GitHub
- URL: https://github.com/mrvandalo/light-control
- Owner: mrVanDalo
- License: gpl-3.0
- Created: 2020-06-01T13:11:06.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-07-12T01:16:21.000Z (over 4 years ago)
- Last Synced: 2024-10-14T18:40:24.947Z (3 months ago)
- Topics: iot, lights, mqtt
- Language: Rust
- Size: 157 KB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# light-control
[Mqtt](http://mosquitto.org/man/mqtt-7.html)
light-control for [singles](https://en.wikipedia.org/wiki/Single_person).
It comes with room tracking, which works best in a single person environment.## How to install
```shell script
cargo install install --path .
```## How to run
```shell script
export RUST_LOG=light_control=info
~/.cargo/bin/light-control examples/home.json
```## Overview
Here is a small overview on how an light-control sees your sensors
![image](./images/overview.png)
The threshold is the time threshold that need to be reached by an other room,
before we detect the other room as the current presents of the user.## Configuration File
Should be simple.
light-control knows* sensors : generate presents input
* switches : receive on off commands (incl brightness and rgb information)
* scenes: day, night or outside> Have a look at [./examples/home.json](./examples/home.json) to get an impression.
### How find key and topic
You can use the mosquitto client to subscribe to all messages
```shell script
mosquitto_sub -v \
-u light-control \
-P password \
-h localhost \
-t "#"
```This would be a line you see:
```mqtt
zigbee2mqtt/motion_sensor_7 {"battery":100,"voltage":3015,"linkquality":99,"occupancy":true}
```
* `zigbee2mqtt/motion_sensor_7` is the topic
* `occupancy` is the key describing the state> light-control only excepts messages in flat json
### Sensors
* `topic`: topic to listen to.
* `key`: json key to read the state.
* `room`: that should be considered present if this sensor is triggered.
* `invert_state`: (default false)
sometimes sensors send false if presents is detected.
This option is to invert the state in that cases.
* `delay`: (default 60)
how long to wait (in seconds) till a present state becomes
absent after the devices publishes the absent message.
### Switch* `topic`: topic to listen for state.
* `key`: json key to read the state.
* `rooms`: rooms to which switch react.
* `delay`:
how long to wait, in seconds, till the switch is turned off
once all subscribed rooms become absent.
* `command`: command control.
* `command`: turn on and off command
This is a mustache template. Injected arguments are:
* state : on/off (see on/off statement)
* brightness : 0 - 255
* `init_command`: (default null)
command to get state of the device
will be triggered at program start.
* `topic`: topic to send commands
* `on`: (default "ON")
string to send for state argument to run switch on
* `off`: (default "OFF")
string to send for state argument to run switch off
### Scene> The first scene in the one chosen after program start.
* `name`: name of the scene
* `brightness`: brightness level for this scene
* `disabled_switches`:
list all switch topics which should be turned off.
* `enabled_switches`:
list all switch topics which should be turned on.
* `ignored_switches`:
list all switch topics which should not be set.
* `room_tracking_enabled`: tracking enabled or not
* `ignored_sensors`:
list all sensor topics which should be ignored to detect room presents.## Interact via mqtt
Mqtt is the perfect place to control light-control.
### How to change scenes
```shell script
mosquitto_pub \
-h localhost \
-u homeassistant \
-P password \
-t "control/lights/set" \
-m '{"scene":""}'
```