Om MQTT, användning via Arduino IDE och installation på linux

Programmering och relaterade frågor om man använder linux-plattformar som Ubuntu, Linux Mint, Debian, Fedora...
Användarvisningsbild
hanpa
Inlägg: 116
Blev medlem: tor 18 maj 2017, 20:11

Om MQTT, användning via Arduino IDE och installation på linux

#1

Inläggav hanpa » fre 19 maj 2017, 07:30

MQTT står för MQ Telemetry Transport, alternativt Message Queue Telemetry Transport. Man kan läsa mer om detta på https://en.wikipedia.org/wiki/MQTT eller http://mqtt.org.

Jag använder numera mest MQTT istället för http för att kommunicera med mina kort som är anslutna till min server och via den till internet, appar etc. En anledning var att jag fick problem med ESP8266, p.g.a. en bugg i TCP/IP-stacken så kraschar den om man skickar data för ofta. MQTT är ett annat sätt att kommunicera dubbelriktat mellan kortet och servern, där servern kan ligga i lokala nätverket såväl som ute i molnet.

Jag använder https://github.com/knolleary/pubsubclient i mina projekt, man kan se i mina projekt hur jag tar in detta i koden via programmering för ESP8266 via Arduino IDE. Ett exempel finns här, med avläsning av elmätaren och data skickas till min linuxserver via MQTT. I andra riktningen kan jag skicka data från linuxservern tillbaka till ESP8266 för att ställa "räkneverket" så att kortet har samma uppfattning om elmätaren som det står på displayen:
Avläsning av S0-utgången på elmätare

Här kommer en guide för installation av Mosquitto för Ubuntu linux. Mosquitto är en s.k. message broker som vidarebefordrar meddelanden mellan klienter. Alltså att en utrustning i nätverket kan kontakta brokern för att skicka uppdaterade data, andra anslutna klienter kan prenumerera på data och får då automatiskt alla uppdateringar från den som skickar nya, detta kallas att publicera data.

Om Mosquitto: https://mosquitto.org

Installation av Mosquitto på Ubuntu Linux
Detta kommer ursprungligen från http://wingsquare.com/blog/setting-up-m ... ntu-linux/ men jag har översatt till svenska och kompletterat en smula

1. Logga in med root-privilegier (sudo)

2. Lägg till mosquitto repos

$sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
$sudo apt-get update

3. Installera paket för broker, dev (för att skapa klienter) och clients (för klient på linux)

$sudo apt-get install mosquitto
$sudo apt-get install libmosquitto-dev
$sudo apt-get install mosquitto-clients

4. Kolla att brokern fungerar

$sudo service mosquitto status

Så här ser det ut när jag kör detta kommando:

Kod: Markera allt

mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto; bad; vendor preset: enabled)
   Active: active (running) since fre 2017-05-12 21:37:34 CEST; 6 days ago
     Docs: man:systemd-sysv-generator(8)
  Process: 839 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mosquitto.service
           └─1083 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

5. Testa genom att använda ett topic (ämne) och skicka från en klient i ett terminalfönster, till en annan klient som prenumererar på samma topic i ett annat. Bägge kommunicerar via brokern.

topic kan vara vad som helst, man hittar på ett lämpligt namn. Jag använder ämnet "temperatur" i exemplet

5.1 Öppna ett nytt terminalfönster för att prenumerera på ämnet

$mosquitto_sub -h localhost -t "temperatur" -v

Klienten mosquitto_sub prenumererar nu på topic "temperatur" och väntar på att det kommer en uppdatering om detta

5.2 Öppna ett nytt terminalfönster för att via en annan klient publicera information om ämnet

$mosquitto_pub -h localhost -t "temperatur" -m "22 grader"

Nu kommer meddelandet upp i första klienten.

$ temperatur 22 grader

Återgå till "linux"

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst