Ver código fonte

Signed-off-by: zhuhongbin <kptzhu@163.com>

zhuhongbin 3 anos atrás
commit
55a962c0ed
28 arquivos alterados com 6816 adições e 0 exclusões
  1. 8 0
      .idea/.gitignore
  2. 9 0
      .idea/datasync.iml
  3. 8 0
      .idea/modules.xml
  4. 3521 0
      Consumer.log
  5. 4 0
      arm.bat
  6. 2 0
      canalservice_i.bat
  7. 2 0
      canalservice_r.bat
  8. 80 0
      config.ini
  9. 52 0
      go.mod
  10. 226 0
      go.sum
  11. BIN
      go_build_datasync.exe
  12. 779 0
      kpt/dqueue.go
  13. 920 0
      kpt/gocanal.go
  14. 434 0
      kpt/kafka.go
  15. 602 0
      kpt/mqtt.go
  16. 4 0
      linux64.bat
  17. BIN
      logs/28ed0c26-6304-11ec-bd58-0a002700000d
  18. BIN
      logs/index
  19. 57 0
      main.go
  20. BIN
      mysqldump.exe
  21. 20 0
      pem/bbbc7ee0f6-certificate.pem.crt
  22. 27 0
      pem/bbbc7ee0f6-private.pem.key
  23. 1 0
      pos/pos.db
  24. BIN
      pos/pos.db.idx
  25. 13 0
      readme.txt
  26. 4 0
      win32.bat
  27. 5 0
      win64.bat
  28. 38 0
      y.sql

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 9 - 0
.idea/datasync.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/datasync.iml" filepath="$PROJECT_DIR$/.idea/datasync.iml" />
+    </modules>
+  </component>
+</project>

+ 3521 - 0
Consumer.log

