Skip to content

openfaas/mqtt-connector

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mqtt-connector

This is an MQTT connector for OpenFaaS.

build

About

Once configured and deployed it will deliver messages from selected topics to OpenFaaS functions.

There are various other connectors available for OpenFaaS which form "triggers" for event-driven architectures.

Prior work:

This is inspired by prior work by Alex Ellis: Collect, plot and analyse sensor readings from your IoT devices with OpenFaaS

Component parts:

Deploy in-cluster with Kubernetes

See helm chart for deployment instructions. Then continue at "Test the connector".

export TAG=0.3.1

make build push

Deploy out of cluster

go build

export GATEWAY_PASSWORD=""
export BROKER="tcp://test.mosquitto.org:1883"
export TOPIC="openfaas-sensor-data"

./mqtt-connector --gateway http://127.0.0.1:8080 \
  --broker $BROKER \
  --gw-username admin \
  --gw-password $GATEWAY_PASSWORD \
  --topic $TOPIC

Deploy a function:

faas-cli deploy --name echo --image ghcr.io/openfaas/alpine:latest \
  --fprocess=cat \
  --annotation topic="openfaas-sensor-data"

Test the connector

Annotate a function with the annotation topic: $TOPIC <- where $TOPIC is the MQTT topic you care about.

2019/12/03 16:43:26 Topic: topic        Broker: tcp://test.mosquitto.org:1883
2019/12/03 16:43:29 Invoking (http://192.168.0.35:8080) on topic: "topic", value: "{\"sensor\": \"s1\", \"humidity\": \"52.09\", \"temp\": \"23.200\", \"ip\": \"192.168.0.40\", \"vdd33\": \"65535\", \"rssi\": -45}"
2019/12/03 16:43:29 Invoke function: print-out
Send: "{\"sensor\": \"s1\", \"humidity\": \"52.09\", \"temp\": \"23.200\", \"ip\": \"192.168.0.40\", \"vdd33\": \"65535\", \"rssi\": -45}"
2019/12/03 16:43:29 connector-sdk got result: [200] topic => print-out (24) bytes
[200] topic => print-out
{"temperature":"23.200"}
2019/12/03 16:43:29 tester got result: [200] topic => print-out (24) bytes

This data was generated on the topic topic by my NodeMCU device which publishes sensor data.

A node12 function named print-out returned the temperature as reported.

License

MIT