Library for MQTT
Diff: mbed-mqtt-master/paho_mqtt-sn_embedded_c/MQTTSNGateway/README.md
- Revision:
- 0:ba7e439238ab
diff -r 000000000000 -r ba7e439238ab mbed-mqtt-master/paho_mqtt-sn_embedded_c/MQTTSNGateway/README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-mqtt-master/paho_mqtt-sn_embedded_c/MQTTSNGateway/README.md Mon Jun 20 16:24:43 2022 +0000 @@ -0,0 +1,112 @@ +# MQTT-SN Transparent / Aggrigating Gateway + +**MQTT-SN** requires a MQTT-SN Gateway which acts as a protocol converter to convert **MQTT-SN messages to MQTT messages**. MQTT-SN client over SensorNetwork can not communicate directly with MQTT broker(TCP/IP). +This Gateway can run as a transparent or aggrigating Gateway by specifying the gateway.conf. + +### **step1. Build the gateway** +```` +$ git clone -b experiment https://github.com/eclipse/paho.mqtt-sn.embedded-c +$ cd paho.mqtt-sn.embedded-c/MQTTSNGateway +$ make +$ make install +$ make clean +```` +MQTT-SNGateway, MQTT-SNLogmonitor and *.conf files are copied into ../ directory. +If you want to install the gateway into specific directories, enter a command line as follows: +```` +$ make install INSTALL_DIR=/path/to/your_directory CONFIG_DIR=/path/to/your_directory +```` + + +### **step2. Execute the Gateway.** + +```` +$ cd ../ +$ ./MQTT-SNGateway [-f Config file name] +```` + + +### **How to Change the configuration of the gateway** +**../gateway.conf** Contents are follows: + +<pre><dev> + +# config file of MQTT-SN Gateway +# + +BrokerName=iot.eclipse.org +BrokerPortNo=1883 +BrokerSecurePortNo=8883 + +# +# When AggregatingGateway=YES or ClientAuthentication=YES, +# All clients must be specified by the ClientList File +# + +ClientAuthentication=NO +AggregatingGateway=NO +QoS-1=NO +Forwarder=NO + +#ClientsList=/path/to/your_clients.conf + +PredefinedTopic=NO +#PredefinedTopicList=/path/to/your_predefinedTopic.conf + +#RootCAfile=/etc/ssl/certs/ca-certificates.crt +#RootCApath=/etc/ssl/certs/ +#CertsFile=/path/to/certKey.pem +#PrivateKey=/path/to/privateKey.pem + +GatewayID=1 +GatewayName=PahoGateway-01 +KeepAlive=900 +#LoginID=your_ID +#Password=your_Password + + +# UDP +GatewayPortNo=10000 +MulticastIP=225.1.1.1 +MulticastPortNo=1883 + +# XBee +Baudrate=38400 +SerialDevice=/dev/ttyUSB0 +ApiMode=2 + +# LOG +ShearedMemory=NO; + +</dev></pre> + +**BrokerName** to specify a domain name of the Broker, and **BrokerPortNo** is a port No of the Broker. **BrokerSecurePortNo** is for TLS connection. +**MulticastIP** and **MulticastPortNo** is a multicast address for GWSEARCH messages. Gateway is waiting GWSEARCH and when receiving it send GWINFO message via MulticastIP address. Clients can get the gateway address (Gateway IP address and **GatewayPortNo**) from GWINFO message by means of std::recvfrom(). +Client should know the MulticastIP and MulticastPortNo to send a SEARCHGW message. +**GatewayId** is used by GWINFO message. +**KeepAlive** is a duration of ADVERTISE message in seconds. +when **AggregatingGateway** or **ClientAuthentication** is **YES**, All clients which connect to the gateway must be declared by a **ClientsList** file. +Format of the file is ClientId and SensorNetwork Address. e.g. IP address and Port No etc, in CSV. more detail see clients.conf. +When **QoS-1** is **YES**, QoS-1 PUBLISH is available. All clients which send QoS-1 PUBLISH must be specified by Client.conf file. +When **PredefinedTopic** is **YES**, **Pre-definedTopicId**s specified by **PredefinedTopicList** are effective. This file defines Pre-definedTopics of the clients. In this file, ClientID,TopicName and TopicID are declared in CSV format. +When **Forwarder** is **YES**, Forwarder Encapsulation Message is available. Connectable Forwarders must be declared by a **ClientsList** file. + + +### ** How to monitor the gateway from remote. ** + +Uncomment line32 in MQTTSNGWDefined.h. + +`//#define RINGBUFFER // print out Packets log into shared memory./"` +```` +$ make +$ make install +$ make clean +```` +restart the gateway. +open ssh terminal and execute LogMonitor. + +`$ ./MQTT-SNLogmonitor` + +Now you can get the Log on your terminal. + +