Zabbix Agent 2 asennus Ubuntuun (Zabbixin omasta reposta)

Käytä aina Zabbixin omaa repositorya. Ubuntun omissa paketeissa agentti on usein vanhentunut eikä vastaa Zabbix-serverin versiota.

1) Tarkista Ubuntun versio

lsb_release -a

Tarvitset tästä Release-tiedon (esim. 22.04 tai 24.04).


2) Lataa Zabbixin repository-paketti

Avaa lataussivu: https://www.zabbix.com/download
Valitse:

  • Zabbix version = sama kuin serverillä (esim. 7.0 LTS)
  • OS = Ubuntu
  • OS version = edellisessä kohdassa selvitetty
  • Component = Agent 2

Sivu antaa sinulle valmiit komennot. Esimerkki:

Esimerkki: Ubuntu 24.04 + Zabbix 7.0

sudo -s
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
apt update

Huomaa: vaihda URL vastaamaan sinun Ubuntu-versiotasi.


3) Asenna Zabbix Agent 2

apt install zabbix-agent2

4) Muokkaa agentin konfiguraatio

nano /etc/zabbix/zabbix_agent2.conf

Muuta vähintään seuraavat rivit:

Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=UBUNTU_HOSTNAME

Selitykset:

  • Server = Zabbix serverin IP, jolta passiiviset tarkistukset sallitaan
  • ServerActive = Zabbix serverin IP, jonne agentti ottaa itse yhteyden
  • Hostname = täsmälleen sama nimi kuin Zabbixissa määritellyllä hostilla

5) Käynnistä ja ota palvelu käyttöön

systemctl enable zabbix-agent2
systemctl restart zabbix-agent2
systemctl status zabbix-agent2

Varmista että status on active (running).


6) Avaa palomuuri (UFW) portille 10050

Tarkista ensin onko UFW käytössä:

ufw status

Jos active, avaa portti:

ufw allow 10050/tcp

Suositus (turvallisempi): salli vain Zabbix-serveriltä

ufw allow from ZABBIX_SERVER_IP to any port 10050 proto tcp

7) Testaa yhteys Zabbix-serveriltä

Aja Zabbix-serverillä:

zabbix_get -s UBUNTU_IP -k agent.ping

Jos saat vastauksen:

1

yhteys toimii.


8) Lisää host Zabbixiin

Zabbix GUI → Add host

  • Agent interface = Ubuntu-palvelimen IP
  • Template = Linux by Zabbix agent

Yleisimmät ongelmat

OireSyy
“Get value from agent failed”Hostname ei täsmää
Ei yhteyttäUFW blokkaa portin
Agent running mutta ei dataaServer/ServerActive väärin

Miksi Firefox ei enää ole hyvä Wayland-kioski

Firefox Waylandissa:

  • toimii vain, jos se käynnistyy aktiivisessa käyttäjäsessiossa
  • ei siedä hyvin:
    • GDM autologinia
    • Snap-sandboxia
    • ei-interaktiivista käynnistystä
  • kioski-flag (--kiosk) toimii, mutta Wayland backend ei aina aktivoidu oikein Snapissa

–> Käytä Chromiumia Firefoxin sijaan

ESPHome

ESPHome on avoimen lähdekoodin projekti, jonka avulla on helppoa ohjelmoida ESP8266- ja ESP32-mikrokontrollereita käytettäväksi älykodin laitteina Home Assistantin kanssa: https://esphome.io

Keskeiset ominaisuudet

  • Käyttää YAML-muotoista määritystiedostoa laitteen toiminnan määrittelyyn
  • Tukee satoja antureita, releitä, näyttöjä, LED-nauhoja ym.
  • Mahdollistaa Wi-Fi-yhteyden ja MQTT- tai API-integraation
  • Tukee automaattista OTA (Over-The-Air) -päivitystä

Tyypilliset käyttökohteet

  • Lämpötila- ja kosteusmittarit (esim. DHT22)
  • Liikeilmaisimet, painikkeet, ovianturit
  • LED-ohjaus (WS2812, PWM, jne.)
  • Releohjaus, kuten valaistus tai sähkölaitteet

ESPHome tekee laitteista käytännössä Home Assistant -yhteensopivia plug-and-play-komponentteja ilman tarvetta kirjoittaa C/C++-koodia.

ESP mikrokontrollerin alustus

