Skip to content

Expose all events from an Amcrest device to an MQTT broker

License

Notifications You must be signed in to change notification settings

danclough/amcrest2mqtt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

amcrest2mqtt

A simple app to expose all events generated by an Amcrest device to MQTT using the python-amcrest library.

It supports the following environment variables:

  • AMCREST_HOST (required)
  • AMCREST_PORT (optional, default = 80)
  • AMCREST_USERNAME (optional, default = admin)
  • AMCREST_PASSWORD (required)
  • MQTT_USERNAME (required, unless using TLS client authentication)
  • MQTT_PASSWORD (optional, default = empty password)
  • MQTT_HOST (optional, default = 'localhost')
  • MQTT_QOS (optional, default = 0)
  • MQTT_PORT (optional, default = 1883)
  • MQTT_TLS_ENABLED (optional, default = false) - set to true to enable TLS server authentication
  • MQTT_TLS_INSECURE (optional, default = false) - disables TLS certificate verification - use with caution! Consider using MQTT_TLS_CA_CERT instead.
  • MQTT_TLS_CA_CERT (required if using TLS, unless MQTT_TLS_INSECURE is set) - path to the trusted CA certificate file
  • MQTT_TLS_CERT (required if using TLS client authentication) - path to the client's certificate file
  • MQTT_TLS_KEY (required if using TLS client authentication) - path to the client's private key file
  • HOME_ASSISTANT (optional, default = false)
  • HOME_ASSISTANT_PREFIX (optional, default = 'homeassistant')
  • STORAGE_POLL_INTERVAL (optional, default = 3600) - how often to fetch storage data (in seconds) (set to 0 to disable functionality)
  • DEVICE_NAME (optional) - override the default device name used in the Amcrest app

It exposes events to the following topics:

  • amcrest2mqtt/[SERIAL_NUMBER]/event - all events
  • amcrest2mqtt/[SERIAL_NUMBER]/doorbell - doorbell status (if AD110 or AD410)
  • amcrest2mqtt/[SERIAL_NUMBER]/human - human detection (if AD410)
  • amcrest2mqtt/[SERIAL_NUMBER]/motion - motion events (if supported)
  • amcrest2mqtt/[SERIAL_NUMBER]/config - device configuration information

Device Support

The app supports events for any Amcrest device supported by python-amcrest.

Home Assistant

The app has built-in support for Home Assistant discovery. Set the HOME_ASSISTANT environment variable to true to enable support. If you are using a different MQTT prefix to the default, you will need to set the HOME_ASSISTANT_PREFIX environment variable.

Running the app

The easiest way to run the app is via Docker Compose, e.g.

version: "3"
services:
    amcrest2mqtt:
        container_name: amcrest2mqtt
        image: ghcr.io/danclough/amcrest2mqtt:latest
        restart: unless-stopped
        environment:
            AMCREST_HOST: 192.168.0.1
            AMCREST_PASSWORD: password
            MQTT_HOST: 192.168.0.2
            MQTT_USERNAME: admin
            MQTT_PASSWORD: password
            HOME_ASSISTANT: "true"

Out of Scope

Multiple Devices

The app will not support multiple devices. You can run multiple instances of the app if you need to expose events for multiple devices.

Non-Docker Environments

Docker is the only supported way of deploying the application. The app should run directly via Python but this is not supported.

Home Assistant Addons

There are a couple of Home Assistant Addons that use my code to be able to port this software into Supervised versions of Home Assistant. I do not specifically support the add-ons themselves, only the base software in the original docker format. Please contact the authors of those add-ons for support if using that method.

https://github.com/ikifar2012/amcrest2mqtt-addon/blob/master/README.md Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.

https://github.com/robsonke/hassio-addons/blob/master/amcrest2mqtt/README.md Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.

About

Expose all events from an Amcrest device to an MQTT broker

Resources

License

Stars

Watchers

Forks

Languages

  • Python 98.1%
  • Dockerfile 1.9%