From 18885668cf185ed447f86405b4e68b2ff3221e74 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Thu, 30 May 2019 10:09:14 +0900 Subject: [PATCH] Update README Signed-off-by: tomoaki --- MQTTSNGateway/README.md | 101 ++++++++---------- .../src/linux/udp6/SensorNetwork.cpp | 3 - 2 files changed, 42 insertions(+), 62 deletions(-) diff --git a/MQTTSNGateway/README.md b/MQTTSNGateway/README.md index 437a338..bef8415 100644 --- a/MQTTSNGateway/README.md +++ b/MQTTSNGateway/README.md @@ -1,35 +1,38 @@ -# 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). -This Gateway can be configured to run as a transparent or aggregating gateway in the file *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 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 -$ 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 -b experiment https://github.com/eclipse/paho.mqtt-sn.embedded-c +$ cd paho.mqtt-sn.embedded-c/MQTTSNGateway +$ make [SENSORNET={udp6|xbee}] +$ make install +$ make clean +```` +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: ```` $ make install INSTALL_DIR=/path/to/your_directory CONFIG_DIR=/path/to/your_directory ```` + +### **step2. Execute the Gateway.** -### **Step 2: Execute the Gateway.** - -```` -$ cd ../ +```` +$ cd ../ $ ./MQTT-SNGateway [-f Config file name] -```` +```` -### How to change the configuration of the gateway -Example for **gateway.conf**: - -

+### **How to Change the configuration of the gateway**    
+**../gateway.conf**   Contents are follows: 
+   
+
    
 
 # config file of MQTT-SN Gateway
 #
@@ -40,7 +43,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,45 +81,25 @@ ApiMode=2
 # LOG
 ShearedMemory=NO;
 
-
+
-**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 +**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 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 +### ** How to monitor the gateway from remote. ** -**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*. +Uncomment line32 in MQTTSNGWDefined.h. -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. - -### How to monitor the gateway from remote - -Uncomment line32 in MQTTSNGWDefined.h: - -`//#define RINGBUFFER // print out Packets log into shared memory.` +`//#define RINGBUFFER // print out Packets log into shared memory./"` ```` $ make $ make install @@ -125,9 +108,9 @@ $ make clean restart the gateway. open ssh terminal and execute LogMonitor. -```` -$ ./MQTT-SNLogmonitor -```` +`$ ./MQTT-SNLogmonitor` Now you can get the Log on your terminal. + + diff --git a/MQTTSNGateway/src/linux/udp6/SensorNetwork.cpp b/MQTTSNGateway/src/linux/udp6/SensorNetwork.cpp index b33525d..5d6b7b8 100644 --- a/MQTTSNGateway/src/linux/udp6/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/udp6/SensorNetwork.cpp @@ -346,7 +346,6 @@ int UDPPort6::open(const char* ipAddress, uint16_t uniPortNo, const char* broadc return 0; } -//TODO: test if unicast is working too.... int UDPPort6::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* addr) { 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("unicast sendto %s, port: %d length = %d\n", destStr,port,status); - return status; }