Kun ESPHome lisäosa on asennettu Home assistant:iin on uuden mikrokontrollerin alustus mahdollista tehdä suoraan Home Assistantista ”+ NEW DEVICE” nappulasta käyttäen Chromeen perustuvaa selainta.

Em. menetelmä toimii ainoastaan jos selain käynnistetään koneella, jolle Home Assistant on asennettu tai jos selainyhteys Home Assitant palveluun käyttää https-protokollaa.

Koska HA (Home Assistant) oletuksena asentuu käyttämään porttia 8123 ja http-protokollaa, alustan mikrokontrollerin käyttäen https://web.esphome.io/?dashboard_wizard palvelua.

ESPHome Dashboard Wizard

Avaa Chrome selaimella (tai Chromeen perustuvalla selaimella) osoite: https://web.esphome.io/?dashboard_wizard

Kytke ESP mikrokontrolleri USB kaapelilla tietokoneeseesi ja paina ”CONNECT” linkkiä. Tämän jälkeen sinulta kysytään mihin sarjaporttiin mikrokontrolleri on kytketty. Listan loppupuolelta pitäisi löytyä ”USB Serial (ttyUSBo)” valinta tai saman kaltaista.

Valitse ja paina ”Connect”. Tämän jälkeen valitse avautuvasta ikkunasta ”Prepare for first use”.

Valitse ”INSTALL”

Jos saat tämän jälkeen virheilmoituksen ”An error occurred. Improv Wi-Fi Serial not detected”, kokeile valita kolmen pisteen valikosta ”Configure WI-FI”.

Valitse ”CONNECT TO WI-FI”, jonka jälkeen voit tehdä tarvittavat asetukset.

Valitse ”CONNECT”.

Provisioinnin jälkeen paina ”CLOSE” ja irroita mikrokontrolleri hetkeksi USB kaapelista. Käynnistyttyään kontrolleri hakee itselleen IP-osoitteen WIFI-verkosta.

pfSense palomuurikone on tässä tapauksessa antanut mikrokontrollerille dynaamisen IP-osoitteen 192.168.2.125. Muutan osoitteen staattiseksi, jotta se ei vahingossa muutu myöhemmin joksikin toiseksi.

Kontrollerin liittäminen Home Assistant:iin

Valitse ”Settings” -> ”Devices & Services” -> ”ESPHome” -> ”ADD DEVICE”

Kirjoita kohtaan ”Host” aiemmin määrittämäsi staattinen IP-osoite. Tämän jälkeen voit antaa laitteelle nimen ja sen sijainnin.

Siirry ”ESPHome Builder” sivulle ja valitse ”+NEW DEVICE”

Valitse ”Continue” ja anna tämän jälkeen nimi luotavalle laitteelle.

Valitse käytettävän mikrokontrollerin tyyppi.

Lopuksi valitse ”Skip” koska laitetta ei ole kytketty USB-kaapelilla tietokoneeseen.

Nyt sinulla on ”ESPHome Builder” näkymässä laite, joka pitää vielä liittää aiemmin määrittämääsi laitteeseen.

Valitse ”EDIT” ja muokkaa avautuvaa koodia niin, että se sisältää tarvittavat yhteysasetukset jne.

esphome:
  name: weather-station
  friendly_name: weather-station

esp8266:
  board: esp01_1m

# Enable logging
logger:
    level: DEBUG

# Enable Home Assistant API
api:
   encryption:
     key: !secret api_encryption_key

ota:
  - platform: esphome
    # safe_mode: True
    password: !secret ota_password

wifi:
   networks:
     - ssid: !secret wifi_tv_room_ssid
       password: !secret wifi_password
     - ssid: !secret wifi_ssid
       password: !secret wifi_password
     - ssid: !secret wifi_garage_ssid
       password: !secret wifi_password
   manual_ip:
     static_ip: 192.168.2.96
     gateway: 192.168.2.1
     subnet: 255.255.255.0
   ap:
     ssid: "weather-station"
     password: "changemenow"

captive_portal:

Tämä jälkeen valise ”INSTALL”, jonka jälkeen koodi buildataan ja asennetaan laitteelle.

Tämän jälkeen laitteen tila muuttuu ”ONLINE:ksi”.

Tämän jälkeen alkaa varsinainen ohjelmistokehitys, josta kerron lisää sääasema-projektissa.

Kioskinäytön käynnistys webbikameran avulla

