image-20240707214707-1.png

Table of Contents:

1.  Introduction

1.1 Overview

The Dragino Weather Station Kit is designed for measuring atmospheric conditions to provide information for weather forecasts and to study the weather and climate.

The Weather Station Kit includes a NB transmitter WSC2-C, a 9 in 1 Weather Station WSS-09 and a Rain Gauge WSS-08.

Please note that the WSC2-C only includes the transmitter, and the 9 in 1 Weather Station WSS-09 and Rain Gauge WSS-08 need to be purchased separately.

The 9 in 1 weather station kit can measure below values: Wind Speed, Wind Direction, Temperature, Humidity, Air Pressure, Illumination, PM2.5, PM10, Noise & Rain Gauge.

The NB transmitter use RS485 interface to communicate with the 9 in 1 weather station. It can also connect 3rd party RS485 sensors to measure more environment data. It also has a pulse counting input which can be used to connect tipping bucket Rain Gauge.

WSC2-C supports different uplink methods include TCP, MQTT,  UDP, MQTTS or CoAP for different application requirement. and Support Uplinks to various IoT Servers.

*make sure you have NB-IoT or CAT-M1 coverage locally.

1.2 Features & Spec for WSC2-C Transmitter

  • For -NB Bands: B1/B2/B3/B4/B5/B8/B12/B13/B17/B18/B19/B20/B25/B28/B66/B70/B85
  • For -CB Bands: B1/B2/B3/B4/B5/B8/B12/B13//B18/B19/B20/B25/B28/B66/B71/B85
  • CAT-M1 / LTE-M Bands: B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B25/B26/B27/B28/B66/B85
  • Ultra-low power consumption
  • Support WSS09 9 in 1 Sensors: Wind Speed, Wind Direction, Temperature,  Humidity, Air Pressure, Illumination, PM2.5, PM10, Noise & Rain Gauge
  • RS485 Interface for 3rd party Sensors
  • Support WSS08 optical Rain Gauge or tipping bucket Rain Gauge
  • Support Bluetooth v5.1 remote configure and update firmware
  • Support wireless OTA update firmware
  • AT Commands to change parameters
  • Uplink on periodically
  • Downlink to change configure
  • IP66 Waterproof Enclosure
  • 1000mAh Rechargeable Li-ion Battery
  • Input and Recharge power: 12v
  • Nano SIM card slot for NB-IoT SIM

1.3 Specification for WSS-09 9 in 1 weather sensors

image-20240708092247-1.png

More Detail: WSS09-1 Manual.

Wind Speed:

  • Range: 0~60m/s
  • Accuracy: ±(0.2m/s±0.02*v)(v : the wind speed)
  • Ultrasonic measurement,no start wind strength needed

Wind Direction:

  • Range: 0~3599
  • Accuracy: +3°
  • Ultrasonic measurement,no start wind strength needed
  • Built-in electronic compass. No need to consider installation direction

Temperature:

  • Range: -40°C ~ +80°C
  • Accuracy: +0.5°C

Humidity:

  • Range: 0 ~ 99% RH
  • Accuracy Tolerance : Typ +3% RH

Air Pressure:

  • Accuracy: ±0.15kPa@25°C 101kPa
  • Range: 0~120kPa

Noise:

  • Range: 30dB~120dB
  • Accuracy: +0.5dB

PM2.5:

  • Range: 0~1000ug/m3
  • Accuracy: ±3%FS
  • Resolution: 1ug/m3

PM10:

  • Range: 0~1000ug/m3
  • Accuracy: +3%FS
  • Resolution: 1ug/m3

llumination:

  • Range: 0~200k Lux
  • Accuracy: +7%(25 °C)

1.4 Specification for WSS-08 Optical Rain Guage

image-20240707215336-2.png

  • Input Power: 9~30 VDC
  • Sense diameter: 6cm
  • Pulse Output

More Detail: WSS-08 Manual.

2.  How to use

2.1  Installation

Below is an installation example for the weather station. Field installation example can be found at Appendix I: Field Installation Photo.  

image-20250116134451-1.jpeg

 Wiring:

  1. WSC2-C and sensors all powered by solar power via MPPT
  2. WSC2-C Weather Station Kit already include 9 sensors.
  3. Possible to add optional 3rd sensors to measure more parameter

Notice 1:

  • All weather sensors and WSC2-C are powered by MPPT solar recharge controller. MPPT is connected to solar panel and storage battery.
  • Weather sensors won't work if solar panel and storage battery fails.

Notice 2:

Due to shipment and importation limitation, user is better to purchase below parts locally:

  • Solar Panel
  • Storage Battery
  • MPPT Solar Recharger
  • Cabinet.

2.2  Send data to IoT server via NB-IoT network

The WSC2-C is equipped with a NB-IoT module, the pre-loaded firmware in WSC2-C will get environment data from sensors and send the value to local NB-IoT network via the NB-IoT module.  The NB-IoT network will forward this value to IoT server via the protocol defined by WSC2-C.

Below shows the network structure:

image-20250116134502-2.jpeg

There are two version: -GE and -1T version of WSC2-C.

GE Version: This version doesn't include SIM card or point to any IoT server. User needs to use AT Commands to configure below two steps to set WSC2-C send data to IoT server.

  • Install NB-IoT SIM card and configure APN. See instruction of Attach Network.

Below shows result of different server as a glance.

ServersDash BoardComments
Node-Red

image-20250113195417-4.png

 
DataCake

image-20250113195357-3.png

 
Tago.IOimage-20250113195545-5.png 
General UDPRaw Payload. Need Developer to design Dash Board 
General MQTTRaw Payload. Need Developer to design Dash Board 
ThingSpeak

