
Janus MQTT рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЧреЛ рдкрд░ рдПрдХ рд╢реМрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд╡рд╣ рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ, рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХреА рдкрд╣реБрдБрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдЬрд┐рд╕рдореЗрдВ рд░реАрдб рдПрдВрдб рд░рд╛рдЗрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ;
- рд╡рд┐рд╖рдп рдХреЗ рдирд╛рдо рдФрд░ рдИрд╡реЗрдВрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ regexp s рд╕реЗ рдмрджрд▓реЗрдВред
рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?
MQTT . , - 1 /my/lamp/on, - On /my/lamp. , , . , .
Janus MQTT : , , MQTT- . / , .
. , /light/main. ┬л, тАФ , тАФ , , ┬╗. , .
, , , . Janus MQTT / , . , , , тАФ .
Janus MQTT
, , тАФ , .
Janus MQTT , . тАФ :
broker_to_client: #
# MQTT discovery.
- topic: ^/devices/wb-gpio/controls/LIGHT_([^/]*)/meta/type$
template: /homeassistant/light/{{.f1}}/config
val_map:
switch: >-
{
"command_topic":"/light/{{.f1}}/state",
"state_topic":"/light/{{.f1}}/state",
"name":"{{.f1}}"
}
- topic: ^/devices/wb-gpio/controls/LIGHT_([^/]*)$
template: /light/{{.f1}}/state
val_map: {0: OFF, 1: ON}
client_to_broker: #
- topic: ^/light/([^/]*)/state$
template: /devices/wb-gpio/controls/LIGHT_{{.f1}}/on
val_map: {OFF: 0, ON: 1}
, . .
, Home Assistant , .
MQTT discovery : Wiren Board , . , . switch. retained тАФ . JSON-, , MQTT discovery .
Janus MQTT
Go paho.mqtt.golang. MQTT- . , , MQTT-.
: , , . . .. MITM.
:
- QoS тАФ 2 1 , ;
- - QoS message_id, uint16 ;
- Janus MQTT . , ;
- , in-memory retained-.
MQTT- client.serveIncoming, TCP-. MQTT- :
- ConnectPacket тАФ Connack ;
- SubscribePacket тАФ Suback retained-;
- UnsubscribePacket тАФ Unsuback ;
- PingreqPacket тАФ Pingresp;
- PublishPacket тАФ ;
- PubackPacket, PubrelPacket, PubcompPacket ;
- DisconnectPacket тАФ .
QoS. MQTT QoS:
, 1 2 , , , ( 2 , QoS 1, ).
publish- QOS=2

publish- QOS=2

Janus MQTT :
- Wiren Board тАФ ;
- Home Assistant тАФ ( );
- Yandex2mqtt тАФ .
Wiren Board
. . MQTT-.
Yandex2mqtt
oAuth API . . munrexio, bawdiest , .
, :
$ mosquitto_sub -h localhost -u yandex2mqtt -P yandex2mqtt -t '#' -v
/light/LIVING_TABLE/state 1

Home Assistant
. . , .
Home Assistant , , .
, Home Assistant MQTT Discovery тАФ , Home Assistant MQTT. JSON-, .
Home Assistant :
mqtt:
username: !env_var MQTT_USER
password: !env_var MQTT_PASS
broker: !env_var MQTT_HOST
discovery: true
discovery_prefix: /homeassistant
Janus MQTT
Janus MQTT Home Assistant . 100 , 17 , 6 (/) 5 . . .
Docker
NanoPi docker-compose.yml.

, , , .
10 M. Golang!
/ :
https://github.com/phoenix-mstu/janus-mqtt-proxy.
docker-compose :
https://github.com/phoenix-mstu/smart_home/tree/master/raspberry.
, : 52.59.242.204:26927 ( ), / тАФ habr/habr, тАФ MQTT, . . , :
- ( ).
- .
- тАФ , . , , . , DoS- тАФ . .