INSTALARE ZIGBEE2MQTT

Se instaleaza node si npm ca aici.
Daca nu sunt instalate:

sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs git make g++ gcc

Pentru Raspberry Pi B si Zero:

Ca utilizator elvis:

Comenzile pentru Raspberry Pi se aplica numai dupa ce s-a instalat Node Red.
Se ia ultima versiune $NODE de aici

NODE=21.6.1
wget https://unofficial-builds.nodejs.org/download/release/v$NODE/node-v$NODE-linux-armv6l.tar.xz
tar -xvf node-v$NODE-linux-armv6l.tar.xz
sudo cp -R node-v$NODE-linux-armv6l/* /usr/local/
rm -rf node-v$NODE-linux-armv6l node-v$NODE-linux-armv6l.tar.xz
sudo apt-get install -y git make g++ gcc

Se verifica:

node --version
npm --version

Ca utilizator elvis se instaleaza zigbee2mqtt din github:

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R elvis:elvis /opt/zigbee2mqtt

Se verifica dependentele:

cd /opt/zigbee2mqtt
sudo npm ci

Se produce o serie de warning care se pot ignora.
Rezultatul ar trebui sa fie de forma:

node-pre-gyp info ok
added 383 packages in 111.613s

Se editeaza fisierul de configurare:

nano /opt/zigbee2mqtt/data/configuration.yaml

Se introduc datele corespunzatoare serverului MQTT: locatia, topicul si modul de autentificare:

homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: ‘mqtt://localhost’
user: elvis
password: parola

Se salveaza si se inchide fisierul de configurare.
Se configureaza zigbee2mqtt ca serviciu:

sudo nano /etc/systemd/system/zigbee2mqtt.service

Se introduce urmatorul continut:

[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=elvis
[Install]
WantedBy=multi-user.target

Pentru Raspberry Pi locatia „ExecStart=/usr/bin/npm” este „ExecStart=/usr/local/bin/npm”.
Se salveaza si se inchide fisierul apoi se activeaza si se porneste serviciul:

sudo systemctl daemon-reload
sudo systemctl enable zigbee2mqtt.service
sudo systemctl start zigbee2mqtt.service
sudo systemctl status zigbee2mqtt.service

Se imperecheaza dispozitivele (detalii aici)care se regasesc ulterior in fisierul de configurare:

homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: ‘mqtt://localhost’
user: elvis
password: parola
serial:
port: /dev/ttyACM0
devices:
‘0x00158d0003fa6dd5’:
friendly_name: ‘0x00158d0003fa6dd5’
‘0x00158d0003ce8ad6’:
friendly_name: ‘0x00158d0003ce8ad6’

Se opreste serviciul pentru editarea fisierului:

sudo systemctl stop zigbee2mqtt.service
nano /opt/zigbee2mqtt/data/configuration.yaml

Se editeaza permit_join: false si friendly_name apoi se salveaza fisierul.
Se creeaza scriptul pentru oprirea si repornirea dupa 5 secunde a serviciului:

sudo nano /root/zigbee2mqtt.sh

Se introduce comanda:

systemctl stop zigbee2mqtt.service && sleep 3 && systemctl start zigbee2mqtt.service

Se schimba proprietarul scriptului si se transforma in executabil:

sudo chown root:root /root/zigbee2mqtt.sh
sudo chmod +x /root/zigbee2mqtt.sh

Se editeaza fisierul crontab pentru rularea la fiecare 15 minute a scriptului:

sudo crontab -e

Se introduce linia:

*/15 * * * * /root/zigbee2mqtt.sh > /dev/null 2>> /var/log/cron.log

Se salveaza si se inchide fisierul apoi se reporneste zigbee2mqtt:

sudo systemctl restart zigbee2mqtt.service