Ich nutze seit kurzem Flic 2 Buttons um kleine Automatisierungen mit einem Klick auf einen Knopf auszulösen. Damit es unabhängig von meinem Handy funktioniert war klar, dass ich es mit einem Raspberry Pi Zero W verbinden wollte.

Dafür gibt es einen extra daemon, welchen man unter: https://github.com/50ButtonsEach findet. Die Files habe ich mit

cd /opt
git clone https://github.com/50ButtonsEach/fliclib-linux-hci.git

in /opt/fliclib-linux-hci gecloned. (Falls Ihr es woanders ablegt, bitte unten im unit File entsprechend abändern!)

Leider fehlt eine konkrete Beschreibung, wie man diesen mit dem Systemstart ausführt. Einfach in /etc/rc.local eintragen war zwar eine simple Idee, praktisch funktioniert das aber unzuverlässlich, da nicht garantiert ist, dass notwendige Dienste auf dem Raspberry Pi bereits gestartet sind. Also habe ich eine einfache systemd unit dafür geschrieben (bzw. abgeschaut von https://github.com/50ButtonsEach/fliclib-linux-hci/issues/39), mit der richtigen Abhängigkeit:

File: /etc/systemd/system/flic.service:

[Unit]
Description=flicd Service
Requires=hciuart.service
After=hciuart.service

[Service]
ExecStart=/opt/fliclib-linux-hci/bin/armv6l/flicd -f /opt/fliclib-linux-hci/bin/armv6l/flic.sqlite3 -s 0.0.0.0
EnvironmentFile=-/etc/default/flicd
Type=simple

[Install]
WantedBy=multi-user.target

Wichtig ist vorher noch den bluetooth service zu deaktivieren: systemctl disable bluetooth

und danach den neuen flic service zu aktivieren: systemctl enable flic

Ich hoffe ich habe Euch damit etwas Suche erspart, da ich erstmal darauf kommen musste, dass die Startreihenfolge das Problem ist.