Chapter X

SmartHome

https://buanet.de/2019/05/iobroker-unter-docker-auf-der-synology-diskstation-v3/

docker run -d -p 8889:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /share/CACHEDEV1_DATA/Container/my_data/portainer_data:/data portainer/portainer
docker run -d -p 8088:8081 --name iobroker --restart always -v /share/CACHEDEV1_DATA/Container/my_data/iobroker_data:/opt/iobroker buanet/iobroker:latest

stoppt Recreate Pull latest Image

pas 14.03.2020

Unterabschnitte von SmartHome

MQTT

graph LR; A(Publisher) --> B{MQTT-Broker} B -->|subskribierende| D(Client) B -->|subskribierende| E(Client) B -.- F(Client)

Vom Publisher erhält der Broker Nachrichten und liefert sie an die subskribierende Clients aus.

Topics

Am Anfang und Ende eines Topics kein Level Separator ‘/’

Beispiel: haus/zimmer/sensor

Wildcards

+ -> Single-Level : haus/+/sensor

# -> Multi-Level : haus/zimmer/# haus/# oder alles #

Quality of Service

QoS 0

fire and forget

QoS 1

Wenn Nachricht zwingend beim Empfänger ankommen muss und Duplikate keinen Rolle spielen.

QoS 2

Wenn Nachricht zwingend beim Empfänger genau 1 mal ankommen muss.

Publish

Topics-Werte an Broker senden, mit Angabe von QoS-Level

Retain flag

Immer die letzte Nachricht zu einem Topic speichern und neuen Subscribierenden sofort zusenden.

Subscribe / Unsubscribe

Topics-Werte von Broker erhalten, mit Angabe von QoS-Level

Unsubscribe

Bezug von Topics-Werten beenden

Quellen:

https://opus.hs-offenburg.de/frontdoor/deliver/index/docId/2771/file/THESIS_MARIO_SALLAT.pdf

MQTT.fx

Zigbee

ConBee2

Installation

Raspbian

sudo gpasswd -a $USER dialout
wget -O - http://phoscon.de/apt/deconz.pub.key | sudo apt-key add -
sudo sh -c "echo 'deb http://phoscon.de/apt/deconz $(lsb_release -cs) main' > /etc/apt/sources.list.d/deconz.list"
sudo apt update
sudo apt install deconz

Der deCONZ.sevice kann bei Bedarf auch ohne Upnp support (Port:1900 Upnp) gestartet werden. Zum Beispiel weil Port 1900 schon belegt ist. Aktive Verbindungen können mit sudo netstat -unlp abgefragt werden.

sudo netstat -unlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State  PID/Program name
udp    70656      0 0.0.0.0:1900     0.0.0.0:*               1364/perl
udp        0      0 0.0.0.0:1900     0.0.0.0:*               1364/perl
...

Konfiguration bearbeiten: nano /lib/systemd/system/deconz.service and add –upnp=0

User=1000
ExecStart=/usr/bin/deCONZ -platform minimal --http-port=80 --upnp=0
Restart=on-failure
StartLimitInterval=60
...

Service automatisch starten:

systemctl enable deconz.service

Phoscon in Browser öffnen http://ip-adresse:80 Phoscon Phoscon

Esp32_8266

Lorem Ipsum.

Fhem

Backup auf Samba-Share

  • Netzfreigabe in Filesystem einhängen Edit /etc/fstab
//192.168.y.x/archiv/_ITConfigBackups/fhem/media/usb /media/usb cifs user=xxx,password=xxx,uid=fhem,gid=pi,x-systemd.automount 0 0
  • Manuell mount
  • Test mount nach reboot

Unterabschnitte von Fhem

Fhem als Dockercontainer betreiben

in arbeit in arbeit

docker-compose.yml

...

  fhemTUI:
    image: fhem/fhem:latest
    restart: always
    volumes:
      - ./fhemTUI/data/:/opt/fhem/
    ports:
      - "8083:8083"
    networks:
      - fhem-network
    environment:
      FHEM_UID: 6061
      FHEM_GID: 6061
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Zurich
      # CONFIGTYPE: configDB
...
Quellen:

https://hub.docker.com/r/fhem/fhem/tags?page=1&ordering=last_updated

Homebrige

Installation auf Raspberry Pi (rasbian-jessie)

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt update; sudo apt upgrade
nodejs --version
python --version
g++ --version
sudo apt-get install python g++ libavahi-compat-libdnssd-dev

sudo npm install -g --unsafe-perm homebridge
sudo npm install -g homebridge-fhem

sudo npm -g outdated
sudo npm -g update homebridge
sudo npm -g update homebridge-fhem

sudo useradd -m -c "Homebridge Service" -s /bin/bash -G audio,bluetooth,dialout,gpio,systemd-journal,video homebridge
sudo visudo -f /etc/sudoers.d/homebridge

homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /usr/local/bin/node

sudo chmod 640 /etc/sudoers.d/homebridge

sudo mkdir -p /var/homebridge
sudo nano /var/homebridge/config.json
evtl. “username”: “CC:22:3D:E3:CE:30”, auf “username”: “CC:22:3D:E3:CE:31”
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "platforms": [
        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "filter": "room=Homekit"
        }
     ],
    "accessories": []
}
sudo chown -R homebridge:homebridge /var/homebridge

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

[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target


sudo nano /etc/default/homebridge

# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-I -U /var/homebridge

# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*


sudo systemctl daemon-reload

sudo systemctl enable homebridge

Test deamon start/restart

sudo systemctl restart homebridge; sudo journalctl -fau homebridge

Mapping

Beispiel Dummyschalter ja/nein > on/off

  1. attr <device> siriName <name>
  2. attr <device> genericDeviceType switch
  3. attr <device> homebridgeMapping On=ja=state,valueOff=nein,valueOn=ja,cmdOff=nein,cmdOn=ja

Config ui

Baustelle ab hier in arbeit in arbeit

https://github.com/oznu/homebridge-config-ui-x

sudo npm install -g --unsafe-perm homebridge-config-ui-x

Quellen: