Button toggle with web interface#

About#

A custom function to be used when configuring streams in mqttwarn. warntoggle makes it easy to toggle notifications “on” or “off” through a simple web interface.

Implementation#

  • mqttwarn.ini has a section [+/temperature], which applies to all MQTT messages received on matching topics. This section includes a filter, referring to a user-defined function.

  • When an MQTT message is received, the user-defined function is triggered.

  • The user-defined function checks a JSON file for the topic, and based on TRUE or FALSE setting, will return a message back to mqttwarn, to either allow the notification to happen or not.

  • If an MQTT topic was not found within the aforementioned JSON file, it will be added and set with a configurable default value.

  • For the user, an accompanying web script allows the toggle value to be changed.

Installation#

  • Copy the togglestate() function from mqttwarn/customfunctions.py to your own user-defined functions file, or copy the entire file and refer to it in mqttwarn.ini with a functions = 'customfunctions.py' directive.

  • Copy the content of the www folder to a web server on the same host as mqttwarn, ensure Python is enabled for the server, and warntoggle.json is writeable by the web server.

  • Create a symbolic link from /etc/mqttwarn/warntoggle.json to /var/www/html/warntoggle.json`, adjusted for your local situation. Alternatively, configure the filename inside the custom function where it now says ``filename = "warntoggle.json", to contain an absolute path.

  • For each stream you wish to be considered by warntoggle, add a line filter = togglestate() to mqttwarn.ini. This must be done inside each stream section.