[HN Gopher] Mosquitto: An open-source MQTT broker ___________________________________________________________________ Mosquitto: An open-source MQTT broker Author : ducktective Score : 182 points Date : 2021-09-29 15:50 UTC (7 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | nathan_f77 wrote: | I've learned a lot about MQTT while setting up Home Assistant, | and Mosquitto is a pretty important part of my Home Assistant | installation. I use it to control all of my Zigbee devices via | "zigbee2mqtt" (buttons, switch modules, etc.), and also a smart | kettle running Tasmota [1]. I also added a little patch to | Tasmota [2] so that my kettle responds with `418 I'm a teapot` | [3] | | [1] https://tasmota.github.io/docs | | [2] | https://github.com/ndbroadbent/Tasmota/commit/bbcf57faffbf5b... | | [3] https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418 | matttrotter wrote: | Cool stuff and inspiring. Have a website or GitHub about your | home automation projects? I checked out your blog, and the | raspberry pi microwave was pretty sweet. | seidoger wrote: | Prime use-case for HTTP 418! | SV_BubbleTime wrote: | People always want that for teapots. I have a device that | uses it as an indication it's internal data shouldn't be | trusted (some unknown error). | | I have it respond with 418 as _"I taste colors and the | government spies on you with the ground in your house | wiring"._ | | I like it for that more than actual tea pots which is far too | on the nose. | Kuinox wrote: | I'm developing a mqtt client/broker and the protocol is all but | simple to implement. I didn't found any implementation, mosquitto | included, that was really lossless. | xnyan wrote: | I've worked quite a bit with MQTT - can you tell us a little | more about what you mean by "really lossless"? | Kuinox wrote: | To never loose a packet on QoS 1/2. | RedShift1 wrote: | The protocol is simple (I've written my own implementation in | php), what do you mean with lossless? | Kuinox wrote: | That when you use QoS 2 "ExactlyOnce" (or 1), you will never | loose a message. | nicolaslem wrote: | Could you expand on the difficulties you are facing? From the | outside the protocol looks quite simple. | Kuinox wrote: | The Packet ID logic is not enough restricted. | | For exemple, the emitter is not restricted in the ID it | should use for it's packet, it can be any unsigned 16 bit | number. | | In contrast, a lot of protocol the ID must be incremental, | and the receiver can detect that a package is missing (which | result in smaller network overhead, the client can ack, or | re-ask for a dropped packet, which result in a single | roundtrip when there is no issue, instead of having the | double round trip that mqtt have). It means that, the | receiver can't know if it missed a packet. Because you don't | have to waits for the acks to propagate the message, it mean | the message delivering is unordoned. It also mean that if the | same message keep dropping, the protocol should continue to | work. Now if you implemented your mqtt with an i++, this | where you can start to have dataloss, because now that you | sent 65k messages you finished you start to need actually | free packet id. | | And it cause a lot more issues that what I said there, that I | hope I covered every case in my implementation: | https://github.com/signature-opensource/CK- | MQTT/blob/develop... | | Then, this is just the PacketID Logic. MQTT 3 doesn't do | enough things, while MQTT5 do too much things. MQTT 3 Have | design issues which MQTT 5 acknowledged it, and tried to fix | it with duck tapes. One issue for exemple is the credentials | being sent after the last will packet, which lead to a huge | DOS issue, because now an attacker can attack you with your | maximum last will packet, that you will want to save to disk, | then wait to timeout without ever sending credentials. MQTT 5 | is not really a breaking change as this behavior still exist, | but you can enforce a credentials packet for the connexion. | | All this highlight that MQTT could be a far smaller, faster, | simpler protocol if correctly done (and a protocol like this | probably exist, I didn't looked at a lot of popular protocols | for now, only a dozen of hardware custom ones). | | If I knew all the above before starting to implement my MQTT | client, I would had want with another protocol. | eska wrote: | Paho-mqtt implements QoS and also has an option to store unsent | messages to disk for later sending. | Kuinox wrote: | The issues I spotted are how the protocol is implemented, not | how the packets are stored. | idatum wrote: | +1 on paho-mqtt for python and mosquitto. All of my fun | projects such as XBee3 sensors and HA + Z-Wave go through MQTT. | It has been rock solid and a joy to develop against. | Kuinox wrote: | It will work fine for your small scale IoT, but when they | said "for IoT" they never meant it for high scale. | luma wrote: | Is that true if you set QoS to a value other than 0 in your | application? | | https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-qual... | Kuinox wrote: | No, even when you set the QoS to 2, "ExactlyOnce", you may | still hit edge cases where you loose data, without knowing | it, especially on enterprise networks, or if there is an high | throughtput. | mleo wrote: | MQTT/Mosquitto relays is a great solution for passing data across | network boundaries when inbound is limited. | | I use it with Webhooks deployed to Internet VM that pass the data | to broker installed on VM. | | Another broker in home network connects to Internet broker and | relays messages to local clients. | | I don't have to open any ports into my home network for webhooks | to work with other services. | zwieback wrote: | I like MQTT and we use Mosquitto in our product but I always | wonder if MQTT pushes TCP into areas where UDP would be a better | fit. | mlaretallack wrote: | That is where MQTT-SN comes in. I have used it over NB-IOT and | then a gateway to full MQTT over mTLS to AWS IoT. | ralight wrote: | Like your other reply said, MQTT-SN can use UDP so may be a | better fit in some situations. It's a shame that MQTT-SN hasn't | seen wider use, but there isn't that much support at the | moment. The protocol is being standardised at the moment, and | there has been an MQTT to MQTT-SN gateway as part of the | Eclipse Paho project for a while now. The Mosquitto project has | the aim of adding support for MQTT-SN - it's just not as high a | priority as other things at the moment unfortunately though. If | it's something that's important to you, please get in touch. | | Roger | boilerupnc wrote: | The node-red [0] project is a great complement to MQTT use-cases. | [1] | | "Node-RED is a programming tool for wiring together hardware | devices, APIs and online services in new and interesting ways. It | provides a browser-based editor that makes it easy to wire | together flows using the wide range of nodes in the palette that | can be deployed to its runtime in a single-click." | | [0]: https://nodered.org/ | | [1]: https://cookbook.nodered.org/mqtt/connect-to-broker | SavantIdiot wrote: | Anyone have experience scaling with more than 256 devices? | | I use MQTTS at work and for my own projects. It is a very thin | protocol (low code footprint), especially combined with Wi-Fi | where those stacks typically eat up most of your MCU's flash if | you're using a single-chip solution with TLS. I've used it on a | max of 256 devices on a single BSSID, but I would be curious to | know how it scales. | | EDIT: Specifically, when all devices are subbed to a noisy | channel. In some cases we had to stagger pub with random jitter | to prevent both Wi-Fi and edge processing issues. | ralight wrote: | I can't comment on MCUs or WiFi BSSIDs, but on the server side | I have an Intel Atom N2800 (think low performance) with nearly | 4000 clients sending out ~50k messages/s with an average | payload size of 80 bytes. The overwhelming majority of those | are not using TLS. About a quarter using MQTT over websockets. | lulf wrote: | You can use a subset of MQTT for ingress data and store it in | Kafka for instance. Check out https://www.drogue.io and | https://sandbox.drogue.cloud for an open source project that | does that | eska wrote: | I've only seen papers from the automobile industry where they | used MQTT but fed it into Kafka to scale. | IshKebab wrote: | All Dyson smart products use MQTT. As I recall it works fine | from a performance point of view (it's a very lightweight | protocol), but personally I thought it was a pretty flawed | choice because the problem of choosing/discovering paths is | just completely ignored, and it shares the same problem as all | event bus style systems - events can get lost, it's very | difficult to debug and learn, etc. | SavantIdiot wrote: | > events can get lost, | | Well, yes, but QoS=1 or 2 with a reasonably large queue I | haven't seen loss issues. | | What kind of loss problems are you running into (that I | should be worried about)? | IshKebab wrote: | Yeah I don't mean due to the protocol, I mean due to | application bugs where something adds a message to some | queue and the thing that is meant to process it doesn't for | some reason, and then nothing will ever realise. | | Compared to callbacks / RPC for example, where you have a | function call the either has to succeed or it has to fail. | | It's not a deal breaker but I don't like it. | RedShift1 wrote: | If your MQTT client allows control over this aspect of | the protocol, you can just not ACK QOS > 0 messages that | failed to process. Next time you connect you'll get the | non-ACK'ed messages first. | tombert wrote: | I've never used Mosquitto, but I have done a fair amount with | Verne.mq [1], and I have to say that MQTT is downright _pleasant_ | to use in a lot of cases. I 've not done a ton with it in "real | world" situations, but I have used it for multiple hackathons, | and I'm always impressed how little of a headache it is to build | a decent "live" application with almost no effort. | | If your frontend web project calls for any kind of messaging, I | definitely recommend looking into trying MQTT before you jump | straight into WebSockets. There's a good chance MQTT does what | you need, scales better, can communicate over WebSockets, and | will make your life easier . | | [1] https://vernemq.com/ | [deleted] | jvanderbot wrote: | I have used ZMQ for this with great success. The one-line | python calls to send data between nodes are _really nice_. | tombert wrote: | I love ZeroMQ, but I didn't think that had any first-class | support for communicating in the browser (could be wrong). | | I agree it's super nice though, even with a single process. | alias_neo wrote: | ZeroMQ is fantastic. I've been using at work for a few years | now, but I generally enjoy the tech anyway, their | documentation[0] and "The Guide"[1] is also really nice, with | examples for all of the different language bindings. | | From C or Golang (or a bunch of other language bindings) you | can set up some nice pub/sub or req/res with fan in/fan out | and all sorts of cool routing with low-level, high speed | sockets with the added power that ZMQ provides, such as the | queueing, high-watermarks etc. You can also enable encryption | easily with CurveZMQ which is a refreshing change from TLS. | | [0]https://zeromq.org/get-started/ | | [1]https://zguide.zeromq.org/ | tombert wrote: | I almost feel like the guide should be mandatory reading | for _anyone_ learning network programming. It gives | extremely digestible summaries of most of the network | patterns, when and why you 'd use them, and then how | they're done in ZeroMQ. Even if you end the guide thinking | that ZeroMQ is stupid (which you probably wouldn't), you'd | still probably benefit from having read the guide. | PostThisTooFast wrote: | Yeah, it's pretty cool. I am tasked with developing a new API | and communication method for a bunch of networked devices that | run embedded Linux. Initially I focused on MQTT, but have since | decided to define an API in OpenAPI and implement an HTTP/REST- | style interface because that's well understood and easily | supported by third parties, whose APIs we might want to | integrate with or provide a translation layer for. | | But the devices need to alert a controller application to | status changes... which so far I supposed they would do by | POSTing REST-style messages back to that application. Do people | combine REST & MQTT? | serial_dev wrote: | > Do people combine REST & MQTT? | | I'm not a REST+MQTT expert, but some people do combine them, | why not? | | One of the project I was working on (IoT, smart home), the | mobile app received the current status from the REST API, | then subscribed to changes via MQTT. Having MQTT was great | for live updates on the mobile app, and for communicating | with the IoT devices. HTTP was great for integrations with | Google Home, Alexa, and we could test it easily as there are | many backend frameworks focusing on CRUD REST HTTP backend | apps. | | Of course, if you actually have a problem you want to solve, | be sure the to do your own research, there are more than one | way to skin a cat, and there are so many services and | platforms that could be "good enough" for your use case. | eska wrote: | The REST paper explicitly mentions that REST and HTTP only | try to solve the common cases, and solve those well. If | something is not covered well then you're explicitly advised | to leave it to another protocol. You could for example have a | GET response that (due to HATEOAS) suggests a websocket url | including a topic to subscribe to. | kitd wrote: | One thing to note is that MQTT is session-oriented, so you | have to send periodic pings to the server to keep your | session active. Which is obviously a deviation from stateless | REST. | RedShift1 wrote: | The VerneMQ bugtracker scares me. Especially this one: | https://github.com/vernemq/vernemq/issues/1663. I'm running one | instance but I'm on the lookout for an alternative that can | more reliably save messages if a subscription client goes down. | tombert wrote: | I wish I could say that I chose Verne.mq because I weighed | all the options and it was the best for my project but...I | really chose it because it was written in Erlang and I like | Erlang. | | I won't pretend to have done an audit of the best servers in | terms of bugs or features. | mosselman wrote: | > I definitely recommend looking into trying MQTT before you | jump straight into WebSockets. | | What is a nice way to use mqtt in the front-end instead of | websockets? What can you recommend? | oneweekwonder wrote: | Eclipse Paho JavaScript Client[0] for the front-end and | personally I prefer RabbitMQ Web MQTT Plugin[1] for the back- | end[1]. | | Take note Paho MQTT Client is available for several | programming languages(Py,Rust,Go,C,C#,etc)[2]. | | [0]: https://www.eclipse.org/paho/index.php?page=clients/js/i | ndex... [1]: https://www.rabbitmq.com/web-mqtt.html [2]: | https://www.eclipse.org/paho/index.php?page=downloads.php | tombert wrote: | Beat me to it! | | I was about to suggest the Eclipse Paho library. One of the | very few things in the developer world that has "just | worked" for me the first time I tried it. | ajfally wrote: | I've been wanting a GCM/FCM alternative, could mqtt be used for | notifications like that? I understand its usually used for IOT | devices and stuff so I assume its suitable for not using loads of | power | malermeister wrote: | Thats what Facebook Messenger uses. Downside to this is that | only FCM can work around android's power saving mechanisms and | deliver instantly... unless you're Facebook and able to | convince vendors to patch the firmware for your servers too ;) | holoduke wrote: | Yep. Another real concrete example of an unwanted monopoly. | We have issues with fcm, we are sending about 10m per day for | millions of users. About 1 to 3% never arrives. Ends up in | the void. Google doesn't want to help. We are not Facebook. | But no alternative. A pity | malermeister wrote: | 97% is actually a really good delivery rate. From my | experience working on several push-based products, ~80% is | the industry standard. | clumsysmurf wrote: | Anyone have experience comparing MQTT with NATS, they seem to | cover similar scenarios. | JesseObrien wrote: | Would be looking for this as well. I love using NATS, would | like to see a comparison of both. | jvanderbot wrote: | I've recently transitioned my home "IOT" network (and servers) to | a Wireguard-only network. It's wonderful. All the routing | accessibility through firewalls or with dynamic IPs just | disappeared. All services are exposed only on the wireguard | interface, meaning security and connectivity are solved (to the | 80/20 level) with just Wireguard. | | That kind of removed the need for a static broker entirely since | now every node has a static IP on my wireguard network and are | accessible no matter what network they are _actually_ on. Pinging | my mobile phone from an air quality sensor was an eye-opening | experience. | kobalsky wrote: | what kind of IOT devices are we talking about? linux embedded | or is wireguard available for something like nodemcu? | 3np wrote: | Did you ever notice any issues with significant increased | softirqs? | | I started going down a similar path but a node that is acting | as a gateway/bridge for UDP traffic routing to an outbound | wireguard tunnel is now spending a constant ~20% CPU time on | NET_RX softirqs with 10Mbps and 5~30Kpps. Almost no NET_TX. | | It's specifically the combination of UDP-over-wg that seems to | cause this. It's otherwise handling 1Gbps and way more packets | just fine. | | (I'm aware MQTT is TCP but hey, worth a shot) | zerkten wrote: | For someone that has worked with RabbitMQ, is there a guide to | the differences and appropriate usage of MQTT brokers with some | real use cases explained? | oneweekwonder wrote: | You are aware RabbitMQ support MQTT[0] and MQTT over | WebSockets[1]? | | As for comparing it to RabbitMQ you should compare the AMQP | protocol vs MQTT protocol, it seems MQTT with its lightweight | design "won" IoT market over and should be rather compared | against protocols like CoAP. | | As for guides I have always found resources rather scarce and | mostly learned by adding features to mqtt libraries or writing | my own prototype games using it. | | [0]: https://www.rabbitmq.com/mqtt.html [1]: | https://www.rabbitmq.com/web-mqtt.html | travisgriggs wrote: | I'll just pile on my own accolades. We use MQTT to connect | handhelds with in the field ag irrigation controllers. There's | probably about 10,000 valves on farms and other ag projects | throughout, that are ultimately scheduled and monitored through | MQTT. We've even been able to build a full request/event protocol | on top of it. | | The protocol is simple enough, that when I wasn't happy with not | many full solutions existing in iOS, I just rolled our own in a | day or two. | | Currently adding an Elixir REST bridge to the whole thing. It's | been pretty cool all around. | ralight wrote: | That sounds really nice, I love interesting projects in areas | outside of my experience. If you're using Mosquitto I'd love to | hear more about it - my contact details are at the bottom of | https://github.com/eclipse/mosquitto/ :) | IceWreck wrote: | I'm a big fan of NATS. It a small binary which can be scaled as | much as you want and it replaces Kalfka, lightweight MQTT | brokers, etc and has clients for most languages. | ducktective wrote: | https://nats.io/ https://github.com/nats-io/nats-server | | Is it suitable for embedded applications? (very low resources, | intermittent network availability, etc) | DenseComet wrote: | NATS actually also has support for MQTT[0]. If you already | have a deployment for queues, microservices, etc, using the | NATS mqtt endpoint seems like a very good option. | | [0] https://docs.nats.io/nats-server/configuration/mqtt | AkshitGarg wrote: | The NATS protocol [0] looks pretty simple, but is text based | unlike MQTT which uses a size optimized binary protocol. | | [0]: https://docs.nats.io/nats-protocol/nats-protocol | deknos wrote: | is mosquitto clusterable nowadays? on its own or via k8s? | | for: * fault tolerance * fail over * vertical scalability? | | does anyone know this? if not is there a another opensource mqtt | broker which does that? | ralight wrote: | I work for Cedalo AG developing Mosquitto. Cedalo will be | offering a version of Mosquitto with failover support as a paid | for feature soon. | eska wrote: | There are broker implementations that support clustering. Emqx | comes to mind. | oneweekwonder wrote: | Recently wanted to also create a cluster of mqtt brokers and | found this medium tutorial stringing Docker Swarm, RabbitMQ, | Consul and HAProxy together very helpful[0]. | | I was not happy with the static ip's for haproxy and opted to | register the mqtt/tls services in consul and use the consul dns | resolver with hapraxy. | | [0]: https://medium.com/hepsiburadatech/implementing-highly- | avail... | mlhales wrote: | Mosquitto is not, we use RabbitMQ which runs on Erlang/OTP and | has mqtt plug-ins. Mosquitto is single threaded. It's fast for | sure but doesn't scale out. They can interoperate though as | Mosquitto has configurable bridging. | discreteevent wrote: | Have a look at Apache Artemis. Well architected multi-protocol | broker with clustering. | serial_dev wrote: | VerneMQ [0] could be interesting for you, they claim that: | | > VerneMQ is a high-performance, distributed MQTT broker. It | scales horizontally and vertically on commodity hardware to | support a high number of concurrent publishers and consumers | while maintaining low latency and fault tolerance. | | I'm not sure about their licensing at the moment [1], to me | it's a bit confusing. | | [0] https://vernemq.com/ | | [1] https://vernemq.com/blog/2019/11/26/vernemq-end-user- | license... | jonquark wrote: | There are lots of brokers and Eclipse Amlen is coming soon: | https://www.eclipse.org/amlen/ | | (disclosure: I work on Amlen) | eska wrote: | Unfortunately the websockets implementation only allows IPv6, and | in my tests from a js app sometimes took seconds to start if it | worked at all. I'm currently looking for an alternative broker | due to those issues. | oauea wrote: | > Unfortunately the websockets implementation only allows IPv6 | | Huh? Pretty sure that's not true. | eska wrote: | >socket_domain [ ipv4 | ipv6 ] | | >By default, a listener will attempt to listen on all | supported IP protocol versions. | | >If you do not have an IPv4 or IPv6 interface you may wish to | disable support for either of those protocol versions. In | particular, note that due to the limitations of the | websockets library, it will only ever attempt to open IPv6 | sockets if IPv6 support is compiled in, and so will fail if | IPv6 is not available. | | From the manual. Huh, seems like I might've misunderstood | this paragraph. But I was only ever able to access the broker | if the browser was using an ipv6 address. I'll have to test | again I suppose. Still, the performance and reliability was | not good. | oauea wrote: | Right, that just says if you don't have IPv6 support | compiled in, you can't use IPv6. IPv4 is always available, | and has worked wonderfully well in my experience. | eska wrote: | Thanks for pointing that out. I'll have to try again. | Maybe ipv4 got disabled in the configuration somehow by | accident. | ralight wrote: | As others have pointed out, that's not the case. Something you | do have to be careful of is the compile options for | libwebsockets and what version you're using. Recent-ish version | of libwebsockets in particular disable by default some features | Mosquitto relies on, so some installations may suffer. | | Version 2.1 of Mosquitto will no longer need libwebsockets | (although it can still be selected at compile time) and so | websockets support will be less dependant on how other | libraries are compiled. | nicolaslem wrote: | MQTT is becoming the defacto interface for home automation. As an | example, Home Assistant used to have plugins for zwave and zigbee | but they are now replaced by an MQTT broker that sits between | Home Assistant and the program driving the wireless dongle. | | Since I'm already running Mosquitto to interface with zwave | devices, I decided to also use it to monitor my home lab. Servers | push sensor statuses into Mosquitto and Home Assistant is used | for the UI and alerting. That was a fun week-end project. | SV_BubbleTime wrote: | >MQTT is becoming the defacto interface for home automation. | | The problem I have with MQTT is also a feature. The payload | format isn't defined, there is no request response structure, | encryption of payload requires custom encapsulation, etc. You | are on your own for everything. | | This is made better in MQTT v5, but AWS still doesn't support | that. | | If I was starting over today, I really like OSCORE and CoAP | derivatives for their completeness. | cptskippy wrote: | I observed this as well and was just starting to dabble in MQTT | with my ESP projects. | | I have yet to find a good resource for outlining autodiscovery. | Most of the projects I have come across just hard code some pub | paths in the homeassistant namespace. | oynqr wrote: | ZHA is still the preferred way for Zigbee with Home Assistant, | isn't it? | dusing wrote: | ZHA is great and fast, I prefer it instead of zigbee2mgtt. I | have 100+ zigbee devices and 80 z-wave. | nathan_f77 wrote: | I started with ZHA but had problems with some devices (e.g. a | 4-way switch panel that would only show as a single button.) | I've had a much better experience with zigbee2mqtt, and it | seems a bit more powerful | specto wrote: | Saw this too recently - https://www.cnx- | software.com/2021/09/27/zb-gw03-esp32-based-..., quite nice | EngCanMan wrote: | Many people use https://www.zigbee2mqtt.io/ now too, it seems | people are moving in this direction | parineum wrote: | > Home Assistant used to have plugins for zwave and zigbee but | they are now replaced by an MQTT broker that sits between Home | Assistant and the program driving the wireless dongle | | And now, they've moved on from that to having straight | websocket communication between those two programs, eliminating | MQTT altogether. | | I use MQTT for a lot of stuff but it adds a layer of delay | between devices that is particularly noticeable with flipping a | light switch in the Home Assistant web ui. | EngCanMan wrote: | This may be a use case issue. I have a zigbee door contact | that communicates to HA through Z2MQTT which turns on the | light when the door opens. It turns on so fast that my wife | didn't believe the light wasn't already on until I made her | open the door from the inside. It is instant for all intents | and purposes. So this delay may be relevant to the setup, | more than MQTT itself. | zerd wrote: | Are you sure it's MQTT adding the delay? From my experience | that part is pretty much instantaneous, but processing though | Home Assistant, and in my case zigbee2mqtt does add some | delay. | parineum wrote: | No I'm not certain but I can certainly say that the whole | setup is much more responsive after taking MQTT out of the | loop. | yasserf wrote: | MQTT is awesome. In deepstream.io we bridged the node MQTT | protocol to deepstream which allows us to mix and match | protocols. MQQT for IoT devices (and to be honest any device | considering the large amount of libraries) and the deepstream JS | client for node/browsers. | | This pretty much allowed clustering out of the box + | automatically saves messages with quality assurance set in an | actual database. Plus a bit more authentication and permission | tools. | | https://deepstream.io/blog/20190909-release-deepstream-4.2/ | | Deepstream itself is under maintenance right now, but I find the | concept of mixing protocols together (similar to what ably.io | provides) to hit a sweet spot for development across multiple | different environments/devices | pletnes wrote: | I take it mqtt was developed for embedded systems, | microcontrollers etc to be lightweight. Can the _broker_ also run | in such and environment, or is that just the clients? | joezydeco wrote: | I'm running Mosquitto as the central messaging broker on an | embedded Linux product right now. It's super lightweight. | | Running the broker on the target has been a really great thing | during development. I can run validation systems on other | machines and inject messages over the wire, or I can actually | run the UI on my dev machine and let the backend respond from a | live target. | | I also have a development team in Asia that can't get to the | newest hardware, so I fire up a system here and open a port | they can access. They love it. | | That said, the _bandwidth_ in MQTT is lightweight but you still | need a TCP /IP stack on your system. That's typically more | substantial of a footprint than Mosquitto will be at the end of | the day. | zorr wrote: | Mosquitto is C/C++ without any crazy dependencies so you should | be able to do that. I don't immediately see why you would do | this though? Any specific use cases? | | I haven't done this myself yet but I've seen a couple of | production IoT setups with a local MQTT broker running on a | RaspberryPi configured to relay all messages to a central | broker running in the cloud. | jvanderbot wrote: | Pi is a far cry from "Microcontrollers". | | MQTT requires a TCP stack, which limits to the higher end | chips. | | But, for embedded linux, you're probably golden. | joezydeco wrote: | MQTT is available via LWIP on STM32 parts that don't have | an MMU. | | I've tried it on the STM32F746 (Cortex-M7) and it works | well, although there are other issues with networking on | CubeMX that are open. | ralight wrote: | The lowest spec device I've come across Mosquitto being used is | a 180MHz MIPS processor on 32MB RAM, running Linux. | | Someone has recently taken the RSMB broker (from IBM | originally) and ported it to the ESP32: | https://github.com/DynamicDevices/picobroker I can't comment on | what the limitations of that are though. | detaro wrote: | If you don't need it to scale crazily, yes. E.g. | microcontrollers in nodes and then a local gateway as an | embedded Linux system would not surprise me to see. | rhodin wrote: | We run a hosted version starting at $5/month [0]. We used to have | a free version but it was too popular. | | [0] https://www.cloudmqtt.com/plans.html | jasonvorhe wrote: | In case someone's looking for a free MQTT service with the only | constraints being client connection limits and bandwidth, check | out HiveMQ Cloud: https://hivemq.cloud | pmx wrote: | We use cloudmqtt at work and we've been really impressed by the | price and quality of the product. You made it not worth hosting | our own instance! | jayzym wrote: | We use this for work and it's a pretty slick product. Please | add support for MQTT 5.0, or shared subscriptions! | jshier wrote: | The free version was a great resource while developing MQTT | clients a few years ago, sorry it was too expensive. | rhodin wrote: | If you are a library developer/maintainer we'd be happy to | sponsor you with free subscriptions, contact us at | support@cloudmqtt.com. | bsmth wrote: | I really like Mosquitto, I'd recommend it for quickly getting | started hacking together IoT projects on the hobby / side project | scale. One of our community (QuestDB) contributors put together a | docker compose example that I thought was pretty nice for quick | prototyping, could be convenient for someone here: | | https://github.com/shantanoo-desai/questitto | EastOfTruth wrote: | I used Mosquitto years ago for a few years and never had any | issues with it... | monkeydust wrote: | Use Mosquitto on Windows server at home to transfer data from my | energy smart meter to home assistant. Pretty rock solid and easy | to diagnose issues via mqtt tools. | bborud wrote: | This project is exceptionally useful not only in itself but as a | tool you can use during development. Software that can be | controlled entirely from the command line without configuration | files (unless you choose to) are very convenient. ___________________________________________________________________ (page generated 2021-09-29 23:00 UTC)