image-20250113195349-2.png

 
ThingsBoard

image-20250113195339-1.png

 

1T Version: This version has 1NCE SIM card pre-installed and configure to send value to ThingsEye. User Just need to select the sensor type in ThingsEyeand Activate WSC2-C and user will be able to see data in ThingsEye. See here for ThingsEye Config Instruction.

2.3 Payload Types

To meet different server requirement, WSC2-C supports different payload type.

Includes:

User can specify the payload type when choose the connection protocol. Example:

AT+PRO=1,0            // Use COAP Connection & hex Payload

AT+PRO=1,5            // Use COAP Connection & Json Payload

AT+PRO=2,0            // Use UDP Connection & hex Payload

AT+PRO=2,5            // Use UDP Connection & Json Payload

AT+PRO=3,0            // Use MQTT Connection & hex Payload

AT+PRO=3,5            // Use MQTT Connection & Json Payload

AT+PRO=4,0            // Use TCP Connection & hex Payload

AT+PRO=4,5            // Use TCP Connection & Json Payload

Since firmware V1.1.0, IMSI has been added to payload.

2.3.1  General Json Format(Type=5)

This is the PMMOD=1 generic Json format. It is shown below:

{"IMEI":"868508065628110","IMSI":"460240210507481","Model":"WSC2-C","payload_ver":0,"rain_count":120.00,"wind_speed":0.58,"wind_level":1,"wind_direction":3,"wind_angel":136,"humidity":43.1,"temperature":21.0,"voise":52.1,"PM2_5":41,"PM10":58,"pressure":101.8,"illumination":650,"interrupt":0,"interrupt_level":0,"battery":3.27,"signal":27,"time":"2025-01-18T01:22:56Z","latitude":0.000000,"longitude":0.000000,"gps_time":"2025-01-18T01:07:06Z"}

image-20250118092344-2.png

This is the PMMOD=0 generic Json format. It is shown below:

{"IMEI":"868508065628110","IMSI":"460240210507481","Model":"WSC2-C","payload_ver":1,"rain_count":120.00,"wind_speed":0.27,"wind_level":1,"wind_direction":5,"wind_angel":229,"humidity":38.5,"temperature":24.1,"voise":62.4,"CO2":34,"pressure":101.1,"illumination":646,"interrupt":0,"interrupt_level":0,"battery":3.33,"signal":28,"time":"2025-01-20T05:37:16Z","latitude":0.000000,"longitude":0.000000,"gps_time":"2025-01-20T04:01:08Z"}

image-20250120133930-1.png

Notice, from above payload:

If set to PMMOD=1, the following data will be uploaded:

  •  BAT,Singal,Mod,Interrupt,Interrupt_level,payload_ver,exit_count,wind_speed,wind_level,wind_direction,wind_angel, humidity,temperature,voise,PM2_5,PM10,pressure,illumination,flag,DIY Sensors(A1~A4),Timestamp

If set to PMMOD=0, the following data will be uploaded

  •  BAT,Singal,Mod,Interrupt,Interrupt_level,payload_ver,exit_count,wind_speed,wind_level,wind_direction,wind_angel, humidity,temperature,voise,PM2_5,PM10,pressure,illumination,flag,DIY Sensors(A1~A4),Timestamp

2.3.2  HEX format Payload(Type=0)

a. This is the hex format of PMMOD=1.

It is shown below:

f868508065628110f4602402105074816e6e0cbc1a01000001000004b00016000100060110017000e402330023003203f90000028a810aa20352fc30678b19740000000000000000678b098f

image-20250118113309-6.png

image-20250118113344-7.png

Version:

These bytes include the hardware and software version.

Higher byte: Specify Sensor Model: 0x6e for WSC2-C

Lower byte: Specify the software version: 0x6e=110, means firmware version 1.1.0

BAT (Battery Info):

Ex1: 0x0cbc = 3260mV/1000= 3.260V

Signal Strength:

NB-IoT Network signal Strength.

Ex1: 0x1a = 26

0        -113dBm or less

1        -111dBm

2...30 -109dBm... -53dBm

31      -51dBm or greater

99      Not known or not detectable

Interrupt:

This data field shows if this packet is generated by interrupt or not.

Example:

If byte[0]&0x01=0x00 : Normal uplink packet.

If byte[0]&0x01=0x01 : Interrupt Uplink Packet.

Interrupt_level:

This byte shows whether the interrupt is triggered by a high or low level.

Ex1: 0x00  Interrupt triggered by falling edge (low level)

Ex2: 0x01  Interrupt triggered by rising edge (high level)

payload_ver: 

The payload version number is used to parse different decodes.

Ex2: 0x01  Payload decoding version v1.0.0

exit_count: 

Converted to rainfall based on the number of interruptions,

Ex1:

bytes[54]&0x0F(hex) / bytes[55](hex) = 0x81&0x0F / 0x0a = 1 / 10=0.1mm(Note:Calculate the accuracy of the trigger one time to 0.1mm)

bytes[10] | bytes[13] / 0.1mm = 0x000004b0(hex)  *  0.1 = 1200(dec) * 0.1 = 120mm(Note:Use exit_count x precision = rainfall)

wind_speed:

Ex1: 0x0016(hex) / 100 = 22(dec) / 100 = 0.22m/s

wind_level:

Ex1: 0x0001(hex) = 1(dec)

wind_direction:

Ex1: 0x0006(hex) = 6(dec)

Note: 0 for due north, increasing clockwise, 2 for due east

wind_angel:

Ex1: 0x0110(hex) =  272(dec)

