A l’aide d’un routeur mikrotik, et d’un serveur MQTT, nous allons mettre à jour un topic indicateur de présence.
Etant donné qu’il n’y a pas de client mqtt dans le mikrotik, nous allons devoir passer par une passerelle http_to_mqtt
Le scénario
Le scénario est simple:
Le mikrotik surveille une adresse IP, à l’aide de l’outil netwatch.
Lorsque l’adresse est accessible, on exécute un script qui va envoyer des paramètres spécifiques à la passerelle http_to_mqtt.
Cette passerelle va alors communiquer avec le serveur mqtt et mettre à jour l’indicateur de présence.
Script Mikrotik
/tool netwatch add down-script="/tool fetch mode=http address=mqtt.serveur.com src-path=(\"/get\?key=apikey&topic=presence/qnap&message=down\") dst-path=\"/netwatch\" \ port=5000 host=mqtt.serveur.com" host=192.168.0.9 interval=20s up-script="/tool fetch mode=http address=mqtt.serveur.com src-path=(\"/get\?key=apikey\ &topic=presence/qnap&message=up\") dst-path=\"/netwatch\" port=5000 host=mqtt.serveur.com"
HTTP_to_MQTT
Le script original, modifié pour la cause pour recevoir des requêtes http GET, va traiter la commande et envoyer au serveur mqtt le message correspondant.
Le script est disponible sur github
MQTT
Le serveur est basé sur le traditionnel mosquitto