From 2e50eaf67740fe0166aaacebeff5106a90ba2e01 Mon Sep 17 00:00:00 2001 From: sige Date: Wed, 24 Apr 2024 17:39:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.db | Bin 397312 -> 430080 bytes .../com/iflytop/digester/model/MdbRuntimeLog.java | 6 ++++++ .../underframework/UfCmdSnippetExecutor.java | 3 ++- .../connection/UfConnectionBase.java | 6 ++++++ .../connection/UfZcancmderWebsocket.java | 6 +++++- .../underframework/dao/model/UfMdbOption.java | 3 +++ src/main/resources/application-dev.yml | 3 --- src/main/resources/application-test.yml | 2 -- web | 2 +- 9 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app.db b/app.db index 468516c0c36277e7c1b71e5544097d8f0774d7a6..2f5ff1efdc2c85b05e72543959b50685e58487bc 100644 GIT binary patch delta 12604 zcmeHNdz2LAm9MVu>PPjX7#@zpa|Q;PW~Q3&tFNAeC?iirW(IU(j7F^|;e@9$x|qbF z4T{LyR!U-sk`T?t6I6(f@=z4tie^k!b2huHxDLV^O^lBcd|Jifo z90tBSw|@72_q+G^-R`=p?mB(dUBfpIA3Sy^!!QfsZ|P5{VM~+5j@|jd6+6!k4K8p~ z$8syu8&a?CX`1?El4Xt+>IS`)%#-}!SoOGZq3gxMeXS!xZeh@QLkq9Bx)Ykxd~NMm z$6R4vxN@00w)Vmq-@Gu*XY+QxDpoyhTIl+@D@<#VTUh>+8uoID{u91jvI;l1O`yvM z+RiVawxM4_S@Cx$ZTUd~%J?s#-~a_*9H3x|vIn*O?ux;j&`Wo4MiZOs;CNisyskQ~t=rmM+Vv5@VD7O=UIhJul%>R36)Tw#Al#2O}4 zBoj%Kx~qn<+e7}ryE(!)^eo1U%_W`YqV5AjL#rcGS1Vw1HKK-BPwX>aQ}cgo{`Qdn z`msoqKe}a2@A_39c+q{;h|rc5;imXUer$7S5)1#Tn?o0MZ`vI4;@O69M@Tmm$wshu z-S7-iHVq^irlg66fi#RgESWlKS~GfEsC)D__N-18tNvw~@anjRW{QyxJl_A!FGBTe zGD5gJBSb#9zYF63&Cu@{;Wc5GaD#A(API@g8=3CR#*CXeGczQ8Jbf^|HN7}JJv}1z zm(+8qyHeMrT2tebpC^Bt{ADtqyeOGVa{Rxr-{*JpYxyg9jn5={6Z;dlgnq|1Bo-#7 zCaUA_#h;Ad5x+8iZhTDapbRWN~DAWCS}u{C@b^@SW_Z;j6=Q!}WXW28|4LWy2k;>|n*T2@-AF z^hDYAh^U*ECL)FCmMiHdoH+9{s;Q~6YD&Ztv0@`p)?Ff+is_27r5l#xAX)Zo=FSqP z>LO1U3BmAt4cVgZVMjD|#WRs&D~6*mKgo7cP{+cC>PZ0QSYTeaMBUO{QSwYxw`9rl zh|c_of)dAc9a}X;q`Cl#6i8cHwnW=gWm9r&&p{4zJJnQe1=3sBM8_m5Xc91QnYKu< zXKFSwCDqZGt=aJW4pz}!)grPgB2#xn*^p!kYKpq7x)N4BL$hS&HVUe%Iz$OjG?i$u zdk0*Wh%2hLsmQLO5l2^;LgCP1v9M-;eJEB~_MBL_@X4&-_+(`KM2eufCNgZt6Ac~7 zA{fA;u1a9bmR(1K;2DO-+~Oa9JR%n6JeMtuJDe@t`cmmx2!>}7U4*E>vmS9o139J$ zzPrS-;lHNJtnoKI5fS}69*<-T=RKA6lh1JVjihKAyE1VUO_Z=nAnhexv?PK>?05tM z1tCO)S?5o9HZrO3&xacPj%NYl@@KOCWzTW-T#i;wq5aqOq0$X%GHN1C@gtg^q+bvlJ)QXF|215Ha?v#?pcwENp#Z?Asz?{a!|Ah-%C2r0x+uwt0!J$wqG17mhmj&H*wJ-MVs0vKt>@SE zTyy>L-n-@WgRt)6;F>59*KtNn@y* zE+W@fY{SxQB1z2VBGPlIXnkmbKbRiQWrs@H08vq}=USpBD^Pb1oQ8#oC1QvaRv^74 zPho!OzfK=&-3DH@7F`{*ufDM9C9W{_>8ziACNkgOa3{EV@F~u(gYXxwcp>XAd>YQ- z{zI_RUYJ`BqXQ^gCH#0$i|fU9LRJU4#(C^huGNCOlC_VekeFNY-2|=pc)+w zfqRCoz(%3?px8Ae8=1DvN|s>*^J3(RI&y5$Rb|P=I#Co^W;PVAeOC0ZqC4q4JidzudObgUh>3j> z5Ny;CE{$#wh`?u#WFEVAj=quFnfhL8ek#lD3%?s_NioUSlDm>OM7xuhCP{o=l8=0sKf*uEZ{j^}O5`{{ zg&&%DhpQWscp|YaYR4|&dK1ecx5ZW`X2lYT(cwe!kK!-Je-^)X&pb3PT%=J?cWn*g zBHBQwP~4g#nx+GkLL}K!O-0i@!u*^D!j_S0yGRo;R)C!}Sr$zUyn;2N*|uRzx}`Ha zsitMI#WnC;ncR|jia#3Ql+dm<`$DgntreFKZ@nt@FWC9D(X#}w4XKvh@*JQJ8u zrniD68Nfs?fos7v3?jMA9YswQNL7VgHDpS8uv^iPBn%8F5h81@jx3AW2AW+gu$ZkX zCgc{Dby1de2$W}GQFS1D4V|clOc|;p9s~i7QB{F)Aq1eN>k=FQ)+A;V)$Fn*Pg61U6ABO-gw#_+%LP(UOpWM@ zWLPHBn477p>)M`ST0nvx>{-?^n1`lAByfdF2J(RHFte6wnuM6L2{(=BQA`9$WjHz( z9YcaE03Nqo%-ldV^)Am-6$BTpX~In>yB1WI33TbnSTzVX6(n2C>Y{l|^)Ngxx(-cJ z#e?A59;AYTT}M_ZBPq=FRMQ|fFlCD%i7LYBXrALCQI&zjKoQyjS93&Hhd-1v6$mC( zguHZQ1Pv8!UV!%?mo2#aMIsq+B^oLe5k^$83qc2lR47WZ^ks?aimb)ASN({;xwxcPsXlS}Cf{(W3KwqRuS`*cz+@Z zOx2T-t|CoV8>ylPmyPK{!Ps8Wwh5`O7^bKa=-)I8>dDn6Qbk9W36>pcrs%p5s+|6vl?t*L>)S5Qus*gb#Y^3H`$@F5c{cQ!8kr+%hoYFg5? z>vGiecy4kf1zL$|e@B)Z+65*Lex*f4%ZEj3auPSWl2Wh4WUyN}@S_jyuDz;rk=N-j z8_&fS30EDuv!4^B8LK&@lIxmE+omjXDiW#0hvK#ugT=L9X;H@cSR*wFiCzgERb=w6 zI&M^#aOL8cNzk8kKw{xhjeHH~HK6Sv;F~F|jpa zCYs_O#}CHW#V?AFjlCP|j^$%>V#A`ZNB=SUt!NT%nZ?}bNKa&SLiAYAR(0->3joirJHn0fFMfn=NTF7_ES3D_d)ZO` zJ&&*xKupSF9Ek7zm}^M3N@Xbuq@RK`(TYn_f9YO!W(u8;U@d?lSr4@Su$LVV;z_Zp zSyfc5QSnIsoe#JP$+LPVTHMn}|BN@e27c~@l9c$%_OfIA ztKa0#NX|W@EG%wpr2hn{Cgkz4Dm+XP7=O$fwuwh_eR)0M-#IZMk1H=PEiT8Fms^U< zy7Ka!;NjZxdh|`Km>^?fRg;R?^KN3B5@d9F>Ab}?C8SZX96~MM{ubAmAS27aeS!W~ z9s$d0`r9wwqJ9i7FXybK$Tel<>()}_)62{I*RqYUiR!X;PcMD=wDK}~loONFhQ+GR z9yUW@B<$C%V~6^e-As?+{GqX`8N=p*#XrBx%}CA}0(mfOj=*3e(0b=)Rs^lVv8p*# z?2lQ;PKQ*hqH6FI)&jLv>sXXR?So=fbBkh?ifjC-f8uhM@H<-_vh;1~WfJ2JvQv7Wswjjl_^t2zQP zB!(Rs?yuUwUd*E@Je1LpDd6ZE8(4)$lM^vva&bL!BTJGT9ZKO2b$+N!+2P-rRHM;JjPk@XTf6P@2fl}*5F-rcz2tW4; zcShrXOaItfx^$6iE@|(eNdmN>`;R}!j`qL1hs{DxTv(RM{^gGXS?vXJ6187Y7W&<@y3v*^t#JS)`Xg518g<59N(u7+>H7NI= z?)UtS-U!pnQivy&4mm-k)5_A~4RgBR0aCu@oU+tE@*${Bc!;g#QAOXdZYfiLG zEiXe~aLvi7XG5tJt&-rzx%3N)e^%)pQl&t;{R^%x*)pXp#ewwoqV&wN6qTg^Np&Ze zq)Kr&)&7MKv$e3v=CZiBooc@muEsCl^MPn-qO7x-)tSd^W3!cFp=0w6pY1HqdnU>V>vDZRui|1#m7{vT)fl zcg6Wj7tB~fhb7R_^=sbRxAX0_YmV-E@TmXu-pBmlvs(GGo_#S;3Xodu`40PABs1}9*xb6z7+ii_ivmRc`tHx_(b@| zaE9H=jt<=&$}xra=PYgN%-2Ob##|DaT)}HUe@7@<zA|wjsGP%C@63-0Kr5Lb@mrqe8rrbY z=js^)QBls20CjYL3KJ}+nl|y5r^-Q)P#^M`0mu@`X)*+1RDfK;8_>eMhf6W|>_r-b zkpnSNPEi4KWPn-8tI{9_lGNvE^#D|?Cq)pMQ?awo9ZBbm%}(DMzr@ znI9g2Rx+DYbk$$<635SYCE5>=G%N6xybfO0l)OCkE8V_$wo6K%r{RIXuzd_cJv{)f zWHzYiX}hGBQF~4dL`69mhwIE&2dI_2RxTY?UuE@tHUL%Dpt9u7{AmGd1=C6XjzX!j z3j6QpXZCzB028WJr-?c&z^r79spM&2VfFlZAgY>EiPD)L8lYD2vb^uO+DKnr^&A@j zEI}Tqs53t#0Ipz`>Pr<%aNm*j4n$URvZk%f4+doTZnuIND;iv}O*`rCs{=qW$`J{z z%vS}V6^zc@vb(9BXeS;0?Ep-q!7Dm-WqweAS;6>_zlD!BLcwZ%JkayfKv*dU6PYXX zLI8W}sRe&CA8ncksC`7x^L#&4iPkL)U#!e$0@MnIf#_w>G!I@4_npEguwPuK~MiTVG?~m14A?`^Qi!}f{`&uTI%XaCfGN?Rhi^u9Wo#pfNB-Y z&y`#~$pjA%L`6AC2Uqz3wSu{kQnKoOQT^orP)W_{$XJk*2^&F1TkP zEXgS}U*iF61=DoJd<9tjWNH0$04xS3z!2D2DX^!WYxG+LxV!Jal^fcwpDeKcFC(R9 zxDks?5DkzknLG@ROg~v)w-4|a!JAzfugr4+Y6W9C#ppuW>L&~Awt=up4k-W|31Ib8 zj_?%P9~Rq*ezLqa55z<{L|qLBm=z2dQj*QJoh+{P{V;K}0?DNsU3oTmbq13uryL-n zug*sMkKV!!C8vCUW~j6+j$~LyxJiJK@eB*!5&tC(@9M?}1}hn>J87^TdIF>%MTZWz zf6Rly1iF{{0J@Snya0OLA;`UxdwHdQnAB!0Sj&5Z&I delta 1256 zcmZvbZEO@p7{_;ZXZB@gcc%0O1hj8lX%A`W^$0e?l}ZE}gxVf91gT0BXb}yTfFaOG zskR`Az`;hxVpJmiKu`+wLbrTq>^m>LqwqnffdEH@@Mg3@8zYJMT;fM}vzy=ldFDU! z?98*fj!fHiAkCgYj17;RFV&Ex}f2hT8C^xL{;$N5>B z(9<-Nb+DlJgT9{CkQd08MzLY(3wXWuiF!+WQ%zOZ(RA$}{0Hr}+Uzj9hI+Mt-Hx}5 zlg0^sKmLyNp-pNRc_^4VACK66^Qf`LtkQlm^Np)y36ko*R334%tflAy&c~Hj1Ha=8 zxQBXcF_KE7{QCy>yV-q>a`F(sV4q)R4Pw8vMnEm>_siQCLH(KxUH^jk&`Q}nf(zwf z9Ot=#fkIh4g7f6@WN0nZeQ2Xh3<0l8nqmVmrgHF#Y>$Cj2-C~XQF!h9miXM>AtI0K z;MnRu94eGkF2QnT!+tpdW8Fi;VfhP0q(6qk?mOrF(gCA;`dkGzV@iP>{u%qEH-zU% zF^mh`o#!jC)vq+Vm(S-VAuO-lz(9`_zr1@BjIUkThG_`m-^YlLGDhe0fl zS77Hcz&8NA6ySFNF&ApsIR-Vncj*EaW3b_SuY;-`h3*@J9KQuBI+|_O1%m5U=;{L5 za})cTDB#Pwrx?$~HPInjMU4mw$`kx7kMMe4Y83Mf=dp3Z8E_6eo6Q2J+{rSo+7otM zziqeMjds}f+X}k|z16CFtcC^6Dn@C7cGCm2j)rKu^~mbC+Ke?;gVACwH7qOB{L_q? zN6j6ubo7m)65aEz;uWjWB1wwKN47W#^VQ%H^gMdt?JpvjqOi=qkKiO`p-W!te9|;` zLq2Rj4T-rlo!=2-^ni0%oD>Y&wgZ~Io3-*%7IYpv<*WwEAE0%197?24ma`d3o)B;G z2u)c1b~~?6mM?Z&kKmL3=l0%jAg&QDN*O?2|8}xyo;FDjN#him0Y844?uEL@xv7&a z#uU-O@9{NG+*x3E+5z?zW6_+-aq6+_q#{F`sV@V=yP7xjgp^`5)6GfArDd!1N!21C kN?wxLbvQ#F=u~sP`oGB6hL){7{oK$O9o*7+=BZA^zb-|ODgXcg diff --git a/src/main/java/com/iflytop/digester/model/MdbRuntimeLog.java b/src/main/java/com/iflytop/digester/model/MdbRuntimeLog.java index 4aef0b5..75e5257 100644 --- a/src/main/java/com/iflytop/digester/model/MdbRuntimeLog.java +++ b/src/main/java/com/iflytop/digester/model/MdbRuntimeLog.java @@ -1,7 +1,12 @@ package com.iflytop.digester.model; import com.iflytop.digester.underframework.dao.record.UfActiveRecord; import com.iflytop.digester.underframework.dao.record.UfActiveRecordField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MdbRuntimeLog extends UfActiveRecord { + // logger + public static final Logger LOG = LoggerFactory.getLogger(MdbRuntimeLog.class); + @UfActiveRecordField public String type; @@ -27,5 +32,6 @@ public class MdbRuntimeLog extends UfActiveRecord { log.timestamp = (int)(System.currentTimeMillis() / 1000); log.time = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new java.util.Date()); log.save(); + LOG.info("[{}] {}", type, log.content); } } diff --git a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java index 2496bea..d2e8fea 100644 --- a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java +++ b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.iflytop.digester.underframework.command.UfCommand; +import com.iflytop.digester.underframework.dao.model.UfMdbOption; import com.iflytop.digester.underframework.util.UfClassHelper; import freemarker.template.Configuration; import freemarker.template.Template; @@ -40,7 +41,7 @@ public class UfCmdSnippetExecutor { * @param params - params */ static public void execute(String snippetKey, Map params) { - Boolean logEnabled = UfApplication.getApp().getEnv().getProperty("device.snippet-execute-log-enable", Boolean.class); + Boolean logEnabled = UfMdbOption.getBoolean("DeviceCommandSnippetLogEnable", true); if ( Boolean.TRUE.equals(logEnabled) ) { LOG.info("[Snippet Execute] : {} ({})", snippetKey, UfJsonHelper.objectToJson(params)); } diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java index 673a65d..1befd05 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java @@ -1,4 +1,5 @@ package com.iflytop.digester.underframework.connection; +import com.iflytop.digester.underframework.dao.model.UfMdbOption; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Field; @@ -38,6 +39,11 @@ abstract public class UfConnectionBase implements UfConnection { // log message protected void log( String message, Object... args) { + var enable = UfMdbOption.getBoolean("DeviceActuatorCommandLogEnable", true); + if ( !enable ) { + return ; + } + String content = String.format(message, args); LOG.info("[Connection : {}] {}" ,this.name, content); } diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java b/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java index 3411b5e..490d8e7 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfZcancmderWebsocket.java @@ -4,6 +4,7 @@ import com.iflytop.digester.underframework.dao.model.UfMdbActuatorCmd; import com.iflytop.digester.underframework.dao.record.UfActiveRecord; import com.iflytop.digester.underframework.util.TsByteBuffer; import com.iflytop.digester.underframework.util.UfClassHelper; +import com.iflytop.digester.underframework.util.UfCommon; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import java.net.URI; @@ -67,6 +68,8 @@ public class UfZcancmderWebsocket extends UfConnectionBase { @Override synchronized public String execute(UfMdbActuatorCmd command) { + UfCommon.delay(20); // 先延时个20ms,测试一下会不会死掉 + var parts = command.cmdKey.split("_"); for (int i = 0; i < parts.length; i++) { parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1); @@ -157,7 +160,8 @@ public class UfZcancmderWebsocket extends UfConnectionBase { String cmd = this.buildCommand(actuatorCmd); UfMdbActuator actuator = UfMdbActuator.findOne(UfMdbActuator.class, actuatorCmd.actuatorId); - LOG.info(" [Command-Executor:{}] {}({}) => {}", actuator.name, actuatorCmd.cmdKey, actuatorCmd.parameters, cmd); + this.log("%s.%s(%s) => %s", actuator.name, actuatorCmd.cmdKey, actuatorCmd.parameters, cmd); + this.reconnectIfClosed(); TimerTask task = new TimerTask() { diff --git a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java index 44a247f..18274f4 100644 --- a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java +++ b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java @@ -15,6 +15,9 @@ public class UfMdbOption extends UfActiveRecord { @UfActiveRecordField public String editable; + @UfActiveRecordField + public String dataType; + // get table name public static String getTableName() { return "app_options"; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f723b3e..8691ad6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -9,7 +9,6 @@ spring: driver-class-name: org.sqlite.JDBC device: - snippet-execute-log-enable : true connections: - name : zcancmder key : zcancmder @@ -34,8 +33,6 @@ mqtt-broker: app : errorSlotIndex : 4 - liquidPeristalticPumpPipeSetupEnable : false - liquidPipeVolumn : 1 liquidWaterBucketIndex : 2 bucketVolumeCheckEnable : false opencv-library-path: D:/ProgramFiles/OpenCV/opencv/build/java/x64/opencv_java490.dll diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 80fcfcc..1423367 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -9,7 +9,6 @@ spring: driver-class-name: org.sqlite.JDBC device: - snippet-execute-log-enable : false connections: - name : zcancmder key : zcancmder @@ -33,7 +32,6 @@ mqtt-broker: app : errorSlotIndex : 4 - liquidPeristalticPumpPipeSetupEnable : true opencv-library-path: /userdata/rootfs_overlay/usr/lib/jni/libopencv_java420.so pylon-library-path: /opt/pylon/lib/libpylonc.so.7.2 pylon-wrapper-path: /app/basler-camera-java-wrapper/libpylonc-wrapper.so \ No newline at end of file diff --git a/web b/web index 1891bd4..9380bd9 160000 --- a/web +++ b/web @@ -1 +1 @@ -Subproject commit 1891bd42f65e2e58ded882f3f5f0179e1fc1cfd8 +Subproject commit 9380bd9e280da60f53a323d70b8cb3135b2d5130