Ohjaan Home Assistant -kodinohjausjärjestelmää keittiössä sijaitsevalla kosketusnäytöllisellä tietokoneella. Koneessa on Ubuntu 24.04 LTS, GNOME/Wayland ja Chromium-selain kioskitilassa.

Haluan näytön olevan sammuksissa silloin, kun kukaan ei käytä sitä. Näyttö pimenee GNOMEn normaalin idle-toiminnon avulla, ja webbikamera toimii liiketunnistimena: kun kamera havaitsee liikettä, järjestelmään lähetetään virtuaalinen näppäinpainallus, joka herättää näytön.

Näytön pimennys

Esimerkiksi 30 minuutin joutokäyntiajan voi asettaa komennolla:

gsettings set org.gnome.desktop.session idle-delay 1800

Kioskikoneessa näytön automaattinen lukitus kannattaa yleensä poistaa käytöstä:

gsettings set org.gnome.desktop.screensaver lock-enabled false

Näin näyttö sammuu 30 minuutin kuluttua, mutta herätessään palaa suoraan kioskinäkymään.

Motion-liiketunnistus

Asennetaan motion:

sudo apt update
sudo apt install motion

Konfiguraatio löytyy tiedostosta:

sudo nano /etc/motion/motion.conf

Olennaiset asetukset ovat esimerkiksi:

daemon off

video_device /dev/video0

width 640
height 480
framerate 15

threshold 1500
despeckle_filter EedDl
minimum_motion_frames 1
event_gap 60
pre_capture 3
post_capture 0

picture_output off
movie_output off

on_event_start /usr/bin/ydotool key 57:1 57:0

Kuvia tai videoita ei tarvitse tallentaa, koska kameraa käytetään tässä vain liikkeen havaitsemiseen.

event_gap ei määrää näytön sammumisaikaa. Näytön pimennyksen hoitaa GNOME. Motionin tehtävänä on ainoastaan generoida näppäinpainallus, kun liikettä havaitaan.

ydotool

Waylandissa perinteinen xdotool ei ole sopiva tähän tarkoitukseen, joten käytän ydotool:ia. Se generoi näppäin- ja hiiritapahtumia Linuxin uinput-rajapinnan kautta eikä tarvitse X11:tä.

Asennus:

sudo apt install ydotool

ydotool key käyttää Linuxin input-keycodeja. Välilyöntinäppäimen eli KEY_SPACE:n keycode on 57:

grep -w KEY_SPACE /usr/include/linux/input-event-codes.h

Tuloksena pitäisi näkyä:

#define KEY_SPACE        57

Näin ollen kokonainen välilyöntinäppäimen painallus ja vapautus on:

ydotool key 57:1 57:0

missä:

  • 57:1 = välilyönti painetaan alas
  • 57:0 = välilyönti vapautetaan

Tämä on tärkeä ero esimerkiksi X11:n keycodeihin nähden. Aiemmin käyttämäni numero 65 oli X11:n välilyönnin keycode eikä oikea arvo nykyiselle ydotool:lle.

Motion-konfiguraatiossa käytän siis:

on_event_start /usr/bin/ydotool key 57:1 57:0

ydotoold-palvelu ja käyttöoikeudet

ydotool-komento lähettää tapahtumat ydotoold-daemonille Unix-socketin kautta. Daemon tarvitsee oikeuden käyttää /dev/uinput-laitetta.

Motion-palvelu puolestaan ajetaan normaalisti omalla motion-käyttäjällään:

systemctl cat motion.service

Ubuntu 24.04 -järjestelmässäni palvelu on:

[Unit]
Description=Motion detection video capture daemon
Documentation=man:motion(1)

[Service]
Type=simple
User=motion
ExecStart=/usr/bin/motion

[Install]
WantedBy=multi-user.target

Motionia ei siis tarvitse ajaa rootina.

Sen sijaan ydotoold voidaan ajaa rootina ja antaa socketin käyttöoikeus erilliselle ydotool-ryhmälle.

Luodaan ryhmä ja lisätään siihen sekä motion– että kioski-käyttäjät:

sudo groupadd -f ydotool
sudo usermod -aG ydotool motion
sudo usermod -aG ydotool kioski

Ryhmän voi tarkistaa:

getent group ydotool

Esimerkiksi:

ydotool:x:1002:motion,kioski

Oma systemd-palveluni /etc/systemd/system/ydotoold.service on:

[Unit]
Description=Ydotool Daemon
After=network.target

