Při experimentech s mikrokontrolérem ESP8266 jsem řešil, jak přes toto zařízení dostat na PC (případně na jiný ESP či mobil) indikaci otevření, zavření vchodových dveří. Takže čidlo na dveře, ESP8266 do krabičky, ESP při otevření, zavření dveří pošle krátkou zprávu na lokální domácí internetový server, kde zprávu zpracuje php skript a uloží do předem určeného souboru. Krátký program vytvořený pomocí Visual C hlídá změnu obsahu tohoto souboru a při změně zobrazí zda jsou dveře otevřeny či zavřeny. Takže na ploše mám toto okénko.
Báječné. Funguje to. Ale... co když chci upozornění na jiné zařízení, třeba na jiné ESP, mobil, jiný počítač?
Tak jsem narazil na MQTT.
MQTT nebo Message Queue Telemetry Transport je lehký, kompaktní a otevřený protokol výměny dat určený pro přenos dat na vzdálená místa, kde je vyžadována malá velikost kódu a existují omezení šířky pásma. Tyto výhody umožňují jeho použití v systémech M2M (machine-to-machine) a IIoT Systems (Industrial Internet of Things).
Takže čidlo s esp pošle signál na BROKER do určeného TOPIC např. LocalDoor01, jiné zařízení sleduje toto topic a při změně stavu se rozsvítí, zhasne kontrolka, panel na PC změní barvu, zařve appka na mobilu nebo cokoliv jiného co komunikuje s brokerem.
Broker - server s protokolem MQTT - na PC lze použít Mosquitto (musíme mít rozchozený webový server s php) a také nastavit conf soubor v Mosquittu. Pro domácí experimenty v lokální síti nebudu používat přihlašování a kódování.
#listener
allow_anonymous true
listener 1883 0.0.0.0
Paráda. První experimenty a trochu kódu v Arduino IDE. Pro sledování aktivity Brokeru, posílání zpráv atd., jsem stáhnul MQTT-Explorer.
První příklad je z knihovny MQTT pro Arduino IDE
A komunikaci sleduji přes MQTT Explorer
No jo, ale mít puštěné PC jen kvůli brokeru? Tak jinak. Broker šoupneme jinam. Jdu na to.