OpenHab2+zigbee2mqtt maps

Про установку и настройку 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"
       }

Ну и получаем желаемый результат))

Большинство взято отсюда

Метки: , , , , . Закладка Постоянная ссылка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *