|
|
@@ -7,8 +7,10 @@ import org.jetlinks.community.gateway.annotation.Subscribe;
|
|
|
import org.jetlinks.core.device.DeviceOperator;
|
|
|
import org.jetlinks.core.device.DeviceRegistry;
|
|
|
import org.jetlinks.core.message.DeviceMessage;
|
|
|
+import org.jetlinks.core.message.Headers;
|
|
|
import org.jetlinks.core.message.MessageType;
|
|
|
import org.jetlinks.core.message.TimeSyncReplyMessage;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
import static org.jetlinks.core.message.MessageType.*;
|
|
|
@@ -22,28 +24,17 @@ import java.util.*;
|
|
|
* @since 1.0
|
|
|
*/
|
|
|
@Slf4j
|
|
|
-@AllArgsConstructor
|
|
|
public class TimeSeriesMessageWriterConnector {
|
|
|
- private static final String FIRST="first";
|
|
|
- public static final String ONLY_READ="onlyRead";
|
|
|
- //下行数据
|
|
|
- public static List<MessageType> downMessages;
|
|
|
- //上行数据
|
|
|
- public static List<MessageType> upMessages;
|
|
|
private final DeviceDataService dataService;
|
|
|
private final DeviceRegistry registry;
|
|
|
|
|
|
- static {
|
|
|
- downMessages=Arrays.asList(READ_PROPERTY,WRITE_PROPERTY,INVOKE_FUNCTION,DISCONNECT,CHILD,
|
|
|
- READ_FIRMWARE,
|
|
|
- REQUEST_FIRMWARE,
|
|
|
-// UPGRADE_FIRMWARE,
|
|
|
- ACKNOWLEDGE,STATE_CHECK);
|
|
|
- upMessages=Arrays.asList(REPORT_PROPERTY,EVENT,ONLINE,OFFLINE,REGISTER,
|
|
|
- UN_REGISTER,DERIVED_METADATA,
|
|
|
-// REPORT_FIRMWARE,
|
|
|
- UPGRADE_FIRMWARE_PROGRESS,UPDATE_TAG);
|
|
|
+ public TimeSeriesMessageWriterConnector(DeviceDataService dataService, DeviceRegistry registry) {
|
|
|
+ this.dataService = dataService;
|
|
|
+ this.registry = registry;
|
|
|
}
|
|
|
+
|
|
|
+ @Value("${jetlinks.server-id}")
|
|
|
+ private String serverId;
|
|
|
/**
|
|
|
* 订阅设备消息 入库
|
|
|
*
|
|
|
@@ -52,6 +43,11 @@ public class TimeSeriesMessageWriterConnector {
|
|
|
*/
|
|
|
@Subscribe(topics = "/device/**", id = "device-message-ts-writer")
|
|
|
public Mono<Void> writeDeviceMessageToTs(DeviceMessage message) {
|
|
|
+ Optional<String> serverId = message.getHeader(Headers.serverId);
|
|
|
+ if(serverId.isPresent()&&!this.serverId.equals(serverId.get())){
|
|
|
+ //不是设备连接的服务器,不进行存储信息
|
|
|
+ return Mono.empty();
|
|
|
+ }
|
|
|
return dataService.saveDeviceMessage(message);
|
|
|
}
|
|
|
|
|
|
@@ -74,17 +70,4 @@ public class TimeSeriesMessageWriterConnector {
|
|
|
})
|
|
|
.then();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- //断开连接
|
|
|
- private Mono<?> disconnect(DeviceMessage message){
|
|
|
- Mono<DeviceOperator> device = registry.getDevice(message.getDeviceId());
|
|
|
-
|
|
|
- return registry.getDevice(message.getDeviceId())
|
|
|
- .switchIfEmpty(Mono.never())
|
|
|
- .flatMapMany(DeviceOperator::disconnect)
|
|
|
- .doOnError(e->{})
|
|
|
- .singleOrEmpty();
|
|
|
- }
|
|
|
-
|
|
|
}
|