MQTT_publish zum IO_Adafruit

Moin Allen,

In dem neuen Blockly Version auf https://blockly-react.netlify.app/ gibt es die Möglichkeit zum publishen nach dem freien MQTT Broker von Adafruit_IO. Das funktioniert super wie man hier sehen kann für den HDC1080 Sensor und Feinstaub sensor. Auch für den BME680 Bosch Sensor funktionieren wohl die Messungen (ausser eCO²).


Leider geht es nicht für den CO² Sensirion. :kissing_closed_eyes: und leider auch nicht mit dem BME680 Bosch (CO² Equivalent)
Die Arduino debugging sagt while compiling den Adafruit_MQTT.h:

In file included from C:\Users\wim\Desktop\sketch_apr08a\sketch_apr08a.ino:2:0:
C:\Users\wim\Documents\Arduino\libraries\Adafruit_MQTT_Library/Adafruit_MQTT.h:278:8: note: candidate: bool Adafruit_MQTT_Publish::publish(double, uint8_t)
bool publish(
^~~~~~~
C:\Users\wim\Documents\Arduino\libraries\Adafruit_MQTT_Library/Adafruit_MQTT.h:283:8: note: candidate: bool Adafruit_MQTT_Publish::publish(int32_t)
bool publish(int32_t i);
^~~~~~~
C:\Users\wim\Documents\Arduino\libraries\Adafruit_MQTT_Library/Adafruit_MQTT.h:284:8: note: candidate: bool Adafruit_MQTT_Publish::publish(uint32_t)
bool publish(uint32_t i);
^~~~~~~

Und am Ende:

exit status 1
call of overloaded ‚publish(uint16_t)‘ is ambiguous

Kann jemandem von dem Developper sagen was fehlt in dem Adafruit_MQTT.h file mit der Deklaration des Numbers/Data Types?
Für die HDC1080 und SDS011 funktioniert es dagegen super.

Hier die Arduino Schleife:

void loop() {

MQTT_connect();
stof.publish(my_sds.getPm25());
vocht.publish(hdc.getHumidity());
temp.publish(hdc.getTemperature());
co.publish(airSensor.getCO2());
delay(20000);
}

Nachdem ich die Bibliotheken included habe:

#include „Adafruit_MQTT.h“
#include „Adafruit_MQTT_Client.h“

Dank schon vielmal. Und wenn eine neue Bibliothek hergestellt ist, werde ich es am Ende Avril hier demonstrieren.

Hi @wdebbaut,

danke für die Information. Ich überprüfe das ganze mal, habe aber auch schon eine Idee woran es liegen könnte.

Ich schicke dir später eine Lösung.

Viele Grüße

Mario

Danke vielmal Mario,

Ich stelle schon fest das ihr BETA blockly am Augenblick auf https://blockly-react.netlify.app/ die CO2 Sensor nicht mehr compiliert in derem Blocke. Dagegen, auf https://blockly.sensebox.de/ keine Probleme. Ich nehme an das Sie beschäftigt sind mit der Umstellung. Die sonstige Sensoren, SD, Display;etc. bibliotheken kompilieren sich wohl gut auf die Beta Platform.

Viel Glück noch zur Umsetzung von Beta nach blocky.sensebox.de wobei dit MQTT client (publish und subscribe) integriert werden soll.

Lösung gefunden!

Ich brauchte selbst im Arduino IDE die float Variabele für den Sensirion CO² definieren. Im Beta Blockly gab es ein Fehler.

Sehe hier das Ergebnisse um CO² und Temp Werten nach einem MQTT Broker (zum beispeil Adafruit) zu verschicken und visualisieren.

Gute Sache das man nicht nur OpenSenseMap brauchen muss. Es gibt so viele Dashboards …

Schönes Wochende noch.

Hi wim,

ja die Lösung, dass man eine Variable als float erstellt und den Wert erst darin speichert und anschließend versendet hatte ich auch. Ich versuche noch herauszufinden wieso es nur dann funktioniert, wenn es als float deklariert wird obwohl airSensor.getCO2() den Wert als uint16_t zurück gibt.