Generalnie zasada jest nastepująca: klient MQTT dla Supli subskrybuje wybrane tematy i reaguje kiedy te zostaną opublikowane w brokerze MQTT.
Cała konfiguracja dostępna jest w pliku command.yaml znajdującym się w katalogu supla-core/supla-mqtt-client/config. nie musimy jej zmieniać - wystarczy że zrozumiemy na jakiej zasadzie działają już wprowadzone konfiguracje.
Code: Select all
# template for power switch
# payload: { "ident": { "id": 2 }, "on": 1 }
- topic: 'supla/channels/command/#'
id: '/ident/id'
on_off: '/on'
on_value: 1
off_value: 0
#template for gate, garage door
# payload: {"idx": 4, "hi": 1}
- topic: 'supla/channels/command/#'
id: '/idx'
shut: '/hi'
# template for light switch
# payload: { "idx": 4, "on": true }
- topic: 'supla/channels/command/#'
id: '/idx'
on_off: '/on'
on_value: true
off_value: false
# template for rollershutter
# payload: { "id" : 2, "shut": 50 }
- topic: 'supla/channels/command/#'
id: '/id'
shut: '/shut'
# template for dimmer
# payload: { "id" : 2, "values": { "on": 1, "brightness": 49 } }
- topic: 'supla/channels/command/#'
id: '/id'
brightness: '/brightness'
on_off: '/on'
on_value: 1
off_value: 0
# template for rgblightning 2
# payload: { "id" : 2, "on" : true, colors: {"r": 0, "g": 255, "b": 127 }, "color_brightness": 50 }
- topic: 'supla/channels/command/#'
id: '/id'
color_r: '/colors/r'
color_b: '/colors/b'
color_g: '/colors/g'
color_brightness: '/c_brightness'
on_off: 'on'
on_value: true
off_value: false
Definicja komend polega na określeniu ścieżki do poszczególnych wartości w przychodzącej zawartości tematu.
Dajmy na to chcemy sterować oświetleniem. Mamy w Supli włącznik światła o ID = 1
Code: Select all
# template for power switch
# payload: { "ident": 1, "on": 1 }
- topic: 'supla/channels/command/light/#'
id: '/ident'
on_off: '/on'
on_value: 1
off_value: 0
Jeśli do brokera MQTT zostanie wysłany temat supla/channels/command/light/N (gdzie N to dowolny ciąg znaków - znak # powoduje że wszystko co po jego prawej w temacie jest ignorowane) o zawartości {"ident": 1, "on": 1} to zostanie włączone światło o ID 1 w Supli. Analogicznie jeśli chcemy wyłączyć światło wysyłamy do brokera MQTT pod ten temat payload: {"ident": 1, "on": 0}
Warto zaznaczyć że nie musimy definiować osobnej konfiguracji dla pozostałych włączników światła. Wystarczy że w payload wyślemy pod ten temat {"ident": 2, "on": 1} i jeśli tylko mamy w Supli włącznik światła o ID = 2 to zadziała z automatu.
Ta konfiguracja to szablon.
Podobnie jest to zorganizowane w pozostałych kanałach, w zależności od rodzaju należy wskazać gdzie klient MQTT Supli ma szukać wartości do sterowania.
Zmieniając ten plik należy mieć na uwadze:
1. Payload musi być w formacie JSON
2. Payload musi zawierać identyfikator kanału (chociaż pod dowolną strukturą).
3. Wyszukiwanie w Payload realizowane jest za pomocą JSONPath np.
4. Plik jest w formacie YAML i musi być prawidłowy pod kątem tego formatu. Można to sprawdzić wklejając jego zawartośc np. tutaj: http://www.yamllint.com/