User Tools

Site Tools


mqtt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
mqtt [2022/02/14 16:48] – [Bash MQTT RaspberryPI] Jan Formanmqtt [2022/02/15 14:57] (current) Jan Forman
Line 1: Line 1:
 +====== MQTT ======
 +===== Mosquitto =====
 +<code>
 +mosquitto_passwd -c /etc/mosquitto/pwdfile user
 +</code>
  
 +<code>
 +allow_anonymous false
 +password_file /etc/mosquitto/pwdfile
 +</code>
 +...\\
 +configure websocket
 +<code>
 +listener 8083
 +protocol websockets
 +certfile /etc/letsencrypt/live/mqtt.example.com/cert.pem
 +cafile /etc/letsencrypt/live/mqtt.example.com/chain.pem
 +keyfile /etc/letsencrypt/live/mqtt.example.com/privkey.pem
 +</code>
 +
 +===== QoS =====
 +^ Level ^ ^
 +| QoS 0 - at most once | There is no guarantee of delivery |
 +| QoS 1 - at least once | Message is delivered at least one time |
 +| QoS 2 - exactly once | Safest and slowest quality of service level |
 +
 +===== Bash MQTT RaspberryPI =====
 +Install client libraries
 +<code>apt install mosquitto-clients</code>
 +<code>
 +#!/bin/bash
 +##########################
 +cd /tmp
 +host=10.0.0.1
 +user=user
 +pass=pass
 +topic=/test/open
 +pin_a=2
 +pin_b=3
 +
 +if [ ! -f /sys/class/gpio/gpio$pin_a/value ]; then
 +echo "$pin_a" > /sys/class/gpio/export
 +fi
 +echo "out" > /sys/class/gpio/gpio$pin_a/direction
 +echo "1" > /sys/class/gpio/gpio$pin_a/value
 +
 +if [ ! -f /sys/class/gpio/gpio$pin_b/value ]; then
 +echo "$pin_b" > /sys/class/gpio/export
 +fi
 +echo "out" > /sys/class/gpio/gpio$pin_b/direction
 +echo "1" > /sys/class/gpio/gpio$pin_b/value
 +##########################
 +
 +while true
 +do
 +  rm -f /tmp/cmds
 +  mosquitto_sub --remove-retained -i 10.0.0.254 -C 1 -h $host -u $user -P $pass -t $topic >/tmp/cmds
 +
 +  if grep -q "employee" /tmp/cmds; then
 +  echo "0" > /sys/class/gpio/gpio$pin_a/value
 +  fi
 +
 +  if grep -q "corporate" /tmp/cmds; then
 +  echo "0" > /sys/class/gpio/gpio$pin_a/value
 +  echo "0" > /sys/class/gpio/gpio$pin_b/value
 +  fi
 +
 +  date >>/var/log/open.log
 +  sleep 2
 +  echo "1" > /sys/class/gpio/gpio$pin_a/value
 +  echo "1" > /sys/class/gpio/gpio$pin_b/value
 +  sleep 4
 +done
 +</code>
mqtt.txt · Last modified: 2022/02/15 14:57 by Jan Forman