@@ -0,0 +1,3521 @@
+[2021/12/22 16:47:57] [info] gocanal.go:609 read pos name 1826TMRWatchLog.000074
+[2021/12/22 16:47:57] [info] gocanal.go:613 end pos name1826TMRWatchLog.000074
+[2021/12/22 16:49:57] [info] gocanal.go:609 read pos name 1826TMRWatchLog.000074
+[2021/12/22 16:49:57] [info] gocanal.go:613 end pos name1826TMRWatchLog.000074
+[2021/12/22 16:49:57] [error] gocanal.go:831 start canal err %vERROR 1236 (HY000): Could not find first log file name in binary log index file
+[2021/12/22 16:49:57] [info] gocanal.go:669 binlog pos :1826 binlog posname :TMRWatchLog.000074
+[2021/12/22 16:49:57] [error] mqtt.go:117 [MQTT] Connected
+[2021/12/22 16:49:57] [info] mqtt.go:148 encode 6412
+[2021/12/22 16:49:57] [info] mqtt.go:163 Client.Publish len:---  6412
+[2021/12/22 16:49:57] [info] mqtt.go:148 encode 6063
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6063
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6002
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6002
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6012
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6012
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 5952
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  5952
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6017
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6017
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 5972
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  5972
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 5978
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  5978
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6002
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6002
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 5929
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  5929
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6029
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6029
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 5971
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  5971
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6007
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6007
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6015
+[2021/12/22 16:49:58] [info] mqtt.go:163 Client.Publish len:---  6015
+[2021/12/22 16:49:58] [info] mqtt.go:148 encode 6014
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6014
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6019
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6019
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6091
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6091
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6134
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6134
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6133
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6133
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6171
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6171
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6135
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6135
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6215
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6215
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6057
+[2021/12/22 16:49:59] [info] mqtt.go:163 Client.Publish len:---  6057
+[2021/12/22 16:49:59] [info] mqtt.go:148 encode 6235
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  6235
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 6138
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  6138
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 6148
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  6148
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 24763
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  24763
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 24621
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  24621
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 24433
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  24433
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 25968
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  25968
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 25432
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  25432
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 26049
+[2021/12/22 16:50:00] [info] mqtt.go:163 Client.Publish len:---  26049
+[2021/12/22 16:50:00] [info] mqtt.go:148 encode 26956
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26956
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26852
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26852
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26398
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26398
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27001
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27001
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26705
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26705
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26347
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26347
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26647
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26647
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27142
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27142
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27303
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27303
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27231
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27231
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27170
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27170
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27333
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27333
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27020
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27020
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26990
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26990
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27361
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27361
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27507
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27507
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26960
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  26960
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27011
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27011
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 27019
+[2021/12/22 16:50:01] [info] mqtt.go:163 Client.Publish len:---  27019
+[2021/12/22 16:50:01] [info] mqtt.go:148 encode 26445
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26445
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 26432
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26432
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 24992
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  24992
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 26002
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26002
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 26201
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26201
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 25760
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  25760
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 26244
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26244
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 26407
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  26407
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27373
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27373
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27337
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27337
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27700
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27700
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27752
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27752
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28040
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28040
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28069
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28069
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27606
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27606
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28052
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28052
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27408
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27408
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27710
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27710
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28133
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28133
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27785
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27785
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27640
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27640
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28005
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28005
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28009
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  28009
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27727
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27727
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 27834
+[2021/12/22 16:50:02] [info] mqtt.go:163 Client.Publish len:---  27834
+[2021/12/22 16:50:02] [info] mqtt.go:148 encode 28103
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28103
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 27858
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  27858
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28359
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28359
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28114
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28114
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28084
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28084
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28545
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28545
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28236
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28236
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28725
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28725
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28532
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28532
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28461
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28461
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28631
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28631
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28303
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28303
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28447
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  28447
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 27943
+[2021/12/22 16:50:03] [info] mqtt.go:163 Client.Publish len:---  27943
+[2021/12/22 16:50:03] [info] mqtt.go:148 encode 28166
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28166
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27880
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27880
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28112
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28112
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28086
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28086
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28152
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28152
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28081
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28081
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 24982
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  24982
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 26046
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  26046
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27223
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27223
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27610
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27610
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27679
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27679
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 26668
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  26668
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 26129
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  26129
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27019
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27019
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27194
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27194
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27607
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27607
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28094
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28094
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27720
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27720
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 27891
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  27891
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28120
+[2021/12/22 16:50:04] [info] mqtt.go:163 Client.Publish len:---  28120
+[2021/12/22 16:50:04] [info] mqtt.go:148 encode 28381
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  28381
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 28446
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  28446
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 28197
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  28197
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 28507
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  28507
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30490
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30490
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30968
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30968
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30246
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30246
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30323
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30323
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30975
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30975
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30546
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30546
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30339
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30339
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30369
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30369
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 29480
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  29480
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30442
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30442
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30963
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30963
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30770
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30770
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30581
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30581
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30981
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30981
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30907
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30907
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30558
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30558
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30709
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30709
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30958
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30958
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30460
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30460
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30398
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30398
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30188
+[2021/12/22 16:50:05] [info] mqtt.go:163 Client.Publish len:---  30188
+[2021/12/22 16:50:05] [info] mqtt.go:148 encode 30655
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30655
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30881
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30881
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30635
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30635
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 31059
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  31059
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30431
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30431
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 29664
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  29664
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30526
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30526
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30065
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30065
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30395
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30395
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30901
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30901
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30105
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30105
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30828
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30828
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30969
+[2021/12/22 16:50:06] [info] mqtt.go:163 Client.Publish len:---  30969
+[2021/12/22 16:50:06] [info] mqtt.go:148 encode 30728
+[2021/12/22 16:50:06] [info] gocanal.go:669 binlog pos :344 binlog posname :TMRWatchLog.000200
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30728
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 31131
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  31131
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30795
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30795
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30492
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30492
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 29888
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  29888
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30250
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30250
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 29637
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  29637
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30356
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30356
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30666
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30666
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30891
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30891
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 29753
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  29753
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30564
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30564
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30255
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30255
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30357
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30357
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30479
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30479
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30513
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30513
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 29773
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  29773
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30718
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30718
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30701
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30701
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30828
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  30828
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 31164
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  31164
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 31017
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  31017
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 31020
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  31020
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 31353
+[2021/12/22 16:50:07] [info] mqtt.go:163 Client.Publish len:---  31353
+[2021/12/22 16:50:07] [info] mqtt.go:148 encode 30977
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30977
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30910
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30910
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30938
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30938
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 31276
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  31276
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 28583
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  28583
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 28817
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  28817
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30036
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30036
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30189
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30189
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 29600
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  29600
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30206
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30206
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30224
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30224
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30227
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30227
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30584
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30584
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 29604
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  29604
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30028
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30028
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30103
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30103
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30455
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30455
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30134
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30134
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30065
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30065
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30435
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30435
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30166
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30166
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30541
+[2021/12/22 16:50:08] [info] mqtt.go:163 Client.Publish len:---  30541
+[2021/12/22 16:50:08] [info] mqtt.go:148 encode 30123
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  30123
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 29407
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  29407
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 29292
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  29292
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31781
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31781
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31689
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31689
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31323
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31323
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31629
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31629
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31527
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31527
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 30914
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  30914
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31707
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31707
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31771
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31771
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31387
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31387
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31277
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31277
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31021
+[2021/12/22 16:50:09] [info] mqtt.go:163 Client.Publish len:---  31021
+[2021/12/22 16:50:09] [info] mqtt.go:148 encode 31203
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31203
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31015
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31015
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31329
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31329
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31273
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31273
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31135
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31135
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31678
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31678
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31451
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31451
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31616
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31616
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31986
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31986
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 32193
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  32193
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31378
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31378
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31848
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31848
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31168
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31168
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31379
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31379
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 30768
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  30768
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 30842
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  30842
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31584
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31584
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31173
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31173
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 30810
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  30810
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31001
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31001
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 30923
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  30923
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31306
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31306
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31087
+[2021/12/22 16:50:10] [info] mqtt.go:163 Client.Publish len:---  31087
+[2021/12/22 16:50:10] [info] mqtt.go:148 encode 31410
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31410
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31239
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31239
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31772
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31772
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31572
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31572
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31550
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31550
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31443
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31443
+[2021/12/22 16:50:11] [info] mqtt.go:148 encode 31480
+[2021/12/22 16:50:11] [info] mqtt.go:163 Client.Publish len:---  31480
+[2021/12/22 16:50:25] [info] gocanal.go:609 read pos name 344TMRWatchLog.000200
+[2021/12/22 16:50:25] [info] gocanal.go:613 end pos name344TMRWatchLog.000200
+[2021/12/22 16:50:26] [error] mqtt.go:117 [MQTT] Connected
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31480
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31480
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31843
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31843
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31540
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31540
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31372
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31372
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31801
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31801
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31499
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31499
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31639
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31639
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31576
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31576
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31825
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31825
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31701
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31701
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31678
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31678
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31765
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31765
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31832
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31832
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31699
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31699
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31779
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31779
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31911
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31911
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31553
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31553
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31732
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31732
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 30977
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  30977
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31659
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31659
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31374
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31374
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31690
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31690
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31359
+[2021/12/22 16:50:26] [info] mqtt.go:163 Client.Publish len:---  31359
+[2021/12/22 16:50:26] [info] mqtt.go:148 encode 31723
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31723
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31721
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31721
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31740
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31740
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31707
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31707
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31830
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31830
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31493
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31493
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31492
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31492
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31516
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31516
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31841
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31841
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31686
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31686
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31887
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31887
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31632
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31632
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31351
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31351
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31508
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31508
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31729
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31729
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31867
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31867
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31875
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31875
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31745
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31745
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31743
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31743
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31641
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31641
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31641
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31641
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31514
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31514
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31475
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31475
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31633
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31633
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31568
+[2021/12/22 16:50:27] [info] mqtt.go:163 Client.Publish len:---  31568
+[2021/12/22 16:50:27] [info] mqtt.go:148 encode 31718
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31718
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31513
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31513
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31710
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31710
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31636
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31636
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31374
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31374
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31738
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31738
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31410
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31410
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31298
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31298
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31496
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31496
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31505
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31505
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31370
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31370
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31569
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31569
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31588
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31588
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31680
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31680
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31488
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31488
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31370
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31370
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31535
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31535
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31408
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31408
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31463
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31463
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31232
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31232
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31526
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31526
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31513
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31513
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31251
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31251
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31672
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31672
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31469
+[2021/12/22 16:50:28] [info] mqtt.go:163 Client.Publish len:---  31469
+[2021/12/22 16:50:28] [info] mqtt.go:148 encode 31522
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31522
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31702
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31702
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31492
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31492
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31357
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31357
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31847
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31847
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31480
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31480
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31085
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31085
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31074
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31074
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31425
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31425
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31499
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31499
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31528
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31528
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31627
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31627
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31456
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31456
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31471
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31471
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31525
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31525
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31687
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31687
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31154
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31154
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 32025
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  32025
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31732
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31732
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 32138
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  32138
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 32085
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  32085
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 32006
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  32006
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31727
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31727
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 31544
+[2021/12/22 16:50:29] [info] mqtt.go:163 Client.Publish len:---  31544
+[2021/12/22 16:50:29] [info] mqtt.go:148 encode 32136
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32136
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32095
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32095
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32172
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32172
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31700
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  31700
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32097
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32097
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31954
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  31954
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32352
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32352
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32151
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32151
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 32199
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  32199
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30360
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30360
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 25250
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  25250
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 28944
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  28944
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31112
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  31112
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30457
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30457
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 29958
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  29958
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 28930
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  28930
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 29577
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  29577
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 29942
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  29942
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30122
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30122
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30538
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30538
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30421
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30421
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31143
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  31143
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 30576
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  30576
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31340
+[2021/12/22 16:50:30] [info] mqtt.go:163 Client.Publish len:---  31340
+[2021/12/22 16:50:30] [info] mqtt.go:148 encode 31135
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  31135
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 31069
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  31069
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 31093
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  31093
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 32417
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  32417
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33433
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33433
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33066
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33066
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 32851
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  32851
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33003
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33003
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33082
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33082
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 32585
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  32585
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 32877
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  32877
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 31674
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  31674
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33048
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33048
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33247
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33247
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33280
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33280
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33339
+[2021/12/22 16:50:31] [info] mqtt.go:163 Client.Publish len:---  33339
+[2021/12/22 16:50:31] [info] mqtt.go:148 encode 33244
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33244
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33511
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33511
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33256
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33256
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33356
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33356
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33393
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33393
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33447
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33447
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33107
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33107
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33140
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33140
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33124
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33124
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33427
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33427
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33182
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33182
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33767
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33767
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33527
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33527
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 32515
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  32515
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33403
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33403
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 32744
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  32744
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33021
+[2021/12/22 16:50:32] [info] mqtt.go:163 Client.Publish len:---  33021
+[2021/12/22 16:50:32] [info] mqtt.go:148 encode 33725
+[2021/12/22 16:50:33] [info] mqtt.go:163 Client.Publish len:---  33725
+[2021/12/22 16:50:33] [info] mqtt.go:148 encode 32504
+[2021/12/22 16:50:33] [info] mqtt.go:163 Client.Publish len:---  32504
+[2021/12/22 16:50:33] [info] mqtt.go:148 encode 33347
+[2021/12/22 16:50:33] [info] mqtt.go:163 Client.Publish len:---  33347
+[2021/12/22 16:50:33] [info] mqtt.go:148 encode 33474
+[2021/12/22 16:50:33] [info] mqtt.go:163 Client.Publish len:---  33474
+[2021/12/22 16:50:33] [info] mqtt.go:148 encode 33131
+[2021/12/22 16:50:44] [info] gocanal.go:609 read pos name 344TMRWatchLog.000200
+[2021/12/22 16:50:44] [info] gocanal.go:613 end pos name344TMRWatchLog.000200
+[2021/12/22 16:50:44] [error] mqtt.go:117 [MQTT] Connected
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 33131
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  33131
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 33459
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  33459
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 33505
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  33505
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32789
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  32789
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32580
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  32580
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32482
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  32482
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32342
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  32342
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32837
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  32837
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 33071
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  33071
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 33221
+[2021/12/22 16:50:44] [info] mqtt.go:163 Client.Publish len:---  33221
+[2021/12/22 16:50:44] [info] mqtt.go:148 encode 32116
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32116
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33097
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33097
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33160
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33160
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32803
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32803
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33179
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33179
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32784
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32784
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32389
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32389
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33211
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33211
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33049
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33049
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33376
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33376
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33496
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33496
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33333
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33333
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33200
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33200
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33231
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33231
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33480
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33480
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32965
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32965
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32923
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  32923
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 33359
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  33359
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 31983
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  31983
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 31298
+[2021/12/22 16:50:45] [info] mqtt.go:163 Client.Publish len:---  31298
+[2021/12/22 16:50:45] [info] mqtt.go:148 encode 32337
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32337
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32487
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32487
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32304
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32304
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32054
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32054
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32328
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32328
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32564
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32564
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32644
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32644
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32132
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32132
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32448
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32448
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32367
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32367
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32805
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32805
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32541
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32541
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32566
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32566
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32807
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32807
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32462
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32462
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 32867
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  32867
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 33031
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  33031
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 31857
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  31857
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 31630
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  31630
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 33394
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  33394
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 34307
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  34307
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 33915
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  33915
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 34273
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  34273
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 34104
+[2021/12/22 16:50:46] [info] mqtt.go:163 Client.Publish len:---  34104
+[2021/12/22 16:50:46] [info] mqtt.go:148 encode 33524
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33524
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33959
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33959
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34092
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34092
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33464
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33464
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33735
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33735
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33911
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33911
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33279
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33279
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33657
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33657
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33890
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33890
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33865
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33865
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33903
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33903
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33996
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33996
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34008
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34008
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34363
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34363
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34430
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34430
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34461
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34461
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34078
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34078
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 34143
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  34143
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33752
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33752
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33862
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33862
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33685
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33685
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33668
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33668
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33748
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33748
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33778
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33778
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33607
+[2021/12/22 16:50:47] [info] mqtt.go:163 Client.Publish len:---  33607
+[2021/12/22 16:50:47] [info] mqtt.go:148 encode 33796
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33796
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33821
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33821
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33836
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33836
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33454
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33454
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33733
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33733
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33467
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33467
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34130
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34130
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34118
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34118
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33935
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33935
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33993
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33993
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33863
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33863
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34137
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34137
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34347
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34347
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 33831
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  33831
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34009
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34009
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34337
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34337
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34218
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34218
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34044
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34044
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34218
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34218
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34234
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34234
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34425
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34425
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34311
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34311
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34435
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34435
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34270
+[2021/12/22 16:50:48] [info] mqtt.go:163 Client.Publish len:---  34270
+[2021/12/22 16:50:48] [info] mqtt.go:148 encode 34205
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34205
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34348
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34348
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34146
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34146
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34460
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34460
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 33823
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  33823
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34237
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34237
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34126
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34126
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34396
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34396
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34054
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34054
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34260
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34260
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34568
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34568
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34553
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34553
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34426
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34426
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34320
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34320
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34120
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34120
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34276
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34276
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34323
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34323
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34198
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34198
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34323
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34323
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34167
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34167
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34315
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34315
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34351
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34351
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34086
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34086
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34217
+[2021/12/22 16:50:49] [info] mqtt.go:163 Client.Publish len:---  34217
+[2021/12/22 16:50:49] [info] mqtt.go:148 encode 34221
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34221
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34394
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34394
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34118
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34118
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 23540
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  23540
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34367
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34367
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 33939
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  33939
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34209
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34209
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34207
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34207
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34153
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34153
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34172
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34172
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34149
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34149
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34379
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34379
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34185
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34185
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34230
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34230
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 33832
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  33832
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34060
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34060
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34117
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34117
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 33987
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  33987
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34205
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34205
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 33984
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  33984
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 33982
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  33982
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34057
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34057
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34171
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34171
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34066
+[2021/12/22 16:50:50] [info] mqtt.go:163 Client.Publish len:---  34066
+[2021/12/22 16:50:50] [info] mqtt.go:148 encode 34052
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34052
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33945
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33945
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34060
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34060
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33824
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33824
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33965
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33965
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33823
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33823
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33810
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33810
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33958
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33958
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33928
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33928
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33882
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33882
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34093
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34093
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34006
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34006
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34146
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34146
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34005
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34005
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33777
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33777
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34181
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34181
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33896
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33896
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33908
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33908
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33735
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33735
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33870
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33870
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34005
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34005
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33959
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  33959
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34109
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34109
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 34031
+[2021/12/22 16:50:51] [info] mqtt.go:163 Client.Publish len:---  34031
+[2021/12/22 16:50:51] [info] mqtt.go:148 encode 33777
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  33777
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34064
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34064
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34433
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34433
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34533
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34533
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 33943
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  33943
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34912
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34912
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34584
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34584
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 35008
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  35008
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 35080
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  35080
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34668
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34668
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34040
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34040
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34782
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34782
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34340
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34340
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34682
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34682
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34429
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34429
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34560
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34560
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34381
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34381
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34892
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34892
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34604
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34604
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34775
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34775
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 34713
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  34713
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 33797
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  33797
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 40452
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  40452
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 38252
+[2021/12/22 16:50:52] [info] mqtt.go:163 Client.Publish len:---  38252
+[2021/12/22 16:50:52] [info] mqtt.go:148 encode 39784
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  39784
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 40860
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  40860
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 40490
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  40490
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 40279
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  40279
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41885
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41885
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42118
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42118
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41236
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41236
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41244
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41244
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41481
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41481
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41897
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41897
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42230
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42230
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 41605
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  41605
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42468
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42468
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42872
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42872
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42130
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42130
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42474
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42474
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 43324
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  43324
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42577
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42577
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42606
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42606
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 43016
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  43016
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42620
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  42620
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 43165
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  43165
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 43453
+[2021/12/22 16:50:53] [info] mqtt.go:163 Client.Publish len:---  43453
+[2021/12/22 16:50:53] [info] mqtt.go:148 encode 42644
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42644
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42795
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42795
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42113
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42113
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42774
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42774
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41537
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41537
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 40681
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  40681
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 40668
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  40668
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41799
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41799
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42408
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42408
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42049
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42049
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42024
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42024
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42015
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42015
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41982
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41982
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41916
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41916
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41414
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41414
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41590
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41590
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41516
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41516
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 40760
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  40760
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42081
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  42081
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41423
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41423
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41817
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41817
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 41517
+[2021/12/22 16:50:54] [info] mqtt.go:163 Client.Publish len:---  41517
+[2021/12/22 16:50:54] [info] mqtt.go:148 encode 42668
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42668
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42260
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42260
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42498
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42498
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42409
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42409
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42241
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42241
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41926
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41926
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42075
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42075
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42219
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42219
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42006
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42006
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42088
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42088
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41654
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41654
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42485
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42485
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42488
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42488
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42555
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42555
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41967
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41967
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41972
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41972
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41872
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41872
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 42308
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  42308
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 40180
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  40180
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 40973
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  40973
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41694
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41694
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41818
+[2021/12/22 16:50:55] [info] mqtt.go:163 Client.Publish len:---  41818
+[2021/12/22 16:50:55] [info] mqtt.go:148 encode 41887
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  41887
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 42631
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  42631
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 42558
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  42558
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 42211
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  42211
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 42390
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  42390
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44228
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44228
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 43873
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  43873
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 43623
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  43623
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44109
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44109
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45169
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45169
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44358
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44358
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44668
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44668
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44066
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44066
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44762
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44762
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45106
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45106
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45181
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45181
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45367
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45367
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45350
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45350
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44467
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44467
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44899
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44899
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44896
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44896
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44944
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  44944
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 45359
+[2021/12/22 16:50:56] [info] mqtt.go:163 Client.Publish len:---  45359
+[2021/12/22 16:50:56] [info] mqtt.go:148 encode 44806
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  44806
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45850
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45850
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 44919
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  44919
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45326
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45326
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45202
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45202
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45223
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45223
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45187
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45187
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 44921
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  44921
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45157
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45157
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 44675
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  44675
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45267
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45267
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45238
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45238
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45488
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45488
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45808
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45808
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45593
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45593
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45693
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45693
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45573
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45573
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45746
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45746
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45541
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45541
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45766
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45766
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45775
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45775
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 45681
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  45681
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 46176
+[2021/12/22 16:50:57] [info] mqtt.go:163 Client.Publish len:---  46176
+[2021/12/22 16:50:57] [info] mqtt.go:148 encode 46496
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46496
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46012
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46012
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46126
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46126
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46219
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46219
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46372
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46372
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46773
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46773
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46228
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46228
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46286
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46286
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46558
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46558
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46610
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46610
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46211
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46211
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46278
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46278
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46607
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46607
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46700
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46700
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46742
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46742
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46570
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46570
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46655
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46655
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46746
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46746
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46225
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46225
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46554
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46554
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46642
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46642
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46360
+[2021/12/22 16:50:58] [info] mqtt.go:163 Client.Publish len:---  46360
+[2021/12/22 16:50:58] [info] mqtt.go:148 encode 46475
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46475
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46355
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46355
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46889
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46889
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46317
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46317
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46293
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46293
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46685
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46685
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46189
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46189
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46424
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46424
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45886
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45886
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46856
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46856
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46987
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46987
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45882
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45882
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46265
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46265
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45867
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45867
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46513
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46513
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46288
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46288
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46369
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46369
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45957
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45957
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 46150
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  46150
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45193
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45193
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 45144
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  45144
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 41349
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  41349
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 7184
+[2021/12/22 16:50:59] [info] mqtt.go:163 Client.Publish len:---  7184
+[2021/12/22 16:50:59] [info] mqtt.go:148 encode 7446
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7446
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8276
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8276
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 6602
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  6602
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8031
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8031
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7590
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7590
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7537
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7537
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8123
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8123
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7886
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7886
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7566
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7566
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8337
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8337
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7631
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7631
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8092
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8092
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8952
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8952
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8983
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8983
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9050
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9050
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9076
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9076
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8674
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8674
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8128
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8128
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9329
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9329
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9406
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9406
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9384
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9384
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9198
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9198
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 9068
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  9068
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8986
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8986
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8905
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8905
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8113
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8113
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 8702
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  8702
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7942
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7942
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7382
+[2021/12/22 16:51:00] [info] mqtt.go:163 Client.Publish len:---  7382
+[2021/12/22 16:51:00] [info] mqtt.go:148 encode 7435
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7435
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7590
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7590
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7326
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7326
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6893
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6893
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6983
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6983
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7326
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7326
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6845
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6845
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6836
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6836
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6960
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6960
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 6998
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  6998
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7133
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7133
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7129
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7129
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7038
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7038
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7038
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7038
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7040
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7040
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7004
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7004
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7059
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7059
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 7372
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  7372
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8692
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  8692
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8672
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  8672
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9177
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9177
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9042
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9042
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9023
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9023
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9222
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9222
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9581
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9581
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9331
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9331
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 9161
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  9161
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8054
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  8054
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8388
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  8388
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8323
+[2021/12/22 16:51:01] [info] mqtt.go:163 Client.Publish len:---  8323
+[2021/12/22 16:51:01] [info] mqtt.go:148 encode 8317
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8317
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8363
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8363
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8049
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8049
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8247
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8247
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8680
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8680
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7748
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7748
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7605
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7605
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7729
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7729
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6998
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6998
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6909
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6909
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6941
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6941
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7259
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7259
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7560
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7560
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7559
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7559
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7126
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7126
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6993
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6993
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7079
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7079
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6863
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6863
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6924
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6924
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6870
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6870
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6894
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6894
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6908
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6908
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6860
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6860
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6862
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6862
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6914
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6914
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 6935
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  6935
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 7352
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  7352
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8338
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8338
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8883
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8883
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 8894
+[2021/12/22 16:51:02] [info] mqtt.go:163 Client.Publish len:---  8894
+[2021/12/22 16:51:02] [info] mqtt.go:148 encode 9452
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  9452
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 9451
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  9451
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 9349
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  9349
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7784
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7784
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7095
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7095
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7081
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7081
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7172
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7172
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7499
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7499
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8078
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8078
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8841
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8841
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8564
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8564
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8319
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8319
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8522
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8522
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 9073
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  9073
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8550
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8550
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8252
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8252
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7155
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7155
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7301
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7301
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 6858
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  6858
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7500
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7500
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7677
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7677
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7036
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7036
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8047
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8047
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8742
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8742
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 9094
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  9094
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 8112
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  8112
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 7351
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  7351
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 6948
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  6948
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 6895
+[2021/12/22 16:51:03] [info] mqtt.go:163 Client.Publish len:---  6895
+[2021/12/22 16:51:03] [info] mqtt.go:148 encode 6863
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6863
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6762
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6762
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6734
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6734
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6779
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6779
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6714
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6714
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6751
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6751
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 6818
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  6818
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7064
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7064
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7894
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7894
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7858
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7858
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8532
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8532
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8678
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8678
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8433
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8433
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7992
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7992
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8619
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8619
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8586
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8586
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8513
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8513
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8471
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8471
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8872
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8872
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 8105
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  8105
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7863
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7863
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7551
+[2021/12/22 16:51:04] [info] mqtt.go:163 Client.Publish len:---  7551
+[2021/12/22 16:51:04] [info] mqtt.go:148 encode 7724
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  7724
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 7967
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  7967
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8363
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8363
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8315
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8315
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8157
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8157
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8736
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8736
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8911
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8911
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8716
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8716
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8551
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  8551
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 7681
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  7681
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 7343
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  7343
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 7872
+[2021/12/22 16:51:05] [info] mqtt.go:163 Client.Publish len:---  7872
+[2021/12/22 16:51:05] [info] mqtt.go:148 encode 8553
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  8553
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 8226
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  8226
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 6797
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  6797
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 6330
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  6330
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 6361
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  6361
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7220
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7220
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7965
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7965
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9158
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9158
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9359
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9359
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9085
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9085
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9088
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9088
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9426
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9426
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 8722
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  8722
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7652
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7652
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7240
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7240
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7214
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7214
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7467
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7467
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 7994
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  7994
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9035
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9035
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9240
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9240
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9262
+[2021/12/22 16:51:06] [info] mqtt.go:163 Client.Publish len:---  9262
+[2021/12/22 16:51:06] [info] mqtt.go:148 encode 9113
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  9113
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8980
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8980
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8925
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8925
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8694
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8694
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7708
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7708
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7473
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7473
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7203
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7203
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7353
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7353
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7777
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7777
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6993
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6993
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6887
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6887
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7196
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7196
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8086
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8086
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8036
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8036
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7822
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7822
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7907
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7907
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7513
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7513
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6895
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6895
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6770
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6770
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6933
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6933
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6764
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6764
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6767
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6767
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6830
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6830
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6837
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6837
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 6847
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  6847
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 7557
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  7557
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8087
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8087
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8872
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8872
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8670
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8670
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8754
+[2021/12/22 16:51:07] [info] mqtt.go:163 Client.Publish len:---  8754
+[2021/12/22 16:51:07] [info] mqtt.go:148 encode 8962
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8962
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8986
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8986
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 9457
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  9457
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 9172
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  9172
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 9199
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  9199
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 9168
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  9168
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8788
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8788
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8613
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8613
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7600
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7600
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8213
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8213
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8727
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8727
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8753
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8753
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7736
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7736
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7335
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7335
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8303
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8303
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 9119
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  9119
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8787
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8787
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8900
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8900
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8209
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8209
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8027
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8027
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8145
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8145
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8412
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8412
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7783
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7783
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7615
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7615
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7254
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7254
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7063
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7063
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7472
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7472
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8550
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8550
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8829
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8829
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 8295
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  8295
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7728
+[2021/12/22 16:51:08] [info] mqtt.go:163 Client.Publish len:---  7728
+[2021/12/22 16:51:08] [info] mqtt.go:148 encode 7437
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7437
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7412
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7412
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7307
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7307
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7055
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7055
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 6993
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  6993
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 6963
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  6963
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7001
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7001
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 6962
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  6962
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7013
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7013
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7053
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7053
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7291
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7291
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7987
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7987
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8060
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8060
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 9002
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  9002
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 9040
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  9040
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8807
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8807
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8950
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8950
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8785
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8785
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8923
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8923
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 9103
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  9103
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8517
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8517
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7635
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7635
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7057
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7057
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7054
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7054
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7197
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7197
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 7475
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  7475
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8510
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8510
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8551
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8551
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8870
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  8870
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 9052
+[2021/12/22 16:51:09] [info] mqtt.go:163 Client.Publish len:---  9052
+[2021/12/22 16:51:09] [info] mqtt.go:148 encode 8960
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8960
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8457
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8457
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7809
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7809
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7361
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7361
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7068
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7068
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7087
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7087
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7413
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7413
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6992
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6992
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7098
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7098
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7207
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7207
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8415
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8415
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8489
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8489
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8145
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8145
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8023
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8023
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7588
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7588
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7160
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7160
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6939
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6939
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6898
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6898
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6917
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6917
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6886
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6886
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6833
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6833
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6875
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6875
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 6915
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  6915
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7358
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7358
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7735
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7735
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 7972
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  7972
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 9144
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  9144
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 8680
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  8680
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 9280
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  9280
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 9152
+[2021/12/22 16:51:10] [info] mqtt.go:163 Client.Publish len:---  9152
+[2021/12/22 16:51:10] [info] mqtt.go:148 encode 9077
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  9077
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8673
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8673
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7904
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7904
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8035
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8035
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8414
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8414
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8711
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8711
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7935
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7935
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8803
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8803
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8855
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8855
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7652
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7652
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8433
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8433
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8771
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8771
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8528
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8528
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8469
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8469
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7709
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7709
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7532
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7532
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7432
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7432
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7359
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7359
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7560
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7560
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7063
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7063
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7132
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7132
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7443
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7443
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7575
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7575
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7452
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7452
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 6954
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  6954
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7232
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7232
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7867
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  7867
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8291
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8291
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8120
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8120
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 8062
+[2021/12/22 16:51:11] [info] mqtt.go:163 Client.Publish len:---  8062
+[2021/12/22 16:51:11] [info] mqtt.go:148 encode 7430
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7430
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7079
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7079
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7157
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7157
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7064
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7064
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7009
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7009
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 6964
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  6964
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7007
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7007
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 6965
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  6965
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 6996
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  6996
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7246
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7246
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7995
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7995
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8751
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8751
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8896
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8896
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8832
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8832
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8922
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8922
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8729
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8729
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 9098
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  9098
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 9115
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  9115
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8137
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8137
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8388
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8388
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8079
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8079
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7728
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7728
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7429
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7429
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8313
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8313
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8250
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8250
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 7541
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  7541
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8001
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8001
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8925
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8925
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 9127
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  9127
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8740
+[2021/12/22 16:51:12] [info] mqtt.go:163 Client.Publish len:---  8740
+[2021/12/22 16:51:12] [info] mqtt.go:148 encode 8552
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  8552
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 8494
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  8494
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7483
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7483
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7528
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7528
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7397
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7397
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7110
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7110
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7508
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7508
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7499
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7499
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7664
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7664
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7342
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7342
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7086
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7086
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7540
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7540
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 8946
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  8946
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 8677
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  8677
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7896
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7896
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7661
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7661
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7592
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7592
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6082
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6082
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6070
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6070
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6061
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6061
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6120
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6120
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6123
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6123
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6133
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6133
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6297
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6297
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6200
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6200
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6717
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6717
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7186
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7186
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 6979
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  6979
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 7995
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  7995
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 8217
+[2021/12/22 16:51:13] [info] mqtt.go:163 Client.Publish len:---  8217
+[2021/12/22 16:51:13] [info] mqtt.go:148 encode 8095
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8095
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8451
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8451
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8439
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8439
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8376
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8376
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8339
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8339
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8257
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8257
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7205
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7205
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6845
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6845
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6876
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6876
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6886
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6886
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6925
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6925
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6785
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6785
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7721
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7721
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8276
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8276
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8202
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8202
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8119
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8119
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8443
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8443
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8213
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8213
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7497
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7497
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7224
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7224
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7283
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7283
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7036
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7036
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6800
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6800
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7009
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7009
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 6915
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  6915
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7011
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7011
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7142
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7142
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7206
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7206
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 7438
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  7438
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8053
+[2021/12/22 16:51:14] [info] mqtt.go:163 Client.Publish len:---  8053
+[2021/12/22 16:51:14] [info] mqtt.go:148 encode 8168
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8168
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7225
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7225
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7409
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7409
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7375
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7375
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7001
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7001
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7051
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7051
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 6982
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  6982
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7099
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7099
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7039
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7039
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 6999
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  6999
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 6986
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  6986
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7091
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7091
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7935
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7935
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7856
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7856
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8276
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8276
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8621
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8621
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8732
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8732
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8799
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8799
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 9249
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  9249
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 9186
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  9186
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8893
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8893
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 9099
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  9099
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 9188
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  9188
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8383
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8383
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7940
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7940
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8122
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8122
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 9249
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  9249
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8100
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  8100
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7529
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7529
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 7841
+[2021/12/22 16:51:15] [info] mqtt.go:163 Client.Publish len:---  7841
+[2021/12/22 16:51:15] [info] mqtt.go:148 encode 8981
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8981
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 9302
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  9302
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8778
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8778
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8695
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8695
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7779
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7779
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8096
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8096
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7621
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7621
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7579
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7579
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7667
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7667
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7656
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7656
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7698
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7698
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7690
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7690
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7514
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7514
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7151
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7151
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7639
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7639
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8455
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8455
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8580
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8580
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8760
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8760
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 8217
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  8217
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7927
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7927
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7817
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7817
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7740
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7740
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7014
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7014
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6923
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6923
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6854
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6854
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6815
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6815
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6916
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6916
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6967
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6967
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 6917
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  6917
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7882
+[2021/12/22 16:51:16] [info] mqtt.go:163 Client.Publish len:---  7882
+[2021/12/22 16:51:16] [info] mqtt.go:148 encode 7669
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7669
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8208
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8208
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8602
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8602
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8397
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8397
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8245
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8245
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8189
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8189
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8115
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8115
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8633
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8633
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8695
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8695
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8774
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8774
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 9155
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  9155
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 9057
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  9057
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8048
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8048
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7174
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7174
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8306
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8306
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 9098
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  9098
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 9171
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  9171
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8072
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8072
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8433
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8433
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8713
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8713
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8960
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8960
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8599
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8599
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7854
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7854
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7615
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7615
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 8169
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  8169
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7836
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7836
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7910
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7910
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7584
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7584
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7753
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7753
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7573
+[2021/12/22 16:51:17] [info] mqtt.go:163 Client.Publish len:---  7573
+[2021/12/22 16:51:17] [info] mqtt.go:148 encode 7791
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7791
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7802
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7802
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7936
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7936
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7895
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7895
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8151
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8151
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8263
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8263
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8875
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8875
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8347
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8347
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7835
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7835
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7293
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7293
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7357
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7357
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7362
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7362
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7547
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7547
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7679
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7679
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7702
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7702
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7671
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7671
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7701
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7701
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 7971
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  7971
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8369
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8369
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8304
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8304
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8380
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8380
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8568
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8568
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8656
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8656
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8552
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8552
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8998
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8998
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8475
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8475
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8986
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8986
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8943
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8943
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8565
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8565
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8787
+[2021/12/22 16:51:18] [info] mqtt.go:163 Client.Publish len:---  8787
+[2021/12/22 16:51:18] [info] mqtt.go:148 encode 8695
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8695
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8838
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8838
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8893
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8893
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8475
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8475
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8417
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8417
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8970
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8970
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8959
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8959
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8826
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8826
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8949
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8949
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8890
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8890
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8640
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8640
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8456
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8456
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7912
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7912
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7537
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7537
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7551
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7551
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7564
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7564
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8248
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8248
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8148
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8148
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8496
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8496
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8713
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8713
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8084
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8084
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7388
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7388
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7444
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7444
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7410
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7410
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 7382
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  7382
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 8233
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  8233
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 9116
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  9116
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 9175
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  9175
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 9292
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  9292
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 9405
+[2021/12/22 16:51:19] [info] mqtt.go:163 Client.Publish len:---  9405
+[2021/12/22 16:51:19] [info] mqtt.go:148 encode 9251
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9251
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9313
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9313
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8835
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8835
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9047
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9047
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8921
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8921
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7637
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7637
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8846
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8846
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9254
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9254
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8303
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8303
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8070
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8070
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8871
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8871
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9315
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9315
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8962
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8962
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9228
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9228
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9031
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9031
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 9360
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  9360
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8946
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8946
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8781
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8781
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8208
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8208
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8017
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8017
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8160
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8160
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7959
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7959
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8308
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8308
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7851
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7851
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7313
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7313
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7517
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7517
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7415
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7415
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 7625
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  7625
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8103
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8103
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8675
+[2021/12/22 16:51:20] [info] mqtt.go:163 Client.Publish len:---  8675
+[2021/12/22 16:51:20] [info] mqtt.go:148 encode 8862
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8862
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8622
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8622
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8344
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8344
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7684
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7684
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7549
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7549
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7472
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7472
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7436
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7436
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7409
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7409
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7465
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7465
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7389
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7389
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7384
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7384
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7330
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7330
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8814
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8814
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8819
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8819
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9000
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9000
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9196
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9196
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8561
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8561
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8965
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8965
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8484
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8484
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8718
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8718
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9040
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9040
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8889
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8889
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9131
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9131
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8940
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8940
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8430
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8430
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 7991
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  7991
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9067
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9067
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9329
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9329
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 9364
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  9364
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8387
+[2021/12/22 16:51:21] [info] mqtt.go:163 Client.Publish len:---  8387
+[2021/12/22 16:51:21] [info] mqtt.go:148 encode 8169
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8169
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8220
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8220
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8325
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8325
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8398
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8398
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8652
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8652
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8324
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8324
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8493
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8493
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8290
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8290
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7924
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7924
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8282
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8282
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7975
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7975
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7440
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7440
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7468
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7468
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7956
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7956
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8703
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8703
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8874
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8874
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8496
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8496
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8091
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8091
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8104
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8104
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7471
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7471
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7488
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7488
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7397
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7397
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7439
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7439
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7321
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7321
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7344
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7344
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7295
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7295
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 7483
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  7483
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8021
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8021
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8384
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8384
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8654
+[2021/12/22 16:51:22] [info] mqtt.go:163 Client.Publish len:---  8654
+[2021/12/22 16:51:22] [info] mqtt.go:148 encode 8559
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8559
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8806
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8806
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8793
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8793
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 9219
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  9219
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 9131
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  9131
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8948
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8948
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 9229
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  9229
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 9142
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  9142
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8845
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8845
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8592
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8592
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8243
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8243
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8979
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8979
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8591
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8591
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 7936
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  7936
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8624
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8624
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8735
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8735
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8572
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8572
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8399
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8399
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8112
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8112
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8214
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8214
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8426
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8426
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8376
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8376
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8765
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8765
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8047
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8047
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8010
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8010
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8007
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  8007
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 7565
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  7565
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 7430
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  7430
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 7443
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  7443
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 7871
+[2021/12/22 16:51:23] [info] mqtt.go:163 Client.Publish len:---  7871
+[2021/12/22 16:51:23] [info] mqtt.go:148 encode 8848
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8848
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8731
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8731
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8458
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8458
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7981
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7981
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8052
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8052
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8107
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8107
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7935
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7935
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7529
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7529
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7297
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7297
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7259
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7259
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7293
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7293
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7331
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7331
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 7259
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  7259
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8062
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8062
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8461
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8461
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8564
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8564
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8718
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8718
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8683
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8683
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8978
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8978
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 9078
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  9078
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 9444
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  9444
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 9178
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  9178
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 9340
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  9340
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8921
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8921
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 9388
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  9388
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8897
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8897
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8226
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8226
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8125
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8125
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8216
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8216
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8708
+[2021/12/22 16:51:24] [info] mqtt.go:163 Client.Publish len:---  8708
+[2021/12/22 16:51:24] [info] mqtt.go:148 encode 8323
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8323
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8520
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8520
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8690
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8690
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8779
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8779
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8774
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8774
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8284
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8284
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7744
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7744
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7586
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7586
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8278
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8278
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8008
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8008
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7456
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7456
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7635
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7635
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7343
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7343
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7272
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7272
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8047
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8047
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8430
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8430
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 9102
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  9102
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 9216
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  9216
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 3297
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  3297
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8873
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8873
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8984
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8984
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 8539
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  8539
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7641
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7641
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7373
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7373
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7261
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7261
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7253
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7253
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7194
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7194
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7182
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7182
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 7685
+[2021/12/22 16:51:25] [info] mqtt.go:163 Client.Publish len:---  7685
+[2021/12/22 16:51:25] [info] mqtt.go:148 encode 9008
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  9008
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 9111
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  9111
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8925
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8925
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8602
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8602
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8848
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8848
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8645
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8645
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8835
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8835
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8532
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8532
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8912
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8912
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8781
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8781
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8919
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8919
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 9019
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  9019
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8674
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8674
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7801
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7801
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8716
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8716
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 9344
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  9344
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8999
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8999
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8718
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8718
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8784
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8784
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8905
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8905
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 9034
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  9034
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8614
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8614
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8328
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8328
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 8211
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  8211
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7932
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7932
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7527
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7527
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7351
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7351
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7335
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7335
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7385
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7385
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7300
+[2021/12/22 16:51:26] [info] mqtt.go:163 Client.Publish len:---  7300
+[2021/12/22 16:51:26] [info] mqtt.go:148 encode 7488
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7488
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8266
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8266
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8752
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8752
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8623
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8623
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8240
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8240
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7853
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7853
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7965
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7965
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7116
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7116
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7236
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7236
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7013
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7013
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7144
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7144
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7094
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7094
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 6991
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  6991
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 6914
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  6914
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 7255
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  7255
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8480
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8480
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8636
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8636
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8668
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8668
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8985
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8985
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8941
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8941
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 9039
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  9039
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 9182
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  9182
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 9031
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  9031
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 9057
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  9057
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 9137
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  9137
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8907
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8907
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8735
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8735
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8145
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8145
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8343
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8343
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8924
+[2021/12/22 16:51:27] [info] mqtt.go:163 Client.Publish len:---  8924
+[2021/12/22 16:51:27] [info] mqtt.go:148 encode 8749
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8749
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 9094
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  9094
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 9133
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  9133
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8711
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8711
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 9097
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  9097
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8935
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8935
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8839
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8839
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8236
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8236
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8100
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8100
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8261
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8261
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7931
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7931
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7896
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7896
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7705
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7705
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7079
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7079
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7084
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7084
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7485
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7485
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8657
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8657
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8775
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8775
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8373
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8373
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7205
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7205
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7452
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7452
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7189
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7189
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7154
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7154
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7305
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7305
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7033
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7033
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7029
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7029
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7019
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7019
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7129
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7129
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 7438
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  7438
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8790
+[2021/12/22 16:51:28] [info] mqtt.go:163 Client.Publish len:---  8790
+[2021/12/22 16:51:28] [info] mqtt.go:148 encode 8884
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8884
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 9126
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  9126
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 9240
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  9240
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8605
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8605
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8614
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8614
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8532
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8532
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8590
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8590
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8574
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8574
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8899
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8899
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 9127
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  9127
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 9261
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  9261
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8875
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8875
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8360
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8360
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8315
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8315
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8702
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8702
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8521
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8521
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8658
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8658
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8803
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8803
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8612
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8612
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8841
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8841
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8903
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8903
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 9016
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  9016
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8992
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8992
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7880
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7880
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7696
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7696
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 8223
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  8223
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7613
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7613
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7851
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7851
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7843
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7843
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7676
+[2021/12/22 16:51:29] [info] mqtt.go:163 Client.Publish len:---  7676
+[2021/12/22 16:51:29] [info] mqtt.go:148 encode 7525
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7525
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7986
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7986
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8706
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8706
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8642
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8642
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8490
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8490
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8200
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8200
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8451
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8451
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7656
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7656
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8298
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8298
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8089
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8089
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8407
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8407
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7932
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7932
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7464
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7464
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7436
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7436
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7544
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7544
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7450
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7450
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 7590
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  7590
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8358
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8358
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8876
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8876
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 8955
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  8955
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9141
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9141
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9333
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9333
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9588
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9588
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9334
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9334
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9143
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9143
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9254
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9254
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9242
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9242
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9057
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9057
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9153
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9153
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9413
+[2021/12/22 16:51:30] [info] mqtt.go:163 Client.Publish len:---  9413
+[2021/12/22 16:51:30] [info] mqtt.go:148 encode 9603
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9603
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9085
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9085
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9388
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9388
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8583
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8583
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8233
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8233
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9195
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9195
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9278
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9278
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9486
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9486
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9360
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9360
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9168
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9168
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9064
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9064
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9047
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9047
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 9192
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  9192
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8999
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8999
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8774
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8774
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8646
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8646
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8378
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8378
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8397
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8397
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7632
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7632
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7821
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7821
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7442
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7442
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7766
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7766
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7821
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7821
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7577
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7577
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7524
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7524
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7618
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7618
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8581
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8581
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8771
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8771
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8334
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  8334
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 7789
+[2021/12/22 16:51:31] [info] mqtt.go:163 Client.Publish len:---  7789
+[2021/12/22 16:51:31] [info] mqtt.go:148 encode 8191
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8191
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7785
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7785
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7908
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7908
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7616
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7616
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7698
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7698
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7753
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7753
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7533
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7533
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7325
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7325
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7060
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7060
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7012
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7012
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7017
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7017
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7065
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7065
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7348
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7348
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8997
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8997
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9133
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9133
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9003
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9003
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8904
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8904
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9100
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9100
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8930
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8930
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8995
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8995
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8609
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8609
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9007
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9007
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9234
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9234
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9176
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9176
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 9334
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  9334
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8953
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8953
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8884
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8884
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8999
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8999
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8308
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  8308
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 7668
+[2021/12/22 16:51:32] [info] mqtt.go:163 Client.Publish len:---  7668
+[2021/12/22 16:51:32] [info] mqtt.go:148 encode 8963
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8963
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8562
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8562
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8289
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8289
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7593
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7593
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8271
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8271
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8609
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8609
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8635
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8635
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8500
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8500
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8530
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8530
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8290
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8290
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7818
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7818
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7794
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7794
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8002
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8002
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7718
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7718
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7594
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7594
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7624
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7624
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7690
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7690
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7467
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7467
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7446
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7446
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8004
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8004
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8443
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8443
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8401
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8401
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8125
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8125
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 8037
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  8037
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7976
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7976
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7707
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7707
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7678
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7678
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7897
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7897
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7900
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7900
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7735
+[2021/12/22 16:51:33] [info] mqtt.go:163 Client.Publish len:---  7735
+[2021/12/22 16:51:33] [info] mqtt.go:148 encode 7142
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  7142
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 7103
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  7103
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 7045
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  7045
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 7069
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  7069
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 7016
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  7016
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 6984
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  6984
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 8218
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  8218
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 8788
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  8788
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9454
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9454
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9277
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9277
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9240
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9240
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9553
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9553
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9484
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9484
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9398
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9398
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9274
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9274
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 9380
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  9380
+[2021/12/22 16:51:34] [info] mqtt.go:148 encode 5611
+[2021/12/22 16:51:34] [info] mqtt.go:163 Client.Publish len:---  5611

+ 4 - 0
arm.bat

@@ -0,0 +1,4 @@
+set GOARCH=arm
+set GOOS=linux
+set GO111MODULE=on
+go build -o canalserviceARM

+ 2 - 0
canalservice_i.bat

@@ -0,0 +1,2 @@
+canalservice install
+sc start KPTCanalService

+ 2 - 0
canalservice_r.bat

@@ -0,0 +1,2 @@
+sc stop KPTCanalService
+canalservice remove

+ 80 - 0
config.ini

@@ -0,0 +1,80 @@
+[canal]
+# MySQL host
+host = 127.0.0.1
+# MySQL port
+port = 3326
+# MySQL user, must have replication privilege
+user = root
+# MySQL password
+password = root
+# Flavor: mysql or mariadb
+flavor = mariadb
+# Unique Server ID
+serverID = 101
+# mysqldump execution path
+mysqldump = mysqldump
+# dump databases, seperated by comma
+dbs = tmrwatch1
+# dump tables, seperated by comma, will overwrite dbs
+tables = barfeedremain,barmilk,templetdry,downloadedplan,downloadplandtl1,downloadplandtl1_exec,downloadplandtl2,recweight
+# barfeedremain,barmilk,templetdry,downloadedplan,downloadplandtl1,downloadplandtl1_exec,downloadplandtl2,recweight
+# database for dump tables, seperated by comma, will overwrite dbs
+tableDB = tmrwatch1
+# ignore tables, must be database.table format, separated by comma
+ignoreTables = 
+# start sync from binlog name
+startName = 
+# start sync from binlog position of
+startPos = 
+# master heartbeat period(*time.Second)
+heartbeatPeriod = 60
+# connection read timeout(*time.Second)
+readTimeout = 90
+# nodename  key name intpastureid
+nodename = pasturecode
+# nodevalue value
+nodevalue = test
+# showlog
+showlog = 0
+onetimerows = 500
+
+[kafka]
+# enable kafka
+kafkaEnable = false
+Offset = 
+kafka_host = www.kptyun.com
+kafka_port = 9092
+kafka_topic = tmrwatch_uploaddata_
+saslEnable = false
+username = root
+saslpassword = root
+tlsEnable = false
+clientcert = 
+clientkey = 
+cacert = 
+
+[mqtt]
+# enable kafka
+mqttEnable = true
+topic = MyIotThing_
+qos = 1
+CleanSession = true
+host = 218.241.17.66
+port = 1983
+path = 
+#host = auuhfh5e8d294-ats.iot.us-east-2.amazonaws.com
+#port = 8883
+#path = /MyIotThing
+saslEnable = true
+username = kptmqtt
+saslpassword = kepaiteng
+tlsEnable = false
+clientcert = pem/bbbc7ee0f6-certificate.pem.crt
+clientkey = pem/bbbc7ee0f6-private.pem.key
+cacert = 
+
+[Service]
+ServiceName = KPTCanalService
+ServiceDisplayName = KPTCanalService
+ServiceDescription = 科湃腾数据同步服务
+

+ 52 - 0
go.mod

@@ -0,0 +1,52 @@
+module datasync
+
+go 1.17
+
+require (
+	github.com/Shopify/sarama v1.30.1
+	github.com/Unknwon/goconfig v1.0.0
+	github.com/eclipse/paho.mqtt.golang v1.3.5
+	github.com/edsrzf/mmap-go v1.1.0
+	github.com/go-mysql-org/go-mysql v1.4.0
+	github.com/go-sql-driver/mysql v1.6.0
+	github.com/golang/snappy v0.0.4
+	github.com/kardianos/service v1.2.0
+	github.com/recoilme/slowpoke v2.0.1+incompatible
+	github.com/satori/go.uuid v1.2.0
+	github.com/shopspring/decimal v1.3.1
+	github.com/siddontang/go-log v0.0.0-20190221022429-1e957dd83bed
+	github.com/vmihailenco/msgpack/v5 v5.3.5
+)
+
+require (
+	github.com/BurntSushi/toml v0.3.1 // indirect
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/eapache/go-resiliency v1.2.0 // indirect
+	github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
+	github.com/eapache/queue v1.1.0 // indirect
+	github.com/gorilla/websocket v1.4.2 // indirect
+	github.com/hashicorp/go-uuid v1.0.2 // indirect
+	github.com/jcmturner/aescts/v2 v2.0.0 // indirect
+	github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
+	github.com/jcmturner/gofork v1.0.0 // indirect
+	github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect
+	github.com/jcmturner/rpc/v2 v2.0.3 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/pierrec/lz4 v2.6.1+incompatible // indirect
+	github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3 // indirect
+	github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4 // indirect
+	github.com/pingcap/parser v0.0.0-20210415081931-48e7f467fd74 // indirect
+	github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
+	github.com/recoilme/pudge v1.0.3 // indirect
+	github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 // indirect
+	github.com/smartystreets/goconvey v1.7.2 // indirect
+	github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
+	go.uber.org/atomic v1.7.0 // indirect
+	go.uber.org/multierr v1.6.0 // indirect
+	go.uber.org/zap v1.16.0 // indirect
+	golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 // indirect
+	golang.org/x/net v0.0.0-20210917221730-978cfadd31cf // indirect
+	golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
+)

+ 226 - 0
go.sum

@@ -0,0 +1,226 @@
+github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/Shopify/sarama v1.30.1 h1:z47lP/5PBw2UVKf1lvfS5uWXaJws6ggk9PLnKEHtZiQ=
+github.com/Shopify/sarama v1.30.1/go.mod h1:hGgx05L/DiW8XYBXeJdKIN6V2QUy2H6JqME5VT1NLRw=
+github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae h1:ePgznFqEG1v3AjMklnK8H7BSc++FDSo7xfK9K7Af+0Y=
+github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0=
+github.com/Unknwon/goconfig v1.0.0 h1:9IAu/BYbSLQi8puFjUQApZTxIHqSwrj5d8vpP8vTq4A=
+github.com/Unknwon/goconfig v1.0.0/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
+github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cznic/golex v0.0.0-20181122101858-9c343928389c/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc=
+github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM=
+github.com/cznic/parser v0.0.0-20160622100904-31edd927e5b1/go.mod h1:2B43mz36vGZNZEwkWi8ayRSSUXLfjL8OkbzwW4NcPMM=
+github.com/cznic/sortutil v0.0.0-20181122101858-f5f958428db8/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ=
+github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc=
+github.com/cznic/y v0.0.0-20170802143616-045f81c6662a/go.mod h1:1rk5VM7oSnA4vjp+hrLQ3HWHa+Y4yPCa3/CsJrcNnvs=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q=
+github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
+github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
+github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
+github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
+github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
+github.com/eclipse/paho.mqtt.golang v1.3.5 h1:sWtmgNxYM9P2sP+xEItMozsR3w0cqZFlqnNN1bdl41Y=
+github.com/eclipse/paho.mqtt.golang v1.3.5/go.mod h1:eTzb4gxwwyWpqBUHGQZ4ABAV7+Jgm1PklsYT/eo8Hcc=
+github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
+github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
+github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=
+github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
+github.com/go-mysql-org/go-mysql v1.4.0 h1:Y7fYkFzvveXPyFtEDp3izPcXDHKVv/XD7xzky1kamO0=
+github.com/go-mysql-org/go-mysql v1.4.0/go.mod h1:3lFZKf7l95Qo70+3XB2WpiSf9wu2s3na3geLMaIIrqQ=
+github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
+github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
+github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
+github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
+github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
+github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
+github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
+github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=
+github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8=
+github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o=
+github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=
+github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
+github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA=
+github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc=
+github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
+github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
+github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
+github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
+github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
+github.com/kardianos/service v1.2.0 h1:bGuZ/epo3vrt8IPC7mnKQolqFeYJb7Cs8Rk4PSOBB/g=
+github.com/kardianos/service v1.2.0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=
+github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg=
+github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ=
+github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
+github.com/pingcap/errors v0.11.5-0.20201029093017-5a7df2af2ac7/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI=
+github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3 h1:LllgC9eGfqzkfubMgjKIDyZYaa609nNWAyNZtpy2B3M=
+github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3/go.mod h1:G7x87le1poQzLB/TqvTJI2ILrSgobnq4Ut7luOwvfvI=
+github.com/pingcap/log v0.0.0-20200511115504-543df19646ad/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
+github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4 h1:ERrF0fTuIOnwfGbt71Ji3DKbOEaP189tjym50u8gpC8=
+github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
+github.com/pingcap/parser v0.0.0-20210415081931-48e7f467fd74 h1:FkVEC3Fck3fD16hMObMl/IWs72jR9FmqPn0Bdf728Sk=
+github.com/pingcap/parser v0.0.0-20210415081931-48e7f467fd74/go.mod h1:xZC8I7bug4GJ5KtHhgAikjTfU4kBv1Sbo3Pf1MZ6lVw=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
+github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
+github.com/recoilme/pudge v1.0.3 h1:h/9dEv5fRqtzM4lnO69kUoN+k7ukxxrW9NGb9ug0grM=
+github.com/recoilme/pudge v1.0.3/go.mod h1:VMvxBLVkrSStldckzCsETBXox3pfovfrnEchafXk8qA=
+github.com/recoilme/slowpoke v2.0.1+incompatible h1:55UUAkmU9zOIG2Ra7I/6PJJcg11vlVoXCiGQUVPBfwI=
+github.com/recoilme/slowpoke v2.0.1+incompatible/go.mod h1:bAQc5fISCFURi0Gp488wpYKbsu5iLLYwofS0mg9l6xI=
+github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
+github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
+github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
+github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
+github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 h1:xT+JlYxNGqyT+XcU8iUrN18JYed2TvG9yN5ULG2jATM=
+github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
+github.com/siddontang/go-log v0.0.0-20180807004314-8d05993dda07/go.mod h1:yFdBgwXP24JziuRl2NMUahT7nGLNOKi1SIiFxMttVD4=
+github.com/siddontang/go-log v0.0.0-20190221022429-1e957dd83bed h1:KMgQoLJGCq1IoZpLZE3AIffh9veYWoVlsvA4ib55TMM=
+github.com/siddontang/go-log v0.0.0-20190221022429-1e957dd83bed/go.mod h1:yFdBgwXP24JziuRl2NMUahT7nGLNOKi1SIiFxMttVD4=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
+github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
+github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg=
+github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
+github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
+github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
+go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
+go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
+go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8=
+golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210917221730-978cfadd31cf h1:R150MpwJIv1MpS0N/pc+NhTM8ajzvlmxlY5OYsrevXQ=
+golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b h1:Lq5JUTFhiybGVf28jB6QRpqd13/JPOaCnET17PVzYJE=
+golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=

BIN
go_build_datasync.exe


+ 779 - 0
kpt/dqueue.go

