Про установку и настройку zigbee2mqtt написана очень хорошая статья на https://www.zigbee2mqtt.io/ . По поводу yandex2mqtt хорошая статья тут.
Для себя сделал несколько, так сказать “лайф хаков”, в /etc/openhab2 создал папку system. в ней у меня 4 папки: yandex2mqtt, zigbee2mqtt, nginx и scripts. Так сдалано потому что в openhab есть собственная реализация backup-a, да и хранить удобнее все в одном месте.
ЗЫ. nginx симлинк в /etc
Приступим. Для начала нужно установить пакет graphviz. Скачать файл svg-pan-zoom.min.js и положить его в /etc/openhab2/html/zigbee/
Для того чтобы zigbee2mqtt мог красиво рисовать карту, нужно в configuration.yaml добавить строчки:
map_options: graphviz: colors: fill: enddevice: '#fff8ce' coordinator: '#e04e5d' router: '#4ea3e0' font: coordinator: '#ffffff' router: '#ffffff' enddevice: '#000000' line: active: '#009900' inactive: '#994444'
В каталоге /etc/openhab2/system/script создать файл get_maps с содержимым:
#!/bin/bash # additional dependencies: graphviz imagemagick # put temporal files in ram filesystem file="/etc/openhab2/html/zigbee/zigbee" fechahora=$(date '+%F-%H:%M') #~ echo $fechahora mosquitto_sub -t zigbee2mqtt/bridge/networkmap/graphviz -C 1 >${file}.dot & mosquitto_pub -t zigbee2mqtt/bridge/networkmap -m graphviz # wait until mosquitto_sub ends wait # generate graphic with graphviz (change to short texts with sed) /usr/bin/sfdp -Nfontname=ComicSans -Nfontsize=9 -Ncolor=#666666 -Nstyle=filled -Nfillcolor=#eeeeee -Efontname=ComicSans -Efontsize=8 -Efontcolor=#cc0000 -Ecolor=#cccccc -Tsvg -o ${file}.svg ${file}.dot
Создать файл /etc/openhab2/html/zigbee/zigbee-maps.html с кодом:
<html> <head> <script src="svg-pan-zoom.min.js"></script> </head> <body style="margin: 0; padding: 0"> <embed type="image/svg+xml" src="zigbee.svg" id="map" width="100%" height="100%"/> <script language="JavaScript"> document.getElementById('map').addEventListener('load', function(){ // Will get called after embed element was loaded svgPanZoom(document.getElementById('map'), { controlIconsEnabled: true }); }) var panZoomMap = svgPanZoom('#map'); </script> </body> </html>
Создать правило /etc/openhab2/rules/zigbee.rules :
rule "Request ZigBee Network Map in Graphviz format" when Time cron "0 0 */4 * * ?" then executeCommandLine("/etc/openhab2/system/script/get_maps") end
Ну и добавить в ваш sitemap строку:
Group item=zigbee_NetworkMap_Webview { Webview url="/static/zigbee/zigbee.html" height=16 icon="network" }
Ну и получаем желаемый результат))
Большинство взято отсюда