diff --git a/config.schema.yml b/config.schema.yml index 8eec9d4dc8625ef884e9c94b7896d4e4306f3d35..5ebb7f1fd8519c75e02faf07e19d23d6ba85ea0e 100644 --- a/config.schema.yml +++ b/config.schema.yml @@ -128,4 +128,8 @@ digital_outputs: off_payload: type: string required: no - empty: no \ No newline at end of file + empty: no + inverted: + type: boolean + required: no + default: no \ No newline at end of file diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py index 095657dc338852962f7bef40ccdc72a8f758a540..5980bc9370cee7766abde701941bbae78c6dd13e 100644 --- a/pi_mqtt_gpio/server.py +++ b/pi_mqtt_gpio/server.py @@ -131,12 +131,13 @@ def set_pin(output_config, value): :rtype: NoneType """ gpio = GPIO_MODULES[output_config["module"]] - gpio.set_pin(output_config["pin"], value) + set_value = not value if output_config["inverted"] else value + gpio.set_pin(output_config["pin"], set_value) _LOG.info( "Set %r output %r to %r", output_config["module"], output_config["name"], - value) + set_value) payload = output_config["on_payload" if value else "off_payload"] client.publish( "%s/%s/%s" % (topic_prefix, OUTPUT_TOPIC, output_config["name"]),