@@ -0,0 +1,779 @@
+package kpt
+
+import (
+	"encoding/binary"
+	"errors"
+	"fmt"
+	"github.com/Shopify/sarama"
+	"github.com/edsrzf/mmap-go"
+	"github.com/satori/go.uuid"
+	"os"
+	"strconv"
+	"time"
+)
+
+const HEADER_SIZE = 13 // 1 for version 4 for viewSize 4 for nextWriteAt 4 for nextReadAt
+const MAX_READ_PACKET_COUNT = 1024
+const MAX_PACKET_SIZE = 1024 * 63//最大64k
+
+var (
+	LogStatu  bool
+
+)
+
+type DQueue struct {
+	// underlying disk
+	fileObj *os.File
+	mappedFile mmap.MMap
+	// the uncommitted read pointer
+	// will be committed at next pop()
+	nextReadAt uint32
+	lastWriteAt uint32
+	/*
+	view covers the readable range of body
+	to avoid split packet in two parts to wrap around
+	the memory will NOT be copied during read,
+	the reader must copy out the bytes manually before goroutine switch
+	[--- header ---][--- body ---]
+	                [--- view --]
+	*/
+	header header
+	body   []byte
+	view []byte
+	// used to avoid allocation
+	readBufferItself [][]byte
+	dqueuePop *DQueue
+	//dqueuePopTemp *DQueue
+	dqueue1Index *DQueue
+	dqueuPush *DQueue
+	nowPath string
+	srcpath string
+	size  int
+	deleteChan string
+
+}
+
+type header []byte
+
+func (header header) setVersion() {
+	header[0] = 1
+}
+
+func (header header) setViewSize(viewSize uint32) {
+	binary.BigEndian.PutUint32(header[1:], viewSize)
+}
+
+func (header header) getViewSize() uint32 {
+	return binary.BigEndian.Uint32(header[1:])
+}
+
+func (header header) setNextWriteAt(nextWriteAt uint32) {
+	binary.BigEndian.PutUint32(header[5:], nextWriteAt)
+}
+
+func (header header) getNextWriteAt() uint32 {
+	return binary.BigEndian.Uint32(header[5:])
+}
+
+func (mappedBytes header) setNextReadAt(nextReadAt uint32) {
+	binary.BigEndian.PutUint32(mappedBytes[9:], nextReadAt)
+}
+
+func (mappedBytes header) getNextReadAt() uint32 {
+	return binary.BigEndian.Uint32(mappedBytes[9:])
+}
+
+func Open(filePath string, nkiloBytes int) (*DQueue, error) {
+	fileObj, err := os.OpenFile(filePath, os.O_RDWR, 0644)
+	if err != nil {
+		if os.IsNotExist(err) {
+			fileObj, err = os.OpenFile(filePath, os.O_RDWR | os.O_CREATE | os.O_TRUNC, 0644)
+			if err != nil {
+				return nil, err
+			}
+			emptyBytes := make([]byte, 1024)
+			for i := 0; i < nkiloBytes; i++ {
+				_, err = fileObj.Write(emptyBytes[:])
+				if err != nil {
+					return nil, err
+				}
+			}
+			err = fileObj.Close()
+			if err != nil {
+				return nil, err
+			}
+			fileObj, err = os.OpenFile(filePath, os.O_RDWR, 0644)
+			if err != nil {
+				return nil, err
+			}
+
+
+			mappedFile, err := mmap.Map(fileObj, mmap.RDWR, 0)
+			if err != nil {
+				return nil, err
+			}
+			header := header(mappedFile[:HEADER_SIZE])
+			header.setVersion()
+			header.setNextWriteAt(0)
+			header.setNextReadAt(0)
+			body := mappedFile[HEADER_SIZE:]
+			view := body[:0]
+			header.setViewSize(uint32(len(view)))
+			readBufferItself := make([][]byte, MAX_READ_PACKET_COUNT)
+			return &DQueue{
+				fileObj: fileObj,
+				mappedFile: mappedFile,
+				header: header,
+				body: body,
+				view: view,
+				readBufferItself: readBufferItself,
+				lastWriteAt : 0 ,
+			}, nil
+		} else {
+			return nil, err
+		}
+	}else {
+		mappedFile, err := mmap.Map(fileObj, mmap.RDWR, 0)
+		if err != nil {
+			return nil, err
+		}
+		header := header(mappedFile[:HEADER_SIZE])
+		header.setVersion()
+		//header.setNextWriteAt(0)
+		//header.setNextReadAt(0)
+		body := mappedFile[HEADER_SIZE:]
+		view := body[:]
+		header.setViewSize(uint32(len(view)))
+		readBufferItself := make([][]byte, MAX_READ_PACKET_COUNT)
+		return &DQueue{
+			fileObj: fileObj,
+			mappedFile: mappedFile,
+			header: header,
+			body: body,
+			view: view,
+			readBufferItself: readBufferItself,
+		}, nil
+	}
+
+}
+
+func (q *DQueue) Close() error {
+	err := q.mappedFile.Unmap()
+	if err != nil {
+		return err
+	}
+	err = q.fileObj.Close()
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func (q *DQueue) Pop() ([][]byte, error) {
+	nextWriteAt := q.header.getNextWriteAt()
+	nextReadAt := q.nextReadAt
+	q.header.setNextReadAt(nextReadAt)
+	packetsCount := 0
+	fallBehind := false
+	if nextReadAt == nextReadAt && nextWriteAt == uint32(len(q.view)) {
+		// at tail
+	} else if nextReadAt >= nextWriteAt {
+		fallBehind = true
+	}
+	pos := nextReadAt
+	for ; packetsCount < len(q.readBufferItself); packetsCount++ {
+		if !fallBehind && pos >= nextWriteAt {
+			break
+		}
+		viewSize := uint32(len(q.view))
+		if pos >= viewSize {
+			pos = 0 // wrap around
+			fallBehind = false
+			// the region between [nextWriteAt, tail) is now invalid
+			q.view = q.body[:nextWriteAt]
+		}
+		packetSize := binary.BigEndian.Uint16(q.view[pos:pos+2])
+		if packetSize > MAX_PACKET_SIZE {
+			return nil, errors.New("packet is too large")
+		}
+		pos += 2
+		nextPos := pos + uint32(packetSize)
+		q.readBufferItself[packetsCount] = q.view[pos:nextPos]
+		pos = nextPos
+	}
+	q.nextReadAt = pos
+	return q.readBufferItself[:packetsCount], nil
+}
+
+func (q *DQueue) PopPeeksV2(count int) (readBuff [][]byte, err error,full bool,null bool){
+	nextWriteAt := q.dqueuePop.header.getNextWriteAt()
+	nextReadAt :=q.dqueuePop.nextReadAt
+	//fmt.Println("nextWriteAt,nextReadAt",nextWriteAt,nextReadAt)
+	packetsCount := 0
+	pos := nextReadAt
+	var readBuffer [][]byte
+	if  q.dqueuePop.fileObj.Name() == q.dqueuPush.fileObj.Name(){
+		full = true
+	}
+	for ; packetsCount < count; packetsCount++ {
+		if  pos >= nextWriteAt {
+			null = true
+			break
+		}
+		//viewSize := uint32(len(q.view))
+		//if pos >= viewSize {
+		//	pos = 0 // wrap around
+		//	// the region between [nextWriteAt, tail) is now invalid
+		//	q.view = q.body[:nextWriteAt]
+		//}
+		packetSize := binary.BigEndian.Uint16(q.dqueuePop.view[pos:pos+2])
+		if packetSize > MAX_PACKET_SIZE {
+			return nil, errors.New("packet is too large"),full,null
+		}
+		pos += 2
+		nextPos := pos + uint32(packetSize)
+		if len(q.dqueuePop.view[pos:nextPos])==0{
+			continue
+		}
+		readBuffer = append(readBuffer,q.dqueuePop.view[pos:nextPos])
+		pos = nextPos
+	}
+	q.nextReadAt = pos
+	return readBuffer, nil,full,null
+}
+func (q *DQueue) PopPeeksV3(count int) (readBuff []*sarama.ProducerMessage, err error,full bool,null bool){
+	nextWriteAt := q.dqueuePop.header.getNextWriteAt()
+	nextReadAt :=q.dqueuePop.header.getNextReadAt()
+	packetsCount := 0
+	pos := nextReadAt
+	if  q.dqueuePop.fileObj.Name() == q.dqueuPush.fileObj.Name(){
+		full = true
+	}
+	for ; packetsCount < count; packetsCount++ {
+		if  pos >= nextWriteAt {
+			null = true
+			break
+		}
+		//viewSize := uint32(len(q.view))
+		//if pos >= viewSize {
+		//	pos = 0 // wrap around
+		//	// the region between [nextWriteAt, tail) is now invalid
+		//	q.view = q.body[:nextWriteAt]
+		//}
+		packetSize := binary.BigEndian.Uint16(q.dqueuePop.view[pos:pos+2])
+		if packetSize > MAX_PACKET_SIZE {
+			return nil, errors.New("packet is too large"),full,null
+		}
+		pos += 2
+		nextPos := pos + uint32(packetSize)
+		if len(q.dqueuePop.view[pos:nextPos])==0{
+			continue
+		}
+		msg := &sarama.ProducerMessage{Topic: kafka_topic, Key: sarama.StringEncoder(""),
+			Value: sarama.StringEncoder(string(q.dqueuePop.view[pos:nextPos]))}
+		readBuff = append(readBuff,msg)
+		pos = nextPos
+	}
+	q.nextReadAt = pos
+	return readBuff, nil,full,null
+}
+
+//func (q *DQueue) PopPeeks(count int) ( [][]byte,  error) {
+//	if q.dqueuePop.fileObj.Name() != q.dqueuePopTemp.fileObj.Name(){
+//		err :=q.dqueuePopTemp.Close()
+//		if err != nil{
+//			fmt.Println("err :=q.dqueuePopTemp.Close() err",err)
+//		}
+//		q.dqueuePopTemp,err = Open(q.dqueuePop.fileObj.Name(),q.size)
+//		if err != nil {
+//			fmt.Println("= Open err",q.dqueuePop.fileObj.Name(),err)
+//		}
+//		fmt.Println("q.dqueuePopTemp,err = Open ",q.dqueuePop.fileObj.Name(),err)
+//	}
+//	nextWriteAt := q.dqueuePopTemp.header.getNextWriteAt()
+//	nextReadAt := q.dqueuePopTemp.header.getNextReadAt()
+//	var readBuff [][]byte
+//	pos := nextReadAt
+//		for packetsCount := 0; packetsCount < count; packetsCount++ {
+//			if  pos >= nextWriteAt {
+//				if  q.dqueuePop.fileObj.Name() == q.dqueuPush.fileObj.Name(){
+//					break
+//				}
+//
+//				popOne,err :=q.dqueue1Index.PeekTwo()
+//				if err != nil {
+//					if err.Error() =="file is no two peek" || err.Error() =="queue is null"  {
+//						break
+//					}else {
+//						fmt.Println("q.dqueue1Index.Peek() err",err)
+//					}
+//				}
+//				fmt.Println("popOne,err :=q.dqueue1Index.PeekTwo()",string(popOne),err)
+//				err =q.dqueuePopTemp.Close()
+//				if err != nil{
+//					fmt.Println("err :=q.dqueuePopTemp.Close() err",err)
+//					break
+//				}
+//				q.dqueuePopTemp,err = Open(q.srcpath+"/"+string(popOne),q.size)
+//				if err != nil {
+//					fmt.Println("= Open err",q.srcpath+"/"+string(popOne),err)
+//					break
+//				}
+//				nextWriteAt = q.dqueuePopTemp.header.getNextWriteAt()
+//				if nextWriteAt == 0 {
+//					break
+//				}
+//				pos = q.dqueuePopTemp.header.getNextReadAt()
+//			}
+//			//viewSize := uint32(len(q.dqueuePopTemp.view))
+//			//if pos >= viewSize {
+//			//	pos = 0 // wrap around
+//			//	// the region between [nextWriteAt, tail) is now invalid
+//			//	q.dqueuePopTemp.view = q.dqueuePopTemp.body[:nextWriteAt]
+//			//}
+//			packetSize := binary.BigEndian.Uint16(q.dqueuePopTemp.body[pos:pos+2])
+//			if packetSize > MAX_PACKET_SIZE {
+//				return nil, errors.New("packet is too large : "+string(q.dqueuePopTemp.body[pos:pos+2]))
+//			}
+//			pos += 2
+//			nextPos := pos + uint32(packetSize)
+//			if int(nextPos) >=len(q.dqueuePopTemp.body){
+//				continue
+//			}
+//			if len(q.dqueuePopTemp.body[pos:nextPos]) == 0{
+//				continue
+//			}
+//			readBuff = append(readBuff,q.dqueuePopTemp.body[pos:nextPos])
+//			//fmt.Println("q.dqueuePop.view[pos:nextPos]",string(q.dqueuePopTemp.view[pos:nextPos]),
+//			//	q.dqueuePopTemp.fileObj.Name())
+//			pos = nextPos
+//		}
+//		q.dqueuePop.nextReadAt = pos
+//	   // fmt.Println("readBuff",readBuff)
+//		return readBuff, nil
+//	//}
+//}
+
+
+func (q *DQueue) PopOne() ([]byte, error) {
+	nextWriteAt := q.header.getNextWriteAt()
+	nextReadAt :=  q.header.getNextReadAt()
+	if LogStatu {fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)}
+	if nextReadAt >= nextWriteAt {
+		return nil, errors.New("queue is null")
+	}
+	pos := nextReadAt
+
+	q.view = q.body[:nextWriteAt]
+	viewSize := uint32(len(q.view))
+	if pos >= viewSize {
+			pos = 0 // wrap around
+			// the region between [nextWriteAt, tail) is now invalid
+			q.view = q.body[:nextWriteAt]
+	}
+	packetSize := binary.BigEndian.Uint16(q.view[pos:pos+2])
+	if packetSize > MAX_PACKET_SIZE {
+		return nil, errors.New("packet is too large"+strconv.Itoa(int(packetSize)))
+	}
+	pos += 2
+	nextPos := pos + uint32(packetSize)
+	posstr:= q.view[pos:nextPos]
+	pos = nextPos
+
+	q.nextReadAt = pos
+	q.header.setNextReadAt(pos)
+	return posstr, nil
+}
+
+func (q *DQueue) Peek() ([]byte, error) {
+	nextWriteAt := q.header.getNextWriteAt()
+	nextReadAt := q.header.getNextReadAt()
+	if LogStatu {fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)}
+	if nextReadAt >= nextWriteAt {
+		return nil, errors.New("queue is null")
+	}
+	pos := nextReadAt
+
+
+	viewSize := uint32(len(q.view))
+	if pos >= viewSize {
+		pos = 0 // wrap around
+		// the region between [nextWriteAt, tail) is now invalid
+		q.view = q.body[:nextWriteAt]
+	}
+	packetSize := binary.BigEndian.Uint16(q.view[pos:pos+2])
+	if packetSize > MAX_PACKET_SIZE {
+		return nil, errors.New("packet is too large"+strconv.Itoa(int(packetSize)))
+	}
+	pos += 2
+	nextPos := pos + uint32(packetSize)
+	posstr:= q.view[pos:nextPos]
+	pos = nextPos
+	return posstr, nil
+}
+
+func (q *DQueue) PeekTwo() ([]byte, error) {
+	nextWriteAt := q.header.getNextWriteAt()
+	nextReadAt := q.header.getNextReadAt()
+	if LogStatu {fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)}
+	if nextReadAt >= nextWriteAt {
+		//fmt.Println("queue is null")
+		return nil, errors.New("queue is null")
+	}
+	pos := nextReadAt
+
+
+	viewSize := uint32(len(q.view))
+	if pos >= viewSize {
+		pos = 0 // wrap around
+		// the region between [nextWriteAt, tail) is now invalid
+		q.view = q.body[:nextWriteAt]
+	}
+	packetSize := binary.BigEndian.Uint16(q.view[pos:pos+2])
+	if packetSize > MAX_PACKET_SIZE {
+		return nil, errors.New("packet is too large"+strconv.Itoa(int(packetSize)))
+	}
+	pos += 2
+	nextPos := pos + uint32(packetSize)
+	posstr:= q.view[pos:nextPos]
+
+	pos = nextPos
+	if pos >= q.header.getNextWriteAt() {
+		//fmt.Println("file is no two peek")
+		return  nil, errors.New("file is no two peek")
+	}
+	packetSize = binary.BigEndian.Uint16(q.view[pos:pos+2])
+	if packetSize > MAX_PACKET_SIZE {
+		return nil, errors.New("packet is too large"+strconv.Itoa(int(packetSize)))
+	}
+	pos += 2
+	nextPos = pos + uint32(packetSize)
+	posstr = q.view[pos:nextPos]
+	//fmt.Println("PeekTwo__posstr",string(posstr))
+	return posstr, nil
+}
+
+func (q *DQueue) PeekHead() ([]byte, error) {
+	//lastWriteAt := q.lastWriteAt
+	//nextReadAt := q.header.getNextReadAt()
+	//fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)
+	pos := q.header.getNextWriteAt()
+
+	//packetSize := binary.BigEndian.Uint16(q.view[pos-19:pos])
+	//if packetSize > MAX_PACKET_SIZE {
+	//	return nil, errors.New("packet is too large"+strconv.Itoa(int(packetSize)))
+	//}
+	//pos += 2
+	//nextPos := pos + uint32(packetSize)
+	posstr:= q.view[pos-36:pos]
+	//pos = nextPos
+	return posstr, nil
+}
+func (q *DQueue) Push(packets [][]byte) error {
+	pos := q.header.getNextWriteAt()
+	if pos > uint32(len(q.body)) {
+		return errors.New("internal error: nextWriteAt is invalid")
+	}
+	for _, packet := range packets {
+		packetSize := uint16(len(packet))
+		if packetSize > MAX_PACKET_SIZE {
+			return errors.New("packet is too large")
+		}
+		viewSize := uint32(len(q.view))
+		willWriteTo := pos + 2 + uint32(packetSize)
+		// write range is [pos, willWriteTo)
+		if q.nextReadAt > pos && willWriteTo > q.nextReadAt {
+			// overflow the read
+			q.nextReadAt = willWriteTo
+			q.header.setNextReadAt(q.nextReadAt)
+		}
+		if willWriteTo > viewSize {
+			// overflow the view
+			if willWriteTo > uint32(len(q.body)) {
+				// overflow the body, shrink the view
+				q.view = q.body[:pos]
+				pos = 0
+			} else {
+				// grow the view to cover
+				q.view = q.body[:willWriteTo]
+			}
+		}
+		binary.BigEndian.PutUint16(q.view[pos:pos+2], packetSize)
+		pos += 2
+		nextPos := pos + uint32(packetSize)
+		copy(q.view[pos:nextPos], packet)
+		pos = nextPos
+	}
+	q.header.setNextWriteAt(pos)
+	q.header.setViewSize(uint32(len(q.view)))
+	if LogStatu {
+		nextWriteAt := q.header.getNextWriteAt()
+		nextReadAt := q.header.getNextReadAt()
+		fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)
+	}
+
+	return nil
+}
+
+func (q *DQueue) PushOne(packet []byte) error {
+	pos := q.header.getNextWriteAt()
+	if pos > uint32(len(q.body)) {
+		return errors.New("internal error: nextWriteAt is invalid")
+	}
+		packetSize := uint16(len(packet))
+		if packetSize > MAX_PACKET_SIZE {
+			return errors.New("packet is too large")
+		}
+		viewSize := uint32(len(q.body))
+		willWriteTo := pos + 2 + uint32(packetSize)
+		// write range is [pos, willWriteTo)
+		//if q.nextReadAt > pos && willWriteTo > q.nextReadAt {
+		//	// overflow the read
+		//	q.nextReadAt = willWriteTo
+		//	q.header.setNextReadAt(q.nextReadAt)
+		//}
+		if willWriteTo > viewSize {
+			return errors.New("file is full")
+		}
+		binary.BigEndian.PutUint16(q.view[pos:pos+2], packetSize)
+		pos += 2
+		nextPos := pos + uint32(packetSize)
+		copy(q.view[pos:nextPos], packet)
+		pos = nextPos
+	q.lastWriteAt = q.header.getNextWriteAt()
+	q.header.setNextWriteAt(pos)
+	q.view=q.body[:pos]
+	//if LogStatu{
+	//	//nextWriteAt := q.header.getNextWriteAt()
+	//	//nextReadAt := q.header.getNextReadAt()
+	//	fmt.Println("nextWriteAt",q.lastWriteAt,string(packet))
+	//}
+	//nextWriteAt := q.header.getNextWriteAt()
+	//	nextReadAt := q.header.getNextReadAt()
+		//fmt.Println("nextWriteAt",nextWriteAt,nextReadAt)
+	return nil
+}
+
+func OpenIndexFile(filepath string,size int,indexSize int,log bool) (*DQueue,error){
+	LogStatu = log
+	fmt.Println("=====队列路径===",filepath)
+	dqueue1Index1,err := Open(filepath+"/index",indexSize)
+	dqueue1Index1.srcpath = filepath
+	dqueue1Index1.size = size
+	dqueue1Index1.dqueue1Index = dqueue1Index1
+	popOne ,err :=dqueue1Index1.dqueue1Index.Peek()
+	if LogStatu {
+		fmt.Println("=====peek",string(popOne))
+	}
+
+	if popOne==nil || err != nil{
+		// dqueue1Index1.nowPath =strconv.Itoa(int(time.Now().UnixNano()))
+		dqueue1Index1.nowPath = fmt.Sprintf("%s", uuid.NewV1())
+		dqueue1Index1.dqueuePop,err = Open(dqueue1Index1.srcpath+"/"+dqueue1Index1.nowPath,size)
+		dqueue1Index1.dqueuePop.nextReadAt = dqueue1Index1.dqueuePop.header.getNextReadAt()
+		if err !=nil {
+			return nil,err
+		}
+		err =dqueue1Index1.dqueue1Index.PushOne(
+			[]byte(dqueue1Index1.nowPath),
+		)
+	}else{
+		dqueue1Index1.nowPath = string(popOne)
+		dqueue1Index1.dqueuePop,err = Open(dqueue1Index1.srcpath+"/"+string(popOne),size)
+		dqueue1Index1.dqueuePop.nextReadAt = dqueue1Index1.dqueuePop.header.getNextReadAt()
+		if err !=nil {
+			return nil,err
+		}
+
+	}
+	peekHead ,err :=dqueue1Index1.dqueue1Index.PeekHead()
+	if LogStatu {
+		fmt.Println("=====peekHead",string(peekHead))
+	}
+	//dqueue1Index.PopOne()
+	if peekHead==nil || err != nil{
+		dqueue1Index1.dqueuPush =dqueue1Index1.dqueuPush
+
+	}else{
+		//dqueue1Index1.nowPath = string(popOne)
+		dqueue1Index1.dqueuPush,err = Open(dqueue1Index1.srcpath+"/"+string(peekHead),size)
+		if err !=nil {
+			return nil,err
+		}
+	}
+
+	return dqueue1Index1,err
+}
+
+func (q *DQueue) PushOneIndex(packet []byte) error {
+
+	err := q.dqueuPush.PushOne(
+		packet,
+	)
+	if err !=nil {
+		if err.Error()=="file is full"{
+			//if q.dqueuPush.header.getNextReadAt()==0{
+				err :=q.dqueuPush.Close()
+				if err != nil{
+					if LogStatu {fmt.Println("err :=q.dqueuPush.Close() err",err)}
+
+				}
+			//}
+			//datestr :=strconv.Itoa(int(time.Now().UnixNano()))
+			datestr :=fmt.Sprintf("%s", uuid.NewV1())
+			q.dqueuPush,err = Open(q.srcpath+"/"+datestr,q.size)
+			if err !=nil {
+				if LogStatu {fmt.Println("kpt.Open dqueue2 err",err)}
+
+				return  err
+			}
+			err = q.dqueue1Index.PushOne(
+				[]byte(datestr),
+			)
+			if err != nil {
+				if err.Error()=="file is full"{
+					//q.dqueue1Index.header.setNextWriteAt(0)
+					//err =q.dqueue1Index.PushOne(
+					//	[]byte(datestr),
+					//)
+					//fmt.Println("index file is full",err,[]byte(datestr))
+				}
+			}
+
+			err =q.dqueuPush.PushOne(
+				packet,
+			)
+			//dqueueChan <- dqueue2
+		}else{
+			return  err
+		}
+
+	}
+	if showlog >0 {
+		fmt.Println(string(packet))
+	}
+	return  nil
+}
+
+func (q *DQueue) PopOneIndex() ([]byte, error) {
+	pop ,err := q.dqueuePop.PopOne()
+	//fmt.Println("q.dqueuePop.header.getNextReadAt() != q.dqueuPush.header.getNextWriteAt()",q.dqueuePop.header.getNextReadAt(),q.dqueuPush.header.getNextWriteAt())
+	if  err != nil{
+		if err.Error()=="queue is null" {
+			if q.dqueuePop.fileObj.Name() != q.dqueuPush.fileObj.Name(){
+				popIndex ,err1 :=q.dqueue1Index.PopOne()
+				//fmt.Println("pop ,err =q.dqueuePop.PopOne()====------------",pop,err,string(popIndex), q.dqueuePop.fileObj.Name())
+				if err1 !=nil{
+					if LogStatu {fmt.Println("pop ,err =q.dqueuePop.PopOne()====------------",pop,err,string(popIndex))}
+				}
+				popOne ,err1 :=q.dqueue1Index.Peek()
+				if popOne == nil && err1 != nil{   //索引为空
+					if LogStatu {fmt.Println("索引为空==============")}
+					return nil,err1
+				}
+				//fmt.Println("开始关闭==============")
+				errC := q.dqueuePop.Close()
+				if errC != nil {
+					if LogStatu {fmt.Println("q.dqueuePop.Close() err",errC)}
+					return nil,errC
+				}
+				//fmt.Println("开始删除==============")
+				errR := os.Remove(q.srcpath+"/"+q.nowPath)
+				if errR != nil {
+					fmt.Println("os.Remove() err",errR)
+					time.Sleep(100*time.Millisecond)
+					errR := os.Rename(q.srcpath+"/"+q.nowPath,q.srcpath+"/"+"del"+q.nowPath)
+					if errR != nil {
+						if LogStatu {fmt.Println("os.reRename() err",errR)}}
+
+					return nil,errR
+				}else{
+					if LogStatu {fmt.Println("file delete ---------",q.nowPath)}
+				}
+				fmt.Println("file delete ---------",q.nowPath)
+				q.dqueuePop,err = Open(q.srcpath+"/"+string(popOne),q.size)
+				if err !=nil {
+					if LogStatu {fmt.Println("kpt.Open dqueue1 5 err",err)}
+					return nil,err
+				}else {
+					q.nowPath = string(popOne)
+					//pop ,err = q.dqueuePop.PopOne()
+					pop ,err = q.dqueuePop.Peek()
+					if LogStatu {
+						fmt.Println("q.dqueuePop.fileObj.Name()",q.dqueuePop.fileObj.Name(),q.dqueuPush.fileObj.Name(),q.dqueuePop.header.getNextReadAt())
+						fmt.Println("pop ,err =q.dqueuePop.PopOne()====------------",pop,err,string(popOne))
+					}
+
+				}
+
+			}else {
+				return pop,err
+			}
+
+
+		}else {
+			return pop,err
+		}
+	}else {
+		return pop,err
+	}
+	return pop,nil
+}
+
+func (q *DQueue) CloseIndex() error {
+	err := q.mappedFile.Unmap()
+	if err != nil {
+		return err
+	}
+	err = q.dqueue1Index.mappedFile.Unmap()
+	if err != nil {
+		//return err
+	}
+	err = q.dqueuePop.mappedFile.Unmap()
+	if err != nil {
+		return err
+	}
+	err = q.dqueuPush.mappedFile.Unmap()
+	if err != nil {
+		return err
+	}
+	err = q.fileObj.Close()
+	if err != nil {
+		return err
+	}
+	err = q.dqueue1Index.Close()
+	if err != nil {
+		//return err
+	}
+	err = q.dqueuPush.fileObj.Close()
+	if err != nil {
+		return err
+	}
+	err = q.dqueuePop.fileObj.Close()
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+
+func  (q *DQueue)DeleteIndexFile( dqueuePop *DQueue){
+//if err1 !=nil {
+//	//if err1.Error()=="queue is null" && (q.dqueuePop.header.getNextReadAt() != q.dqueuPush.header.getNextWriteAt()  ){
+//	//	q.dqueue1Index.header.setNextReadAt(0)
+//	//	popOne ,err1 = q.dqueue1Index.Peek()
+//	//}
+//}
+//errC := dqueuePop.Close()
+//if errC != nil {
+//	fmt.Println("q.dqueuePop.Close() err",errC)
+//	return nil,errC
+//}
+//errR := os.Remove(q.srcpath+"/"+q.nowPath)
+//if errR != nil {
+//	fmt.Println("os.Remove() err",errR)
+//	return nil,errR
+//}else{
+//	fmt.Println("file delete ---------",q.nowPath)
+//}
+}

+ 920 - 0
kpt/gocanal.go

@@ -0,0 +1,920 @@
+package kpt
+
+import (
+	"bytes"
+	"context"
+	"database/sql"
+	"encoding/binary"
+	"errors"
+	"fmt"
+	"github.com/Unknwon/goconfig"
+	"github.com/go-mysql-org/go-mysql/canal"
+	"github.com/go-mysql-org/go-mysql/mysql"
+	"github.com/go-mysql-org/go-mysql/replication"
+	_ "github.com/go-sql-driver/mysql" //导入mysql驱动包
+	"github.com/recoilme/slowpoke"
+	"github.com/shopspring/decimal"
+	"github.com/siddontang/go-log/log"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"reflect"
+	"runtime"
+	"strconv"
+	"strings"
+	"time"
+)
+
+var (
+	host     string //"MySQL host")
+	port     int    //"MySQL port")
+	user     string // "MySQL user, must have replication privilege")
+	password string // "MySQL password")
+
+	flavor       string // "Flavor: mysql or mariadb")
+	serverID     int    // "Unique Server ID")
+	mysqldump    string // "mysqldump execution path")
+	tables       string // "dump tables, seperated by comma, will overwrite dbs")
+	tableDB      string // "database for dump tables")
+	ignoreTables string // "ignore tables, must be database.table format, separated by comma")
+
+	startName string // "start sync from binlog name")
+	startPos  uint   // "start sync from binlog position of")
+	endName string // "start sync from binlog name")
+	endPos  uint32   // "start sync from binlog position of")
+	heartbeatPeriod int // "master heartbeat period")
+	readTimeout     int // "connection read timeout")
+
+	nodename  string //nodename  key name
+	nodevalue string //nodevalue value
+
+	showlog int
+
+	ServiceName        string //服务显示名称
+	ServiceDisplayName string //服务名称
+	ServiceDescription string //服务描述
+
+	KafkaEnable        bool
+	MqttEnable         bool
+	CurrentPath        string
+	mydb               *sql.DB // 全局的数据库操作句柄
+	posdb              *sql.DB // 全局的数据库操作句柄
+	inicfg				   *goconfig.ConfigFile
+	PosChan			   chan Posname
+	stmt               *sql.Stmt
+	deletestmt         *sql.Stmt
+	logger             *log.Logger
+	Ch                 chan int
+	insertstmt         string = ""
+	insertcount        int    = 0
+	insertcountv       int    = 0
+	Exectx             *sql.Tx
+	insertlog_lasttime time.Time
+	DqueueIndex  		 *DQueue
+	DqueueIndexMqtt     *DQueue
+	mqttDb		  *sql.DB
+	KptCattleId		string
+)
+
+const (
+	Type      = "mysql"
+	Insert    = `INSERT INTO %s(%s) VALUES%s;`
+	Update    = `UPDATE %s SET %s WHERE %s;`
+	Delete    = `DELETE FROM %s WHERE %s;`
+	DeleteAll = `TRUNCATE TABLE %s`
+)
+type Posname struct {
+	name string
+	pos uint32
+}
+func ReadWithSelect(sqlch chan string) (x string, res bool) {
+	select {
+	case x = <-sqlch:
+		return x, true
+	default:
+		return "", false
+	}
+}
+
+func WriteChWithSelect(sqlch chan string, sql string) bool {
+	timeout := time.NewTimer(time.Microsecond * 500)
+	select {
+	case sqlch <- sql:
+		return true
+	case <-timeout.C:
+		{
+			logger.Errorf("WriteChWithSelect 超时: %s", sql)
+			fmt.Printf("WriteChWithSelect 超时: %s", sql)
+			return false
+		}
+	}
+}
+
+func GetCurrentPath() (string, error) {
+	file, err := exec.LookPath(os.Args[0])
+	if err != nil {
+		return "", err
+	}
+	path, err := filepath.Abs(file)
+	if err != nil {
+		return "", err
+	}
+	//fmt.Println("path111:", path)
+	if runtime.GOOS == "windows" {
+		path = strings.Replace(path, "\\", "/", -1)
+	}
+	//fmt.Println("path222:", path)
+	i := strings.LastIndex(path, "/")
+	if i < 0 {
+		return "", errors.New(`Can't find "/" or "\".`)
+	}
+	//fmt.Println("path333:", path)
+	return string(path[0 : i+1]), nil
+}
+
+func GetColumns(e *canal.RowsEvent) []string {
+	var Columns []string
+	for _, value := range e.Table.Columns {
+		Columns = append(Columns, "`"+value.Name+"`")
+	}
+	if strings.Trim(nodename, " ") != "" {
+		Columns = append(Columns, strings.Trim(nodename, " "))
+	}
+	return Columns
+}
+
+func initDB() {
+	err := GetDbsConnect(user, password, host, port, "mysql")
+	_, err = mydb.Exec("CREATE DATABASE IF NOT EXISTS `sqllog`")
+	mydb.Close()
+
+	err = GetDbsConnect(user, password, host, port, "sqllog")
+	if err == nil {
+		_, _ = mydb.Exec("CREATE TABLE `tablesqllog` (`id` int(11) NOT NULL AUTO_INCREMENT,`sql` text DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
+		insertEmpty()
+	}
+}
+func GetDbsConnect(_user, _password, _host string, _port int, _dbs string) error {
+	connecting := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", _user, _password, _host, _port, _dbs)
+	var err error
+	mydb, err = sql.Open("mysql", connecting)
+	if err == nil {
+		mydb.SetMaxOpenConns(10)
+		mydb.SetMaxIdleConns(10)
+	} else {
+		return err
+	}
+	return nil
+}
+
+func GetmyDbsConnect(_user, _password, _host string, _port int, _dbs string) (*sql.DB, error) {
+	connecting := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", _user, _password, _host, _port, _dbs)
+	mdb, err := sql.Open("mysql", connecting)
+	if err == nil {
+		mdb.SetMaxOpenConns(10)
+		mdb.SetMaxIdleConns(10)
+	} else {
+		return nil, err
+	}
+	return mdb, nil
+}
+
+func insertEmpty() {
+	if len(tables) > 0 && len(tableDB) > 0 {
+		subs := strings.Split(tables, ",")
+		for i := len(subs) - 1; i >= 0; i-- {
+			var where []string
+			where = append(where, " 1 = 1")
+			if strings.Trim(nodename, " ") != "" {
+				where = append(where, nodename+" = "+"'"+nodevalue+"'")
+			}
+			sqls := fmt.Sprintf(Delete, subs[i], strings.Join(where, " and "))
+			//insertlog(sqls)
+			//savesqltofile(sqls)
+
+			err := DqueueIndex.PushOneIndex([]byte(sqls))
+			if err != nil{
+				fmt.Println("DqueueIndex.PushOneIndex([]byte(sqls)) err:",err)
+			}
+		}
+		//for _, value := range subs {
+
+		//}
+	}
+}
+
+//func () {
+//	for i:= 0 ; i<100000000;i++ {
+//		select {
+//		case <-c2 :
+//			fmt.Println("c2退出")
+//			return
+//		default:
+//			err =dqueuePop.PushOneIndex(
+//				[]byte("a"+strconv.Itoa(i)),
+//			)
+//			if err != nil{
+//				fmt.Println("dqueuePop.PushOneIndex err",err)
+//
+//			}else {
+//				fmt.Println("dqueuePop.PushOneIndex sucess","a"+strconv.Itoa(i))
+//			}
+//			//time.Sleep(1*time.Millisecond)
+//		}
+//		//err =dqueue.Push([][]byte{
+//		//	[]byte("a"+strconv.Itoa(i)),
+//		//	[]byte("b"+strconv.Itoa(i)),
+//		//})
+//	}
+//}
+func appendinsertsql(sqlstr string) {
+	if insertcount == 0 {
+		insertstmt = "insert into tablesqllog(`sql`) values(\"" + sqlstr + "\")"
+	} else {
+		insertstmt = insertstmt + ",(\"" + sqlstr + "\")"
+	}
+	insertcount++
+}
+
+func insertlog(sqlstr string) {
+	var err error
+
+	if mydb == nil {
+		connecting := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", user, password, host, port, "sqllog")
+		mydb, err = sql.Open("mysql", connecting)
+		if err != nil {
+			fmt.Println(" sql.Open err", err)
+		}
+		mydb.SetMaxOpenConns(100)
+		mydb.SetMaxIdleConns(10)
+		mydb.Ping()
+
+	}
+
+	if Exectx == nil {
+		Exectx, err = mydb.Begin()
+		if err != nil {
+			fmt.Println(err)
+		}
+	}
+
+	if Exectx != nil {
+		_, err = Exectx.Exec("insert into tablesqllog(`sql`) values(?);", sqlstr)
+		if err != nil {
+			fmt.Println("Exectx.Exec(", err)
+		} else {
+			insertcount++
+			if time.Since(insertlog_lasttime) > 60*time.Second {
+				err := Exectx.Commit()
+				Exectx = nil
+				if err != nil {
+					fmt.Println("Exectx.Commit():", err)
+				}
+				insertlog_lasttime = time.Now() // get current time
+			} else {
+				if insertcount > 10000 {
+					err := Exectx.Commit()
+					Exectx = nil
+					if err != nil {
+						fmt.Println("Exectx.Commit()insertcount:", err)
+					}
+					insertlog_lasttime = time.Now() // get current time
+					insertcount = 0
+
+				}
+			}
+		}
+	}
+}
+
+func Exec(mdb *sql.DB, _exsqlstr string) error {
+	if mdb != nil {
+		_, err := mdb.Exec(_exsqlstr)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func ExecT(mdb *sql.Tx, _exsqlstr string) error {
+	if mdb != nil {
+		_, err := mdb.Exec(_exsqlstr)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func Get(mdb *sql.DB) (int, string) {
+	var id int
+	var sql string
+	sql = ""
+	if mdb != nil {
+		//参数绑定,可以避免sql注入
+		rows := mdb.QueryRow("select `id`,`sql` from  `tablesqllog` order by id limit 1")
+		err := rows.Scan(&id, &sql)
+		if err != nil {
+			return 0, ""
+		}
+	}
+	return id, sql
+}
+
+func delete(mdb *sql.DB, id int) error {
+	if deletestmt == nil {
+		deletestmt, _ = mdb.Prepare("delete from `tablesqllog` where id <= ? ")
+	}
+
+	if deletestmt != nil {
+		_, err := deletestmt.Exec(id)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func GetDML(e *canal.RowsEvent) string {
+	query := ""
+	if e.Action == "insert" {
+		Columns := GetColumns(e)
+		var rows []string
+		for _, value := range e.Rows {
+			var frows []string
+			for _, fvalue := range value {
+				switch v := fvalue.(type) {
+				case string:
+					frows = append(frows, "'"+v+"'")
+				case int8, int16, int32, int, int64:
+					strV := fmt.Sprintf("%d", v)
+					frows = append(frows, strV)
+				case decimal.Decimal:
+					frows = append(frows, v.String())
+				case float32:
+					frows = append(frows, strconv.FormatFloat(float64(v), 'f', -1, 32))
+				case float64:
+					frows = append(frows, strconv.FormatFloat(v, 'f', -1, 64))
+				default:
+					frows = append(frows, "NULL")
+				}
+			}
+
+			if strings.Trim(nodename, " ") != "" {
+				frows = append(frows, "'"+nodevalue+"'")
+			}
+			rows = append(rows, "("+strings.Join(frows, ",")+")")
+		}
+		query = fmt.Sprintf(Insert, e.Table.Name, strings.Join(Columns, ","), strings.Join(rows, ","))
+	} else if e.Action == "update" {
+		var rows []string
+		var where []string
+		var uset []string
+		for i, value := range e.Rows {
+			if (i % 2) == 0 {
+				where = append([]string{})
+				for _, pk := range e.Table.PKColumns {
+					switch v := value[pk].(type) {
+					case string:
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` = '"+v+"'")
+					case int8, int16, int32, int, int64:
+						strV := fmt.Sprintf("%d", v)
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strV)
+					case decimal.Decimal:
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+v.String())
+					case float32:
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strconv.FormatFloat(float64(v), 'f', -1, 32))
+					case float64:
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strconv.FormatFloat(v, 'f', -1, 64))
+					default:
+						where = append(where, "`"+e.Table.Columns[pk].Name+"` is NULL")
+					}
+				}
+				if strings.Trim(nodename, " ") != "" {
+					where = append(where, nodename+" = "+"'"+nodevalue+"'")
+				}
+			} else {
+				uset = append([]string{})
+				for j, _ := range e.Table.Columns {
+					xx := reflect.DeepEqual(e.Rows[i-1][j], value[j])
+					if !xx {
+						switch v := value[j].(type) {
+						case string:
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = '"+v+"'")
+						case int8, int16, int32, int, int64:
+							strV := fmt.Sprintf("%d", v)
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = "+strV)
+						case decimal.Decimal:
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = "+v.String())
+						case float32:
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = "+strconv.FormatFloat(float64(v), 'f', -1, 32))
+						case float64:
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = "+strconv.FormatFloat(v, 'f', -1, 64))
+						default:
+							uset = append(uset, "`"+e.Table.Columns[j].Name+"` = NULL")
+						}
+					}
+				}
+				rows = append(rows, fmt.Sprintf(Update, e.Table.Name, strings.Join(uset, ", "), strings.Join(where, " and ")))
+			}
+		}
+		query = strings.Join(rows, "\n")
+	} else if e.Action == "delete" {
+		var rows []string
+		for _, value := range e.Rows {
+			var where []string
+			for _, pk := range e.Table.PKColumns {
+				switch v := value[pk].(type) {
+				case string:
+					where = append(where, "`"+e.Table.Columns[pk].Name+"` = '"+v+"'")
+				case int8, int16, int32, int, int64:
+					strV := fmt.Sprintf("%d", v)
+					where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strV)
+				case float32:
+					where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strconv.FormatFloat(float64(v), 'f', -1, 32))
+				case float64:
+					where = append(where, "`"+e.Table.Columns[pk].Name+"` = "+strconv.FormatFloat(v, 'f', -1, 64))
+				default:
+					where = append(where, "`"+e.Table.Columns[pk].Name+"` is NULL")
+				}
+			}
+			if strings.Trim(nodename, " ") != "" {
+				where = append(where, nodename+" = "+"'"+nodevalue+"'")
+			}
+			rows = append(rows, fmt.Sprintf(Delete, e.Table.Name, strings.Join(where, " and ")))
+		}
+		query = strings.Join(rows, "\n")
+	}
+	return query
+}
+
+type handler struct {
+	canal.DummyEventHandler
+}
+
+func (h *handler) OnRow(e *canal.RowsEvent) error {
+	needsave := 0
+	if len(tables) > 0 && len(tableDB) > 0 {
+		subs := strings.Split(tables, ",")
+		for _, value := range subs {
+			if strings.ToLower(e.Table.Name) == strings.ToLower(value) {
+				needsave = 1
+				break
+			}
+		}
+	} else {
+		needsave = 1
+	}
+	if needsave > 0 {
+		s := GetDML(e)
+		if len(s) > 0 {
+			if showlog > 0 {
+				fmt.Println(s)
+			}
+			//insertlog(s)
+			//sqlDeque.PushBack(s)
+			//mysqlQueue.Enqueue(s)
+			//WriteChWithSelect(mysqlch, s)
+			//savesqltofile(s)
+			err := DqueueIndex.PushOneIndex([]byte(s))
+			if err != nil{
+				fmt.Println("DqueueIndex.PushOneIndex([]byte(sqls)) err:",err)
+			}
+		}
+	}
+	return nil
+}
+
+func (h *handler) OnRotate(roateEvent *replication.RotateEvent) error {
+	//writePosini(string(roateEvent.NextLogName), uint32(roateEvent.Position))
+	setini(string(roateEvent.NextLogName), uint32(roateEvent.Position))
+
+	return nil
+}
+
+func (h *handler) OnPosSynced(p mysql.Position, G mysql.GTIDSet, g bool) error {
+	//	fmt.Println(p.Name + " |  " + strconv.Itoa(int(p.Pos)))
+
+	endName = p.Name
+	endPos = p.Pos
+	//writePosini(p.Name, p.Pos)
+	setini(p.Name, p.Pos)
+	return nil
+}
+
+
+func (h *handler) String() string {
+	return "TestHandler"
+}
+
+func Readini() {
+	CurrentPath, _ = GetCurrentPath()
+	h, _ := log.NewRotatingFileHandler(CurrentPath+"Consumer.log", 40*1024*1024, 10)
+	logger = log.NewDefault(h)
+	logger.SetLevelByName("info")
+	inicfg, err := goconfig.LoadConfigFile(CurrentPath + "config.ini")
+	if err != nil {
+		logger.Errorln("读取配置文件失败1[config.ini]",err.Error())
+		return
+	}
+
+	PosChan = make(chan Posname,10000)
+     go runsetini()
+
+	host = inicfg.MustValue("canal", "host", "127.0.0.1")
+	port = inicfg.MustInt("canal", "port", 3306)
+	user = inicfg.MustValue("canal", "user", "root")
+	password = inicfg.MustValue("canal", "password", "root")
+
+	flavor = inicfg.MustValue("canal", "flavor", "mariadb")
+	serverID = inicfg.MustInt("canal", "serverID", 101)
+	mysqldump = inicfg.MustValue("canal", "mysqldump", "mysqldump")
+	tables = inicfg.MustValue("canal", "tables", "")
+	tableDB = inicfg.MustValue("canal", "tableDB", "")
+	ignoreTables = inicfg.MustValue("canal", "ignoreTables", "")
+
+	startName = inicfg.MustValue("canal", "startName", "")
+	startPos = uint(inicfg.MustInt("canal", "startPos", 0))
+	endName = startName
+	endPos = uint32(startPos)
+	heartbeatPeriod = inicfg.MustInt("canal", "heartbeatPeriod", 60)
+	readTimeout = inicfg.MustInt("canal", "readTimeout", 90)
+
+	nodename = inicfg.MustValue("canal", "nodename", "")
+	nodevalue = inicfg.MustValue("canal", "nodevalue", "1")
+
+	showlog = inicfg.MustInt("canal", "showlog", 1)
+	onetimerows = inicfg.MustValue("canal", "onetimerows", "1000")
+
+	KafkaEnable = inicfg.MustBool("kafka", "kafkaEnable", false)
+
+	kafka_host = inicfg.MustValue("kafka", "kafka_host", "127.0.0.1")
+	kafka_port = inicfg.MustInt("kafka", "kafka_port", 9092)
+	kafka_topic = inicfg.MustValue("kafka", "kafka_topic", "kafka_go_test")
+
+	saslEnable = inicfg.MustBool("kafka", "saslEnable", false)
+	username = inicfg.MustValue("kafka", "username", "root")
+	saslpassword = inicfg.MustValue("kafka", "saslpassword", "root")
+
+	tlsEnable = inicfg.MustBool("kafka", "tlsEnable", false)
+	clientcert = inicfg.MustValue("kafka", "clientcert", "")
+	clientkey = inicfg.MustValue("kafka", "clientkey", "")
+	cacert = inicfg.MustValue("kafka", "cacert", "")
+
+
+	MqttEnable = inicfg.MustBool("mqtt", "mqttEnable", false)
+	KptCattleId = inicfg.MustValue("mqtt", "kptCattleId", "888888")
+	mqtt_nodevalue = nodevalue
+	mqtt_host = inicfg.MustValue("mqtt", "host", "127.0.0.1")
+	mqtt_port = inicfg.MustInt("mqtt", "port", 9092)
+	mqtt_path = inicfg.MustValue("mqtt", "path", "")
+	mqtt_qos = inicfg.MustInt("mqtt", "qos", 0)
+	mqtt_topic = inicfg.MustValue("mqtt", "topic", "mqtt_topic")
+	mqtt_saslEnable = inicfg.MustBool("mqtt", "saslEnable", false)
+	mqtt_username = inicfg.MustValue("mqtt", "username", "127.0.0.1")
+	mqtt_saslpassword = inicfg.MustValue("mqtt", "saslpassword", "")
+	mqtt_tlsEnable = inicfg.MustBool("mqtt", "tlsEnable", false)
+	mqtt_clientcert = inicfg.MustValue("mqtt", "clientcert", "")
+	mqtt_clientkey = inicfg.MustValue("mqtt", "clientkey", "")
+	mqtt_cacert = inicfg.MustValue("mqtt", "cacert", "")
+	mqtt_CleanSession = inicfg.MustBool("mqtt", "CleanSession", true)
+
+	ServiceName = inicfg.MustValue("Service", "ServiceName", "KPTDataService")
+	ServiceDisplayName = inicfg.MustValue("Service", "ServiceDisplayName", "KPTDataService")
+	ServiceDescription = inicfg.MustValue("Service", "ServiceDescription", "科湃腾数据同步")
+	openini()
+
+
+	file := CurrentPath +"/pos/pos.db"
+	defer slowpoke.Close(CurrentPath +"pos/pos.db")
+	keyN := []byte("startName")
+	keyP := []byte("startPos")
+
+	resN, err := slowpoke.Get(file, keyN)
+	if err != nil || string(resN) == "" {
+		logger.Error(" slowpoke.Get startName err",err,"  posname :",resN)
+	}else{
+		res, err := slowpoke.Get(file, keyP)
+		if err != nil {
+			logger.Error(" slowpoke.Get startPos err",err)
+		}else{
+			str,err :=  strconv.Atoi(string(res))
+			if err != nil || str == 0 {
+				logger.Error("strconv.Atoi err",err,"  pos :",str)
+			}else {
+				startName = string(resN)
+				startPos = uint(str)
+			}
+			logger.Info("read pos name ", startPos, startName)
+
+		}
+	}
+	logger.Info("end pos name", startPos, startName)
+
+
+}
+
+func initPos(_user, _password, _host,_dbs string, _port int)(int,string,error){
+	connecting := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", _user, _password, _host, _port, "mysql")
+	var err error
+	posdb, err = sql.Open("mysql", connecting)
+	if err == nil {
+		posdb.SetMaxOpenConns(10)
+		posdb.SetMaxIdleConns(10)
+	} else {
+		return 0,"",err
+	}
+	_, err = posdb.Exec("CREATE DATABASE IF NOT EXISTS `sqllog`")
+	posdb.Close()
+	connecting = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", _user, _password, _host, _port, "sqllog")
+	posdb, err = sql.Open("mysql", connecting)
+	if err == nil {
+		posdb.SetMaxOpenConns(10)
+		posdb.SetMaxIdleConns(10)
+	} else {
+		return 0,"",err
+	}
+	_, _ = posdb.Exec("CREATE TABLE IF NOT EXISTS `mypos` (`id` INT(11) NOT NULL ,`pos` INT(11) DEFAULT 0,`file` VARCHAR(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8;")
+	rows := posdb.QueryRow("select pos,file from mypos where id = 0 ")
+
+		pos := 0
+		file := ""
+		if err := rows.Scan(&pos, &file); err != nil {
+			_,err = posdb.Exec("insert mypos(id,pos,file) value (0,0,'')")
+		}
+	return pos,file,err
+}
+
+func openini() {
+
+	CurrentPath, _ = GetCurrentPath()
+	var err error
+	inicfg, err = goconfig.LoadConfigFile(CurrentPath + "config.ini")
+	if err != nil {
+		logger.Errorln("读取配置文件失败[config.ini]",err.Error())
+		return
+	}
+}
+
+func setini(name string, pos uint32) {
+	posname := Posname{name,pos}
+	PosChan <- posname
+}
+
+
+func runsetini() {
+	for{
+		posname := <-PosChan
+		logger.Info("binlog pos :",posname.pos," binlog posname :",posname.name)
+		CurrentPath, _ = GetCurrentPath()
+		inicfg.SetValue("canal", "startName", posname.name)
+		inicfg.SetValue("canal", "startPos", strconv.Itoa(int(posname.pos)))
+
+		file := CurrentPath +"pos/pos.db"
+
+		err :=slowpoke.Set(file, []byte("startName"), []byte(posname.name))
+		if err != nil {
+			logger.Error(" slowpoke.Set startName err",err)
+		}
+		err  = slowpoke.Set(file, []byte("startPos"),[]byte(strconv.Itoa(int(posname.pos))))
+		if err != nil {
+			logger.Error(" slowpoke.Set startPos err",err)
+		}
+		err = slowpoke.Close(CurrentPath +"pos/pos.db")
+		if err != nil {
+			logger.Error(" slowpoke.Close err",err)
+		}
+	}
+
+
+}
+//func saveini() {
+//
+//
+//}
+
+func writeini(name string, pos uint32) {
+
+	CurrentPath, _ = GetCurrentPath()
+	inicfg, err := goconfig.LoadConfigFile(CurrentPath + "config.ini")
+	if err != nil {
+		logger.Infoln("读取配置文件失败[config.ini]")
+		return
+	}
+	inicfg.SetValue("canal", "startName", name)
+	inicfg.SetValue("canal", "startPos", strconv.Itoa(int(pos)))
+	err = goconfig.SaveConfigFile(inicfg, CurrentPath+"config.ini")
+	if err != nil {
+		logger.Infoln("保存配置文件失败[config.ini]")
+		return
+	}
+}
+
+func writeini1(name string, pos uint32) {
+	CurrentPath, _ = GetCurrentPath()
+	inicfg, err := goconfig.LoadConfigFile(CurrentPath + "config.ini")
+	if err != nil {
+		logger.Infoln("读取配置文件失败[config.ini]")
+		return
+	}
+	inicfg.SetValue("canal", "startName", name)
+	inicfg.SetValue("canal", "startPos", strconv.Itoa(int(pos)))
+	err = goconfig.SaveConfigFile(inicfg, CurrentPath+"config.ini")
+	if err != nil {
+		logger.Infoln("保存配置文件失败[config.ini]")
+		return
+	}
+}
+
+
+func writePosini(name string, pos uint32) {
+	println("pos",pos)
+	tx,_ := posdb.Begin()
+
+ 	_,err :=tx.Exec("update mypos set  pos = ? , file = ? where id = 0",pos,name)
+ 	if err != nil{
+ 		tx.Rollback()
+	}else {
+		tx.Commit()
+	}
+	//CurrentPath, _ = GetCurrentPath()
+	//inicfg, err := goconfig.LoadConfigFile(CurrentPath + "configPos.ini")
+	//if err != nil {
+	//	logger.Errorln("读取配置文件失败[configPos.ini]")
+	//	return
+	//}
+	//inicfg.SetValue("canal", "startName", name)
+	//inicfg.SetValue("canal", "startPos", strconv.Itoa(int(pos)))
+	//err = goconfig.SaveConfigFile(inicfg, CurrentPath+"configPos.ini")
+	//if err != nil {
+	//	logger.Errorln("保存配置文件失败[configPos.ini]")
+	//	return
+	//}
+}
+
+func IntToBytes(n int) []byte {
+	data := int64(n)
+	bytebuf := bytes.NewBuffer([]byte{})
+	binary.Write(bytebuf, binary.BigEndian, data)
+	return bytebuf.Bytes()
+}
+func BytesToInt(bys []byte) int {
+	bytebuff := bytes.NewBuffer(bys)
+	var data int64
+	binary.Read(bytebuff, binary.BigEndian, &data)
+	return int(data)
+}
+func RunService() {
+	//Readini()
+	var err error
+	DqueueIndex,err = OpenIndexFile(CurrentPath+ "logs",100000,10000,false)
+	if err != nil {
+		fmt.Printf("create DqueueIndex err %v", err)
+		os.Exit(1)
+	}
+	cfg := canal.NewDefaultConfig()
+	cfg.Addr =  fmt.Sprintf("%s:%d", host, port)
+	cfg.User = user
+	cfg.Password = password
+	cfg.Flavor = flavor
+	cfg.UseDecimal = true
+
+	cfg.ReadTimeout = time.Duration(readTimeout) * time.Second
+	cfg.HeartbeatPeriod = time.Duration(heartbeatPeriod) * time.Second
+	cfg.ServerID = uint32(serverID)
+	cfg.Dump.ExecutionPath = CurrentPath + mysqldump
+	cfg.Dump.DiscardErr = false
+	cfg.Dump.MaxAllowedPacketMB = 500
+	//cfg.Dump.TableDB = "tmrwatch"
+	c, err := canal.NewCanal(cfg)
+	if err != nil {
+		fmt.Printf("create canal err %v", err)
+		os.Exit(1)
+	}
+	if len(ignoreTables) > 0 {
+		subs := strings.Split(ignoreTables, ",")
+		for _, sub := range subs {
+			if seps := strings.Split(sub, "."); len(seps) == 2 {
+				c.AddDumpIgnoreTables(seps[0], seps[1])
+			}
+		}
+	}
+
+	if len(tables) > 0 && len(tableDB) > 0 {
+		subs := strings.Split(tables, ",")
+		c.AddDumpTables(tableDB, subs...)
+	} else if len(tableDB) > 0 {
+		subs := strings.Split(tableDB, ",")
+		c.AddDumpDatabases(subs...)
+	}
+
+	c.SetEventHandler(&handler{})
+
+	startPos_ := mysql.Position{
+		Name: startName,
+		Pos:  uint32(startPos),
+	}
+	ctx := context.Background()
+	ctx, cancel := context.WithCancel(ctx)
+
+	go func() {
+		if !(startPos > 0) {
+			initDB()
+			//SqlBitcask.DeleteAll()
+			//SqlBitcask.Merge()
+			insertEmpty()
+		}
+		err = c.RunFrom(startPos_)
+		if err != nil {   //出错后,将重头开始上传
+			fmt.Printf("start canal err %v", err)
+			logger.Error("start canal err %v", err)
+			c.Close()
+			c, err := canal.NewCanal(cfg)
+			if err != nil {
+				fmt.Printf("create canal err %v", err)
+				os.Exit(1)
+			}
+			if len(ignoreTables) > 0 {
+				subs := strings.Split(ignoreTables, ",")
+				for _, sub := range subs {
+					if seps := strings.Split(sub, "."); len(seps) == 2 {
+						c.AddDumpIgnoreTables(seps[0], seps[1])
+					}
+				}
+			}
+
+			if len(tables) > 0 && len(tableDB) > 0 {
+				subs := strings.Split(tables, ",")
+				c.AddDumpTables(tableDB, subs...)
+			} else if len(tableDB) > 0 {
+				subs := strings.Split(tableDB, ",")
+				c.AddDumpDatabases(subs...)
+			}
+
+			c.SetEventHandler(&handler{})
+
+
+			ctx := context.Background()
+			ctx, cancel = context.WithCancel(ctx)
+			startPos_ = mysql.Position{
+				Name: "",
+				Pos:  0,
+			}
+			initDB()
+			insertEmpty()
+			err = c.RunFrom(startPos_)
+			logger.Error("start canal err second %v", err)
+		}
+
+	}()
+	//监听
+	//ctxListen := context.Background()
+	//ctxListen, cancelListen := context.WithCancel(ctxListen)
+	//go func() {
+	//	ticker := time.Tick(60 * time.Second)
+	//	for  {
+	//		select {
+	//		case <-ticker:
+	//			if time.Since(insertlog_lasttime) > 60*time.Second  && Exectx != nil {
+	//
+	//				err := Exectx.Commit()
+	//				Exectx = nil
+	//				if err != nil {
+	//					fmt.Println("Exectx.Commit()ticker err:", err)
+	//				}
+	//				insertlog_lasttime = time.Now()
+	//			}
+	//			case  <-ctxListen.Done():
+	//				if  Exectx != nil {
+	//
+	//					err := Exectx.Commit()
+	//					Exectx = nil
+	//					if err != nil {
+	//						fmt.Println("Exectx.Commit()ticker err:", err)
+	//					}
+	//					insertlog_lasttime = time.Now()
+	//					fmt.Println("Exectx.Commit()tickerEXIT:", err)
+	//					return
+	//				}
+	//
+	//		}
+	//	}
+	//
+	//}()
+	if KafkaEnable {
+		go Kafka_producerDB(ctx)
+	}else if MqttEnable {
+		go Mqtt_producerDB(ctx)
+	}
+
+	Ch = make(chan int, 1)
+	<-Ch
+	//cancelListen()
+	cancel()
+	DqueueIndex.CloseIndex()
+	//setini(endName,endPos)
+	//writeini(endName,endPos)
+	fmt.Println("程序被关闭 ")
+	c.Close()
+}

+ 434 - 0
kpt/kafka.go

@@ -0,0 +1,434 @@
+package kpt
+
+import (
+	"context"
+	"crypto/tls"
+	"crypto/x509"
+	"fmt"
+	"github.com/Shopify/sarama"
+	"github.com/Unknwon/goconfig"
+	"github.com/siddontang/go-log/log"
+	"io/ioutil"
+	"os"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
+)
+
+var (
+	kafka_host       string
+	kafka_port       int
+	kafka_topic       string
+	saslEnable  bool
+	username    string
+	saslpassword    string
+	tlsEnable   bool
+	clientcert  string
+	clientkey   string
+	cacert      string
+
+	Offset      int64
+
+	Breaki  int
+	onetimerows string
+	onetimerowsMqtt string
+)
+
+func Kafka_producer(msgs string) bool{
+	config := sarama.NewConfig()
+	config.Producer.RequiredAcks = sarama.WaitForAll
+	config.Producer.Partitioner = sarama.NewRandomPartitioner
+	config.Producer.Return.Successes = true
+	config.Producer.Return.Errors = true
+	config.Version = sarama.V0_11_0_2
+	var Address = []string{"127.0.0.1:9092"}
+	client, err := sarama.NewClient(Address, config)
+	if err != nil {
+		log.Fatalf("unable to create kafka client: %q", err)
+		return false
+	}
+	producer, err := sarama.NewSyncProducerFromClient(client)
+	if err != nil {
+		fmt.Printf("producer_test create producer error :%s\n", err.Error())
+		return false
+	}
+	defer producer.Close()
+	partition, offset,err := producer.SendMessage(&sarama.ProducerMessage{Topic: "kafka_go_test", Key: sarama.StringEncoder("go_test"), Value: sarama.StringEncoder(msgs)})
+	if err!=nil {
+		log.Printf("send message(%s) err=%s \n", msgs, err)
+		return false
+	}else {
+		fmt.Fprintf(os.Stdout, msgs + "发送成功,partition=%d, offset=%d \n", partition, offset)
+	}
+	return true
+}
+
+type Log struct {
+	id   int64
+	sql string
+}
+type LogCou struct {
+	cou   int64
+}
+func Kafka_producerDB(ctx context.Context) {
+	//var id int
+	//var ssql string
+	//var mydbe  *sql.DB
+	//ssql = ""
+	fmt.Println("kafka 启动")
+	errortimes := 0
+	config := sarama.NewConfig()
+	config.Producer.RequiredAcks = sarama.WaitForAll
+	config.Producer.Partitioner = sarama.NewRandomPartitioner
+	config.Producer.Return.Successes = true
+	config.Producer.Return.Errors = true
+
+	if saslEnable {
+		config.Net.SASL.Enable = true
+		config.Net.SASL.User = username
+		config.Net.SASL.Password = saslpassword
+	}
+
+	if tlsEnable {
+		//sarama.Logger = log.New(os.Stdout, "[sarama] ", log.LstdFlags)
+		tlsConfig, err := genTLSConfig(clientcert, clientkey, cacert)
+		if err != nil {
+			log.Fatal(err)
+		}
+		config.Net.TLS.Enable = true
+		config.Net.TLS.Config = tlsConfig
+	}
+
+	config.Version = sarama.V0_11_0_2
+	var Address = []string{kafka_host + ":" + strconv.Itoa(kafka_port)}
+    openKafka:
+	client, err := sarama.NewClient(Address, config)
+	if err != nil {
+		logger.Errorf("unable to create kafka client: %q \r\n", err)
+		time.Sleep(1 * time.Second)
+		goto openKafka
+	}
+	producer, err := sarama.NewSyncProducerFromClient(client)
+	if err != nil {
+		logger.Errorf("unable to create kafka producer: %q \r\n", err)
+		time.Sleep(1 * time.Second)
+		if client != nil {
+			err = client.Close()
+		}
+		goto openKafka
+	}
+/***
+    openDb:
+	if mydbe != nil {
+		mydbe.Close()
+		mydbe = nil
+	}
+	if deletestmt != nil {
+		deletestmt.Close()
+		deletestmt = nil
+	}
+	mydbe, err = GetmyDbsConnect(user , password, host, port, "sqllog")
+	if err != nil {
+		logger.Errorf("Error opening DBS :%s \n", err)
+		time.Sleep(1 * time.Second)
+		goto openDb
+	}
+***/
+	for {
+		select {
+		case <-ctx.Done():
+			fmt.Println("kafka 退出")
+			return
+		default:
+			//参数绑定,可以避免sql注入
+			if errortimes>10 {
+				errortimes = 0
+				if producer != nil {
+					err = producer.Close()
+				}
+				if client != nil {
+					err = client.Close()
+				}
+				goto openKafka
+			}
+			msgs := make([]*sarama.ProducerMessage, 0)
+			int_, err := strconv.Atoi(onetimerows)
+			if err==nil{
+			}else {
+				fmt.Println("转换onetimerows错误 \r\n",  err.Error())
+			}
+			PopPeeks,err,full,null := DqueueIndex.PopPeeksV2(int_)
+			if err != nil{
+				fmt.Println("PopPeeks,err ", err)
+			}
+			//fmt.Println("PopPeeks len ", len(PopPeeks),PopPeeks)
+			if len(PopPeeks)==0 {
+				time.Sleep(time.Second)
+				continue
+			}
+
+			if len(PopPeeks) < int_ && time.Since(insertlog_lasttime) < 10*time.Second{
+				time.Sleep(time.Second)
+				continue
+			}
+
+			//fmt.Println("PopPeeks len ", len(PopPeeks),string(PopPeeks[0]),string(PopPeeks[len(PopPeeks)-1]))
+			for i:= 0;i< len(PopPeeks); i++ {
+				msg := &sarama.ProducerMessage{Topic: kafka_topic, Key: sarama.StringEncoder(""),
+					Value: sarama.StringEncoder(string(PopPeeks[i]))}
+				msgs = append(msgs, msg)
+			}
+
+			if len(msgs)>0 {
+				err = producer.SendMessages(msgs)
+				//fmt.Println("发送成功 ,发送数 ", len(msgs))
+				if err != nil {
+					logger.Errorf("send message err=%s \r\n",  err.Error())
+					errortimes ++
+				} else{
+					if !full && null{
+						for i := 0;i<len(msgs)+1;i++{
+							_, _ = DqueueIndex.PopOneIndex()
+							if showlog >0 {
+								//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()1",string(pop),err)
+							}
+							//
+						}
+					}else {
+						for i := 0;i<len(msgs);i++{
+							_, _ = DqueueIndex.PopOneIndex()
+							if showlog >0 {
+								//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()2",string(pop),err)
+							}
+						}
+						logger.Infof("发送成功 , 发送数 %d \r\n",  len(msgs))
+					}
+					insertlog_lasttime = time.Now()
+				}
+			}else{
+				logger.Errorf("写指针为空 \r\n",  err)
+			}
+			//}else {
+			//	logger.Errorf("打开文件为空 \r\n",  err)
+			//}
+
+			//if SqlBitcask!= nil {
+			//	currentWrite_, err := SqlBitcask.Get([]byte("currentWrite"))
+			//	//fmt.Printf("发送成功currentWrite_ , id = %d, 发送数 %d \r\n",currentWrite_)
+			//	if err == nil{
+			//		currentRead := -1
+			//		currentRead_, err := SqlBitcask.Get([]byte("currentRead"))
+			//		//fmt.Printf("currentRead_ , id = %d, 发送数 %d \r\n",currentRead)
+			//		if err == nil{
+			//			currentRead = BytesToInt(currentRead_)
+			//		}else {
+			//			logger.Errorf("读currentRead错误 \r\n",  err.Error())
+			//		}
+			//		currentWrite := BytesToInt(currentWrite_)
+			//		sendcount := currentWrite-currentRead
+			//		int_, err := strconv.Atoi(onetimerows)
+			//		if err==nil{
+			//			if (sendcount>int_){
+			//				sendcount = int_
+			//			}
+			//		}else {
+			//			logger.Errorf("转换onetimerows错误 \r\n",  err.Error())
+			//		}
+			//		oldread := currentRead+1
+			//		msgs := make([]*sarama.ProducerMessage, 0)
+			//		for i := 0; i < sendcount; i++ {
+			//			currentRead++
+			//			sql_, err := SqlBitcask.Get(IntToBytes(currentRead))
+			//			if err==nil{
+			//				msg := &sarama.ProducerMessage{Topic: kafka_topic, Key: sarama.StringEncoder(""), Value: sarama.StringEncoder(string(sql_[:]))}
+			//				msgs = append(msgs, msg)
+			//
+			//			}else {
+			//				logger.Errorf("读%d 数据错误 \r\n", currentRead,  err.Error())
+			//			}
+			//		}
+			//		if len(msgs)>0 {
+			//			//err = producer.SendMessages(msgs)
+			//
+			//			if err != nil {
+			//				logger.Errorf("send message err=%s \r\n",  err.Error())
+			//				errortimes ++
+			//			} else {
+			//				if showlog>0 {
+			//					fmt.Printf("发送成功 , id = %d, 发送数 %d currentRead %d \r\n", id, len(msgs),currentRead)
+			//				}
+			//				logger.Infof("发送成功 , id = %d, 发送数 %d readfrom  %d currentRead %d \r\n", id, len(msgs),oldread,currentRead)
+			//
+			//				err = SqlBitcask.Put([]byte("currentRead"), IntToBytes(currentRead))
+			//				if err !=nil {
+			//					logger.Errorf("写currentRead %d 错误  \r\n", currentRead, err.Error())
+			//				}
+			//				for i := 0; i < sendcount; i++ {
+			//					err = SqlBitcask.Delete(IntToBytes(oldread+i))
+			//					if err!=nil{
+			//						logger.Errorf("删除read错误 %d \r\n", oldread+i, err.Error())
+			//					}
+			//				}
+			//			}
+			//		}
+			//	}else{
+			//		logger.Errorf("写指针为空 \r\n",  err)
+			//	}
+			//}else {
+			//	logger.Errorf("打开文件为空 \r\n",  err)
+			//}
+			//time.Sleep(1 * time.Second)
+		}
+
+	}
+
+}
+
+var (
+	wg sync.WaitGroup
+)
+
+func Kafka_Consumer() {
+	//创建消费者
+	Breaki = 0
+	for ;; {
+		func() {
+			CurrentPath, _ = GetCurrentPath()
+
+			inicfg1, err := goconfig.LoadConfigFile(CurrentPath + "config.ini")
+			if err != nil {
+				fmt.Println("读取配置文件失败[config.ini]")
+				return
+			}
+			kafka_host = inicfg1.MustValue("kafka", "kafka_host", "127.0.0.1")
+			kafka_port = inicfg1.MustInt("kafka", "kafka_port", 9092)
+			kafka_topic = inicfg1.MustValue("kafka", "kafka_topic", "kafka_go_test")
+
+			saslEnable = inicfg1.MustBool("kafka", "saslEnable", false)
+			username = inicfg1.MustValue("kafka", "username", "root")
+			saslpassword = inicfg1.MustValue("kafka", "saslpassword", "root")
+
+			tlsEnable = inicfg1.MustBool("kafka", "tlsEnable", false)
+			clientcert = inicfg1.MustValue("kafka", "clientcert", "")
+			clientkey = inicfg1.MustValue("kafka", "clientkey", "")
+			cacert = inicfg1.MustValue("kafka", "cacert", "")
+
+			ServiceName = inicfg1.MustValue("Service", "ServiceName", "KPTDataService")
+			ServiceDisplayName = inicfg1.MustValue("Service", "ServiceDisplayName", "KPTDataService")
+			ServiceDescription = inicfg1.MustValue("Service", "ServiceDescription", "科湃腾数据同步")
+
+			Offset = inicfg1.MustInt64("kafka", "Offset", sarama.OffsetOldest)
+			//fmt.Println(cfg)
+			Readini()
+			config := sarama.NewConfig()
+			if saslEnable {
+				config.Net.SASL.Enable = true
+				config.Net.SASL.User = username
+				config.Net.SASL.Password = saslpassword
+			}
+
+			if tlsEnable {
+				//sarama.Logger = log.New(os.Stdout, "[sarama] ", log.LstdFlags)
+				tlsConfig, err := genTLSConfig(clientcert, clientkey, cacert)
+				if err != nil {
+					log.Fatal(err)
+				}
+				config.Net.TLS.Enable = true
+				config.Net.TLS.Config = tlsConfig
+			}
+			linkstr := kafka_host + ":" + strconv.Itoa(kafka_port)
+			consumer, err := sarama.NewConsumer(strings.Split(linkstr, ","), config)
+			defer consumer.Close()
+			if err != nil {
+				logger.Errorf(fmt.Sprintf("Failed to start consumer: %s", err))
+				return
+			}
+
+			//设置分区
+			partitionList, err := consumer.Partitions(kafka_topic)
+			if err != nil {
+				logger.Errorf("Failed to get the list of partitions: ", err)
+				return
+			}
+
+			//循环分区
+			for partition := range partitionList {
+				func() {
+					pc, err := consumer.ConsumePartition(kafka_topic, int32(partition), Offset)
+					if err != nil {
+						logger.Errorf("Failed to start consumer for partition %d: %s\n", partition, err)
+						return
+					}
+
+					wg.Add(1)
+					go func(pc sarama.PartitionConsumer) {
+						testdb , er := GetmyDbsConnect(user, password, host, port, tableDB)
+						defer testdb.Close()
+						if er != nil {
+							logger.Errorf("dbs can not connect %s\n",er)
+						}else{
+
+							for msg := range pc.Messages() {
+								sqlstrmsg := string(msg.Value)
+								//fmt.Println(string(sqlstrmsg))
+								tx, err := testdb.Begin()
+								if err != nil {
+									fmt.Println("%q", err)
+								}else {
+									for _, sqlline := range strings.Split(sqlstrmsg, "\n") {
+										err = ExecT(tx, sqlline)
+										if err == nil {
+											//logger.Infoln(fmt.Sprintf("Partition:%d, Offset:%d, Key:%s, Value:%s", msg.Partition, msg.Offset, string(msg.Key), sqlline))
+										} else {
+											logger.Errorln(err.Error() + "---" + sqlline)
+										}
+									}
+
+								}
+								tx.Commit()
+								logger.Infof(fmt.Sprintf("Partition:%d, Offset:%d, Key:%s  \n\t", msg.Partition, msg.Offset, string(msg.Key)))
+								Offset = msg.Offset + 1
+								inicfg1.SetValue("kafka", "Offset", strconv.FormatInt(Offset, 10))
+								goconfig.SaveConfigFile(inicfg1, CurrentPath+"config.ini")
+								if Breaki >0 {
+									break
+								}
+							}
+						}
+						defer pc.AsyncClose()
+						defer wg.Done()
+					}(pc)
+				}()
+			}
+			wg.Wait()
+			time.Sleep(1 * time.Second)
+			logger.Errorln("错误重启")
+			consumer.Close()
+		}()
+    }
+}
+
+func genTLSConfig(clientcertfile, clientkeyfile, cacertfile string) (*tls.Config, error) {
+	// load client cert
+	clientcert, err := tls.LoadX509KeyPair(clientcertfile, clientkeyfile)
+	if err != nil {
+		return nil, err
+	}
+
+	// load ca cert pool
+	cacert, err := ioutil.ReadFile(cacertfile)
+	if err != nil {
+		return nil, err
+	}
+	cacertpool := x509.NewCertPool()
+	cacertpool.AppendCertsFromPEM(cacert)
+
+	// generate tlcconfig
+	tlsConfig := tls.Config{}
+	tlsConfig.RootCAs = cacertpool
+	tlsConfig.Certificates = []tls.Certificate{clientcert}
+	tlsConfig.BuildNameToCertificate()
+	// tlsConfig.InsecureSkipVerify = true // This can be used on test server if domain does not match cert:
+	return &tlsConfig, err
+}

+ 602 - 0
kpt/mqtt.go

@@ -0,0 +1,602 @@
+package kpt
+
+import (
+	"context"
+	"crypto/tls"
+	"flag"
+	"fmt"
+	MQTT "github.com/eclipse/paho.mqtt.golang"
+	"github.com/golang/snappy"
+	"github.com/vmihailenco/msgpack/v5"
+	"log"
+	"os"
+	"strconv"
+	"strings"
+	"time"
+)
+
+var (
+	mqtt_host         string
+	mqtt_port         int
+	mqtt_path         string
+	mqtt_topic        string
+	mqtt_qos          int
+	mqtt_saslEnable   bool
+	mqtt_username     string
+	mqtt_saslpassword string
+	mqtt_tlsEnable    bool
+	mqtt_clientcert   string
+	mqtt_clientkey    string
+	mqtt_cacert       string
+	mqtt_nodevalue    string
+	mqtt_CleanSession  bool
+
+	mqtt_Breaki      int
+	mqtt_onetimerows string
+
+	temp_i int = 0
+)
+
+type SqlItem struct {
+	Sql string
+}
+type TransferItem struct {
+	Ftype   string
+	Content []byte
+}
+
+func SqlItemBuilder() interface{} {
+	return &SqlItem{}
+}
+
+func onMessageReceived(client MQTT.Client, message MQTT.Message) {
+	err := DqueueIndexMqtt.PushOneIndex(message.Payload()[:])
+	if err != nil {
+		logger.Errorln("DqueueIndexMqtt.PushOneIndex,err", err)
+	}
+}
+
+func Mqtt_producerDB(ctx context.Context) {
+	fmt.Println("Mqtt Clint 启动")
+	retained := flag.Bool("retained", false, "Are the messages sent with the retained flag")
+	connOpts := MQTT.NewClientOptions() // This line is different, we use the constructor function instead of creating the instance ourselves.
+	connOpts.SetClientID(mqtt_nodevalue)
+	connOpts.SetMaxReconnectInterval(1 * time.Second)
+	connOpts.SetCleanSession(mqtt_CleanSession)
+	connOpts.AutoReconnect = true
+	brokerURL := fmt.Sprintf("tcp://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	int_, err := strconv.Atoi(onetimerows)
+	if err == nil {
+	} else {
+		logger.Errorln("转换onetimerowsMqtt错误 \r\n", err.Error())
+	}
+	if mqtt_saslEnable {
+		if mqtt_username != "" {
+			connOpts.SetUsername(mqtt_username)
+			if mqtt_saslpassword != "" {
+				connOpts.SetPassword(mqtt_saslpassword)
+			}
+		}
+	}
+	if mqtt_tlsEnable {
+		cer, err := tls.LoadX509KeyPair(mqtt_clientcert, mqtt_clientkey)
+		if err != nil {
+			println("LoadX509KeyPair err :",err.Error())
+		}
+
+		connOpts.SetTLSConfig(&tls.Config{Certificates: []tls.Certificate{cer}})
+		brokerURL = fmt.Sprintf("tcps://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	}
+
+	connOpts.OnConnect = func(c MQTT.Client) {
+		//if token := c.Subscribe(mqtt_topic, byte(mqtt_qos), onMessageReceived); token.Wait() && token.Error() != nil {
+		//	panic(token.Error())
+		//}
+	}
+	connOpts.OnConnectionLost = func (c MQTT.Client, reason error) {
+		println("onlost reason",reason.Error())
+	}
+
+
+
+	connOpts.AddBroker(brokerURL)
+	//connOpts.OnConnect = func(c MQTT.Client) {
+	//	if token := c.Subscribe(mqtt_topic, byte(mqtt_qos), onMessageReceived); token.Wait() && token.Error() != nil {
+	//		//panic(token.Error())
+	//		fmt.Println("panic(token.Error())",token.Error())
+	//	}else{
+	//		//fmt.Println("",token,token.Error(),mqtt_topic)
+	//	}
+	//
+	//}
+
+	mqttClient := MQTT.NewClient(connOpts)
+	if token := mqttClient.Connect(); token.Wait() && token.Error() != nil {
+		panic(token.Error())
+	}
+	logger.Errorln("[MQTT] Connected",)
+
+	for {
+		select {
+		case <-ctx.Done():
+			fmt.Println("mqtt 退出")
+			return
+		default:
+			PopPeeks, err, full, null := DqueueIndex.PopPeeksV2(int_)
+			if err != nil {
+				fmt.Println("PopPeeks,err ", err)
+			} else {
+				if len(PopPeeks) == 0 {
+					if !full && null {
+						DqueueIndex.PopOneIndex()
+					}
+					time.Sleep(time.Second)
+					continue
+				}
+				//fmt.Println("PopPeeks==",string(PopPeeks[0]))
+				datasSlice := make([]TransferItem, len(PopPeeks))
+				for key, value := range PopPeeks {
+					//println("resql =========",string(value))
+					datasSlice[key].Content = value
+				}
+				b1, err := msgpack.Marshal(&datasSlice)
+				if err != nil {
+					panic(err)
+				}
+				//fmt.Println("encode", len(b1))
+				encode := snappy.Encode(nil, b1)
+				logger.Infoln("encode", len(encode))
+				//println("encode",len(encode))
+				token := mqttClient.Publish(mqtt_topic, byte(mqtt_qos), *retained, encode)
+				//if token.Wait() && token.Error() != nil {
+				//	fmt.Println("=============",token.Error())
+				//}
+
+				if token.Wait() && token.Error() != nil {
+					if showlog > 0 {
+						fmt.Println("	mqttClient.Publish err:", mqtt_topic, string(PopPeeks[0]), err)
+					}
+					logger.Errorln("Client.Publish err:--- ", token.Error())
+				} else {
+					temp_i++
+					//fmt.Println(temp_i)
+					logger.Infoln("Client.Publish len:--- ", len(encode))
+					if !full && null {
+						for i := 0; i < len(PopPeeks)+1; i++ {
+							_, _ = DqueueIndex.PopOneIndex()
+							if showlog > 0 {
+								//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()1", string(pop), err)
+							}
+						}
+
+					} else {
+						for i := 0; i < len(PopPeeks); i++ {
+							_, _ = DqueueIndex.PopOneIndex()
+							if showlog > 0 {
+								//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()1", string(pop), err)
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
+
+func Mq_Consumer(ctx context.Context) {
+	var err error
+
+	DqueueIndexMqtt, err = OpenIndexFile(CurrentPath+"logs", 100000, 10000, false)
+	if err != nil {
+		fmt.Printf("create DqueueIndex err %v", err)
+		os.Exit(1)
+	}
+	fmt.Println("Mqtt Clint 启动")
+	connOpts := MQTT.NewClientOptions() // This line is different, we use the constructor function instead of creating the instance ourselves.
+	connOpts.SetClientID(mqtt_nodevalue)
+	connOpts.SetMaxReconnectInterval(1 * time.Second)
+	connOpts.SetCleanSession(mqtt_CleanSession)
+	connOpts.AutoReconnect = true
+	brokerURL := fmt.Sprintf("tcp://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	if mqtt_saslEnable {
+		if mqtt_username != "" {
+			connOpts.SetUsername(mqtt_username)
+			if mqtt_saslpassword != "" {
+				connOpts.SetPassword(mqtt_saslpassword)
+			}
+		}
+	}
+	if mqtt_tlsEnable {
+		cer, err := tls.LoadX509KeyPair(mqtt_clientcert, mqtt_clientkey)
+		check(err)
+		connOpts.SetTLSConfig(&tls.Config{Certificates: []tls.Certificate{cer}})
+		brokerURL = fmt.Sprintf("tcps://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	}
+	connOpts.AddBroker(brokerURL)
+	connOpts.OnConnect = func(c MQTT.Client) {
+		if token := c.Subscribe(mqtt_topic, byte(mqtt_qos), onMessageReceived); token.Wait() && token.Error() != nil {
+			fmt.Println("panic(token.Error())", token.Error())
+		}
+
+	}
+label:
+	mqttClient := MQTT.NewClient(connOpts)
+	if token := mqttClient.Connect(); token.Wait() && token.Error() != nil {
+		if showlog > 0 {
+			fmt.Println("token.Error(),err", token.Error())
+		}
+		logger.Errorln("token.Error(),err", token.Error())
+		time.Sleep(time.Second)
+		goto label
+		//panic(token.Error())
+	}
+	log.Println("[MQTT] Connected")
+	go func() {
+		for {
+			select {
+			case <-ctx.Done():
+				fmt.Println("mqtt 退出")
+				logger.Errorln("mqtt 退出")
+				return
+			default:
+				PopPeeks, err, full, null := DqueueIndexMqtt.PopPeeksV2(1)
+				//fmt.Println("DqueueIndexMqtt.PopPeeksV2(1)",len(PopPeeks))
+				if err != nil {
+					logger.Errorln("PopPeeks,err ", err)
+				} else {
+					if len(PopPeeks) == 0 {
+						if !full && null {
+							DqueueIndexMqtt.PopOneIndex()
+						}
+						if showlog > 0 {
+							fmt.Println("PopPeeks,null,", PopPeeks)
+						}
+						time.Sleep(time.Second)
+						continue
+					}
+				//	var pop []byte
+				labelDb:
+					if mqttDb == nil {
+						mqttDb, err = GetmyDbsConnect(user, password, host, port, tableDB)
+						if err != nil {
+							logger.Errorln("GetmyDbsConnect err:", err)
+							time.Sleep(time.Second)
+							goto labelDb
+						}
+					}
+					//fmt.Println("mqttDb.Begin()")
+					tx, err := mqttDb.Begin()
+					if err == nil {
+						//fmt.Println("tx, err := mqttDb.Begin() err", err)
+						decode, _ := snappy.Decode(nil,PopPeeks[0])
+						//fmt.Println("encode", len(decode))
+						var item1 []TransferItem
+						err = msgpack.Unmarshal(decode, &item1)
+						if err != nil {
+							log.Println("Unmarshal panic(err)",err)
+						}
+						count :=0
+						str := ""
+						errstr := ""
+						for _, value := range item1 {
+							sqls :=strings.Split(string(value.Content),";")
+							for _, sql := range sqls {
+								//err = ExecT(tx, string(value.Content))
+								if sql == ""{
+									continue
+								}
+								sql = strings.Replace(sql,"\\","\\\\",-1)
+								err = ExecT(tx, sql)
+								//fmt.Println("string(value.Content)",string(value.Content))
+								if err == nil {
+									//logger.Infoln(fmt.Sprintf("Partition:%d, Offset:%d, Key:%s, Value:%s", msg.Partition, msg.Offset, string(msg.Key), sqlline))
+									//fmt.Println( "ExecT---" + string(value.Content))
+								} else {
+									logger.Errorln(err.Error() + "---" + sql)
+									count ++
+									str =string(value.Content)
+									errstr = err.Error()
+									//fmt.Println(err.Error() + "---" + string(value.Content))
+								}
+							}
+
+						}
+						if count>0{
+							count=0
+							logger.Errorln(errstr + "---" + str)
+						}
+						if showlog > 0 {
+							log.Println("PopPeeks, %d \n\t", len(item1))
+						}
+					}else {
+						if showlog > 0 {
+							log.Println("mqttDb.Begin(),err", err)
+						}
+					}
+					err = tx.Commit()
+
+					if err == nil {
+						if !full && null {
+							for i := 0; i < len(PopPeeks)+1; i++ {
+								_, _ = DqueueIndexMqtt.PopOneIndex()
+								if showlog > 0 {
+									//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()1", string(pop), err)
+								}
+							}
+						} else {
+							for i := 0; i < len(PopPeeks); i++ {
+								_, _ = DqueueIndexMqtt.PopOneIndex()
+								if showlog > 0 {
+									//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()2", string(pop), err)
+								}
+							}
+						}
+					} else {
+						logger.Errorln("tx.Commit(),err", err)
+
+						if showlog > 0 {
+							fmt.Println("tx.Commit(),err", err)
+						}
+					}
+
+				}
+
+			}
+		}
+	}()
+}
+
+func check(err error) {
+	if err != nil {
+		logger.Errorln("err :", err.Error())
+	}
+}
+
+//func (m *Client) Pub() {
+//	fmt.Println("pub")
+//	s := time.Now().String()
+//	token := m.Client.Publish("date", 0, false, s)
+//	if token.Wait() && token.Error() != nil {
+//		fmt.Println(token.Error())
+//	}
+//}
+
+//新希望
+type Xxw struct {
+	id   int64
+	xxw_sql string
+}
+func Mq_ConsumerXxw(ctx context.Context) {
+	var err error
+	DqueueIndexMqtt, err = OpenIndexFile(CurrentPath+"logs", 100000, 10000, false)
+	if err != nil {
+		fmt.Printf("create DqueueIndex err %v", err)
+		os.Exit(1)
+	}
+	fmt.Println("Mqtt Clint 启动")
+	connOpts := MQTT.NewClientOptions() // This line is different, we use the constructor function instead of creating the instance ourselves.
+	connOpts.SetClientID(mqtt_nodevalue)
+	connOpts.SetMaxReconnectInterval(1 * time.Second)
+	connOpts.SetCleanSession(mqtt_CleanSession)
+	connOpts.AutoReconnect = true
+	brokerURL := fmt.Sprintf("tcp://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	println("brokerURL",brokerURL)
+	if mqtt_saslEnable {
+		if mqtt_username != "" {
+			connOpts.SetUsername(mqtt_username)
+			if mqtt_saslpassword != "" {
+				connOpts.SetPassword(mqtt_saslpassword)
+			}
+		}
+	}
+	if mqtt_tlsEnable {
+		cer, err := tls.LoadX509KeyPair(mqtt_clientcert, mqtt_clientkey)
+		check(err)
+		connOpts.SetTLSConfig(&tls.Config{Certificates: []tls.Certificate{cer}})
+		brokerURL = fmt.Sprintf("tcps://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	}
+	connOpts.AddBroker(brokerURL)
+	connOpts.OnConnect = func(c MQTT.Client) {
+		if token := c.Subscribe(mqtt_topic, byte(mqtt_qos), onMessageReceived); token.Wait() && token.Error() != nil {
+			fmt.Println("panic(token.Error())", token.Error())
+		}
+	}
+label:
+	mqttClient := MQTT.NewClient(connOpts)
+	if token := mqttClient.Connect(); token.Wait() && token.Error() != nil {
+		if showlog > 0 {
+			fmt.Println("token.Error(),err", token.Error())
+		}
+		logger.Errorln("token.Error(),err", token.Error())
+		time.Sleep(time.Second)
+		goto label
+	}
+	log.Println("[MQTT] Connected")
+	go func() {
+		for {
+			select {
+			case <-ctx.Done():
+				fmt.Println("mqtt 退出")
+				logger.Errorln("mqtt 退出")
+				return
+			default:
+				PopPeeks, err, full, null := DqueueIndexMqtt.PopPeeksV2(1)
+				if err != nil {
+					logger.Errorln("PopPeeks,err ", err)
+				} else {
+					if len(PopPeeks) == 0 {
+						if !full && null {
+							DqueueIndexMqtt.PopOneIndex()
+						}
+						if showlog > 0 {
+							fmt.Println("PopPeeks,null,", PopPeeks)
+						}
+						time.Sleep(time.Second)
+						continue
+					}
+				labelDb:
+					if mqttDb == nil {
+						mqttDb, err = GetmyDbsConnect(user, password, host, port, tableDB)
+						if err != nil {
+							logger.Errorln("GetmyDbsConnect err:", err)
+							time.Sleep(time.Second)
+							goto labelDb
+						}
+					}
+					tx, err := mqttDb.Begin()
+					if err == nil {
+
+						count :=0
+						str := ""
+						errstr := ""
+							sqls :=strings.Split(string(PopPeeks[0]),";")
+							for _, sql := range sqls {
+								//err = ExecT(tx, string(value.Content))
+								if sql == "" || strings.Index(sql, "kptCattleId"+KptCattleId) == -1{
+									continue
+								}
+								sql = strings.Replace(sql,"kptCattleId"+KptCattleId,"",-1)
+								sql = strings.Replace(sql,"\\","\\\\",-1)
+								err = ExecT(tx, sql)
+								if err == nil {
+									logger.Infoln(" -- ",sql)
+									//fmt.Println( "ExecT---" + string(value.Content))
+								} else {
+									logger.Errorln(err.Error() + "---" + sql)
+									count ++
+									errstr = err.Error()
+									//fmt.Println(err.Error() + "---" + string(value.Content))
+								}
+							}
+
+
+						if count>0{
+							count=0
+							logger.Errorln(errstr + "---" + str)
+						}
+
+					}else {
+						if showlog > 0 {
+							log.Println("mqttDb.Begin(),err", err)
+						}
+					}
+					err = tx.Commit()
+
+					if err == nil {
+						if !full && null {
+							for i := 0; i < len(PopPeeks)+1; i++ {
+								_, _ = DqueueIndexMqtt.PopOneIndex()
+								if showlog > 0 {
+									//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()1", string(pop), err)
+								}
+							}
+						} else {
+							for i := 0; i < len(PopPeeks); i++ {
+								_, _ = DqueueIndexMqtt.PopOneIndex()
+								if showlog > 0 {
+									//fmt.Println("	pop,err:= dqueuePop.PopOneIndex()2", string(pop), err)
+								}
+							}
+						}
+					} else {
+						logger.Errorln("tx.Commit(),err", err)
+
+						if showlog > 0 {
+							fmt.Println("tx.Commit(),err", err)
+						}
+					}
+
+				}
+
+			}
+		}
+	}()
+}
+func Mqtt_producerXxw(ctx context.Context) {  //0824数据同步
+	fmt.Println("Mqtt Clint 启动1")
+
+	println(user, password, host, port, tableDB)
+	retained := flag.Bool("retained", false, "Are the messages sent with the retained flag")
+	connOpts := MQTT.NewClientOptions() // This line is different, we use the constructor function instead of creating the instance ourselves.
+	connOpts.SetClientID(mqtt_nodevalue)
+	connOpts.SetMaxReconnectInterval(1 * time.Second)
+	connOpts.SetCleanSession(mqtt_CleanSession)
+	connOpts.AutoReconnect = true
+	brokerURL := fmt.Sprintf("tcp://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	if mqtt_saslEnable {
+		if mqtt_username != "" {
+			connOpts.SetUsername(mqtt_username)
+			if mqtt_saslpassword != "" {
+				connOpts.SetPassword(mqtt_saslpassword)
+			}
+		}
+	}
+	logger.Info("开始")
+	if mqtt_tlsEnable {
+		cer, err := tls.LoadX509KeyPair(mqtt_clientcert, mqtt_clientkey)
+		check(err)
+
+		connOpts.SetTLSConfig(&tls.Config{Certificates: []tls.Certificate{cer}})
+		brokerURL = fmt.Sprintf("tcps://%s:%d%s", mqtt_host, mqtt_port, mqtt_path)
+	}
+
+	connOpts.OnConnect = func(c MQTT.Client) {
+
+	}
+
+	connOpts.AddBroker(brokerURL)
+
+	mqttClient := MQTT.NewClient(connOpts)
+	if token := mqttClient.Connect(); token.Wait() && token.Error() != nil {
+		panic(token.Error())
+	}
+	logger.Errorln("[MQTT] Connected")
+
+	for {
+		select {
+		case <-ctx.Done():
+			fmt.Println("mqtt 退出")
+			return
+		default:
+			var err error
+		labelDb:
+			if mqttDb == nil {
+				mqttDb, err = GetmyDbsConnect(user, password, host, port, tableDB)
+				if err != nil {
+					logger.Errorln("GetmyDbsConnect err:", err)
+					time.Sleep(time.Second)
+					goto labelDb
+				}
+			}
+			//fmt.Println("mqttDb.Begin()")
+			tx, err := mqttDb.Begin()
+			xxw := Xxw{}
+			row :=tx.QueryRow("select id,xxw_sql from xxw where isused=0 order by id  limit 1")
+			if err != nil{
+				logger.Info("Query err",err)
+			}
+			err =row.Scan(&xxw.id,&xxw.xxw_sql)
+
+			if xxw.id !=0 && xxw.xxw_sql !="" {
+				token := mqttClient.Publish(mqtt_topic, byte(mqtt_qos), *retained, xxw.xxw_sql)
+				if token.Wait() && token.Error() != nil {
+					logger.Info("Client.Publish err:--- ", err)
+				} else {
+					logger.Infoln("Client.Publish success")
+					_,err=tx.Exec("update xxw set isused=1 where id=?",xxw.id)
+					if err != nil{
+						logger.Info("Exec err",err)
+					}
+				}
+			}else {
+				time.Sleep(time.Second)
+			}
+		err=tx.Commit()
+		if err != nil{
+			tx.Rollback()
+			logger.Info("Commit err",err)
+		}
+
+		}
+	}
+}

+ 4 - 0
linux64.bat

@@ -0,0 +1,4 @@
+set GOARCH=amd64
+set GOOS=linux
+set GO111MODULE=on
+go build -o canalservice

BIN
logs/28ed0c26-6304-11ec-bd58-0a002700000d


BIN
logs/index


+ 57 - 0
main.go

@@ -0,0 +1,57 @@
+package main
+
+import (
+	"datasync/kpt"
+	"github.com/kardianos/service"
+	"os"
+	"time"
+)
+
+type program struct{}
+func (p *program) Start(s service.Service) error {
+	go p.run()
+	return nil
+}
+
+func (p *program) run() {
+	// 代码写在这儿
+	kpt.RunService()
+
+}
+
+func (p *program) Stop(s service.Service) error {
+	kpt.Ch<-1
+	<-time.After(time.Second * 1)
+	return nil
+}
+
+/**
+* MAIN函数,程序入口
+ */
+
+func main() {
+	kpt.Readini()
+	svcConfig := &service.Config{
+		Name:        kpt.ServiceName, //服务显示名称
+		DisplayName: kpt.ServiceDisplayName, //服务名称
+		Description: kpt.ServiceDescription, //服务描述
+		Dependencies: []string{"TMRWatchDB"},
+	}
+
+	prg := &program{}
+	s, _ := service.New(prg, svcConfig)
+
+	if len(os.Args) > 1 {
+		if os.Args[1] == "install" {
+			s.Install()
+			return
+		}
+
+		if os.Args[1] == "remove" {
+			s.Uninstall()
+			return
+		}
+	}
+
+	_ = s.Run()
+}

BIN
mysqldump.exe


+ 20 - 0
pem/bbbc7ee0f6-certificate.pem.crt

@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIVAJQp/5SVn7nv+oppQUMeh+DabQ3rMA0GCSqGSIb3DQEB
+CwUAME0xSzBJBgNVBAsMQkFtYXpvbiBXZWIgU2VydmljZXMgTz1BbWF6b24uY29t
+IEluYy4gTD1TZWF0dGxlIFNUPVdhc2hpbmd0b24gQz1VUzAeFw0yMDA1MjEwMjEw
+MThaFw00OTEyMzEyMzU5NTlaMB4xHDAaBgNVBAMME0FXUyBJb1QgQ2VydGlmaWNh
+dGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKacvIZgby5JBc9yZI
+vzjXIwsVWiz0mpVqjizGiykUluQyp5FG5kxVb1Wt875j9y8rceScilYQJjJyU/Ui
+nuZQzTRZ68QKCv7MWmWAqXVeOh3veu8U/JACDdFLs+NB4VBdkae2lJXBlZ/dW8AY
+TD/CcgyPPTnbeMd69rQXQBdmTvMBLx5LFVmI24slR/B/g9NjyGNyT9P8HRDCy3gE
+lM4rywh5HB2/LnWdRYfJEMB1/RJo2Txz0Hbw5kLEZH/Cg22Yp9IwHXVChX8Frtty
+3Hu3YEzM8Ldm4XN8VNtNbkYlG6//waZGShgVRF3KgjkwGLbaVmqLmADZm7jnbMEc
+og/ZAgMBAAGjYDBeMB8GA1UdIwQYMBaAFNHSvWL6euWr1wTySCJ18Y1dIHdUMB0G
+A1UdDgQWBBQsqn3Ys/9JXlH1mxXf7oLfpNrpqDAMBgNVHRMBAf8EAjAAMA4GA1Ud
+DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAv+j3aHR3qN+aWmUneKXGytgk
+BtM7oX8KeDhOOQU9TXKDitVujJGLGfkpJUicyGcUydL+1r7WLhr1eMIbRkiVxZcJ
+fAlH5NNNGzlc75QIa2Ej01PtEH3xjIg5T1xmYqs+vFTwJBaWTpQ8m/B0UbGCGmUw
+1/adoFbAfgci3JJC+iInPkQROZ6zKiWJypN9eR5tSsuTWWF1lYa9rYw3sNY/23v9
+1h+eMbF10bBbwgnwuc4MIn3T0jgulIz0iXAaSDtePRWoIZtgFzqiecH9UgaB11Wr
+9Xs1JaSMrOknKmjWyd+Jgy8v3FHBArzJSYxowHzbt2zNhekQxiFZX63HU84LKw==
+-----END CERTIFICATE-----

+ 27 - 0
pem/bbbc7ee0f6-private.pem.key

@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAymnLyGYG8uSQXPcmSL841yMLFVos9JqVao4sxospFJbkMqeR
+RuZMVW9VrfO+Y/cvK3HknIpWECYyclP1Ip7mUM00WevECgr+zFplgKl1Xjod73rv
+FPyQAg3RS7PjQeFQXZGntpSVwZWf3VvAGEw/wnIMjz0523jHeva0F0AXZk7zAS8e
+SxVZiNuLJUfwf4PTY8hjck/T/B0Qwst4BJTOK8sIeRwdvy51nUWHyRDAdf0SaNk8
+c9B28OZCxGR/woNtmKfSMB11QoV/Ba7bctx7t2BMzPC3ZuFzfFTbTW5GJRuv/8Gm
+RkoYFURdyoI5MBi22lZqi5gA2Zu452zBHKIP2QIDAQABAoIBAHEQp8RJOZh0FC/Z
+3ojER/vkl0xWEsaPkubyhBBjq47UuqOQ9pWkDv+qMTH59V/hs3eRJyJKI8jhjUxP
+mZ69I+n+tj+Ecv0pJyr/U7OK9QStcgtToDkY21hKX57p3Qfv0/RwaD6UwRJhgesk
+VSk9bmAvVNSuXqM51DPbmr1iD7AVazodSG+6lSiHHoL4Er/FsF/hWKNAvZddsIPM
+93VTGTjCubiCftZ+l70sMRyqM/03umF8ozdH7Yv5CD9GMzeiQxOdqdk50RhSRta/
+NtsZ5uSBmXgGzC9xsheIkBQpiXqk9BntoaA5Zfwj8iSf7nYQhM21h6elmyvAplVj
+NjQnjAECgYEA6rSCQ8Q+GPo7bXj3RdQRfIufBHpsXuHIs/alfa4BbA4aVYdZZdvN
+dCmSX5pS7Ykqohru592S6xgVy0OSo9+n5UzlE0USERXL6jDbKnWmYUI+1nkZodsx
+sQaB5iX88qh6wwfdz6v/5WQm+H/hqJwyMOoBodJGvfLecz31UTrgg8cCgYEA3Mc+
+vOWzae8ZWng9t7SsocU9kCq7ZUUakreUG+N7HRwm8oe3lwrIESVZxTYorCjvlp4X
+DYKxpwIquyMuJjHsk443kx8ookH1yHXnSd42iXYwsXLxddZxULem0gtKoRuh8QEN
+fePyby9BUuHGBpPoWWtynuXBk8l0MdDIz36jj18CgYEAlGHkjSVPQQlKcu5sHhhx
+qbS3puQjCWVjNutzOt68hWzxFyuHyE7LOGpj4M83KHd0naG7cplxnfHPLX+eAL6Q
+bfZMSP986ZJHJdsXZGOW+ZwhEATlwJ9Mbie4DiHsJhl/6zdY80dBc+v6e1aV+rwt
+OyFmQMEo+kPGgUMlieJYONcCgYEAtNkxdyLh2MDXD9i3FaiWUN11FIcsgkQdBFoE
+pOOukaXh8YFizgMy53ilFHrMzlmqCMLvN037oEaSIkErKHZ0yFoTBBzd+Cv33YFX
+OJciLW/3ayQwzsoegHQv3pcJRvePrA+ksZ7rlFAtPmta/0Bhb/4oIikqbJj06WmR
+VQbzjBkCgYByLtdZa04camHq8hvofGxrKlx7a/8GdRqJ0iZqdAbvwOmAFl8tP4z9
+DHwjCzj61+7ir8WcL2hbz1mTWyoCmuTKQsLQi8UbPCLSYDIN22s4+/iq75Bvjodx
+SF/OUL+rbL1JKPHY4T1EMW5u5t1tjDGKdVaS3ZoSVNMlT80Z2Nqbng==
+-----END RSA PRIVATE KEY-----

+ 1 - 0
pos/pos.db

@@ -0,0 +1 @@
+TMRWatchLog.0002003446

BIN
pos/pos.db.idx


+ 13 - 0
readme.txt

@@ -0,0 +1,13 @@
+1、在D:/TMRWatchWeb/TMRWatchDB/my.ini 中的[mysqld]段中添加
+server_id = 1
+log-bin = D:/TMRWatchWeb/TMRWatchDB/TMRWatchLog
+binlog-do-db=tmrwatch
+expire_logs_days=7
+binlog_format=row
+
+2、重启tmrwatchdb服务
+3、将recweight表中的mind 设为主键
+4、修改config.ini中的startPos =  ,等号后面删除,即为重置上传。
+5、修改config.ini中的nodevalue = hc ,hc改成对应牧场的编码
+6、用管理员权限运行cmd
+7、canalservice_i.bat 安装并启动服务

+ 4 - 0
win32.bat

@@ -0,0 +1,4 @@
+set GOARCH=386
+set GOOS=windows
+set GO111MODULE=on
+go build -o canalservice.exe

+ 5 - 0
win64.bat

@@ -0,0 +1,5 @@
+set GOARCH=amd64
+set GOOS=windows
+set GO111MODULE=on
+go clean
+go build -o canalservice64.exe

Diferenças do arquivo suprimidas por serem muito extensas
+ 38 - 0
y.sql


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff