Improve documentation #145

Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
tomoaki
2019-02-23 11:35:28 +09:00
parent 284b5d5b46
commit 528934962f

View File

@@ -1,35 +1,35 @@
# MQTT-SN Transparent / Aggrigating Gateway
# MQTT-SN Transparent / Aggregating 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.
**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 be configured to run as a transparent or aggregating gateway in the file *gateway.conf*.
### **step1. Build the gateway**
### **Step 1: 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.
$ git clone 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 ../
### **Step 2: 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>
### How to change the configuration of the gateway
Example for **gateway.conf**:
<pre><dev>
# config file of MQTT-SN Gateway
#
@@ -40,7 +40,7 @@ BrokerSecurePortNo=8883
#
# When AggregatingGateway=YES or ClientAuthentication=YES,
# All clients must be specified by the ClientList File
# All clients must be specified by the ClientList File
#
ClientAuthentication=NO
@@ -78,35 +78,48 @@ ApiMode=2
# LOG
ShearedMemory=NO;
</dev></pre>
</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.
**Broker config**
* *BrokerName* - Domain name/ IP address of the MQTT broker
* *BrokerPortNo* - Port of the MQTT broker
* *LoginID* - Username for login at the broker
* *Password* - Password for login at the broker
### ** How to monitor the gateway from remote. **
**Broker config for TLS**
* *BrokerSecurePortNo* - TLS Port of the MQTT broker
* *RootCAfile* - Path to the root CA file
* *RootCApath* - Path to the CA certificates
* *CertsFile* - Path to the certificate
* *PrivateKey* - Path to the private key
Uncomment line32 in MQTTSNGWDefined.h.
**Gateway config**
* *MulticastIP* - UDP multicast IP address of the gateway
* *MulticastPortNo* - UDP multicast port of the gateway
* *GatewayId* - ID of the gateway (for advertising)
* *GatewayName* - Name of the gateway (for advertising)
* *KeepAlive* - Connection timeout
* *AggregatingGateway* - If 'YES', all clients which want to connect to the gateway must be declared inside of *clients.conf*
* *ClientAuthentication* - If 'YES', all clients which want to connect to the gateway must be declared inside of *clients.conf*
* *ClientsList* - path/to/your/custom_clients.conf
* *PredefinedTopic* - If 'YES', then predefined topics specified by *predefinedTopic.conf* are effective
* *PredefinedTopicList* - path/to/your/custom_predefinedTopic.conf
* *QoS-1* - If 'YES', QoS-1 PUBLISH is available. All clients which send QoS-1 PUBLISH must be declared inside of *clients.conf*
* *Forwarder* - If 'YES', then Forwarder Encapsulation Message is available. Connectable forwarders must be declared in *clients.conf*.
`//#define RINGBUFFER // print out Packets log into shared memory./"`
````
$ make
$ make install
$ make clean
````
restart the gateway.
open ssh terminal and execute LogMonitor.
Multicast address is used for GWSEARCH messages. The Gateway is waiting GWSEARCH and when receiving it,
it sends 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.
`$ ./MQTT-SNLogmonitor`
### How to monitor the gateway from remote
Now you can get the Log on your terminal.
Uncomment line32 in MQTTSNGWDefined.h:
`//#define RINGBUFFER // print out Packets log into shared memory./"`
and rebuild the gateway as shown above. Start the gateway, open a ssh terminal and execute LogMonitor with
`$ ./MQTT-SNLogmonitor`
Now you can get the log on your terminal.