MQTT sample using the Paho's MQTT Packet Library.
Requirements
------------
* Ethernet LAN for testing purposes.
* MQTT 3.1.1 Gateway.
NOTE for Debian/Ubuntu users: it seems that the mosquitto server
included with these distros does not support MQTT 3.1.1.
Uninstall the mosquitto server and follow the instructions
provided at the mosquitto website:
http://mosquitto.org/download/
to update the application.
* Galileo Gen 2 Development Board.
* USB-UART cable: CH340, FTDI 6-pin or equivalent for debugging.
The Mosquitto MQTT implementation is used in this document. However,
any MQTT 3.1.1 compliant gateway must work. See http://mosquitto.org/
for more details.
Building instructions
---------------------
* Download the Paho's MQTT Embedded C Library.
See http://www.eclipse.org/paho/clients/c/embedded/ for more
information about Paho's MQTT Packet Library.
Inside samples/net/paho_mqtt_clients/publisher, run the following
commands:
git clone https://git.eclipse.org/r/paho/org.eclipse.paho.mqtt.embedded-c paho
Now "paho" contains the MQTT Packet Library.
* Read src/main.c, change the IP addresses according to the LAN
environment.
* make pristine && make are enough to build this sample.
* Follow the steps indicated here:
https://www.zephyrproject.org/doc/board/galileo.html
to load the binary into the Galileo Dev Board.
Usage
-----
* Open a terminal window and type:
mosquitto -v
* Connect the USB-UART cable to the Galileo. Open a terminal and run:
screen /dev/ttyUSB0 115200
* Connect Galileo to the LAN, Turn on the board.
* Once Galileo is connected to the MQTT Gateway, on the mosquitto
terminal window something like this will appear:
1469492516: mosquitto version 1.4.9 (build date 2016-07-01 15:07:21+0000) starting
1469492516: Using default config.
1469492516: Opening ipv4 listen socket on port 1883.
1469492516: Opening ipv6 listen socket on port 1883.
1469492531: New connection from 192.168.1.110 on port 1883.
1469492531: New client connected from 192.168.1.110 as zephyr (c1, k0).
1469492531: Sending CONNACK to zephyr (0, 0)
1469492531: Received SUBSCRIBE from zephyr
1469492531: sensors (QoS 2)
1469492531: zephyr 2 sensors
1469492531: Sending SUBACK to zephyr
* Open another terminal window, and type:
mosquitto_pub -t "sensors" -m "DOOR:OPEN" -q 1
* On the screen window, the following text will be shown:
--------------------------------
[cb_publish:121] Received msg
[cb_publish:129] Topic: sensors
[cb_publish:133] Msg: DOOR:OPEN
[cb_publish:135] QoS: 1
[cb_publish:137] Pkt id: 1
--------------------------------
* QoS values can be changed. For QoS 0, type:
mosquitto_pub -t "sensors" -m "DOOR:OPEN" -q 0
For QoS 2, just change "-q 0" for "-q 2"
Troubleshooting
---------------
If the screen terminal window shows the following:
--------------------------------
Pingreq, rc: ERROR
--------------------------------
It may be caused by:
* A message was received while processing a PING handshake
with the server. This is the expected behavior.
* A network error. Check the LAN or the mosquitto server.
Compiler Warnings
-----------------
The network layer used in this sample code will be replaced once the
new IP stack is ready. So, "netz" is tagged as "deprecated" and the
following warnings will be displayed by the compiler:
warning: 'netz_tx' is deprecated [-Wdeprecated-declarations]