# System commands (ESP only) ## Restart the ESP `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"cmd":"restart"}'` ::: tip With Home Assistant, this command is directly avalaible through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list. ::: ## Erase the ESP settings `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"cmd":"erase"}'` ::: tip With Home Assistant, this command is directly avalaible through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list. ::: ## Retrieve current status of the ESP `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"cmd":"status"}'` ## Auto discovery You can deactivate the MQTT auto discovery function, this function enable to create automaticaly devices/entities with Home Assistant convention. ### Deactivate `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"discovery":false}'` ### Activate `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"discovery":true}'` If you want the settings to be kept upon gateway restart, you can publish the command with the retain flag. ::: tip Auto discovery is enable by default on release binaries, on platformio (except for UNO). With Arduino IDE please read the [advanced configuration section](../upload/advanced-configuration#auto-discovery) of the documentation. ::: ## Change the WiFi credentials `mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{"wifi_ssid":"ssid", "wifi_pass":"password"}'` ::: tip If the new connection fails the gateway will fallback to the previous connection. ::: ## Change the MQTT broker credentials ``` mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{ "mqtt_user": "user_name", "mqtt_pass": "password", "mqtt_server": "host", "mqtt_port": "port", "mqtt_secure": "false" }' ``` ::: info By default this function is not available on the pre built binary of RFBridge, in order to have less code size and enable to have OTA update working properly. So as to enable it remove from the rf bridge env: ``` build_flags = '-UMQTTsetMQTT' ``` Arduino boards does not have this function per default also, to add it: ``` build_flags = '-DMQTTsetMQTT' ``` ::: ::: tip Server, port, and secure_flag are only required if changing connection to another broker. If the new connection fails the gateway will fallback to the previous connection. ::: ## Change the MQTT main topic and or gateway name ``` mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{ "mqtt_topic": "topic/", "gateway_name: "name" }' ``` ::: info This will change the subscribed and published mqtt_topic/gateway_name that the gateway uses. No parameters are manditory, the current topic or gateway name will be used if not supplied. ::: ## Switching brokers and using self signed and client certificates In the `user_config.h` file it is possible to specify multiple MQTT brokers and client certificates. These are commonly self signed and are supported by defining `MQTT_SECURE_SELF_SIGNED` as true or 1. Additonally, support for multiple brokers and client certificates has been added. To use this, it is required that the server certificate, client certificate, and client key are provided as their own constatnt string value as demonstrated in the file. To add more than one broker and switch between them it is necessary to provide all of the relevant certificates/keys and add their respective variable names in the `certs_array` structure, as shown in `user_config.h`, and changing the array size to the number of different connections -1. To switch between these servers with an MQTT command message, the format is as follows: ``` mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m '{ "mqtt_user": "user", "mqtt_pass": "password", "mqtt_server": "host", "mqtt_port": "port", "mqtt_secure": "true", "mqtt_cert_index":0 }' ``` ::: tip The `mqtt_cert_index` value corresponds to the 0 to X index of the `certs_array` in `user_config.h`. ::: # Firmware update from MQTT (ESP only) The gateway can be updated through an MQTT message by providing a JSON formatted message with a version number, OTA password (optional, see below), and URL to fetch the update from. To enable this functionality, `MQTT_HTTPS_FW_UPDATE` will need to be defined or the line that defines in in user_config.h will need to be uncommented. ::: tip If using an unsecure MQTT broker it is **highly recommended** to disable the password checking by setting the macro `MQTT_HTTPS_FW_UPDATE_USE_PASSWORD` to 0 (default is 1 (enabled)), otherwise a clear text password may be sent over the network. The `server_cert` parameter is optional. If the update server has changed or certificate updated or not set in `user_config.h` then you can provide the certifiate here. ::: ### Example firmware update message: ``` mosquitto_pub -t "home//commands/firmware_update" -m '{ "version": "test", "password": "OTAPASSWORD", "url": "https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.7/esp32dev-ble-firmware.bin", "server_cert": "-----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE-----"}' ``` A bash script is available [here](ota_command_cert.zip) to simplify the use of the `server_cert` parameter. ::: warning The pre-built binaries for **rfbridge** and **avatto-bakeey-ir** have the above WiFi and MQTT broker credentials and the Firmware update via MQTT options disabled. This is due to the restricted available flash, so as to still be able to use OTA firmware updates for these boards. ::: # State LED usage The gateway can support up to 3 LED to display its operating state: * LED_INFO switched ON when network and MQTT connection are OK 5s ON, 5s OFF when WIFI is disconnected 1s ON, 4s OFF when MQTT is disconnected * LED_RECEIVE Blink for `TimeLedON` 1s when the gateway receive a signal from one of its module so as to send to MQTT * LED_SEND Blink for `TimeLedON` 1s when the gateway send a signal with one of its module from an MQTT command