DTU的告警短信发布(短信猫)配置教程

  • 时间 :2020-03-10
  • 作者 :蓝狮在线
  • 浏览数 :4461

蓝狮BMD100 5G/4G DTU是为无人值守场景设计的无线数传终端,常用于工业物联网、智慧水利、智慧环保等领域,实现数据无线传输。告警短信群发,也是其中一项常用的功能,经常被应用于远程监测告警信息发布、报警短信发送等,可以同时发送到20个手机,可以在后台预设告警信息发布的内容、告警信息接收的手机号码等。


蓝狮DTU短信群发.jpg 

 

案例:DTU短信群发在某空调生产公司的典型应用:

空调测试台位自动化的项目,软件由Labview编写。 有一项功能为:当某传感器值超过阈值后,要立即发送报警短信给每个测试员。即使测试员不在公司也要能即时收到此报警短信。 因此需要一台可以通过上位机编程控制的DTU设备实现这个发送短信的功能,要求成本低,信号稳定。

 

蓝狮BMD100DTU.jpg 

 

蓝狮BMD100  5G/4G DTU实现短信群发的配置步骤:

1.使用蓝狮配套的DTU管理软件,直接出厂设置即可

比如要把 “设备使用异常”这种告警短信发送给13912345678和18812345678,现在直接可以向串口发送:   #13812345678,13912345678#设备使用异常#,接受号码每隔5个一组,组与组之间要用英文分号隔开,一次最多4组。


蓝狮BMD100 DTU短信群发配置步骤.jpg 


2. DTU开启短信备份功能

DTU里面配置好接收短信的号码,最多20个,然后往串口发数据,则DTU会把数据发给接收号码


蓝狮BMD100 DTU短信群发配置步骤2.jpg 


蓝狮BMD100 DTU短信群发配置步骤3.jpg 


蓝狮BMD100 DTU短信群发配置步骤4.jpg 

 

3. AT指令发送

DTU配置成modem模式


蓝狮BMD100 DTU短信群发配置步骤5.jpg 


蓝狮BMD100 DTU短信群发配置步骤7.jpg 


蓝狮BMD100 DTU短信群发配置步骤8.jpg 


然后通过发AT指令发短信,具体实现过程如下:

用AT命令发送中文短信(PDU模式中英文混发)

实例:

接收号码:13812345678

内容:你好PDU模式

 

发送的AT指令

发送: AT+CMGF=0 (回车换行)

接收:OK

发送: AT+CSCS="UCS2" (回车换行)

接收:OK

发送:AT+CMGS=29 (回车换行)

接收:>

 

发送:

0011000D91683118325476F80008AA0e4f60597d0050004400556a215f0f(用ASCII类型发送)

发送:1A (Ctrl~z) (用16进制类型发送)

接收:+CMGS: 168(168:发送了多少条短信数量)

(不回车换行)

00       //为SCA预留

11       // FO 设置PDU 类型

00       // MR 发送参考号

 

0D       //DA 目的号码长度

91       //DA 目的号码类型

68       //DA 中国的区号

3118325476F8 //接收号码编码 奇偶位互换,接收号码为奇数个末尾用F补充

00       // PID 发送方式

08       //DCS 编码模式

AA       //VP 有效期

PDU 中用户数据前的PDU 头的长度是15 字节

0e       //UDL 数据长度(16进制)

4f60597d0050004400556a215f0f //短信 数据内容Unicode 译码

 

发送拼接方式:

 根据规律有些数据可以不变

0011000D9168+接收号码编码+0008AA+内容长度+数据内容Ucde 译码

接收号码编码:

列如:13812345678

1. 因为位数是奇数11位所以在末尾加F变为:13812345678F

2. 进行奇偶位置互换变为:3118325476F8

  以Java代码为列下面是奇偶互换代码

 

public static String Odevity(String string) {  

 String st ="";

    if((string.length()&1) !=1) {

       for (int i = 0; i < string.length(); i++) {

         if((i&1) != 1){   //是偶数      

             st += string.charAt(i+1);

         }

        else {     

             st += string.charAt(i-1);

              }    

         }

       }    

return st;

}

 

短信内容转换成Unicode 译码

  1.  下面是任何内容转换成Unicode 译码Java代码


public static String GBK2Unicode(String gbString) {  

char[] utfBytes = gbString.toCharArray();   //utfBytes = [测, 试]

        String unicodeBytes = "";   

        for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {   

            String hexB = Integer.toHexString(utfBytes[byteIndex]);   //转换为16进制整型字符串

              if (hexB.length() <= 2) {   

                  hexB = "00" + hexB;   

             }   

             unicodeBytes = unicodeBytes + hexB;   

        }   

           

        return unicodeBytes;

 

}

发送内容长度计算

如:真实内容长度/2=发送内容长度(要转换成16进制)

如果转换成16进制长度少于2位在前面加个0

列:28/2 = 14 转换成16进制得到“e” 少于两位要在前面+0 得到“0e”。


联系我们
联系我们

蓝狮在线,集M2M产品研发、IoT平台服务、国际化运营于一体,让我们联接,共创未来