[Service]
Type=simple
User=root
Group=ydotool
ExecStart=/usr/bin/ydotoold --socket-perm=0660
Restart=on-failure

[Install]
WantedBy=multi-user.target

Muutosten jälkeen:

sudo systemctl daemon-reload
sudo systemctl enable --now ydotoold
sudo systemctl restart motion

Socketin oikeudet voi tarkistaa:

ls -l /tmp/.ydotool_socket

Tavoitteena on:

srw-rw---- 1 root ydotool ... /tmp/.ydotool_socket

Tällöin motion-käyttäjä saa käyttää daemonia, mutta socket ei ole avoin kaikille järjestelmän käyttäjille.

Toiminnan voi testata Motionin käyttöoikeuksilla:

sudo -u motion ydotool key 57:1 57:0

Jos näyttö on sammuksissa, sen pitäisi herätä.

Ubuntu-päivityksen jälkeen ilmennyt ydotoold-ongelma

Ubuntu-päivityksen jälkeen järjestelmässä oli samanaikaisesti kaksi ydotoold-prosessia:

kioski ... /usr/bin/ydotoold
root   ... /usr/bin/ydotoold --socket-perm=0660

Kioskikäyttäjän prosessi tuli paketista löytyvästä käyttäjäkohtaisesta systemd-palvelusta:

/usr/lib/systemd/user/ydotool.service

Palvelu oli otettu käyttöön globaalisti kaikille käyttäjille, joten se käynnistyi automaattisesti kioski-käyttäjän GNOME-istunnon mukana.

Tilanteen pystyi näkemään esimerkiksi:

sudo -u kioski XDG_RUNTIME_DIR=/run/user/1000 \
    systemctl --user status ydotool.service

Koska käytän omaa system-tason ydotoold.service-palvelua, ylimääräinen user-service poistettiin globaalista autostartista:

sudo systemctl --global disable ydotool.service

Tarkistus:

systemctl --global is-enabled ydotool.service

Tuloksen pitäisi olla:

disabled

Mahdollisesti jo käynnissä oleva käyttäjäkohtainen palvelu voidaan pysäyttää:

sudo -u kioski XDG_RUNTIME_DIR=/run/user/1000 \
    systemctl --user stop ydotool.service

Tämän jälkeen:

ps -eo user,pid,ppid,cmd | grep '[y]dotoold'

pitäisi näyttää vain system-tason daemon:

root ... /usr/bin/ydotoold --socket-perm=0660

Tämä korjasi myös tilanteen, jossa Motionin lokiin tuli:

failed to connect socket `/tmp/.ydotool_socket': Permission denied

Motion-palvelu

Motion aktivoidaan ja käynnistetään:

sudo systemctl enable --now motion

Tilan voi tarkistaa:

systemctl status motion

Lokista voi tarkistaa, että liiketapahtumat eivät aiheuta ydotool-virheitä:

journalctl -u motion -n 50 --no-pager

Jos Motionin ryhmäjäsenyyksiä tai ydotoold:n socket-oikeuksia muutetaan, Motion kannattaa käynnistää uudelleen:

sudo systemctl restart motion

Kioskikäyttäjän automaattinen kirjautuminen

Kone kirjautuu automaattisesti käyttäjän kioski GNOME-istuntoon.

Tiedostossa:

/etc/gdm3/custom.conf

on:

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=kioski

Autologin on kioskikoneessa kätevä, mutta sillä on yksi sivuvaikutus: käyttäjä ei anna kirjautumisen yhteydessä salasanaa, joten GNOME Keyringiä ei välttämättä pystytä avaamaan automaattisesti kirjautumissalasanalla.

Chromium kioskitilassa

Firefox osoittautui GNOME/Wayland-kioskikäytössä hankalaksi, joten selain on vaihdettu Chromiumiin.

Chromium käynnistyy käyttäjän GNOME-istunnossa kioskitilaan esimerkiksi:

/snap/bin/chromium \
    --kiosk \
    --no-first-run \
    --disable-infobars \
    --disable-session-crashed-bubble \
    --disable-features=TranslateUI \
    --enable-features=UseOzonePlatform \
    --ozone-platform=wayland \
    --force-device-scale-factor=0.95 \
    http://homeassistant.lan.ld:8123

Käynnistys voidaan tehdä esimerkiksi käyttäjän autostart-.desktop-tiedostosta.

Chromium Snap ja GNOME Keyring

Ubuntu-päivityksen jälkeen Chromium alkoi käynnistyessään näyttää ilmoituksen:

Authentication required

Enter password to unlock your login keyring
The password you use to log in to your computer no longer matches
that of your login keyring.

Kioskinäyttö toimi normaalisti, kun kysely peruttiin, mutta sama kysely tuli jokaisen rebootin jälkeen.

Syyksi osoittautui yhdistelmä:

  • GDM:n automaattinen kirjautuminen
  • GNOME Keyring
  • Chromium Snapin password-manager-service-liitäntä

Tilanteen voi tarkistaa:

snap connections chromium | grep password

Minulla tulos oli:

password-manager-service  chromium:password-manager-service  :password-manager-service  manual

Tällöin Chromiumilla on yhteys GNOME Keyringiin.

Koska tällä kioskikoneella Chromiumiin ei ole tarvetta tallentaa salasanoja GNOME Keyringin avulla, yhteyden voi katkaista:

sudo snap disconnect chromium:password-manager-service

Tämän jälkeen tarkistus näyttää:

password-manager-service  chromium:password-manager-service  -  -

Rebootin jälkeen Chromium ei enää yritä avata GNOME Keyringiä eikä salasanakyselyä tule.

Tarvittaessa liitännän saa takaisin:

sudo snap connect chromium:password-manager-service

Huomio: ilman GNOME Keyringiä Chromium ei tarjoa samaa suojattua paikallista salasanasäilytystä. Kioskikoneessa selaimeen ei siksi kannata tallentaa käyttäjätunnuksia tai salasanoja.

Kokonaisuus

Toimintaketju on siis:

  1. GDM kirjautuu automaattisesti kioski-käyttäjänä.
  2. Chromium käynnistyy Home Assistant -sivulle kioskitilassa.
  3. GNOME sammuttaa näytön 30 minuutin käyttämättömyyden jälkeen.
  4. Motion tarkkailee webbikameran kuvaa.
  5. Kun kamera havaitsee liikettä, Motion suorittaa:
/usr/bin/ydotool key 57:1 57:0
  1. ydotool lähettää näppäintapahtuman rootina toimivalle ydotoold-daemonille.
  2. /tmp/.ydotool_socket kuuluu ryhmälle ydotool, johon myös motion kuuluu.
  3. Virtuaalinen välilyöntinäppäimen painallus herättää GNOMEn sammuttaman näytön.
  4. Chromiumin Snap-paketin password-manager-service on irrotettu, jotta autologin ei aiheuta GNOME Keyring -salasanakyselyä.
  5. Paketista tuleva käyttäjäkohtainen ydotool.service on poistettu globaalista autostartista, jotta koneella ei käynnisty kahta keskenään kilpailevaa ydotoold-daemonia.

Raspberry Pi:n boottaaminen verkkolevyltä

Firmwaren päivitys

root@r4-02:/home/kilpiju1# rpi-update

Aktivoi PXE boot

Sarjanumero

root@R4-01:/nfs/root# cat /proc/cpuinfo | grep Serial | awk -F ’: ’ ’{print $2}’ | tail -c 9

Lisää NFS jaot

proc            /proc           proc    defaults          0       0
PARTUUID=6c76e89e-01  /boot           vfat    defaults          0       2
PARTUUID=6c76e89e-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

192.168.1.89:/mnt/Data/raspberry/rpi-pxe /nfs/root nfs defaults 0 0
192.168.1.89:/mnt/Data/raspberry/rpi-tftpboot /nfs/boot nfs defaults 0 0

Zigbee2MQTT ja Proxmox

Aiemmin ohjasin kaikki Zigbee-laitteitani yhdellä koordinaattorilla, mistä aiheutui ongelmia kun Zigbee laitteita oli paljon (~200). Aika ajoin laitteet putosivat Zigbee verkosta tai viestin kulussa oli useiden sekuntien viiveitä. En saanut selvitettyä juurisyytä ongelmiin, mutta hypoteeseina oli:

  • Koordinaattorin tilataulukolle varattu muisti loppui kesken
  • Joku zigbee silmukkaverkon (mesh network) reitittimistä (router) oli pullonkaula liikenteelle
  • Suuri laitteiden määrä samalla taajuudella aiheutti kilpatilanteita

Lopulta päädyin jakamaan yhden suuren verkon neljään pienempään joissa kussakin on 40-60 laitetta ja kullakin verkolla on käytössä oma kanava (kts. artikkeli ”Home Assistant – Zigbee verkon optimointi”)

Koska Home Assistant tukee ilman kikkailua, vain yhtä sisäistä Zigbee2MQTT siltaa, päädyin käyttämään Home Assistantin ulkopuolisia Zigbee2MQTT siltoja. Koska Home Assistant instanssini on virtuaalikone Proxmoxissa, oli helppoa luoda kullekin Zigbee2MQTT:lle oma Proxmox LXC kontti käyttäen valmista Proxmox VE Helper-Scriptiä (https://github.com/community-scripts/ProxmoxVE).

Zigbee2MQTT Proxmox LXC kontin asentaminen

  • Avaa Proxmoxin hallintasivu ja avaa Shell
  • Kirjoita komentoriville: bash -c ”$(wget -qLO – https://github.com/community-scripts/ProxmoxVE/raw/main/ct/zigbee2mqtt.sh)”

  • Valitse
    • ”Advanced Settings”
    • ”Debian”
    • ”Bookworm”
    • ”Privileged”
  • Aseta
    • Rootin salasana
    • Kontin ID
    • Hostin nimi
    • Levytilan koko (4GB)
    • Ytimien lukumäärä (2 kpl)
    • RAM (1024MB)
    • Silta (wmbr0)
    • Staattinen IP tai dhcp (dhcp)
    • APT-Cacher (jätä tyhjäksi)
    • Disabloi IPv6 (minulla ei ole IPv6:tta käytössä kotiverkoissa)
    • MTU size (jätä tyhjäksi)
    • DNS Search Domain (jätä tyhjäksi)
    • DNS Server IP (jätä tyhjäksi)
    • MAC (jätä tyhjäksi eli käytä proxmoxin arpomaa MAC:iä)
    • VLAN (jätä tyhjäksi, virtuaalilaneja ei ole kotiverkossani käytössä)
    • Custom tags (jätä oletukset)
    • Salli rootin ssh (Ei)
    • Verbose mode (Ei)

Kun konsolissa lukee ”Completed Succesfully”, voidaan siirtyä kontin konfigurointiin. Jos et ole asettanut kontille, kiinteää ip-osoitetta, vaan käytät DHCP-palvelua, kannattaa DHCP:hen määrittää staattinen ip-osoite. Tässä tapauksessa uusi kontti sai palomuurin DHCP palvelusta dynaamisen ip-osoitteen 192.168.100. Muuta osoite kiinteäksi DHCP-palvelussa ja reboottaa kontti (Huom! Älä reboottaa vhostia!), jolloin staattinen ip-osoite haetaan DHCP-palvelusta.

Kontin konfigurointi

Jos Zigbee-dongle oli liitettynä, kun asensit Zigbee2MQTT:n, ja LXC-kontti luotiin privilegoituna (privileged), skripti määrittää automaattisesti USB-läpiviennin kontille. Varmistaaksesi tämän ja selvittääksesi donglen sarjanumeron, avaa Proxmoxin shell ja anna seuraava komento:

ls -l /dev/serial/by-id

usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0 -> ../../ttyUSB1
usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0 -> ../../ttyUSB0

Tuloksesta nähdään, että Proxmox palvelimeen on kytkettynä kaksi USB koordinaattoria. Näiden lisäksi minulla on käytössä vielä kaksi SMLIGHT SLZB-06 koordinaattoria lähiverkossa. Näiden konfiguroinnista myöhemmin lisää.

Avaa äsken luodun kontin konsoli

ja avaa editoriin /opt/zigbee2mqtt/data/configuration.yaml tiedosto. Lisää/muuta tiedostoon punaisella korostetut kohdat.

version: 4
homeassistant:
enabled: tue
permit_join: false

frontend:
enabled: true
port: 8080 #Zigbee2MQTT hallintasivun portti

mqtt:
base_topic: zigbee2mqtt_garage #Anna kullekin Zigbee2MQTT instanssille oma base topic
server: mqtt://192.168.1.3:1883 #Homeassistant serverin ip ja MQTT palvelun portti
user: mqtt_user #Homeassistantin MQTT käyttäjätunnus
password: salasana #MQTT salasana
keepalive: 60
reject_unauthorized: true
version: 4

serial:
adapter: zstack
port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0
advanced:
pan_id: GENERATE
ext_pan_id: GENERATE
network_key: GENERATE
channel: 25 #Valitse kullekin koordinaattorille oma kanava

Käynnistä Zigbee2MQTT komennolla:
[root]# cd /opt/zigbee2mqtt && npm start

IKEAn laitteet ja Zigbee2MQTT

Vanhemmat IKEAn Zigbee laitteet, kuten langattomat kytkimet, saattavat lakata toimimasta kun Zigbee2MQTT päivitetään versioon 2.0.

Avaa Zigbee2MQTT:sta ”Settings”.

Zigbee2MQTT:n päivittäminen versiosta 1.xx versioon 2.0 kun käytössä koordinaattori, joka käyttää Texas Instrumentsin Z-Stack piirisarjaa

Ajan Zigbee2MQTT:tä Proxmoxissa LXC konttina, joka on luotu käyttäen Proxmox VE Helper-Scriptiä: https://community-scripts.github.io/ProxmoxVE/scripts?id=zigbee2mqtt

Ennen päivitystä ota varmuuskopio Zigbee koordinaattorin muistista.

Tämän jälkeen ”Backup” ja ”Download backup”.

Tämän jälkeen sammuta kontti Proxmoxissa ja ota siitä snapshot.

Tämän jälkeen käynnistä kontti uudelleen.

Päivittäminen tapahtuu avaamalla Proxmoxista konsoli ko. konttiin ja ajamalla /opt/zigbee2mqtt hakemistossa update.sh skripti.

Ennen skriptin ajoa siirrä konfiguraatiotiedosto talteen /tmp hakemistoon, sillä päivitys kaatuu koska konfiguraatiotiedosto on erilainen kuin mitä GITistä löytyy:
[root]# mv /opt/zigbee2mqtt/data/configuration.yaml /tmp

Aja päivitys:
[root]# cd /opt/zigbee2mqtt
[root]# ./update.sh

Koska update tulee kaatumaan virheeseen puuttuvasta npm:stä ja pnpm:stä, aja seuraavat komennot:
[root]# npm install
[root]# npm install -g pnpm

Tämän jälkeen aja päivitys:
[root]# ./update.sh

Tämän jälkeen kopioi configuration.yaml /tmp hakemistosta takaisin data hakemistoon ja poista data/configuration.example.yaml.

Etsi koguraatiotiedostosta kohta serial: ja lisää adapter: zstack:
serial:
adapter: zstack
port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_bcf4367f48b6ed11afa1de0ea8669f5d-if00-port0

adapter: zstack: Käytettävä Zigbee-adapteri on Texas Instrumentsin Z-Stack (yleistä esimerkiksi Sonoff Zigbee -tikuille).

Reboottaa kontti.

NodeRedin persistentit muuttujat

Oletusarvoisesti NodeRed pitää muuttujien arvot muistissa, joten jos NodeRed tai Home Assistant käynnistetään uudestaan, menetetään muuttujien arvot. Konfiguraatiomuutoksella voidaan muuttujien arvoja säilöä myös levylle, jolloin niiden arvot säilyvät restartin ylitse.

Home Assistantin NodeRed lisäosan konfiguraatiotiedosto löytyy polusta /root/addon_configs/a0d7b954_nodered/config.js. Ko. tiedoston editointi on helpointa käyttäen Home Assistantin lisäosaa (Add On) ”Advanced SSH & Web Terminal” ja käyttöjärjestelmän nano editoria.

Kun tiedosto on auki nano editorissa, siirry tiedoston loppuun kohtaan ennen lokimäärityksiä ja lisää seuraava määritys:

contextStorage: {
storeInFile: { module: ”localfilesystem”},
memoryOnly: { module: ”memory”},
default: ”memoryOnly”
},

Muutosten tallenuksen jälkeen reboottaa Home Assistant ja tämän jälkeen voit valita NodeRedissä esim. ”Change Node:ssa” mitä säilytyspaikkaa muuttujien arvoille käytetään.

Muuttujien arvot tallennetaan tiedostoon /root/addon_configs/a0d7b954_nodered/context/32cad8539d872c2e/flow.json esim. näin:

{
”harmo_finishing_time”: ”07:00:00”
}

Home Assistant Supervisor virheilmoitus konsolissa

Jos Supervisor ei käynnisty bootissa, vaan saat esim. seuraavanlaisen virheilmoituksen:”Supervisor: System is not ready with state: setup”, aja supervisorin korjausajo ja restartti.

ha > supervisor repair

ha > supervisor restart