MQTT - komunikace senzorů a relé v domácí automatizaci

MQTT Senzory

Standardizovaný a jednoduchý komunikační protokol pro IoT

MQTT je založen na principu subscribe/publish. Každý senzor, relé, arduino posílá nebo poslouchá určité typy zpráv (topic) a jejích obsah (message) v síti. Publisher nevysílá zprávu konkrétnímu zařízení, ale celé síti. Pokud někdo v síti odebírá (subscribe) stejný topic jako poslal publisher, dostane danou message a může na základě ní provést nějakou akci.

Níže si ukážeme jak nakonfigurovat položky v OpenHAB pro odesílání a poslouchání MQTT.

 

OpenHAB

Nejdříve musíme MQTT v OpenHAB nainstalovat. Připojíme se opět přes SSH příkazem (návod na konci článku OpenHAB). Zadejte:

sudo openhabian-config

a vyberte volbu Optional Components -> Mosquitto.

Mosquitto OpenHAB

 

Potvrďte Continue a vyplňte heslo pro MQTT, které budou muset znát zařízení pro komunikaci s MQTT Brokerem. Po chvíli se MQTT nainstaluje. Přejděte na webovou stránku vašeho OpenHAB a vyberte Paper UI. V sekci Add-ons -> Actions zvolte install u položky MQTT Action. V sekci Add-ons -> Bindings pak zapněte položku MQTT Binding.

MQTT Activation OpenHAB

Posledním krokem je úprava konfiguračního souboru mqtt.cfg. Musíme do něj přidat adresu MQTT Brokera a user/password,  aby do něj měl OpenHAB přístup. Soubor najdete ve sdílené složce OpenHAB pod složkou services. Měl by vypadat následovně.

#
# Define your MQTT broker connections here for use in the MQTT Binding or MQTT
# Persistence bundles. Replace <broker> with an ID you choose.
#

# URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883
mosquitto.url=tcp://localhost:1883


# Optional. Client id (max 23 chars) to use when connecting to the broker.
# If not provided a random default is generated.
#<broker>.clientId=<clientId>

# Optional. True or false. If set to true, allows the use of clientId values
# up to 65535 characters long. Defaults to false.
# NOTE: clientId values longer than 23 characters may not be supported by all
# MQTT servers. Check the server documentation.
#<broker>.allowLongerClientIds=false

# Optional. User id to authenticate with the broker.
mosquitto.user=openhabian

# Optional. Password to authenticate with the broker.
mosquitto.pwd=openhabian

# Optional. Set the quality of service level for sending messages to this broker.
# Possible values are 0 (Deliver at most once),1 (Deliver at least once) or 2
# (Deliver exactly once). Defaults to 0.
#<broker>.qos=<qos>

# Optional. True or false. Defines if the broker should retain the messages sent to
# it. Defaults to false.
#<broker>.retain=<retain>

# Optional. True or false. Defines if messages are published asynchronously or
# synchronously. Defaults to true.
#<broker>.async=<async>

# Optional. Defines the last will and testament that is sent when this client goes offline
# Format: topic:message:qos:retained <br/>
#<broker>.lwt=<last will definition>

 

Upravte také soubor *.items v adresáři OpenHAB, u mě například domek.items co jsme vytvořili v Home Builderu. Musíme zde uvést jaký topic budeme posílat a obsah zprávy. Sekce "Kitchen" přepsaná do MQTT může vypadat nějak takto:

OpenHAB MQTT  Items

 

Test MQTT

Otestování je poměrně jednoduché, v terminálu openhabianu vpíšeme příkaz, kde budeme odposlouchávat zprávy typu (topic) rele:

mosquitto_sub -t rele -u openhabian -P openhabian

Přejdeme do webového rozhraní OpenHAB Basic UI a zkusíme v Kitchen rozsvítit světlo. Měli bychom v terminálu vidět zaznamenanou tuto akci:

MQTT test

Hodnocení článku
Zatím nehodnoceno

Upozornění

Vlastník a autor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku chyb v postupech a informacích zde uvedených. Předkládané informace mají informativní charakter. Kdokoliv použije jakoukoliv část informací z těchto stránek, plně zodpovídá za bezpečnost a dopad takto provedené instalace.  Nároky na odškodnění jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků.