| 
				
					
						 | 
			1 year ago | |
|---|---|---|
| .mosquitto | 1 year ago | |
| clock | 1 year ago | |
| cmd | 1 year ago | |
| common | 1 year ago | |
| img | 1 year ago | |
| scripts | 1 year ago | |
| .gitignore | 1 year ago | |
| DESIGN_CONCIDERATIONS.md | 1 year ago | |
| LICENSE | 1 year ago | |
| Makefile | 1 year ago | |
| README.md | 1 year ago | |
| docker-compose.yaml | 1 year ago | |
| go.mod | 1 year ago | |
| go.sum | 1 year ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	Learn MQTT with Go
Learning MQTT with Golang by doing. This repo is a simple example of using a Golang application as a client (pub & sub) of an MQTT broker.
1883, Eclipse Mosquitto unsecured (opening the port on the internet is not recommended).
Architecture
Ideally I would like this application to resemble the above design. Conceptually, there
Development
For local development we use Mosquitto as our MQTT broker, with TLS enabled.
sudo apt install mosquitto-clients
First generate local development certs using:
make gen-local-tls-certs
This will create CA, server, and client certificates suitable for local development. Server and CA certs are created in ./.mosquitto/certs. The client cert is create in the project root.
Start the local development environment with:
make start-dev
Stop the local development environment with:
make stop-dev
Testing
Unit tests can be run with:
make test
Integration tests are run via:
make test-integration
Usage
Instructions TBD
Design Considerations
Resources:
- Mosquitto Docs
 - Mosquitto TLS Tutorial
 - Golang MQTT Tutorial
 - MQTT as a Service
 - Using Wireshark for MQTT Analysis
 - Caddy as reverse proxy
 - Using Python paho MQTT client with TLS
 - ESP32 Micropython MQTT with TLS: Note cert file format for uPy MQTT client needs to be in .der format which is a binary format.
 - TLS refresher
 - HA Mosquitto in K8s
 - Lamport Timestamps Tutorial -Vector Clocks Lecture