Operácie

Protokol MQTT: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
(6 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
Modifikované cvičenie  na DOMA:
'''Úloha'''
'''Úloha'''


Riadok 4: Riadok 8:
Pošlite jednoduchú správu
Pošlite jednoduchú správu
* Najprv na  
* Najprv na  
** MQTT server mqtt://try:try@broker.shiftr.io (username vase priezvisko)
** MQTT server mqtt://public:public@public.cloud.shiftr.io (username vase priezvisko)
** do topicu /feistu/misa/2020/XXX
** do topicu /feistu/misa/2021/XXX
* a potom na
* a potom na
** MQTT server mqtt://9RYd7rPhakMm9CCwPBJG@demo.thingsboard.io
** MQTT server mqtt://dOVph0fe2HybffoMHjN3@demo.thingsboard.io
** do topicu v1/devices/me/telemetry
** do topicu v1/devices/me/telemetry
Správa vo formáte JSON má vyzerať takto:
Správa vo formáte JSON má vyzerať takto:
  {"XXX-Lat": 49.1634, "XXX-Lon": 20.1349, "XXX-Temp": 18.2}
  {"XXXY-Lat": 49.1634, "XXXY-Lon": 20.1349, "XXXY-Temp": 18.2}
kde  
kde  
* XXX su prve tri pismena vasho priezviska
* XXX su prve tri pismena vasho priezviska
* Y je prve pismeno krstneho mena
* Lat je zemepisna sirka na styri desatinne miesta
* Lat je zemepisna sirka na styri desatinne miesta
* Lon je zemepisna dlzka na styri desatinne miesta a  
* Lon je zemepisna dlzka na styri desatinne miesta a  
Riadok 19: Riadok 24:


'''Tipy'''
Kontrola, či vám to správne funguje je možná tu: https://shiftr.io/try
<center>
[[Súbor:ShiftrIOtest.png|500px]]<BR>
[[Súbor:ShiftrIOtestMsg.png|500px]]<BR>
''Kontrola funkcie na Shiftr.IO''
</center>




V Processingu treba pridat kniznicu Joela Gaehwillera MQTT:
V Processingu treba pridat kniznicu Joela Gaehwillera MQTT:
  Sketch -> Import Library -> Add Library -> MQTT -> Install
  Sketch -> Import Library -> Add Library -> MQTT -> Install
<center>
[[Súbor:ProcessingAddLibrary.png|500px]]<BR>
''Pridávanie knižnice v Processingu.''
</center>




Na vytvorenie JSON reťazca využite JSONobject, potom pridávajte jednotlivé položky napr. takto
  message.setFloat("XXX-Lat", 49.1634);


   payload.setFloat("XXX-Lat", 49.1634);
Ak sa vám podarí úspešne poslať správu na shiftr.io a vidíte ju tam správne formátovanú, zmeňte riadky
   client.connect("mqtt://public:public@public.cloud.shiftr.io", "Ferdinand");
   ...
   ...
   client.connect("mqtt://try:try@broker.shiftr.io", "Ferdinand");
  client.publish("/feistu/misa/2020/XXX", message.toString());
takto
   client.connect("mqtt://dOVph0fe2HybffoMHjN3@demo.thingsboard.io");   // no username here
   ...
   ...
  client.publish("/feistu/misa/2020/XXX", "{\"XXX-Lat\": 49.1634, \"XXX-Lon\": 20.1349, \"XXX-Temp\": 18.2}");
   client.publish("v1/devices/me/telemetry", message.toString());
  client.publish("/feistu/misa/2020/XXX", payload.toString());
 
 
 
ALEBO
Ukážkové programy máte nižšie.
 
  client.connect("mqtt://9RYd7rPhakMm9CCwPBJG@demo.thingsboard.io");
  ...
   client.publish("v1/devices/me/telemetry", payload.toString());
 
    
    


Riadok 51: Riadok 71:
{
{
   client = new MQTTClient(this);
   client = new MQTTClient(this);
   client.connect("mqtt://try:try@broker.shiftr.io", "Ferdinand");
   client.connect("mqtt://public:public@public.cloud.shiftr.io", "Ferdinand");
}
}


Riadok 116: Riadok 136:
}
}
</source>
</source>
[[MEMS inteligentné senzory a aktuátory#Cvi.C4.8Denia|Návrat na zoznam cvičení...]]
[[Category:MEMS]]

Aktuálna revízia z 08:17, 8. apríl 2022

Modifikované cvičenie na DOMA:


Úloha

Vyskúšajte si posielanie protokolom MQTT. Pošlite jednoduchú správu

  • Najprv na
    • MQTT server mqtt://public:public@public.cloud.shiftr.io (username vase priezvisko)
    • do topicu /feistu/misa/2021/XXX
  • a potom na
    • MQTT server mqtt://dOVph0fe2HybffoMHjN3@demo.thingsboard.io
    • do topicu v1/devices/me/telemetry

Správa vo formáte JSON má vyzerať takto:

{"XXXY-Lat": 49.1634, "XXXY-Lon": 20.1349, "XXXY-Temp": 18.2}

kde

  • XXX su prve tri pismena vasho priezviska
  • Y je prve pismeno krstneho mena
  • Lat je zemepisna sirka na styri desatinne miesta
  • Lon je zemepisna dlzka na styri desatinne miesta a
  • Temp aktualna vonkajsia teplota


Tipy

Kontrola, či vám to správne funguje je možná tu: https://shiftr.io/try



Kontrola funkcie na Shiftr.IO


V Processingu treba pridat kniznicu Joela Gaehwillera MQTT:

Sketch -> Import Library -> Add Library -> MQTT -> Install


Pridávanie knižnice v Processingu.


Na vytvorenie JSON reťazca využite JSONobject, potom pridávajte jednotlivé položky napr. takto

 message.setFloat("XXX-Lat", 49.1634);

Ak sa vám podarí úspešne poslať správu na shiftr.io a vidíte ju tam správne formátovanú, zmeňte riadky

 client.connect("mqtt://public:public@public.cloud.shiftr.io", "Ferdinand");
 ...
 client.publish("/feistu/misa/2020/XXX", message.toString());

takto

 client.connect("mqtt://dOVph0fe2HybffoMHjN3@demo.thingsboard.io");   // no username here
 ...
 client.publish("v1/devices/me/telemetry", message.toString());


Ukážkové programy máte nižšie.


MQTT cez Shiftr.IO

import mqtt.*;

MQTTClient client;

void setup() 
{
  client = new MQTTClient(this);
  client.connect("mqtt://public:public@public.cloud.shiftr.io", "Ferdinand");
}

void draw() { /* nerob nic, len cakaj na klavesu */}


void keyPressed() 
{
  client.publish("/feistu/BlokB/temperature", "27.0");
  client.publish("/feistu/BlokB/humidity", "38.1");
  client.publish("/feistu/BlokA", "InReconstruction...");
 
}


void clientConnected() {
  println("client connected");
  client.subscribe("/feistu/#");
  client.subscribe("/hello/#");
}


void messageReceived(String topic, byte[] payload) {
  println("new message: " + topic + " - " + new String(payload));
}


void connectionLost() {
  println("connection lost");
}

JSON

JSONObject message;

float temperature = 0.0;
int status = 0;

void setup() 
{
  message = new JSONObject();
  message.setFloat("temperature", 10.0);
  message.setInt("state",2);
  message.setString("name", "Lion");

  saveJSONObject(message, "data/new.json");

  int aktualnyStav = message.getInt("state");
  float aktualnaTeplota = message.getFloat("temperature");
  String realName = message.getString("name");

  println("Stav: " + aktualnyStav 
  + ", Teplota: " + aktualnaTeplota + ",  Meno: " + realName);
}

void draw() { /* nic nekreslime */ }
   
void keyPressed() {
  temperature = random(-10, 32.5);
  message.setFloat("temperature", temperature);
  println(message.toString()); 
}


Návrat na zoznam cvičení...