MQTT czy można jedną wiadomością przesłać dane z wielu czujników

witam pytanie dotyczy zagadnienia związanego z odczytaniem wartości termometrów przesłanych przez mqtt do nodered z arduino czy można wartości z 8 termometrów dajmy co 5 min przesłać jedną wiadomością czy musi być wysyłane 8 niezależnych ???

8 termometrów na jednym arduino, czy każdy termometr na osobnym arduino ?

8 termometrów na jednym arduino…

Witam, jeśli masz wiele czujników i chcesz wysłać ich wartość za pomocą jednej wiadomości to ja proponuje wysyłanie to w formacie JSON
np.
topic: “kotlownia/sensors”
msg:
{
“Twew”: 26.00,
“humidity”: 43.80
}
Dzięki temu możesz te dane łatwo rozdzielić w HomeAssistance
Na arduino jest odpowiednia biblioteka do tworzenia takich wiadomości

super dokładnie o to mi chodzi a czy kojarzysz jaka to biblioteka ?

Jeśli programujesz w Arduino IDE to biblioteka nazywa się ArduinoJson.
I jeszcze prosty przykład

char output[256];

StaticJsonDocument<256> doc;

JsonArray Temperature = doc.createNestedArray(“Temperature”);
Temperature.add(ds_temp[0]);
Temperature.add(ds_temp[1]);
Temperature.add(ds_temp[2]);
doc[“Humidity”] = 20;

serializeJson(doc, output);

client.publish(“kotlownia/sensors”, output);

I wiadomość wysłana przez mqtt będzie miała postać
topic: kotlownia/sensors
message:
{
“Temperature”: [25,35,45],
“Humidity”: 20
}

A tu jeszcze pomocna strona

wielkie dzięki :wink: po testuje temat … :wink:

Witam
pozwólcie, że się dołączę do tematu:)

Jak odwrócić za pomocą nodreda to co zrobiono wyżej? tzn jak odseparować z wiadomości to co nas interesuje tzn temperaturę ?

mam msg payload który zawiera: {“Time”:“1970-02-08T08:23:10”,“DS18B20-1”:{“Id”:“3C01B556290F”,“Temperature”:58.8},“DS18B20-2”:{“Id”:“3C01B556BD77”,“Temperature”:39.8},“TempUnit”:“C”}

chciałbym to zamienić na payload który zwiera tylko 58,8

Sam sobie odpowiem:)
Trzeba msg.payload w postaci string zamienić na msg.payload object > za pomocą nodu JSON
wtedy trzeba za pomocą nodu CHANGE zmienić payload na J:expression payload.‘DS18B20-1’.Temperature
i gotowe;]

Dokładnie to miałem zaproponować. Na upartego można jeszcze wycinać wartość z łańcucha operacjami na łańcuchach :slight_smile: