diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/server/ReceiverServerHandler.java b/src/main/java/com/casic/server/ReceiverServerHandler.java index 5346f35..7cd4075 100644 --- a/src/main/java/com/casic/server/ReceiverServerHandler.java +++ b/src/main/java/com/casic/server/ReceiverServerHandler.java @@ -5,6 +5,7 @@ import com.casic.enums.RelaySwitchEnums; import com.casic.model.RelayStatusDTO; import com.casic.resolver.DatagramResolver; +import com.casic.util.SendVoice; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; @@ -94,9 +95,13 @@ if (!ObjectUtils.isEmpty(relayStatusDTO)) { ByteBuf out = ByteBufAllocator.DEFAULT.heapBuffer(); String switchContent = preFix + relayStatusDTO.getChannelName() + "," + relayStatusDTO.getLampSwitch() + postFix; -// for (int i = 1; i < 6; i++) { -// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; - log.info(JSON.toJSONString(relayStatusDTO)+"-------"+switchContent); +// for (int i = 1; i < 6; i++) { +// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; + log.info(JSON.toJSONString(relayStatusDTO) + "-------" + switchContent); + if (relayStatusDTO.getLampSwitch() == 1) { + //只推送报警设备 + SendVoice.send(relayStatusDTO.getDeviceType(), relayStatusDTO.getChannelName()); + } out.writeBytes(switchContent.getBytes()); channels.forEach(channel -> { if (channel.isActive()) { diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/server/ReceiverServerHandler.java b/src/main/java/com/casic/server/ReceiverServerHandler.java index 5346f35..7cd4075 100644 --- a/src/main/java/com/casic/server/ReceiverServerHandler.java +++ b/src/main/java/com/casic/server/ReceiverServerHandler.java @@ -5,6 +5,7 @@ import com.casic.enums.RelaySwitchEnums; import com.casic.model.RelayStatusDTO; import com.casic.resolver.DatagramResolver; +import com.casic.util.SendVoice; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; @@ -94,9 +95,13 @@ if (!ObjectUtils.isEmpty(relayStatusDTO)) { ByteBuf out = ByteBufAllocator.DEFAULT.heapBuffer(); String switchContent = preFix + relayStatusDTO.getChannelName() + "," + relayStatusDTO.getLampSwitch() + postFix; -// for (int i = 1; i < 6; i++) { -// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; - log.info(JSON.toJSONString(relayStatusDTO)+"-------"+switchContent); +// for (int i = 1; i < 6; i++) { +// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; + log.info(JSON.toJSONString(relayStatusDTO) + "-------" + switchContent); + if (relayStatusDTO.getLampSwitch() == 1) { + //只推送报警设备 + SendVoice.send(relayStatusDTO.getDeviceType(), relayStatusDTO.getChannelName()); + } out.writeBytes(switchContent.getBytes()); channels.forEach(channel -> { if (channel.isActive()) { diff --git a/src/main/java/com/casic/util/SendVoice.java b/src/main/java/com/casic/util/SendVoice.java new file mode 100644 index 0000000..b88456f --- /dev/null +++ b/src/main/java/com/casic/util/SendVoice.java @@ -0,0 +1,76 @@ +package com.casic.util; + +import java.io.IOException; + +import com.casic.config.ServerPort; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +//账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html +//注意事项: +//(1)调试期间,请仔细阅读接口文档; +//(2)请使用APIID(查看APIID请登录用户中心->语音通知->产品总览->APIID)及APIkey来调用接口; +//(3)该代码仅供接入互亿无线语音通知接口参考使用,客户可根据实际需要自行编写; + +public class SendVoice { + + private final static String Url = "http://api.vm.ihuyi.com/webservice/voice.php?method=Submit"; + + public static void send(String deviceType, String passage) { + HttpClient client = new HttpClient(); + ServerPort serverPort = SpringContextUtil.getBean(ServerPort.class); + PostMethod method = new PostMethod(serverPort.getUrl()); + //client.getParams().setContentCharset("GBK"); + client.getParams().setContentCharset("UTF-8"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8"); + NameValuePair[] data = {//提交短信 + new NameValuePair("account", serverPort.getAppId()),//用户名是登录用户中心->语音通知->产品总览->APIID + new NameValuePair("password", serverPort.getAppKey()),//查看密码请登录用户中心->语音通知->产品总览->APIKEY + new NameValuePair("mobile", serverPort.getPhone()),//手机号码 + new NameValuePair("content", deviceType + "的设备,在通道" + passage + "发生了报警,请及时处理!") + }; + + method.setRequestBody(data); + + try { + client.executeMethod(method); + + String SubmitResult = method.getResponseBodyAsString(); + + //System.out.println(SubmitResult); + + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String voiceid = root.elementText("voiceid"); + + System.out.println(code); + System.out.println(msg); + System.out.println(voiceid); + + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/server/ReceiverServerHandler.java b/src/main/java/com/casic/server/ReceiverServerHandler.java index 5346f35..7cd4075 100644 --- a/src/main/java/com/casic/server/ReceiverServerHandler.java +++ b/src/main/java/com/casic/server/ReceiverServerHandler.java @@ -5,6 +5,7 @@ import com.casic.enums.RelaySwitchEnums; import com.casic.model.RelayStatusDTO; import com.casic.resolver.DatagramResolver; +import com.casic.util.SendVoice; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; @@ -94,9 +95,13 @@ if (!ObjectUtils.isEmpty(relayStatusDTO)) { ByteBuf out = ByteBufAllocator.DEFAULT.heapBuffer(); String switchContent = preFix + relayStatusDTO.getChannelName() + "," + relayStatusDTO.getLampSwitch() + postFix; -// for (int i = 1; i < 6; i++) { -// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; - log.info(JSON.toJSONString(relayStatusDTO)+"-------"+switchContent); +// for (int i = 1; i < 6; i++) { +// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; + log.info(JSON.toJSONString(relayStatusDTO) + "-------" + switchContent); + if (relayStatusDTO.getLampSwitch() == 1) { + //只推送报警设备 + SendVoice.send(relayStatusDTO.getDeviceType(), relayStatusDTO.getChannelName()); + } out.writeBytes(switchContent.getBytes()); channels.forEach(channel -> { if (channel.isActive()) { diff --git a/src/main/java/com/casic/util/SendVoice.java b/src/main/java/com/casic/util/SendVoice.java new file mode 100644 index 0000000..b88456f --- /dev/null +++ b/src/main/java/com/casic/util/SendVoice.java @@ -0,0 +1,76 @@ +package com.casic.util; + +import java.io.IOException; + +import com.casic.config.ServerPort; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +//账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html +//注意事项: +//(1)调试期间,请仔细阅读接口文档; +//(2)请使用APIID(查看APIID请登录用户中心->语音通知->产品总览->APIID)及APIkey来调用接口; +//(3)该代码仅供接入互亿无线语音通知接口参考使用,客户可根据实际需要自行编写; + +public class SendVoice { + + private final static String Url = "http://api.vm.ihuyi.com/webservice/voice.php?method=Submit"; + + public static void send(String deviceType, String passage) { + HttpClient client = new HttpClient(); + ServerPort serverPort = SpringContextUtil.getBean(ServerPort.class); + PostMethod method = new PostMethod(serverPort.getUrl()); + //client.getParams().setContentCharset("GBK"); + client.getParams().setContentCharset("UTF-8"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8"); + NameValuePair[] data = {//提交短信 + new NameValuePair("account", serverPort.getAppId()),//用户名是登录用户中心->语音通知->产品总览->APIID + new NameValuePair("password", serverPort.getAppKey()),//查看密码请登录用户中心->语音通知->产品总览->APIKEY + new NameValuePair("mobile", serverPort.getPhone()),//手机号码 + new NameValuePair("content", deviceType + "的设备,在通道" + passage + "发生了报警,请及时处理!") + }; + + method.setRequestBody(data); + + try { + client.executeMethod(method); + + String SubmitResult = method.getResponseBodyAsString(); + + //System.out.println(SubmitResult); + + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String voiceid = root.elementText("voiceid"); + + System.out.println(code); + System.out.println(msg); + System.out.println(voiceid); + + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/util/StringUtil.java b/src/main/java/com/casic/util/StringUtil.java new file mode 100644 index 0000000..69548a9 --- /dev/null +++ b/src/main/java/com/casic/util/StringUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import java.security.MessageDigest; + +public class StringUtil { + public static String str; + public static final String EMPTY_STRING = ""; + + private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" }; + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) + n = 256 + n; + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + hexDigits[d2]; + } + + /** + * ת���ֽ�����Ϊ16�����ִ� + * @param b �ֽ����� + * @return 16�����ִ� + */ + public static String byteArrayToHexString(byte[] b) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } + return resultSb.toString(); + } + + public static String MD5Encode(String origin) { + String resultString = null; + try { + resultString = new String(origin); + MessageDigest md = MessageDigest.getInstance("MD5"); + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } catch (Exception ex) { + } + return resultString; + } + +} diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/server/ReceiverServerHandler.java b/src/main/java/com/casic/server/ReceiverServerHandler.java index 5346f35..7cd4075 100644 --- a/src/main/java/com/casic/server/ReceiverServerHandler.java +++ b/src/main/java/com/casic/server/ReceiverServerHandler.java @@ -5,6 +5,7 @@ import com.casic.enums.RelaySwitchEnums; import com.casic.model.RelayStatusDTO; import com.casic.resolver.DatagramResolver; +import com.casic.util.SendVoice; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; @@ -94,9 +95,13 @@ if (!ObjectUtils.isEmpty(relayStatusDTO)) { ByteBuf out = ByteBufAllocator.DEFAULT.heapBuffer(); String switchContent = preFix + relayStatusDTO.getChannelName() + "," + relayStatusDTO.getLampSwitch() + postFix; -// for (int i = 1; i < 6; i++) { -// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; - log.info(JSON.toJSONString(relayStatusDTO)+"-------"+switchContent); +// for (int i = 1; i < 6; i++) { +// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; + log.info(JSON.toJSONString(relayStatusDTO) + "-------" + switchContent); + if (relayStatusDTO.getLampSwitch() == 1) { + //只推送报警设备 + SendVoice.send(relayStatusDTO.getDeviceType(), relayStatusDTO.getChannelName()); + } out.writeBytes(switchContent.getBytes()); channels.forEach(channel -> { if (channel.isActive()) { diff --git a/src/main/java/com/casic/util/SendVoice.java b/src/main/java/com/casic/util/SendVoice.java new file mode 100644 index 0000000..b88456f --- /dev/null +++ b/src/main/java/com/casic/util/SendVoice.java @@ -0,0 +1,76 @@ +package com.casic.util; + +import java.io.IOException; + +import com.casic.config.ServerPort; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +//账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html +//注意事项: +//(1)调试期间,请仔细阅读接口文档; +//(2)请使用APIID(查看APIID请登录用户中心->语音通知->产品总览->APIID)及APIkey来调用接口; +//(3)该代码仅供接入互亿无线语音通知接口参考使用,客户可根据实际需要自行编写; + +public class SendVoice { + + private final static String Url = "http://api.vm.ihuyi.com/webservice/voice.php?method=Submit"; + + public static void send(String deviceType, String passage) { + HttpClient client = new HttpClient(); + ServerPort serverPort = SpringContextUtil.getBean(ServerPort.class); + PostMethod method = new PostMethod(serverPort.getUrl()); + //client.getParams().setContentCharset("GBK"); + client.getParams().setContentCharset("UTF-8"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8"); + NameValuePair[] data = {//提交短信 + new NameValuePair("account", serverPort.getAppId()),//用户名是登录用户中心->语音通知->产品总览->APIID + new NameValuePair("password", serverPort.getAppKey()),//查看密码请登录用户中心->语音通知->产品总览->APIKEY + new NameValuePair("mobile", serverPort.getPhone()),//手机号码 + new NameValuePair("content", deviceType + "的设备,在通道" + passage + "发生了报警,请及时处理!") + }; + + method.setRequestBody(data); + + try { + client.executeMethod(method); + + String SubmitResult = method.getResponseBodyAsString(); + + //System.out.println(SubmitResult); + + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String voiceid = root.elementText("voiceid"); + + System.out.println(code); + System.out.println(msg); + System.out.println(voiceid); + + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/util/StringUtil.java b/src/main/java/com/casic/util/StringUtil.java new file mode 100644 index 0000000..69548a9 --- /dev/null +++ b/src/main/java/com/casic/util/StringUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import java.security.MessageDigest; + +public class StringUtil { + public static String str; + public static final String EMPTY_STRING = ""; + + private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" }; + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) + n = 256 + n; + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + hexDigits[d2]; + } + + /** + * ת���ֽ�����Ϊ16�����ִ� + * @param b �ֽ����� + * @return 16�����ִ� + */ + public static String byteArrayToHexString(byte[] b) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } + return resultSb.toString(); + } + + public static String MD5Encode(String origin) { + String resultString = null; + try { + resultString = new String(origin); + MessageDigest md = MessageDigest.getInstance("MD5"); + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } catch (Exception ex) { + } + return resultString; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ef11f26..03e581a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -20,9 +20,10 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector + casic: alarm: - rainfall: 20 + rainfall: 5 humi: 10 temp: 10 pressure: 15 @@ -31,5 +32,9 @@ cron-time: 0 0 */1 * * ? server: port: 9393 + appId: VM00452288 + appKey: 1d6ea4fd4ae266ea0c7e502d9bf4172a + phone: 18611697489 + url: http://api.vm.ihuyi.com/webservice/voice.php?method=Submit pdfPath: /casic/testPdf/config/ diff --git a/pom.xml b/pom.xml index 5b11d9d..5c0a41d 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,24 @@ 2.4.5 + + commons-codec + commons-codec + 1.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + org.dom4j + dom4j + 2.1.1 + + diff --git a/src/main/java/com/casic/config/ServerPort.java b/src/main/java/com/casic/config/ServerPort.java index fc89cf1..ae2f590 100644 --- a/src/main/java/com/casic/config/ServerPort.java +++ b/src/main/java/com/casic/config/ServerPort.java @@ -9,6 +9,11 @@ @ConfigurationProperties(prefix = "casic.server") public class ServerPort { - private Integer port; + private Integer port; + private String appId; + private String appKey; + private String phone; + private String url; + } diff --git a/src/main/java/com/casic/enums/DevcodeEnums.java b/src/main/java/com/casic/enums/DevcodeEnums.java index dbd1eed..563cb28 100644 --- a/src/main/java/com/casic/enums/DevcodeEnums.java +++ b/src/main/java/com/casic/enums/DevcodeEnums.java @@ -8,21 +8,35 @@ * 温湿度 */ String HUMI_TEMP="842019010188"; + /** - * 多功能1 + * 雨量计1 */ String RAIN_GAUGE1="864708062717627"; + /** - * 多功能2 + * 雨量计2 */ String RAIN_GAUGE2="864708062669653"; + + + + /** - * 多功能3 + * 雨量计3 */ String RAIN_GAUGE3="864708062689073"; /** - * 多功能4 + * 雨量计4 */ String RAIN_GAUGE4="864708062626919"; + +// 8653280684199430AAAA01030200093985 1 +// 8647080627176270AAAA01030200093985 3 +// 8647080626696530AAAA01030200093985 4 +// 8647080626890730AAAA01030200093985 5 +// 8647080626269190AAAA01030200093985 6 +// 8647080626269190AAAA01030200093985 + } diff --git a/src/main/java/com/casic/model/RelayStatusDTO.java b/src/main/java/com/casic/model/RelayStatusDTO.java index b839e0c..62e3287 100644 --- a/src/main/java/com/casic/model/RelayStatusDTO.java +++ b/src/main/java/com/casic/model/RelayStatusDTO.java @@ -17,4 +17,8 @@ */ private Integer lampSwitch; + private String deviceType; + private String devcode; + private String dataValue; + } diff --git a/src/main/java/com/casic/resolver/AlarmDataResolver.java b/src/main/java/com/casic/resolver/AlarmDataResolver.java index c794a7b..6e33d07 100644 --- a/src/main/java/com/casic/resolver/AlarmDataResolver.java +++ b/src/main/java/com/casic/resolver/AlarmDataResolver.java @@ -32,6 +32,8 @@ return null; } return RelayStatusDTO.builder() + .devcode(devcode) + .deviceType("温湿度传感器") .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/resolver/RainFallDataResolver.java b/src/main/java/com/casic/resolver/RainFallDataResolver.java index a79d6c5..ba60f4e 100644 --- a/src/main/java/com/casic/resolver/RainFallDataResolver.java +++ b/src/main/java/com/casic/resolver/RainFallDataResolver.java @@ -26,7 +26,7 @@ @Override public RelayStatusDTO datagram(String msg) { if (msg.toLowerCase().contains(rainFallMark)) { - log.info("雨量计报文为----"+msg); + log.info("雨量计报文为----" + msg); //去掉补位 String devcode = msg.substring(0, 15); String defaultStrValue = msg.substring(26, 30); @@ -41,6 +41,9 @@ return null; } return RelayStatusDTO.builder() + .deviceType("雨量计传感器") + .devcode(devcode) + .dataValue(String.valueOf(defaultValue)) .channelName(channelName) .lampSwitch(isAlarm) .build(); diff --git a/src/main/java/com/casic/server/ReceiverServerHandler.java b/src/main/java/com/casic/server/ReceiverServerHandler.java index 5346f35..7cd4075 100644 --- a/src/main/java/com/casic/server/ReceiverServerHandler.java +++ b/src/main/java/com/casic/server/ReceiverServerHandler.java @@ -5,6 +5,7 @@ import com.casic.enums.RelaySwitchEnums; import com.casic.model.RelayStatusDTO; import com.casic.resolver.DatagramResolver; +import com.casic.util.SendVoice; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; @@ -94,9 +95,13 @@ if (!ObjectUtils.isEmpty(relayStatusDTO)) { ByteBuf out = ByteBufAllocator.DEFAULT.heapBuffer(); String switchContent = preFix + relayStatusDTO.getChannelName() + "," + relayStatusDTO.getLampSwitch() + postFix; -// for (int i = 1; i < 6; i++) { -// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; - log.info(JSON.toJSONString(relayStatusDTO)+"-------"+switchContent); +// for (int i = 1; i < 6; i++) { +// switchConent = preFix + relayStatusDTO.getChannelName() + "," + 1 + postFix; + log.info(JSON.toJSONString(relayStatusDTO) + "-------" + switchContent); + if (relayStatusDTO.getLampSwitch() == 1) { + //只推送报警设备 + SendVoice.send(relayStatusDTO.getDeviceType(), relayStatusDTO.getChannelName()); + } out.writeBytes(switchContent.getBytes()); channels.forEach(channel -> { if (channel.isActive()) { diff --git a/src/main/java/com/casic/util/SendVoice.java b/src/main/java/com/casic/util/SendVoice.java new file mode 100644 index 0000000..b88456f --- /dev/null +++ b/src/main/java/com/casic/util/SendVoice.java @@ -0,0 +1,76 @@ +package com.casic.util; + +import java.io.IOException; + +import com.casic.config.ServerPort; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +//账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html +//注意事项: +//(1)调试期间,请仔细阅读接口文档; +//(2)请使用APIID(查看APIID请登录用户中心->语音通知->产品总览->APIID)及APIkey来调用接口; +//(3)该代码仅供接入互亿无线语音通知接口参考使用,客户可根据实际需要自行编写; + +public class SendVoice { + + private final static String Url = "http://api.vm.ihuyi.com/webservice/voice.php?method=Submit"; + + public static void send(String deviceType, String passage) { + HttpClient client = new HttpClient(); + ServerPort serverPort = SpringContextUtil.getBean(ServerPort.class); + PostMethod method = new PostMethod(serverPort.getUrl()); + //client.getParams().setContentCharset("GBK"); + client.getParams().setContentCharset("UTF-8"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8"); + NameValuePair[] data = {//提交短信 + new NameValuePair("account", serverPort.getAppId()),//用户名是登录用户中心->语音通知->产品总览->APIID + new NameValuePair("password", serverPort.getAppKey()),//查看密码请登录用户中心->语音通知->产品总览->APIKEY + new NameValuePair("mobile", serverPort.getPhone()),//手机号码 + new NameValuePair("content", deviceType + "的设备,在通道" + passage + "发生了报警,请及时处理!") + }; + + method.setRequestBody(data); + + try { + client.executeMethod(method); + + String SubmitResult = method.getResponseBodyAsString(); + + //System.out.println(SubmitResult); + + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String voiceid = root.elementText("voiceid"); + + System.out.println(code); + System.out.println(msg); + System.out.println(voiceid); + + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/casic/util/StringUtil.java b/src/main/java/com/casic/util/StringUtil.java new file mode 100644 index 0000000..69548a9 --- /dev/null +++ b/src/main/java/com/casic/util/StringUtil.java @@ -0,0 +1,46 @@ +package com.casic.util; + +import java.security.MessageDigest; + +public class StringUtil { + public static String str; + public static final String EMPTY_STRING = ""; + + private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" }; + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) + n = 256 + n; + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + hexDigits[d2]; + } + + /** + * ת���ֽ�����Ϊ16�����ִ� + * @param b �ֽ����� + * @return 16�����ִ� + */ + public static String byteArrayToHexString(byte[] b) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } + return resultSb.toString(); + } + + public static String MD5Encode(String origin) { + String resultString = null; + try { + resultString = new String(origin); + MessageDigest md = MessageDigest.getInstance("MD5"); + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } catch (Exception ex) { + } + return resultString; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ef11f26..03e581a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -20,9 +20,10 @@ #mybatis-plus: # sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector + casic: alarm: - rainfall: 20 + rainfall: 5 humi: 10 temp: 10 pressure: 15 @@ -31,5 +32,9 @@ cron-time: 0 0 */1 * * ? server: port: 9393 + appId: VM00452288 + appKey: 1d6ea4fd4ae266ea0c7e502d9bf4172a + phone: 18611697489 + url: http://api.vm.ihuyi.com/webservice/voice.php?method=Submit pdfPath: /casic/testPdf/config/ diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index 69f8a23..c292b5b 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -3,13 +3,10 @@ \ No newline at end of file