diff --git a/app.db b/app.db
index 5007c8e..674552a 100644
Binary files a/app.db and b/app.db differ
diff --git a/digester.zip b/digester.zip
deleted file mode 100644
index 737dcc8..0000000
Binary files a/digester.zip and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 27c2f7a..414dbf4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
com.my
digester
- 0.0.1-SNAPSHOT
+ 0.0.1
digester
digester
diff --git a/publish.ps1 b/publish.ps1
new file mode 100644
index 0000000..9db13c1
--- /dev/null
+++ b/publish.ps1
@@ -0,0 +1,24 @@
+# update version in pom.xml
+$pomData = [xml](Get-Content pom.xml)
+$version = $pomData.project.version -split '\.'
+$version[2] = [int]$version[2] + 1
+$version = $version -join '.'
+mvn versions:set -DnewVersion="$version"
+git add pom.xml
+git commit -m "update version to $version"
+git push
+
+# build
+mvn clean package
+Rename-Item -Path target/graphite_digester_bg-$version.jar -NewName "app-$version.jar"
+
+# upload
+scp target/app-$version.jar root@192.168.8.10:/app/
+scp D:/device.db root@192.168.8.10:/app/device.db
+
+# start
+ssh root:zwsd@192.168.8.10 "killall java"
+ssh root:zwsd@192.168.8.10 "rm /app/app.jar"
+ssh root:zwsd@192.168.8.10 "ln -s /app/app-$version.jar /app/app.jar"
+ssh root:zwsd@192.168.8.10 "nohup /app/java/jdk-18.0.2.1/bin/java -jar /app/app.jar --spring.profiles.active=test > /app/app.log 2>&1 &"
+ssh root:zwsd@192.168.8.10 "tail -f /app/app.log"
\ No newline at end of file
diff --git a/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java b/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java
index b2e4efc..32147ac 100644
--- a/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java
+++ b/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java
@@ -24,5 +24,6 @@ public class DigesterApplicationRunner implements ApplicationRunner {
System.load(this.pylonLibraryPath);
System.load(this.pylonWrapperPath);
this.device.liquidAddition.setup();
+ DigestionTaskTheadManager.getInstance().setup();
}
}
diff --git a/src/main/java/com/iflytop/digester/DigestionTaskTheadManager.java b/src/main/java/com/iflytop/digester/DigestionTaskTheadManager.java
index 31691fc..cf2578c 100644
--- a/src/main/java/com/iflytop/digester/DigestionTaskTheadManager.java
+++ b/src/main/java/com/iflytop/digester/DigestionTaskTheadManager.java
@@ -3,6 +3,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iflytop.digester.model.MdbDigestionTask;
+import com.iflytop.digester.model.MdbRuntimeLog;
+import com.iflytop.digester.underframework.dao.model.UfMdbNotification;
+import com.iflytop.digester.underframework.dao.model.UfMdbOption;
import com.iflytop.digester.underframework.util.UfJsonHelper;
import jakarta.annotation.PostConstruct;
import org.eclipse.paho.client.mqttv3.*;
@@ -22,19 +25,6 @@ public class DigestionTaskTheadManager {
// Mqtt client
private MqttClient client;
- @Value("${mqtt-broker.uri}")
- private String mqttBrokerUri;
- @Value("${mqtt-broker.username}")
- private String mqttBrokerUsername;
- @Value("${mqtt-broker.password}")
- private String mqttBrokerPassword;
- @Value("${mqtt-broker.clientId}")
- private String mqttBrokerClientId;
- @Value("${mqtt-broker.my-topic}")
- private String mqttBrokerMyTopic;
- @Value("${mqtt-broker.transbot-topic}")
- private String mqttBrokerTransbotTopic;
-
// Get instance
public static DigestionTaskTheadManager getInstance() {
return instance;
@@ -44,39 +34,47 @@ public class DigestionTaskTheadManager {
public void init() {
this.tasks = new ArrayList<>();
instance = this;
+ }
+
+ // setup
+ public void setup() {
this.setupMqttBroker();
}
// setup mqtt broker
private void setupMqttBroker() {
+ String uri = UfMdbOption.getString("DigestionTaskMqttBrokerUri", "");
+ String clientId = UfMdbOption.getString("DigestionTaskMqttClientId", "");
+ String myTopic = UfMdbOption.getString("DigestionTaskMqttMyTopic", "");
+
this.client = null;
try {
- this.client = new MqttClient(this.mqttBrokerUri, this.mqttBrokerClientId, new MemoryPersistence());
+ this.client = new MqttClient(uri, clientId, new MemoryPersistence());
} catch (MqttException e) {
throw new RuntimeException(e);
}
this.client.setCallback(new MqttCallback() {
- public void connectionLost(Throwable cause) {
- System.out.println("connectionLost: " + cause.getMessage());
- }
public void messageArrived(String topic, MqttMessage message) {
DigestionTaskTheadManager.this.handleOnMessageArrived(topic, message);
}
+ public void connectionLost(Throwable cause) {
+ UfMdbNotification.error("消解任务 MQTT 服务器断开连接");
+ System.out.println("connectionLost: " + cause.getMessage());
+ }
public void deliveryComplete(IMqttDeliveryToken token) {
- // nothing to do here
+ System.out.println("xxxx");
}
});
try {
MqttConnectOptions options = new MqttConnectOptions();
-// options.setUserName(this.mqttBrokerUsername);
-// options.setPassword(this.mqttBrokerPassword.toCharArray());
client.connect(options);
} catch (MqttException e) {
+ UfMdbNotification.error("消解任务 MQTT 服务器连接失败 : %s : %s", uri, e.getMessage());
throw new RuntimeException(e);
}
try {
- client.subscribe(this.mqttBrokerMyTopic, 2);
+ client.subscribe(myTopic, 2);
} catch (MqttException e) {
throw new RuntimeException(e);
}
@@ -84,6 +82,8 @@ public class DigestionTaskTheadManager {
// Handle on message arrived
private void handleOnMessageArrived(String topic, MqttMessage message) {
+ MdbRuntimeLog.log("DigestionTaskMqttMessage", "Topic : %s; \nPayload : \n%s", topic, message.toString());
+
String content = new String(message.getPayload());
JsonNode actionJsonTree = null;
try {
@@ -120,16 +120,18 @@ public class DigestionTaskTheadManager {
// Send message to trans bot
public void sendMessageToTransBot(String action, Map params) {
+ String myTopic = UfMdbOption.getString("DigestionTaskMqttMyTopic", "");
+ String transTopic = UfMdbOption.getString("DigestionTaskMqttTransBotTopic", "");
try {
var message = Map.of(
- "src", "stw-a80",
+ "src", myTopic,
"action", action,
"params", params
);
var messageJson = UfJsonHelper.objectToJson(message);
MqttMessage mqttMessage = new MqttMessage(messageJson.getBytes());
mqttMessage.setQos(2);
- this.client.publish(this.mqttBrokerTransbotTopic, mqttMessage);
+ this.client.publish(transTopic, mqttMessage);
} catch (MqttException e) {
throw new RuntimeException(e);
}
diff --git a/src/main/java/com/iflytop/digester/StartResetTaskThread.java b/src/main/java/com/iflytop/digester/StartResetTaskThread.java
index fffd692..a820985 100644
--- a/src/main/java/com/iflytop/digester/StartResetTaskThread.java
+++ b/src/main/java/com/iflytop/digester/StartResetTaskThread.java
@@ -49,42 +49,6 @@ public class StartResetTaskThread extends Thread {
UfMdbRuntimeVariable.setString("设备已就绪","device.message");
}
- // 设置蠕动泵
- private void setupPeristalticPump() {
- for ( int i=0; i<16; i++ ) {
- this.setProgressMessage("设备初始化 : 初始化蠕动泵 " + (i+1) + "/16");
- UfCmdSnippetExecutor.execute(String.format("PeristalticPumpEnable.%d",i));
- }
-
- Boolean enableSetup = UfMdbOption.getBoolean("LiquidPeristalticPumpPipeSetupEnable", false);
- if ( !enableSetup ) {
- return ;
- }
-
- this.setProgressMessage("设备初始化 : 初始化加液管路");
- UfCmdSnippetExecutor.execute("DoorOpen");
- UfMdbNotification.action("TaskStartResetPumpPipeSetupTubeRankPutIn", new HashMap<>());
- this.waitAction("TaskStartResetPumpPipeSetupTubeRankPutIn");
- UfCmdSnippetExecutor.execute("DoorClose");
-
- // 加液管充满
- int liquidPipeVolume = UfMdbOption.getInteger("LiquidPeristalticPumpPipeVolume", 1);
- Device device = Device.getInstance();
- var tubes = List.of(0,4, 3,2, 15,11, 12,13, 1,5, 6,7, 14,10, 9,8);
- for ( int i=0; i<8; i++ ) {
- this.setProgressMessage("设备初始化 : 初始化加液管路 " + (i+1) + "/8");
- var tubeList = tubes.subList(i*2, i*2+2);
- var pumpList = List.of(2*i, 2*i+1);
- device.liquidAddition.addLiquidToTubes(tubeList, pumpList, liquidPipeVolume);
- }
-
- // 加液管充满, 需要取出试管架
- UfCmdSnippetExecutor.execute("DoorOpen");
- UfMdbNotification.action("TaskStartResetPumpPipeSetupTubeRankTakeOut", new HashMap<>());
- this.waitAction("TaskStartResetPumpPipeSetupTubeRankTakeOut");
- UfCmdSnippetExecutor.execute("DoorClose");
- }
-
/**
* 清理试管架
* @issue : 无法获取加液位置是否存在试管架
@@ -179,4 +143,46 @@ public class StartResetTaskThread extends Thread {
private void setProgressMessage(String message) {
UfMdbRuntimeVariable.setString(message, "device.start.message");
}
+
+ // 设置蠕动泵
+ private void setupPeristalticPump() {
+ // 说是不要在开机的时候初始化蠕动泵了
+ boolean enable = System.currentTimeMillis() < 0;
+ if ( !enable ) {
+ return ;
+ }
+
+ for ( int i=0; i<16; i++ ) {
+ this.setProgressMessage("设备初始化 : 初始化蠕动泵 " + (i+1) + "/16");
+ UfCmdSnippetExecutor.execute(String.format("PeristalticPumpEnable.%d",i));
+ }
+
+ Boolean enableSetup = UfMdbOption.getBoolean("LiquidPeristalticPumpPipeSetupEnable", false);
+ if ( !enableSetup ) {
+ return ;
+ }
+
+ this.setProgressMessage("设备初始化 : 初始化加液管路");
+ UfCmdSnippetExecutor.execute("DoorOpen");
+ UfMdbNotification.action("TaskStartResetPumpPipeSetupTubeRankPutIn", new HashMap<>());
+ this.waitAction("TaskStartResetPumpPipeSetupTubeRankPutIn");
+ UfCmdSnippetExecutor.execute("DoorClose");
+
+ // 加液管充满
+ int liquidPipeVolume = UfMdbOption.getInteger("LiquidPeristalticPumpPipeVolume", 1);
+ Device device = Device.getInstance();
+ var tubes = List.of(0,4, 3,2, 15,11, 12,13, 1,5, 6,7, 14,10, 9,8);
+ for ( int i=0; i<8; i++ ) {
+ this.setProgressMessage("设备初始化 : 初始化加液管路 " + (i+1) + "/8");
+ var tubeList = tubes.subList(i*2, i*2+2);
+ var pumpList = List.of(2*i, 2*i+1);
+ device.liquidAddition.addLiquidToTubes(tubeList, pumpList, liquidPipeVolume);
+ }
+
+ // 加液管充满, 需要取出试管架
+ UfCmdSnippetExecutor.execute("DoorOpen");
+ UfMdbNotification.action("TaskStartResetPumpPipeSetupTubeRankTakeOut", new HashMap<>());
+ this.waitAction("TaskStartResetPumpPipeSetupTubeRankTakeOut");
+ UfCmdSnippetExecutor.execute("DoorClose");
+ }
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ce1953a..8f9c7b1 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -14,8 +14,7 @@ device:
key : zcancmder
enable : false
type : ZcancmderWebsocket
-# uri: ws://192.168.8.10:19005
- uri : ws://127.0.0.1:19005
+ uri: ws://192.168.8.10:19005
- name : modbus
key : modbus
enable : false
@@ -23,14 +22,6 @@ device:
host: 192.168.8.10
port: 20000
-mqtt-broker:
- uri: tcp://broker.emqx.io:1883
- username: admin
- password: public
- clientId: digester
- my-topic : "stw-a80"
- transbot-topic : "transbot"
-
app :
errorSlotIndex : 4
liquidWaterBucketIndex : 2
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 1423367..4df67e4 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -22,14 +22,6 @@ device:
host: 127.0.0.1
port: 502
-mqtt-broker:
- uri: tcp://broker.emqx.io:1883
- username: admin
- password: public
- clientId: digester
- my-topic : "stw-a80"
- transbot-topic : "transbot"
-
app :
errorSlotIndex : 4
opencv-library-path: /userdata/rootfs_overlay/usr/lib/jni/libopencv_java420.so