Update README

Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
tomoaki
2019-05-30 10:09:14 +09:00
parent 6cb7935027
commit 18885668cf
2 changed files with 42 additions and 62 deletions

View File

@@ -1,24 +1,27 @@
# MQTT-SN Transparent / Aggregating Gateway # 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). **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*. This Gateway can run as a transparent or aggrigating Gateway by specifying the gateway.conf.
### **Step 1: Build the gateway** ### **step1. Build the gateway**
```` ````
$ git clone https://github.com/eclipse/paho.mqtt-sn.embedded-c $ git clone -b experiment https://github.com/eclipse/paho.mqtt-sn.embedded-c
$ cd paho.mqtt-sn.embedded-c/MQTTSNGateway $ cd paho.mqtt-sn.embedded-c/MQTTSNGateway
$ make $ make [SENSORNET={udp6|xbee}]
$ make install $ make install
$ make clean $ make clean
```` ````
MQTT-SNGateway, MQTT-SNLogmonitor and *.conf files are copied into **../** directory. By default, a gateway for UDP is built.
In order to create a gateway for UDP6 or XBee, SENSORNET argument is required.
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: 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 $ make install INSTALL_DIR=/path/to/your_directory CONFIG_DIR=/path/to/your_directory
```` ````
### **Step 2: Execute the Gateway.** ### **step2. Execute the Gateway.**
```` ````
$ cd ../ $ cd ../
@@ -26,8 +29,8 @@ $ ./MQTT-SNGateway [-f Config file name]
```` ````
### How to change the configuration of the gateway ### **How to Change the configuration of the gateway**
Example for **gateway.conf**: **../gateway.conf** Contents are follows:
<pre><dev> <pre><dev>
@@ -80,43 +83,23 @@ ShearedMemory=NO;
</dev></pre> </dev></pre>
**Broker config** **BrokerName** to specify a domain name of the Broker, and **BrokerPortNo** is a port No of the Broker. **BrokerSecurePortNo** is for TLS connection.
* *BrokerName* - Domain name/ IP address of the MQTT broker **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().
* *BrokerPortNo* - Port of the MQTT broker Client should know the MulticastIP and MulticastPortNo to send a SEARCHGW message.
* *LoginID* - Username for login at the broker **GatewayId** is used by GWINFO message.
* *Password* - Password for login at the broker **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 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
**Gateway config** ### ** How to monitor the gateway from remote. **
* *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*.
Multicast address is used for GWSEARCH messages. The Gateway is waiting GWSEARCH and when receiving it, Uncomment line32 in MQTTSNGWDefined.h.
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.
### How to monitor the gateway from remote `//#define RINGBUFFER // print out Packets log into shared memory./"`
Uncomment line32 in MQTTSNGWDefined.h:
`//#define RINGBUFFER // print out Packets log into shared memory.`
```` ````
$ make $ make
$ make install $ make install
@@ -125,9 +108,9 @@ $ make clean
restart the gateway. restart the gateway.
open ssh terminal and execute LogMonitor. open ssh terminal and execute LogMonitor.
```` `$ ./MQTT-SNLogmonitor`
$ ./MQTT-SNLogmonitor
````
Now you can get the Log on your terminal. Now you can get the Log on your terminal.

View File

@@ -346,7 +346,6 @@ int UDPPort6::open(const char* ipAddress, uint16_t uniPortNo, const char* broadc
return 0; return 0;
} }
//TODO: test if unicast is working too....
int UDPPort6::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* addr) int UDPPort6::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* addr)
{ {
char destStr[INET6_ADDRSTRLEN+10]; char destStr[INET6_ADDRSTRLEN+10];
@@ -391,8 +390,6 @@ int UDPPort6::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* add
WRITELOG("errno in UDPPort::unicast(sendto): %d, %s\n",status,strerror(status)); WRITELOG("errno in UDPPort::unicast(sendto): %d, %s\n",status,strerror(status));
} }
WRITELOG("unicast sendto %s, port: %d length = %d\n", destStr,port,status);
return status; return status;
} }