The MQTT protocol has taken great strength in recent years since it is simple, safe, practical and lightweight perfect for IoT and M2M applications.
Thanks to the contribution of developers and developers of MQTT applications, there are public MQTT Broker for tests, are available to connect from any MQTT client in this case will use Mosca.io, which has dashboard to view MQTT connections and web sockets, given Which is public should have some considerations that we will see below.
Source: Public MQTT Brokers
We have found very little information about the public broker and we have assumed that it is part of the project mosca.io created by mcollina, this broker MQTT downloadable based on nodejs
Oficial Website: mosca.io
Dashboard MQTT: We assume that apparently has not.
MQTT Broker Configurations
Broker: test.mosca.io
TCP Port: 1883
Other publics Broker’s
- Public Broker Tests HIVEMQ
- Public Broker Tests Mosca.io
- Public mqtt Broker
- Public Broker Test Mosquitto
Tests
Acontinuacion will perform 2 detailed tests:
- Connection with Broker MQTT mosca.io from Node-RED.
- Connection Broker MQTT mosca.io with ESP8266 & Node-RED.
Connection with Broker MQTT Mosca.io from Node-RED
Using Node-RED previously installed on a local server in my network, we will make the MQTT connection with Mosca.io to validate the connection from any MQTT client.
Connection Broker MQTT Mosca.io with ESP8266 & Node-RED
In this case the module ESP8266 12E NodeMCU configured as client MQTT read a temperature sensor DS18B20 Protocol (Onewire) sends the temperature via MQTT to the Broker Mosca.io and Node-RED installed in the local network requests the temperature value And graph in Node-RED Dashboard.
Arduino IDE Code
The ESP8266 module is configured as an MQTT client and periodically reads the temperature of the DS18B20 sensor, connected to the D4 pin (Gpio 02), fed at 5v, with its respective recommended resistance in the maxim datasheet.
Requires libraries:
- PubSubClient.h
- OneWire.h
- DallasTemperature.h
/* MQTT Client Temperature Onewire * More information about projects PDAControl * PDAControl English http://pdacontrolen.com * Mas informacion sobre proyectos PDAControl * PDAControl Espanol http://pdacontrolen.com * Channel Youtube https://www.youtube.com/c/JhonValenciaPDAcontrol/videos */ #include < ESP8266WiFi.h > #include < PubSubClient.h > #include < OneWire.h > #include < DallasTemperature.h > // Data wire is plugged into port 2 on the Arduino #define ONE_WIRE_BUS 2 // pin 2 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); // Update these with values suitable for your network. const char* ssid = "************"; const char* password = "************"; const char* mqtt_server = "test.mosca.io"; /// MQTT Broker int mqtt_port = 1883; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup() { Serial.begin(115200); // Start up the library sensors.begin(); setup_wifi(); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); Serial.println("Connected "); Serial.print("MQTT Server "); Serial.print(mqtt_server); Serial.print(":"); Serial.println(String(mqtt_port)); Serial.print("ESP8266 IP "); Serial.println(WiFi.localIP()); Serial.println("Modbus RTU Master Online"); } void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP8266Client")) { Serial.println("connected"); // client.subscribe("event"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { sensors.requestTemperatures(); float celsius = sensors.getTempCByIndex(0); Serial.println(sensors.getTempCByIndex(0)); char temperaturenow [15]; dtostrf(celsius,7, 3, temperaturenow); //// convert float to char client.publish("temperature/PDAControl/sensor", temperaturenow); /// send char if (!client.connected()) { reconnect(); } client.loop(); delay(10000); }
Materials and where to buy
Conclusions y recommendations
We consider that although technically the broker is public we do not realize applications that are constantly connected to this broker, and since it is free public we do not know the legal aspects of use.
We only do fast tests and since it has no dashboard we do not know specific details about the broker, we assume that it belongs to the mosca.io project. I thank you in advance for the collaboration to the community.
Other publics Broker’s
- Public Broker Tests HIVEMQ
- Public Broker Tests Mosca.io
- Public mqtt Broker
- Public Broker Test Mosquitto
References
- Public mqtt Broker
- Tutorial Amplifier Audio PAM8302A ESP8266 Node-RED MQTT
- Tutorial ESP8266 Node-RED Granafa InfluxDB MQTT
- Tutorial ESP8266 DS18B20 Temperature Node-RED MQTT (Mosquitto) IoT
- Tutorial ESP8266 Node-RED Granafa InfluxDB MQTT
- Tutorial ESP8266 and Node-RED MQTT GPIO (Mosquitto) # 1
- Tutorial ESP8266 Control Servo Node-RED MQTT (Mosquitto) IoT #2
- Node-RED Platform