Allow access for MQTT on Ubuntu Server running on Azure - mqtt

I have a Ubuntu Server 14.04 running on an Azure machine. I have installed MQTT broker on this Ubuntu Server. Moreover, I have multiple ESP8266 devices that are assumed to subscribe and publish to different MQTT topics via this broker. Now my problem is that when I connect two devices to Broker, one for receiving data and other for publishing, they work fine but as I try to connect one more device to broker all devices stop working and my ESPs just display this message "trying to connect Broker" over and over again.
(In endpoints of my machine I've added 1883 for HTTP, 443 for HTTPS and 22 for SSH)
My question is how I can allow multiple devices to communicate with MQTT broker running on Azure broker?

All client devices needs to have unique client ids. The situation you have described sounds exactly like what happens if all your esp8266 devices have the same hardcoded client id

MQTT clients get clientID as parameter before connection to provide uniqueness. ESP8266's has unique ChipID. So use it to hit the issue.
Here the example for Arduino firmware :
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
mqttClient.setServer(MQTT_BROKER, MQTT_BROKER_PORT);
String clientId = "IoTDevice-" + String(ESP.getChipId());
mqttClient.connect(clientId.c_str(), MQTT_USERNAME, MQTT_KEY);
Here is NodeMCU firmware example :
mqtt_cli:connect(MQTT_BROKER, MQTT_BROKER_PORT, 0, CALLBACK_FN);
mqtt_cli = mqtt.Client("IoTDevice-"..node.chipid(), 120, MQTT_USERNAME, MQTT_KEY);

Related

How to connect to open source emqx broker and build his own broker?

Protocol: mqtt
Version: 3.1.1
Gateway model: CloudGate Ethernet CG0102
I'm publishing json message from my gateway which is connected to an open source Emqx broker (broker.emqx.io) port 1883 for a test. I tried to consume the messages by connecting to it with MQTTX by giving the following informations: Name, Client_ID, Host, Port, Username and Password, and then giving my topic which is my_topic.
The problem is nothing appear in my MQTTX while the given broker informations are good and similar to those in my gateway. Why ?
Also I would like in the future to use my own mqtt broker mounted on my laptop ? Any simple references where I could start to make such thing ? I already use mqtt to consume messages with python from remote broker but never try to build one to receive messages from my remote gateway.
I'm working on a ubuntu bionic VM
Client_ID needs to be unique for every client, so you can not reuse Client_ID between clients.
The MQTT spec says that the broker should kick the oldest client off when a new client connects with the same Client_ID. This normally leads to a fight between the 2 clients as they both try and reconnect kicking each other off.

How to connect an existing MQTT broker with Thingsboard

I have a site using html, php, javascript and css in which I add my data from IOT devices using MQTT broker. Now I want to update it and I want to connect my MQTT broker with Thingsboard MQTT to manage the same data from both platforms. How can I succeed the communication between the two MQTT brokers?
You have to use the "Thingsboard IoT Gateway". In the Gateway you can set your external MQTT Broker and connect it over the Gateway to Thingsboard. I think thats the only solution. Just follow the instructions.

using Azure IoT Hub as a MQTT broker

Our Current Deployment:
1) several back-end devices running an MQTT client connect to an opensource MQTT broker (Mosquitto)
2) Mosquitto is running on a Linux VM and acts as a broker and a communication point between back-end & front-end devices.
3) Several front-end devices (Mobile App / browser based GUI) connect to the broker. some of the front-end devices read & write to the broker (Sub & Pub) while some front-end only read (Sub)
4) Some front-end devices connect for a few minutes & some front ends are always connected.
5) Although the amount of data being transferred is a few kb, it is sometimes fast changing.
6) No TLS is used for the MQTT traffic & it cannot be enabled on the back-end devices.
This setup works for us, but I am looking for a way to scale up and was considering the azure IoT hub, but I am confused if the IoT hub can be used as a broker or I would need additional components to be deployed for acting as a MQTT broker ?
Azure IoT Hub is not a generic MQTT Broker. There is a built-in the device communications for MQTT protocol. More details can be found in the Using the MQTT protocol directly
For exploring the MQTT Devices (virtual devices) with the Azure IoT Hub (without the coding) can be used a small tool Azure IoT Hub Tester

How to send message from mosquitto broker to azure IOT hub

I have installed mosquitto as a local broker. There are multiple devices which sends messages to the broker. I want that whatever message coming to mosquitto broker should be sent to azure IOT hub. Can anyone please refer to any document how to do that.
You have several approaches:
You can use one of the device client SDKs (depending on which
language you are using on your broker) to send data to IoT Hub
You
can use MQTT directly to communicate with IoT Hub, which will require
that you do specific things described in this document
(definitively recommend using the client SDK)

I can't connect my MQTT Broker

I'm working on IoT project and trying to use mqtt protocol. So I need a Mqtt broker as a server installed on my PC. My PC has static ip and special modem. So my local and general ip is lookin same.
I installed mosquitto firstly. Tested it with Mqttlens chrome app, it looks everything is fine when I test it on the same computer (which is the computer on which broker is installed). But when I try to publish a message from another device with different ip, I can't connect to broker.
I installed Hivemq and tried it for this broker too. And it is the same so I can connect broker when I open mqttlens in same computer, but I can't connect to my broker from other device.
And here is what I already tried and tested;
I downloaded My MQTT application to my android mobile phone.
And connected to hivemq broker with broker.hivemq.com url.
In the same time in different two pc's I connected to the broker with mqttlens app. I set up the tags. And everything is working, I can send messages and subscribing topics. Everything is working well. I tried it when that third device in the same lan and when using different networks. Both time, everything is fine.
But when I try the same thing by writing the my ip address to the mqtt lens and MyMQTT application. Other devices even can't connect to broker. There are no error messages or anything else. Just disconnected and can't connect.
I tried to change bind address with my ip address. But when I write 0.0.0.0 or my ip address, result is same I couldn't connect.
Any suggestions?

Resources