Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Small Things for Monitoring

Jan-Piet Mens
November 17, 2016

Small Things for Monitoring

Jan-Piet Mens

November 17, 2016
Tweet

More Decks by Jan-Piet Mens

Other Decks in Technology

Transcript

  1. Small Things for Monitoring Jan-Piet Mens November 2016 @jpmens

  2. @jpmens: consultant, part- time admin, small-scale fiddler, loves DNS, plain

    text, and things that work. Dreamed up OwnTracks & wrote jo
  3. Today’s special MQTT
 
 ESP8266
 
 for monitoring stuff

  4. MQTT is a standard, a transport, PUB/SUB messaging, designed for

    unreliable networks MQTT
  5. security TLS authentication ACLs TLS-PSK (payload encryption)

  6. Quality of Service 0 At most once 1 Assured delivery

    2 Once only
  7. topic names UTF-8, hierarchical, wildcards temperature/room/living devices/# finance/+/eur/rate

  8. PUB/SUB cauldron

  9. MQTT brokers the server bit of MQTT

  10. Mosquitto C, fast, lightweight, ACLs (plugin), TLS, TLS-PSK, bridge, Websockets,

    logging via $SYS, FLOSS http://mosquitto.org
  11. bridging

  12. CLI utilities mosquitto_sub -v [-h localhost] [-p 1883] [--cafile file]

    [--cert file --key file] [-u username [-P password]] -t 'topic/#' subscribe publish mosquitto_pub ... [-r] -t topic -m payload
  13. languages Lua, Python, C, JavaScript, Perl, Ruby, Java, ...

  14. Python API: PUB #!/usr/bin/env python import paho.mqtt.publish as mqtt mqtt.single('conf/hello',

    'Hello MQTT') $ mosquitto_sub -h localhost -v -t 'conf/#' conf/hello Hello MQTT payload topic
  15. Python API: SUB callbacks #!/usr/bin/env python import paho.mqtt.client as paho

    def on_connect(mosq, userdata, rc): mqttc.subscribe("conf/+", 0) def on_message(mosq, userdata, msg): print "%s %s" % (msg.topic, str(msg.payload)) mqttc = paho.Client(userdata=None) mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.connect("localhost", 1883, 60) mqttc.loop_forever()
  16. Python API: SUB $ mosquitto_pub -t 'conf/thirsty' -m 'Beertime?' $

    mosquitto_pub -t 'conf/catering' -m 'Coffee is ready' $ ./sub.py conf/thirsty Beertime? conf/catering Coffee is ready
  17. The hardware … EUR 22.83 Flash/RAM 16 / 64 USB

    2 LAN/WAN 1 / 1 WiFi 802.11 b/g/n GL-Inet AR150
  18. Small, but too much EUR 50 - 100

  19. ESP8266 Low-cost micro controller full TCP/IP stack A bit like

    an Arduino (same IDE, or Lua) but with on-board WiFi (!) and really inexpensive Different form factors
  20. ESP8266 EUR 1.50 ESP-01 EUR 2.60 NodeMCU EUR 1.50 ESP-12

  21. Electrodragon EUR 5.50 http://www.electrodragon.com

  22. Sonoff EUR 4.47 https://www.itead.cc/sonoff-wifi-wireless-switch.html

  23. Wemos D1 mini EUR 4.00 Flash/RAM 4MB / 64 KB

    Voltage 3.3V Digital I/O 11 Analog 1
  24. Wemos shields EUR 1.95 EUR 4.50 EUR 1.40 EUR 2.90

  25. Homie-ESP8266 #include <Homie.h> HomieNode buttonNode("button", "button"); void loopHandler() { int

    buttonValue = debouncer.read(); /* ... */ if (Homie.setNodeProperty(buttonNode, "open", buttonValue ? "true" : "false", true)) { } } void setup() { debouncer.attach(PIN_BUTTON); Homie.setFirmware("button-homie", "1.0.0"); Homie.registerNode(buttonNode); Homie.setLoopFunction(loopHandler); Homie.setup(); } void loop() { Homie.loop(); debouncer.update(); } https://github.com/marvinroger/homie-esp8266
  26. Arduino IDE

  27. Le bouton devices/cea191e0/$nodes button:button devices/cea191e0/$online true devices/cea191e0/$name Le bouton devices/cea191e0/$localip

    192.168.8.151 devices/cea191e0/$fwname button-homie devices/cea191e0/$fwversion 1.0.0 devices/cea191e0/$signal 100 devices/cea191e0/button/open true
  28. homie-ota https://github.com/jpmens/homie-ota Retro/Vintage-style

  29. Monitoring Temperature, movement (PIR), humidity, inexpensive sensors, many examples, LWT,

    mqttwarn for integration, Node-Red
  30. alerting: mqttwarn https://github.com/jpmens/mqttwarn

  31. practical solutions alerting, metering, logging, location awareness, tracking, automation, and

    controlling, host monitoring
  32. MQTT in the wild Graylog, beaver, Ansible, RabbitMQ, collectd, openHAB,

    Github, Wireshark, Flukso, RemakeElectric, Jenkins, Diamond, OwnTracks
  33. mqtt.org @mqttorg

  34. Particle Photon EUR 19.00

  35. Particle Electron EUR 70.00

  36. Omega2