mysensorsbootloader2mqtt

A Firmware Uploading Tool for the MySensors Bootloader via MQTT
Installation
Via Docker
docker run -d --name="mysensorsbootloader2mqtt" -v /etc/localtime:/etc/localtime:ro mannkind/mysensorsbootloader2mqtt
Via Make
git clone https://github.com/mannkind/mysensorsbootloader2mqtt
cd mysensorsbootloader2mqtt
make
./mysensorsbootloader2mqtt
Configuration
Configuration happens via environmental variables
MYSENSORS_SUBTOPIC - [OPTIONAL] The MQTT topic on which to subscribe, defaults to "mysensors_rx"
MYSENSORS_PUBTOPIC - [OPTIONAL] The MQTT topic on which to publish, defaults to "mysensors_tx"
MYSENSORS_AUTOID - [OPTIONAL] The flag that indicates MySensorsBootloader should handle ID requests, defaults to false
MYSENSORS_NEXTID - [OPTIONAL] The number on which to base the next id, defaults to 1
MYSENSORS_FIRMWAREBASEPATH - [OPTIONAL] The path to the firmware files, defaults to "/config/firmware"
MYSENSORS_NODES - [OPTIONAL] The nodes configuration (see below)
MQTT_CLIENTID - [OPTIONAL] The clientId, defaults to "DefaultMySensorsBootloaderClientID"
MQTT_BROKER - [OPTIONAL] The MQTT broker, defaults to "tcp://mosquitto.org:1883"
MQTT_USERNAME - [OPTIONAL] The MQTT username, default to ""
MQTT_PASSWORD - [OPTIONAL] The MQTT password, default to ""
The file referenced by MYSENSORS_NODES might look something like the following
default: {
type: 1,
version: 1
}
1: { type: 1, version: 1 }
2: { type: 3, version: 1 }
3: { type: 1, version: 2 }
4: { type: 1, version: 1 }
5: { type: 2, version: 3 }
The firmware a node is using is a combination of a type
and a version
. The priority of the firmware used is based on the following:
- A type/version assigned to the node in the config.yaml file
- The requested type/version sent in the configuration request
- The default firmware setup in the config.yaml file
The location of the firmware picked is relative to the control['firmwarebasepath']
setting in config.yaml.
E.g. /path/to/configfolder/firmware/_type/version/firmware.hex
$ find /path/to/config_folder/firmware
/path/to/config_folder/firmware/3
/path/to/config_folder/firmware/3/1
/path/to/config_folder/firmware/3/1/firmware.hex
/path/to/config_folder/firmware/2
/path/to/config_folder/firmware/2/1
/path/to/config_folder/firmware/2/1/firmware.hex
/path/to/config_folder/firmware/2/2
/path/to/config_folder/firmware/2/2/firmware.hex
/path/to/config_folder/firmware/2/3
/path/to/config_folder/firmware/2/3/firmware.hex
/path/to/config_folder/firmware/1
/path/to/config_folder/firmware/1/1
/path/to/config_folder/firmware/1/1/firmware.hex
/path/to/config_folder/firmware/1/2
/path/to/config_folder/firmware/1/2/firmware.hex