Skip to main content

Check if you (or your phone) is at home and notify your smarthome via mqtt!

Project description

mqtt-presence-checker

Check if you (or your phone) is at home and notify your smarthome via mqtt. You can configure this daemon via a toml file in /etc/mqtt-presence-checker/mqtt-presence-checker.conf.

/etc/mqtt-presence-checker/mqtt-presence-checker.conf:

[main]
cooldown = 10
log = "/var/log/mqtt-presence-checker.log"

[mqtt]
host = "mqtt.example.org"
username = "<username>"
password = "<password>"
topic = "presence-checker/presence"

[mqtt.sensor.door-sensor]
topic = "zigbee2mqtt/door_sensor"
predicate = "lambda x: not x['contact']"

[ping]
hosts = [
    'alice.example.org',
    'bob.example.org'
]

This is rather rudimentary and might crash or behave strange. Feel free to fork me on github and send a PR if you find any bug!

Install with docker

Run with docker:

docker run \
    --cap-add net_raw \
    --cap-add net_admin \
    --name mqtt-presence-checker  \
    --restart unless-stopped \
    -v /etc/mqtt-presence-checker/:/etc/mqtt-presence-checker/ \
    --label io.containers.autoupdate=registry \
    -d docker.io/rincewindwizzard/mqtt-presence-checker:latest

You can also configure systemd to create the containers using

$ podman generate systemd --restart-policy=always --new -n -t 1 mqtt-presence-checker > /etc/systemd/system/container-mqtt-presence-checker.service
$ systemctl enable container-mqtt-presence-checker.service

Which results in the following systemd unit:

# container-mqtt-presence-checker.service
# autogenerated by Podman 3.4.4
# Sat Oct 29 17:08:56 UTC 2022

[Unit]
Description=Podman container-mqtt-presence-checker.service
Documentation=man:podman-generate-systemd(1)
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=always
TimeoutStopSec=61
ExecStartPre=/bin/rm -f %t/%n.ctr-id
ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --replace --cap-add net_raw --cap-add net_admin --name mqtt-presence-checker -v /etc/mqtt-presence-checker/:/etc/mqtt-presence-checker/ --label io.containers.autoupdate=registry -d docker.io/rincewindwizzard/mqtt-presence-checker:latest
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all

[Install]
WantedBy=default.target

Now everytime

$ podman auto-update

is called, the latest container image is redeployed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mqtt_presence_checker-0.1.18.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

mqtt_presence_checker-0.1.18-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file mqtt_presence_checker-0.1.18.tar.gz.

File metadata

  • Download URL: mqtt_presence_checker-0.1.18.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.4 Linux/5.15.0-52-generic

File hashes

Hashes for mqtt_presence_checker-0.1.18.tar.gz
Algorithm Hash digest
SHA256 e6111ba2c1fb027509d53d5040fe11bb19f6df226b08b2c06c0fe0c0394ba08c
MD5 dedd913a7ffd9bd63724edeb7fa9d7d5
BLAKE2b-256 6446089fac2fdb24156f8fd03d8e03aa7956b348e1b0ffb50dde75236f4b2b73

See more details on using hashes here.

File details

Details for the file mqtt_presence_checker-0.1.18-py3-none-any.whl.

File metadata

File hashes

Hashes for mqtt_presence_checker-0.1.18-py3-none-any.whl
Algorithm Hash digest
SHA256 caa107593654177d5ae78f0a57d5be399984baba91ca656f8886ad09b50b99d3
MD5 cbcbf16852abbc2c354bbc45ef0b1938
BLAKE2b-256 7e85f391297d25421534633d5d48bef1dbb3e886a47b8c8c134d1d05afe1f4e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page