Table of Contents

MQTT vahendaja

Sellel lehel selgitatakse, kuidas muuta oma Raspberry Pi 3/3+ vahendajaks koos WiFi pääsupunktiga. Kui Raspberry Pi töötab pääsupunktina, ei ole vaja täiendavat ruuterit.

Saate alla laadida korrektse konfiguratsiooniga AP ja MQTT vahendaja kettatõmmise siit:

Raspberry Pi broker SD card image

Juhend kuvatõmmise paigaldamiseks on siin. Kettatõmmis on tehtud 16 GB või suuremale micro-SD kaardile. Lihtsaim viis Linuxis on alla laadida zip-fail, pakkida see lahti ja Startu Disk Creator abil kirjutada see uuele SD-kaardile.

Kui olete kettatõmmise SD-kaardile kopeerinud, sisestage see oma Raspberry Pi-sse ja seejärel ühendage toitekaabel (micro USB). Wifi-AP ja MQTT teenused käivituvad automaatselt.

Teenuste töö kontrollimiseks ühendage Raspberry Pi arvuti ekraani ja klavitatuuriga või logige sisse teisest arvutist üle SSH.

Terminali kaudu saate kinnitada, kas MQTT vahendaja töötab. Selleks avage terminali aken ja sisestage

mosquitto_sub -t "mytopic"

Seejärel avage teine terminali aken ja sisestage

mosquitto_pub -t "mytopic" -m "This is my message"

Kui esimesse aknasse ilmus teie poolt sisestatud sõnum, siis MQTT vahendaja teenus töötab.

Kui see töötab, peaksite järgmisena proovima ühendada oma sülearvuti (või muu seadme) Raspberry'ga üle Wifi ja testida sõnumite avaldamist ja tellimist sellega. Kasutage mõnda MQTT kliendirakendust või brauseri laiendust. WiFi vaikimisi nimi ja parool on allpool.

NB!! Vältige Raspberry väljalülitamist toitejuhtme eemaldamise teel, kuna see võib põhjustada SD-kaardi rikkumise. Raspberry tuleks alati välja lülitada GUI kaudu või terminali kaudu kirjutades sudo shutdown now (kasutades ekraani ja klaviatuuri või SSH). Raspbiani uuendamine võib algse süsteemi töö lõpetada. Arvestage sellega uuendamisel ja hoidke koopiat olulistest konfiguratsioonifailidest või algsest süsteemist.

Paroolid ja muu teave Raspberry vahendaja jaoks

Raspberry Pi IP-aadress (vahendaja ja SSH jaoks):

192.168.4.1

Port MQTT vahendaja jaoks (ilma paroolita): 1883

Raspberry sisselogimine (SSH):

kasutajanimi: pi

parool: raspberry

Raspberry Wifi pääsupunkt:

ssid: raspberryIoT

parool: piIoT123

Testimine

Selleks, et testida, kas kõik töötab, kasutage IoT Basic komplekti.

Ühendage üks Kontrolleri moodul Nupu mooduliga ja laadige sellele moodulile üles järgmine testkood:

Raamatukogud platformio.ini-s

lib_deps = ITTIoT, blackketter/Switch

Lähtekood

#include <Arduino.h>
#include <ittiot.h>
#include <Switch.h>
 
#define MODULE_TOPIC "rgb"
const byte buttonPin = D3;
 
Switch button = Switch(buttonPin);
 
void iot_connected()
{
  iot.log("Button online!");
}
 
void setup()
{
  iot.setConfig("wname", "raspberryIoT");
  iot.setConfig("wpass", "piIoT123");
  iot.setConfig("msrv", "192.168.4.1");
  iot.setConfig("mport", "1883");
  iot.setup(); 
}
 
void loop()
{
  iot.handle(); 
  button.poll();
 
  if (button.released()) {
    iot.log("Released");
    iot.publishMsgTo(MODULE_TOPIC,"255;0;0",0);
  }
  if (button.pushed()) {
    iot.log("ButtonPushed");
    iot.publishMsgTo(MODULE_TOPIC,"0;255;0",0);
  }
 
  delay(3);
}

siis ühendage teine Kontrolleri moodul RGB mooduliga ja laadige üles järgmine kood:

Raamatukogud platformio.ini-s

lib_deps = ITTIoT, Adafruit NeoPixel

Lähtekood

#include <Arduino.h>
#include <ittiot.h>
#include <Adafruit_NeoPixel.h>
 
#define MODULE_TOPIC "rgb"
#define PIN            D2
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);
 
String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length()-1;
 
  for(int i=0; i<=maxIndex && found<=index; i++)
  {
    if(data.charAt(i)==separator || i==maxIndex)
    {
        found++;
        strIndex[0] = strIndex[1]+1;
        strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }
  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}
 
void iot_received(String topic, String msg)
{
  if(topic == MODULE_TOPIC)
  {
    String r = getValue(msg,';',0);
    String g = getValue(msg,';',1);
    String b = getValue(msg,';',2);
    pixels.setPixelColor(0, r.toInt(), g.toInt(), b.toInt()); 
    pixels.show(); 
  }
}
 
void iot_connected()
{
  iot.subscribe(MODULE_TOPIC);
  iot.log("IoT NeoPixel example!");
}
 
void setup()
{
  iot.setConfig("wname", "raspberryIoT");
  iot.setConfig("wpass", "piIoT123");
  iot.setConfig("msrv", "192.168.4.1");
 
  iot.setup();
 
  pixels.begin(); 
  pixels.setPixelColor(0, 255, 255, 255);
  pixels.show(); 
}
 
void loop()
{
  iot.handle(); 
  delay(200); 
}

Käivitage Raspberry Pi ja mõlemad moodulid. Oodake, kuni RGB süttib, ja proovige siis vajutada Nupu moodulil nuppu. RGB mooduli värv peaks muutuma roheliseks. Kui see juhtub, on kõik õigesti seadistatud. Raspberry Pi teenindab wifi ja MQTT vahendaja teenust antud parameetritega.