Note: Calculation: 0° clockwise increase in degrees for due north, 90° for due east

Humidity:   

Ex1: :0170(H)=368(D)    Value:  368 / 10=36.8, So 36.8%

Temperature:

If payload is: 00e4H:  (00e4 & 8000 == 0), temp = 00e4H /10 = 22.8 degree

If payload is: FF3FH :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.

(FF3F & 8000: Judge whether the highest bit is 1, when the highest bit is 1, it is negative)

Voise:

Ex1:0x0233(H) = 563(D)   Value: 563/10=56.3, So 56.3dB/y

PM2_5(CO2):

Ex1: 0x0023(H) = 35(D) 

PM10:

Ex1: 0x0032(H) = 50(D)

Pressure:

Ex1: 0x03f9(H) = 1017(D)   Value: 1017/10= 101.7, So 101.7kPa

illumination:

Ex1: 0x0000028a(H) = 650(D) Lux

Flag:

Higher byte:

s_flag: (0x81>>6)&0x01= 000, A value of 1 for the last value means that the sensor has been recognized, and 0 means that, the sensor has not been recognized.

i_flag: (0x81>>5)&0x01 = 000, A last value of 1 means that the interrupt has been triggered, and 0 means that the interrupt has not been triggered.

Low byte:

Ext:0x0a = 10/100=0.1, This represents 0.1mm of rainfall per trigger conversion.

DIY Sensors(A1~A4)

Ex1: 0xa203fafc1e 

a2 :  485 Sensor Address

03:  The sensor returns a total of 3 bytes

fafc1e: Hexadecimal data returned from sensor acquisition

Note: DIY sensor data needs to be set up before it has to go up with the device. (Setup reference link: Reference Links)

TimeStamp: 

Unit TimeStamp Example: 678b098f(H) = 1737165199(D)

Put the decimal value into this link(https://www.epochconverter.com/) to get the time.

Latitude:

Example: 0x015A7A7A(H)=22706810(D)=22.706810

Longitude:

Example: 0x06CF33CE(H)=114242510(D)=114.242510

GPS Timestamp:

Unit TimeStamp Example: 678b098f(H) = 1737165199(D)

Put the decimal value into this link(https://www.epochconverter.com/) to get the time.

b. This is the hex format of PMMOD=0.

It is shown below:

f868508065628110f4602402105074816e6e0d131c01000001000004b000110000000500dc01f000da01eb002f03f600000286010aa203fafc1e678dae100000000000000000678dad17

image-20250120100524-2.png

image-20250120100538-3.png

Version:

These bytes include the hardware and software version.

Higher byte: Specify Sensor Model: 0x3e for WSC2-C

Lower byte: Specify the software version: 0x6e=110, means firmware version 1.1.0

BAT (Battery Info):

Ex1: 0x0d13 = 3347mV/1000= 3.347V

Signal Strength:

NB-IoT Network signal Strength.

Ex1: 0x1c = 28

0        -113dBm or less

1        -111dBm

2...30 -109dBm... -53dBm

31      -51dBm or greater

99      Not known or not detectable

Interrupt:

This data field shows if this packet is generated by interrupt or not.

Example:

If byte[0]&0x01=0x00 : Normal uplink packet.

If byte[0]&0x01=0x01 : Interrupt Uplink Packet.

Interrupt_level:

This byte shows whether the interrupt is triggered by a high or low level.

Ex1: 0x00  Interrupt triggered by falling edge (low level)

Ex2: 0x01  Interrupt triggered by rising edge (high level)

payload_ver: 

The payload version number is used to parse different decodes.

Ex2: 0x01  Payload decoding version v1.0.0

exit_count: 

Converted to rainfall based on the number of interruptions,

Ex1:

bytes[54]&0x0F(hex) / bytes[55](hex) = 0x81&0x0F / 0x0a = 1 / 10=0.1mm(Note:Calculate the accuracy of the trigger one time to 0.1mm)

bytes[10] | bytes[13] / 0.1mm = 0x 000004b0(hex)  *  0.1 = 1200(dec) * 0.1 = 120mm(Note:Use exit_count x precision = rainfall)

wind_speed:

Ex1: 0x0011(hex) / 100 = 17(dec) / 100 = 0.17m/s

wind_level:

Ex1: 0x0000(hex) = 0(dec)

wind_direction:

Ex1: 0x0005(hex) = 5(dec)

Note: 0 for due north, increasing clockwise, 2 for due east

wind_angel:

Ex1: 0x00dc(hex) =  220(dec)

Note: Calculation: 0° clockwise increase in degrees for due north, 90° for due east

Humidity:   

Ex1: 0x01f0(H)=496(D)    Value:  496 / 10=49.6, So 49.6%

Temperature:

If payload is: 00da(H) :  (00da & 8000 == 0), temp = 00da(H) /10 = 21.8 degree

If payload is: FF3F(H) :  (FF3F & 8000 == 1) , temp = (FF3FH - 65536)/10 = -19.3 degrees.

(FF3F & 8000: Judge whether the highest bit is 1, when the highest bit is 1, it is negative)

Voise:

Ex1:0x01eb(H) = 491(D)   Value: 491/10=49.1, So 49.1dB/y

CO2:

Ex1: 0x002f(H) = 47(D) 

Pressure:

Ex1: 0x03f6(H) = 1014(D)   Value: 1014/10= 101.4, So 101.4kPa

illumination:

Ex1: 0x00000286(H) = 390(D) Lux

Flag:

Higher byte:

s_flag: (0x01>>6)&0x01= 000, A value of 1 for the last value means that the sensor has been recognized, and 0 means that, the sensor has not been recognized.

i_flag: (0x01>>5)&0x01 = 000, A last value of 1 means that the interrupt has been triggered, and 0 means that the interrupt has not been triggered.

Low byte:

Ext:0x0a = 10/100=0.1, This represents 0.1mm of rainfall per trigger conversion.

DIY Sensors(A1~A4)

Ex1: 0xa203fafc1e 

a2 :  485 Sensor Address

03:  The sensor returns a total of 3 bytes

fafc1e: Hexadecimal data returned from sensor acquisition

Note: DIY sensor data needs to be set up before it has to go up with the device. (Setup reference link: Reference Links)

TimeStamp: 

Unit TimeStamp Example: 678dae10(H) = 1737338384(D)

Put the decimal value into this link(https://www.epochconverter.com/) to get the time.

Latitude:

Example: 0x015A7A7A(H)=22706810(D)=22.706810

Longitude:

Example: 0x06CF33CE(H)=114242510(D)=114.242510

GPS Timestamp:

Unit TimeStamp Example: 678dad17(H) = 1737338135(D)

Put the decimal value into this link(https://www.epochconverter.com/) to get the time.

2.3.3 ThingsBoard Payload(Type=3)

Type3 payload special design for ThingsBoard, it will also configure other default server to ThingsBoard.

{
    "IMEI": "868508065628110",
    "IMSI": "460240210507481",
    "Model": "WSC2-C",
    "payload_ver": 1,
    "rain_count": 120.00,
    "wind_speed": 0.00,
    "wind_level": 0,
    "wind_direction": 0,
    "wind_angel": 0,
    "humidity": 38.4,
    "temperature": 24.5,
    "voise": 50.1,
    "CO2": 38,
    "pressure": 101.1,
    "illumination": 632,
    "interrupt": 0,
    "interrupt_level": 0,
    "battery": 3.34,
    "signal": 26,
    "time": "2025-01-20T06:12:29Z",
    "latitude": 0.000000,
    "longitude": 0.000000,
    "gps_time": "2025-01-20T06:00:19Z"
}

image-20250120141719-6.png

2.3.4 ThingSpeak Payload(Type=1)

This payload meets ThingSpeak platform requirement. It includes only four fields. Form 1~8 are:

payload_ver, exit_count(rain), WIND_SPEED & WIND_LEVEL WIND_DIRECTION WIND_ANGLE Humidity Temperature. This payload type only valid for ThingsSpeak Platform

As below:

field1=payload_ver & field2=exit_count(rain) & field3=WIND_SPEED & field4=WIND_LEVEL & field5=WIND_DIRECTION & field6=WIND_ANGLE & field7=Humidity & field8=Temperature

image-20250120135427-4.png

image-20250120135438-5.png

2.4 Test Uplink and Change Update Interval

By default, Sensor will send uplinks every 2 hours 

User can use below commands to change the uplink interval.

AT+TDC=7200        // Set Update Interval to 7200s

User can also push the button for more than 1 seconds to activate an uplink.

3.  Configure WSC2-C

3.1  Configure Methods

WSC2-C supports below configure method:

  • NB-Iot Downlink.  Instruction for different platforms: See NB-Iot downlink section.

3.3  Commands special design for WSC2-C

These commands only valid for WSC2-C, as below:

3.3.1  Set Transmit Interval Time

Feature: Change NB-Iot End Node Transmit Interval.

AT Command: AT+TDC

Command ExampleFunctionResponse
AT+TDC=?Show current transmit Interval

30000
OK
the interval is 30000ms = 30s

AT+TDC=60000Set Transmit Interval

OK
Set transmit interval to 60000ms = 60 seconds

Downlink Command: 0x01

Format: Command Code (0x01) followed by 3 bytes time value.

If the downlink payload=0100003C, it means set the END Node's Transmit Interval to 0x00003C=60(S), while type code is 01.

  • Example 1: Downlink Payload: 0100001E       //  Set Transmit Interval (TDC) = 30 seconds
  • Example 2: Downlink Payload: 0100003C      //  Set Transmit Interval (TDC) = 60 seconds

3.3.2  Set the CO2 or PM mode

Note: Default shipment is CO2 sensor, optional CO2 or PM sensor is available at the time of purchase, which needs to be modified according to the sensor selected at the time of purchase.

Feature: Set the CO2/PM mode, and the user can set the corresponding mode according to the purchased sensor.

AT Command:

Command ExampleFunctionResponse
AT+PMMOD=1The working sensors are PM2.5 and PM10

OK
 

AT+PMMOD=0The working sensors are CO2

OK

Downlink Command:

  • 0xE101     Same as: AT+PMMOD=1
  • 0xE100     Same as: AT+PMMOD=0

3.3.3  Add or Delete RS485 Sensor

Feature: User can add or delete 3rd party sensor as long they are RS485/Modbus interface,baud rate support 4800.Maximum can add 4 sensors. 

AT Command:  

AT+DYSENSOR=Type_Code, Query_Length, Query_Command , Read_Length , Valid_Data ,has_CRC,timeout

  • Type_Code range:   A1 ~ A4

  • Query_Length:        RS485 Query frame length, Value cannot be greater than 10

  • Query_Command:  RS485 Query frame data to be sent to sensor, cannot be larger than 10 bytes

  • Read_Length:   RS485 response frame length supposed to receive. Max can receive

  • Valid_Data:       valid data from RS485 Response, Valid Data will be added to Payload and upload via LoRaWAN.

  • has_CRC:          RS485 Response crc check  (0: no verification required 1: verification required). If CRC=1 and CRC error, valid data will be set to 0.

  • timeout:           RS485 receive timeout (uint:ms). Device will close receive window after timeout

Example:

User need to change external sensor use the type code as address code.

With a 485 sensor, after correctly changing the address code to A1, the RS485 query frame is shown in the following table:

image-20220624143553-10.png

The response frame of the sensor is as follows:

image-20220624143618-11.png

Then the following parameters should be:

  • Address_Code range: A1
  • Query_Length: 8
  • Query_Command: A103000000019CAA
  • Read_Length: 8
  • Valid_Data: 23 (Indicates that the data length is 2 bytes, starting from the 3th byte)
  • has_CRC: 1
  • timeout: 1500 (Fill in the test according to the actual situation)

So the input command is:

AT+DYSENSOR=A1,8,A103000000019CAA,8,24,1,1500

In every sampling. WSC2-C will auto append the sensor segment as per this structure and uplink.

Type CodeLength (Bytes)Measured Value
A120x000A

Related commands:

AT+DYSENSOR=A1,0    -->   Delete 3rd party sensor A1.

AT+DYSENSOR             -->    List All 3rd Party Sensor. Like below:

Downlink Command:  

delete custom sensor A1:

  • 0xE5A1     Same as: AT+DYSENSOR=A1,0

Remove all custom sensors

  • 0xE5FF   

3.3.4  RS485 Test Command

AT Command:

Command ExampleFunctionResponse
AT+RSWRITE=xxxxxx

Send command to 485 sensor. Range : no more than 10 bytes

OK

Eg: Send command 01 03 00 00 00 01 84 0A to 485 sensor

AT+RSWRITE=0103000001840A

Downlink Command:

  • 0xE20103000001840A     Same as: AT+RSWRITE=0103000001840A

3.3.5  RS485 response timeout

Feature: Set or get extended time to receive 485 sensor data.

AT Command:

Command ExampleFunctionResponse
AT+DTR=1000

Set response timeout to: Range : 0~10000

OK

Downlink Command:

Format: Command Code (0xE0) followed by 3 bytes time value.

If the downlink payload=E0000005, it means set the END Node's Transmit Interval to 0x000005=5(S), while type code is E0.

  • Example 1: Downlink Payload: E0000005     //  Set Transmit Interval (DTR) = 5 seconds
  • Example 2: Downlink Payload: E000000A    //  Set Transmit Interval (DTR) = 10 seconds

3.3.6  Set or get the total count value

Feature: The user can set the counting to start from the set value according to the requirements. (only available in counting mode).

AT Command:

Command ExampleFunctionResponse
AT+SETCNT=1000Set the total count to start from 1000OK

Downlink Command:

Format: Command Code (0x09) followed by 5 bytes time value.

If the downlink payload=09000003E8, This means that the count of the END node will start counting from setting 0x000003E8=1000 (times). while type code is 09.

  • Example 1: Downlink Payload: 09000003E8     //  Set the value to start counting from 1000 = 1000 (times)

3.3.7  Set interrupt or counting mode

Feature: Users can set the trigger mode to counting mode or interrupt mode as needed.

AT Command:

Command ExampleFunctionResponse
AT+COUNTMOD=0set to interrupt modeOK
AT+COUNTMOD=1

set to counting mode

OK

Downlink Command:

Format: Command Code (0x10) followed by 1 bytes time value.

If the downlink payload=10 00, Set the trigger mode to interrupt mode, while type code is 10.

  • Example 1: Downlink Payload: 10 00    //  Same as: AT+COUNTMOD=0   set to interrupt mode

3.3.8 Domain name resolution settings

Feature: Set dynamic domain name resolution IP.

AT command: AT+BKDNS

Command ExampleFunction/ParametersResponse/Explanation

AT+BKDNS=?

Get current Settings

0,0,NULL  (default)
OK

 

AT+BKDNS=a,b,c

a: Enable/Disable dynamic domain name resolution.

1: Disable dynamic domain name update. The ip address will be saved after the domain name is resolved, if the next domain name resolution fails, the last saved ip address will be used.
2: Enable dynamic domain name update. The ip address will be saved after domain name resolution, if the next domain name resolution fails, the last saved ip address will be used, and the domain name resolution will be updated regularly according to the time set by the customer.
b: Set the time to update the domain name resolution at regular intervals.

Unit: hour

c: Set the IP address manually.

The format is the same as AT+SERVADDR.
If domain name resolution fails, this ip address will be used directly, if domain name resolution succeeds, parameter c will be updated to the successfully resolved IP address.

Example:

  • AT+BKDNS=1,0        // Dynamic domain name resolution is disabled.
  • AT+BKDNS=2,1        // The dynamic domain name resolution function is enabled and the automatic update time is set to 1 hour.
  • AT+BKDNS=2,4,3.69.98.183,1883      // The dynamic domain name resolution function is enabled and the automatic update time is set to 4 hour, and manually set the ip address, if the domain name failed to resolve, it will directly use this ip to communicate. When the next domain name resolution is successful, it will be updated to the ip address of the successful resolution.

Downlink Command:  

No downlink commands for feature

3.3.9 Set the downlink debugging mode

Feature: Set the conversion between the standard version and 1T version downlinks.

AT command: AT+DOWNTE

Command ExampleFunction/ParametersResponse/Explanation
AT+DOWNTE=?Get current Settings

0,0   (default)
OK

 

AT+DOWNTE=a,b

a: Set the conversion between the downlink of the standard version and 1T version

0: Set the downlink of the standard version.
1: Set the downlink of the 1T version(ThingsEye platform) 

b: Enable/Disable downlink debugging

0: Disable downlink debugging mode.
1: Enable downlink debugging mode, users can see the original downlink reception.

Example:

  • AT+DOWNTE=0,1  // Set to standard version downlink, and enable downlink debugging.
  • AT+DOWNTE=1,1  // Set to 1T version downlink, and enable downlink debugging.

Downlink Command:  

No downlink commands for feature

3.3.10 Set the TLS mode

Refer to this link (MQTT Connection to send data to Tago.io)to use the TLS mode.

AT Command: AT+TLSMOD

Example 1:  AT+TLSMOD=0,0   // Disable TLS Mode.

Example 2:  AT+TLSMOD=1,0   // No authentication

                     AT+TLSMOD=1,1   // Perform server authentication

                     AT+TLSMOD=1,2   // Perform server and client authentication if requested by the remote server

Downlink command: 0x09

Format: Command Code (0x09) followed by 2 bytes.

Example1:  Downlink Payload: 09 00 00    // AT+TLSMOD=0,0

Example2:  Downlink Payload: 09 01 02    // AT+TLSMOD=1,2

3.3.11 Set GNSS open time

Extend the time to turn on GNSS. The automatic GPS location time is extended when the node is activated.

AT Command: AT+GNSST

Example: AT+GNSST=30  // Set the GPS positioning time to 30 seconds

Downlink command: 0x10

Format: Command Code (0x10) followed by 2 bytes.

Example:  Downlink Payload: 10 00 1E    // AT+GNSST=30

3.3.12 Turn on/off GPS

AT Command: AT+GPS 

Ex1:  AT+GPS=0    // Turn off GPS

Ex2:  AT+GPS=1    // Turn on GPS

Downlink command: 0x11

Format: Command Code (0x11) followed by 1 byte.

Example:  Downlink Payload: 11 01   // AT+GPS=1

3.3.13 Set GPS positioning interval

Feature: Set GPS positioning interval (unit: hour). 

When GPS is enabled, the node automatically locates and uplinks each time it passes GTDC time after activation.

AT Command: AT+GTDC

Example: AT+GTDC=24    // Set the GPS positioning interval to 24h.

Downlink command: 0x12

Format: Command Code (0x12) followed by 3 bytes.

Example: 24 hours:  24(D)=0x18(H)

               Downlink Payload: 12 00 00 18   // AT+GTDC=24

3.3.14 Set the search network time

Feature: Get or Set the time to join the network(unit: minutes).

AT Command: AT+CSQTIME

Example: AT+CSQTIME=10   // Set the search time to 10 minutes.

Downlink command: 0x13

Format: Command Code (0x13) followed by 1 byte.

Example:  Downlink Payload: 13 0A   // AT+CSQTIME=10

3.3.15 Set the IPv4 or IPv6

This command is used to set IP version.

AT command:

  • AT+IPTYPE=1      // IPv4
  • AT+IPTYPE=2      // IPv6

3.3.16 Configure Network Category to be Searched for under LTE RAT.

AT command: AT+IOTMOD=xx

xx:       0: eMTC 

            1: NB-IoT 

            2: eMTC and NB-IoT 

3.3.17 Factory data reset

Two different restore factory Settings configurations.

AT command:

  • AT+FDR       // Reset Parameters to Factory Default.
  • AT+FDR1     // Reset parameters to factory default values except for passwords.

3.3.19 Set CoAP option

Feature: Set CoAP option, follow this link to set up the CoaP protocol.

AT command: AT+URI1~AT+URI8

AT+URI1=11,"i"         // "i/" indicates that the endpoint supports observation mode. In -CB products, fixed  setting AT+URI1=11,"i"

AT+URI2=11,"CoAP endpoint URl"   // 11 is a fixed parameter.

Example:  i/13a35fbe-9515-6e55-36e8-081fb6aacf86

AT+URI1=11,"i"

AT+URI2=11,"13a35fbe-9515-6e55-36e8-081fb6aacf86"

--> If multiple groups of CoAP endpoint urls:

AT+URI3=11,"i"

AT+URI4=11,"CoAP endpoint URl"

3.3.20 Power on / power off BG95 module

This command is used to power on and power off BG95 module.

  • AT command: AT+QSW

The module is powered on after the command is sent for the first time, and powered off after the command is sent again.

image-20250120110640-4.png

3.3.21 Set the receiving time

Feature: Extend the receiving time

AT Command: AT+RXDL

Example: AT+RXDL=1000   // Set the receiving time delay to 1000ms

Downlink Commands: 0x03

Format: Command Code (0x03) followed by 3 bytes.

Example:  Downlink Payload: 03 00 03 E8     // AT+RXDL=1000

3.3.22 Reset

Feature: Trig a reset of the MCU.

AT Command: ATZ

Downlink Commands: 0x04FF

3.3.23 Set the QoS level

This command is used to set the QoS level of MQTT.

AT command:

  • AT+MQOS=xx   // 0~2

Downlink command: 0x07

Format: Command Code (0x07) followed by 1 byte.

Ex1: Downlink payload: 0x0700   // AT+MQOS=0

Ex2: Downlink payload: 0x0701   // AT+MQOS=1

3.4 Add 3rd RS485 / Modbus Sensor

3.4.1 Hardware Connection

WSC2-C has a 1 to 3 cables. All the three connectors has same defination as below. It include Five Pins: VCC, GND, RS485-A, RS485-B, Count.

Notice: RS485-A,RS485-B can be used to connect multiply sensors. but the COUNT can be only use for one sensor. Which means if you already add a Pulse output Rain Guage in the system, you are not able to add another Pulse Output device.

image-20240707220859-4.png

3.4.2 Software Setup

Send AT+DYSENSOR to activate the RS485 sensor for collecting 3rd RS485 sensor. You can refer to the instructions in section 3.3.3 of the manual.

For example: AT+DYSENSOR=A1,8,A103000000019CAA,8,24,1,1500

3.4.3 Payload

image-20240416163658-1.png

For example: A1 02 00 00

A1 : A1 register data acquisition instruction

02 : The valid data returned is 2 bytes in total.

00 00 : Return valid data

3.5 Add tipping bucket total solar radiation sensor

3.5.1 Hardware Connection

The following is an example of connecting a total solar radiation sensor to a matching interface cable, and then using the interface to connect the WSC2-C.

Users can also choose to connect the sensor directly to the WSC2-C via the cable and pin instructions below.

The following is an explanation of the pins required for WSC2-C:

A: RS485-A  (Connect the RS485 sensor)

B: RS485-B   (Connect the RS485 sensor)

GPIO_EXTI: Interrupt pin  (Can be used to connect an additionally added pulsed rain gauge)

  • Total Solar Radiation Sensor Cable Descripti

image-20240906174635-2.jpeg

  • Mating Interface Cable Description

image-20240906173843-1.jpeg

  • Connect to WSC2-C

The Total solar radiation sensor does not need to connect the interrupt pin, so the white cable is not wired.

image-20240906182250-3.jpeg

3.5.2 Calculating & Decode

0FC6 01 00000000 00EB 000F 0000 0003 008E 0251 00CE 0213 0017 001B 03EC 000000DE 90 A1020000 A2020032

For example:  A2 02 00 32

A2 : A2 register data acquisition instruction

02 : The valid data returned is 2 bytes in total.

00 32(HEX) : Return valid data = 50(DEC)W/m2

3.6 AT Commands Set

AT+<CMD>? : Help on <CMD>

AT+<CMD> : Run <CMD>

AT+<CMD>=<value> : Set the value

AT+<CMD>=? : Get the value

General Commands 

AT+MODEL : Get module information

ATZ : Trig a reset of the MCU

AT+CFGMOD : Working mode selection

AT+DEUI : Get or set the Device ID

AT+CFG : Print all settings

AT+SERVADDR: Get or Set the Server address

AT+TDC : Get or set the application data transmission interval in s

AT+INTMOD : Get or Set the trigger interrupt mode (0:input,1:falling or rising,2:falling,3:rising)

AT+APN : Get or set the APN

AT+PRO : Get or Set usage agreement (1:COAP,2:UDP,3:MQTT,4:TCP)

AT+RXDL : Get or Set the receiving time

AT+LDATA : Get the last upload data

AT+COUNTMOD : Get or Set the count mode

AT+RSWRITE : Write command to 485 sensor

AT+DTR : Set or get the delay time for receiving 485 sensor data

AT+DYSENSOR : Set or get 485 sensor

AT+PMMOD : CO2 to PM2.5/10

AT+SETCNT : Get or set the count at present

AT+FACTOR : Get or Set factor

AT+GETSENSORVALUE : Returns the current sensor measurement

AT+DNSCFG : Get or Set DNS Server

AT+CSQTIME : Get or Set the time to join the network

AT+BKDNS : Get or Set dynamic domain name resolution IP

AT+SLEEP : Get or Set the sleep mode

AT+GETLOG : Print serial port logs

AT+DOWNTE: Get or set the conversion between the standard version and 1T version downlinks

AT+GDNS : Get or Set the DNS

AT+MQOS : Set the QoS level of MQTT

AT+IPTYPE : Set the IPv4 or IPv6

AT+QSW : Power on and power off BG95 module

AT+QBAND: Get or set Frequency Band

AT+IOTMOD: Configure Network Category to be Searched for under LTE RAT

MQTT Management

AT+CLIENT : Get or Set the MQTT clientID

AT+UNAME : Get or Set the MQTT Username

AT+PWD : Get or Set the MQTT password

AT+PUBTOPIC: Get or set MQTT publishing topic

AT+SUBTOPIC: Get or set MQTT subscription topic

AT+TLSMOD : Get or Set the TLS mode

information

AT+FDR1 : Reset parameters to factory default values except for passwords

AT+FDR : Reset Parameters to Factory Default

AT+PWORD : Get or set the System password

Management

AT+URI1: Get or set CoAP option 1

AT+URI2: Get or set CoAP option 2

AT+URI3: Get or set CoAP option 3

AT+URI4: Get or set CoAP option 4

AT+URI5: Get or set CoAP option 5

AT+URI6: Get or set CoAP option 6

AT+URI7: Get or set CoAP option 7

AT+URI8: Get or set CoAP option 8

GPS

AT+GNSST : Extend the time to turn on GNSS

AT+GPS : Turn off and on GPS

AT+GTDC : Get or set GPS positioning interval in units of h

4.  Power consumption and battery

4.1  Total Power Consumption

Dragino Weather Station serial products include the main process unit (WSC2-C) and various sensors. The total power consumption equal total power of all above units. The power consumption for main process unit WSC2-C is 18ma @ 12v. and the power consumption of each sensor can be found on the Sensors chapter.

4.2 Battery

All sensors are only power by external power source. If external power source is off. All sensor won't work.

Main Process Unit WSC2-C is powered by both external power source and internal 1000mAh rechargeable battery. If external power source is off, WSC2-C still runs and can send periodically uplinks, but the sensors value will become invalid.  External power source can recharge the 1000mAh rechargeable battery.

5.  Main Process Unit WSC2-C

WSC2-C is the main process unit in Dragino Weather Station solution. WSC2-C is an an outdoor NB-IOT RS485 end node. It is powered by external 12v solar power and have a built-in Li-ion backup battery.

WSC2-C reads value from various sensors and upload these sensor data to IoT server via NB-Iot wireless protocol.

WSC2-C Supports BLE configure and wireless OTA update which make user easy to use.

5.1  Features

  • NB-IoT Bands: B1/B2/B3/B4/B5/B8/B12/B13/B17/B18/B19/B20/B25/B28/B66/B70/B85 @H-FDD
  • Ultra-low power consumption
  • RS485 / Modbus protocol
  • AT Commands to change parameters
  • Downlink to change configure
  • Powered by external 12v battery
  • Back up rechargeable 1000mAh battery
  • IP Rating: IP65
  • Support default sensors or 3rd party RS485 sensors
  • Support wireless OTA update firmware
  • Wall Attachable.

5.2  Power Consumption

WSC2-C (without external sensor): Idle: 4mA, Transmit: max 40mA

5.3  Storage & Operation Temperature

-20°C to +60°C

5.4 Sleep mode and working mode

Deep Sleep Mode: Sensor doesn't have any NB-IoT activate. This mode is used for storage and shipping to save battery life.

Working Mode: In this mode, Sensor will work as NB-IoT Sensor to Join NB-IoT network and send out sensor data to server. Between each sampling/tx/rx periodically, sensor will be in IDLE mode), in IDLE mode, sensor has the same power consumption as Deep Sleep mode.

5.5 Button & LEDs

1675071855856-879.png

Behavior on ACTFunctionAction
Pressing ACT between 1s < time < 3sSend an uplink

If sensor has already attached to NB-IoT network, sensor will send an uplink packet, blue led will blink once.
Meanwhile, BLE module will be active and user can connect via BLE to configure device.

Pressing ACT for more than 3sActive Device

Green led will fast blink 5 times, device will enter OTA mode for 3 seconds. And then start to  attach NB-IoT network.
Green led will solidly turn on for 5 seconds after joined in network.
Once sensor is active, BLE module will be active and user can connect via BLE to configure device, no matter if device attach NB-IoT network or not.

Fast press ACT 5 times.Deactivate DeviceRed led will solid on for 5 seconds. Means device is in Deep Sleep Mode.

Note: When the device is executing a program, the buttons may become invalid. It is best to press the buttons after the device has completed the program execution.

5.6 BLE connection

WSC2-C supports BLE remote configure.

BLE can be used to configure the parameter of sensor or see the console output from sensor. BLE will be only activate on below case:

  • Press button to send an uplink
  • Press button to active device.
  • Device Power on or reset.

If there is no activity connection on BLE in 60 seconds, sensor will shut down BLE module to enter low power mode.

5.7  Pin Mapping

image-20240412165523-2.png

5.8  Mechanical

Refer LSn50v2 enclosure drawing in:  https://www.dropbox.com/sh/0ir0l9jjmk6p95e/AADwWXorcKuNpPR5em7VgrEja?dl=0

6. OTA Firmware update

User can change firmware WSC2-C to:

  • Change Frequency band/ region.
  • Update with new features.
  • Fix bugs. 

Firmware and changelog can be downloaded from : Firmware download link

Methods to Update Firmware:

7.  FAQ

7.1  What else do I need to purchase to build Weather Station?

Below is the installation photo and structure:

image-20250120111258-5.jpeg

8.  Trouble Shooting

8.1 What should I do when the RS485 sensor cannot collect data?

1. Recheck whether the sensor's power supply voltage is 12V at maximum.

2. Recheck whether the A and B signal lines of the sensor are connected reversely.

3. Check whether the sensor's transmission baud rate is 4800. If not, please change it to 4800 and try reading again.

8.2 Why does the weather station make electric current sounds during operation?

1. Because a certain amount of sound will be produced during long-term power supply operation. This is a normal phenomenon and does not affect use.

8.3 How to solve the problem of temperature difference in weather stations?

You can use AT+RSWRITE (downlink: E2 xx xx xx xx xx xx xx ) to modify the temperature compensation function in the weather station.

For example:

When the temperature of the weather station is 3°C different from the right value, you can use AT+RSWRITE=01 06 00 50 00 1E 09 D3 (downlink: E2 01 06 00 50 00 1E 09 D3) to modify the temperature compensation value of the weather station to +3°C .

8.4 Why does the rain gauge have no data?

The default mode of the rain gauge is trigger mode.
When it rains, it will trigger an uplink, and the data does not include rainfall data.
If you want to query rainfall data, please change to counting mode

Feature: Users can set the trigger mode to counting mode or interrupt mode as needed.

AT Command:

Command ExampleFunctionResponse
AT+COUNTMOD=0set to interrupt modeOK
AT+COUNTMOD=1

set to counting mode

OK

Downlink Command:

Format: Command Code (0x10) followed by 1 bytes time value.

If the downlink payload=10 00, Set the trigger mode to interrupt mode, while type code is 10.

  • Example 1: Downlink Payload: 10 00    //  Same as: AT+COUNTMOD=0   set to interrupt mode

9.  Order Info

Part Number: WSC2-C-XX  /  WSC2-CS-XX

XX

  • GE: General version ( Exclude SIM card)
  • 1T: with 1NCE * 10 years 500MB SIM card and Pre-configure to ThingsEye server

10.  Support

  • Support is provided Monday to Friday, from 09:00 to 18:00 GMT+8. Due to different timezones we cannot offer live support. However, your questions will be answered as soon as possible in the before-mentioned schedule.
  • Provide as much information as possible regarding your enquiry (product models, accurately describe your problem and steps to replicate it etc) and send a mail to support@dragino.com.
Tags:
    
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0