From c3dd0f399fe354f18a4c36dc7c5278ef15e956b8 Mon Sep 17 00:00:00 2001
From: ft-Demo <fischertechnik-team@fischer.de>
Date: Wed, 7 Dec 2022 14:19:25 +0000
Subject: [PATCH] commit by robo pro coding

---
 FactoryCalib.blockly |   2 +-
 FactoryCalib.py      |   2 +-
 lib/File.blockly     | 206 +++++++++++++++++--------------------------
 lib/File.py          |  41 ++++-----
 4 files changed, 102 insertions(+), 149 deletions(-)

diff --git a/FactoryCalib.blockly b/FactoryCalib.blockly
index 6336768..2616f47 100644
--- a/FactoryCalib.blockly
+++ b/FactoryCalib.blockly
@@ -8,7 +8,7 @@
         <field name="instance_name">txt_label_version</field>
         <value name="value">
           <shadow type="text" id="T9nyAyJIRL7l_Nn(S-rd">
-            <field name="TEXT">Version 2022/12/07</field>
+            <field name="TEXT">Version 2022/12/07b</field>
           </shadow>
         </value>
         <next>
diff --git a/FactoryCalib.py b/FactoryCalib.py
index 1ff4478..f6e5866 100644
--- a/FactoryCalib.py
+++ b/FactoryCalib.py
@@ -27,7 +27,7 @@ from lib.VGR_NodeRED import *
 controller_name = None
 
 
-display.set_attr("txt_label_version.text", str('Version 2022/12/07'))
+display.set_attr("txt_label_version.text", str('Version 2022/12/07b'))
 controller_name = os.uname()[1]
 display.set_attr("txt_label_message2.text", str('<b>http://{}.local:1880/ui</b>'.format(controller_name)))
 initlib_log(5)
diff --git a/lib/File.blockly b/lib/File.blockly
index 98b772e..a4526fc 100644
--- a/lib/File.blockly
+++ b/lib/File.blockly
@@ -6,10 +6,11 @@
     <variable id="x=];gL%,6(c61g@B$oNn">_dps</variable>
     <variable id="Q-A7f6ROh#LwMnou6o4D">_sld</variable>
     <variable id="~VV%d%niWCJE,.rkhq+F">fileCalib</variable>
+    <variable id="5Nm_?MASd,AL%l3,/JIq">usbpath</variable>
     <variable id="q/.=RAMZ%`q2./=6O!Ce">calib_json</variable>
     <variable id="^X8gRF/HEmrlytunn7;)">ts</variable>
-    <variable id="eY(=*Fw9.P6A3KQ4bbnw">calib_data_SSC</variable>
     <variable id="?4vu=X6vfI.yt{~f3K1D">calib_map</variable>
+    <variable id="eY(=*Fw9.P6A3KQ4bbnw">calib_data_SSC</variable>
     <variable id="eiA!#mepCT:$%cp$vq+P">calib_data_HBW</variable>
     <variable id="0*rgTj2O4/)Q@i|9XZ`3">calib_data_VGR</variable>
     <variable id="}+G;?`L|R%?sGFhd=Dy@">calib_data_DPS</variable>
@@ -37,16 +38,6 @@
                 <next>
                   <block type="procedures_callnoreturn" id="+HOdbBAO$PjY@PD,sb71">
                     <mutation name="readFileFactoryCalib"/>
-                    <next>
-                      <block type="util_python" id="1?sde^K5BnwCi7g2uPi!" inline="true">
-                        <field name="value">#write copy to usb stick .../sda/FactoryCalib.json</field>
-                        <next>
-                          <block type="util_python" id="+6M}sQ`xs?.77FX78B6:" inline="true">
-                            <field name="value">print('cp /opt/ft/workspaces/FactoryCalib.json /opt/ft/workspaces/ext_usb/sda/FactoryCalib.json')&amp;#10;subprocess.Popen(['cp', '/opt/ft/workspaces/FactoryCalib.json', '/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json'])</field>
-                          </block>
-                        </next>
-                      </block>
-                    </next>
                   </block>
                 </next>
               </block>
@@ -71,7 +62,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="9Z{MMF)f,(DCE7$ihs`S" x="0" y="598">
+  <block type="procedures_defnoreturn" id="9Z{MMF)f,(DCE7$ihs`S" x="0" y="506">
     <field name="NAME">readFileFactoryCalib</field>
     <statement name="STACK">
       <block type="util_python" id="tW.WQlx#F;@qe7F:B)~N" inline="true">
@@ -202,7 +193,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="PO#vu;tpeZM?Spos_0:|" x="0" y="1262">
+  <block type="procedures_defnoreturn" id="PO#vu;tpeZM?Spos_0:|" x="0" y="1170">
     <mutation>
       <arg name="_ssc" varid="P,VPr)jxSS=4^Bb4`$z%" argid="77dJ)@CT,%;66$#+SWwt"/>
       <arg name="_hbw" varid="EZUyvqIqrfYH8;AG`eYh" argid="V*Tl-]nWEQ?=k^8N%m1%"/>
@@ -220,155 +211,116 @@
       <block type="util_python" id="v55a07Ihv}6ZEf)HyifD" inline="true">
         <field name="value">logging.log(logging.TRACE, '-')</field>
         <next>
-          <block type="util_python" id="B:j}V{X%vShCS]qXA(@9" inline="true">
-            <field name="value">controller_name = os.uname()[1]</field>
+          <block type="variables_set" id="AMxKj)3qMtW;Z0G#GYux">
+            <field name="VAR" id="5Nm_?MASd,AL%l3,/JIq">usbpath</field>
+            <value name="VALUE">
+              <block type="text" id="_JN59|*sUBzfy@yAxnGM">
+                <field name="TEXT">ext_usb/sda1</field>
+              </block>
+            </value>
             <next>
-              <block type="variables_set" id="ImO5aP!y6hBm%Tl}O@_6">
-                <field name="VAR" id="^X8gRF/HEmrlytunn7;)">ts</field>
-                <value name="VALUE">
-                  <block type="import_function_return" id="+WHPMk!,~9*Tw`}hpp9P">
-                    <mutation parentId="$)Q!],s(azR.@p50io5,"/>
-                    <field name="name">timestamp_utcnow</field>
-                    <data>$)Q!],s(azR.@p50io5,</data>
-                  </block>
-                </value>
+              <block type="util_python" id="B:j}V{X%vShCS]qXA(@9" inline="true">
+                <field name="value">controller_name = os.uname()[1]</field>
                 <next>
-                  <block type="variables_set" id="`+zWEW|6E2:z*lV2?SHV">
-                    <field name="VAR" id="eY(=*Fw9.P6A3KQ4bbnw">calib_data_SSC</field>
+                  <block type="variables_set" id="ImO5aP!y6hBm%Tl}O@_6">
+                    <field name="VAR" id="^X8gRF/HEmrlytunn7;)">ts</field>
                     <value name="VALUE">
-                      <block type="variables_get" id="W|gtHSr479+ZZ)R@Cdq2">
-                        <field name="VAR" id="P,VPr)jxSS=4^Bb4`$z%">_ssc</field>
+                      <block type="import_function_return" id="+WHPMk!,~9*Tw`}hpp9P">
+                        <mutation parentId="$)Q!],s(azR.@p50io5,"/>
+                        <field name="name">timestamp_utcnow</field>
+                        <data>$)Q!],s(azR.@p50io5,</data>
                       </block>
                     </value>
                     <next>
-                      <block type="variables_set" id="?R~(%^}9Pn@,`/h8xN2!">
-                        <field name="VAR" id="eiA!#mepCT:$%cp$vq+P">calib_data_HBW</field>
+                      <block type="variables_set" id="`+zWEW|6E2:z*lV2?SHV">
+                        <field name="VAR" id="eY(=*Fw9.P6A3KQ4bbnw">calib_data_SSC</field>
                         <value name="VALUE">
-                          <block type="variables_get" id="EotcS`xNAjwJN$|p#%Wq">
-                            <field name="VAR" id="EZUyvqIqrfYH8;AG`eYh">_hbw</field>
+                          <block type="variables_get" id="W|gtHSr479+ZZ)R@Cdq2">
+                            <field name="VAR" id="P,VPr)jxSS=4^Bb4`$z%">_ssc</field>
                           </block>
                         </value>
                         <next>
-                          <block type="variables_set" id="U0OI#+?h,`re}mIvXWcY">
-                            <field name="VAR" id="0*rgTj2O4/)Q@i|9XZ`3">calib_data_VGR</field>
+                          <block type="variables_set" id="?R~(%^}9Pn@,`/h8xN2!">
+                            <field name="VAR" id="eiA!#mepCT:$%cp$vq+P">calib_data_HBW</field>
                             <value name="VALUE">
-                              <block type="variables_get" id="5N^N3jFmt=Lz1}f}]l~C">
-                                <field name="VAR" id="GV9^=wxY+%D`Ki:9F)Q~">_vgr</field>
+                              <block type="variables_get" id="EotcS`xNAjwJN$|p#%Wq">
+                                <field name="VAR" id="EZUyvqIqrfYH8;AG`eYh">_hbw</field>
                               </block>
                             </value>
                             <next>
-                              <block type="variables_set" id=":CN2*Ui`s??c2nV*BVX6">
-                                <field name="VAR" id="}+G;?`L|R%?sGFhd=Dy@">calib_data_DPS</field>
+                              <block type="variables_set" id="U0OI#+?h,`re}mIvXWcY">
+                                <field name="VAR" id="0*rgTj2O4/)Q@i|9XZ`3">calib_data_VGR</field>
                                 <value name="VALUE">
-                                  <block type="variables_get" id="dGaMNvh)oHKK2?`%e@At">
-                                    <field name="VAR" id="x=];gL%,6(c61g@B$oNn">_dps</field>
+                                  <block type="variables_get" id="5N^N3jFmt=Lz1}f}]l~C">
+                                    <field name="VAR" id="GV9^=wxY+%D`Ki:9F)Q~">_vgr</field>
                                   </block>
                                 </value>
                                 <next>
-                                  <block type="variables_set" id="@U$G@XK5%b7f[5:VbSl.">
-                                    <field name="VAR" id="I(%pOg6My*c;G}[1Dc^C">calib_data_SLD</field>
+                                  <block type="variables_set" id=":CN2*Ui`s??c2nV*BVX6">
+                                    <field name="VAR" id="}+G;?`L|R%?sGFhd=Dy@">calib_data_DPS</field>
                                     <value name="VALUE">
-                                      <block type="variables_get" id="|vx.kNS?}/y[](,]~/Zr">
-                                        <field name="VAR" id="Q-A7f6ROh#LwMnou6o4D">_sld</field>
+                                      <block type="variables_get" id="dGaMNvh)oHKK2?`%e@At">
+                                        <field name="VAR" id="x=];gL%,6(c61g@B$oNn">_dps</field>
                                       </block>
                                     </value>
                                     <next>
-                                      <block type="procedures_callnoreturn" id="p~,;F5r(Q5iGwe%UF|h.">
-                                        <mutation name="printData"/>
+                                      <block type="variables_set" id="@U$G@XK5%b7f[5:VbSl.">
+                                        <field name="VAR" id="I(%pOg6My*c;G}[1Dc^C">calib_data_SLD</field>
+                                        <value name="VALUE">
+                                          <block type="variables_get" id="|vx.kNS?}/y[](,]~/Zr">
+                                            <field name="VAR" id="Q-A7f6ROh#LwMnou6o4D">_sld</field>
+                                          </block>
+                                        </value>
                                         <next>
-                                          <block type="util_python" id="J$_UW[6VMM,O)BY0~oH.">
-                                            <field name="value">calib_map = {\&amp;#10;"UID" : controller_name,\&amp;#10;"ts" :  ts,\&amp;#10;"SSC" : {\&amp;#10;"poslist" : calib_data_SSC[0]\&amp;#10;},\&amp;#10;"HBW" : {\&amp;#10;"poslist" : calib_data_HBW[0]\&amp;#10;},\&amp;#10;"VGR" : {\&amp;#10;"poslist" : calib_data_VGR[0],\&amp;#10;"discard" : calib_data_VGR[1],\&amp;#10;"offset" : calib_data_VGR[2]\&amp;#10;},\&amp;#10;"DPS" : {\&amp;#10;"thresh_white_red" : calib_data_DPS[0],\&amp;#10;"thresh_red_blue" : calib_data_DPS[1]\&amp;#10;},\&amp;#10;"SLD" : {\&amp;#10;"thresh_white_red" : calib_data_SLD[0],\&amp;#10;"thresh_red_blue" : calib_data_SLD[1]\&amp;#10;}\&amp;#10;}</field>
+                                          <block type="procedures_callnoreturn" id="p~,;F5r(Q5iGwe%UF|h.">
+                                            <mutation name="printData"/>
                                             <next>
-                                              <block type="variables_set" id="Vs+(RVZO1m8oluxpEqTW">
-                                                <field name="VAR" id="q/.=RAMZ%`q2./=6O!Ce">calib_json</field>
-                                                <value name="VALUE">
-                                                  <block type="util_to_json" id="pbPl`ePrH~I`?:RzBc!h">
-                                                    <value name="value">
-                                                      <block type="variables_get" id=";-u!b]_r;)hs?:Z$Q{a8">
-                                                        <field name="VAR" id="?4vu=X6vfI.yt{~f3K1D">calib_map</field>
-                                                      </block>
-                                                    </value>
-                                                  </block>
-                                                </value>
+                                              <block type="util_python" id="J$_UW[6VMM,O)BY0~oH.">
+                                                <field name="value">calib_map = {\&amp;#10;"UID" : controller_name,\&amp;#10;"ts" :  ts,\&amp;#10;"SSC" : {\&amp;#10;"poslist" : calib_data_SSC[0]\&amp;#10;},\&amp;#10;"HBW" : {\&amp;#10;"poslist" : calib_data_HBW[0]\&amp;#10;},\&amp;#10;"VGR" : {\&amp;#10;"poslist" : calib_data_VGR[0],\&amp;#10;"discard" : calib_data_VGR[1],\&amp;#10;"offset" : calib_data_VGR[2]\&amp;#10;},\&amp;#10;"DPS" : {\&amp;#10;"thresh_white_red" : calib_data_DPS[0],\&amp;#10;"thresh_red_blue" : calib_data_DPS[1]\&amp;#10;},\&amp;#10;"SLD" : {\&amp;#10;"thresh_white_red" : calib_data_SLD[0],\&amp;#10;"thresh_red_blue" : calib_data_SLD[1]\&amp;#10;}\&amp;#10;}</field>
                                                 <next>
-                                                  <block type="variables_set" id="|[Ku+J#7*J6txvI*ZIK=">
-                                                    <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
+                                                  <block type="variables_set" id="Vs+(RVZO1m8oluxpEqTW">
+                                                    <field name="VAR" id="q/.=RAMZ%`q2./=6O!Ce">calib_json</field>
                                                     <value name="VALUE">
-                                                      <block type="open_file" id="-lz|v.D,MYI?d6AgC#(Y">
-                                                        <field name="path">/opt/ft/workspaces/FactoryCalib.json</field>
-                                                        <field name="mode">w</field>
-                                                      </block>
-                                                    </value>
-                                                    <next>
-                                                      <block type="write_file" id="Xyd9UH|T;|}=~oUv=wf)">
-                                                        <field name="new line">FALSE</field>
+                                                      <block type="util_to_json" id="pbPl`ePrH~I`?:RzBc!h">
                                                         <value name="value">
-                                                          <block type="variables_get" id="CMrJYzPm5.0@AS7XIg?e">
-                                                            <field name="VAR" id="q/.=RAMZ%`q2./=6O!Ce">calib_json</field>
+                                                          <block type="variables_get" id=";-u!b]_r;)hs?:Z$Q{a8">
+                                                            <field name="VAR" id="?4vu=X6vfI.yt{~f3K1D">calib_map</field>
                                                           </block>
                                                         </value>
-                                                        <value name="name">
-                                                          <block type="variables_get" id="vm#_]i|r^b6:=z^SU,I2">
-                                                            <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
+                                                      </block>
+                                                    </value>
+                                                    <next>
+                                                      <block type="variables_set" id="|[Ku+J#7*J6txvI*ZIK=">
+                                                        <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
+                                                        <value name="VALUE">
+                                                          <block type="open_file" id="-lz|v.D,MYI?d6AgC#(Y">
+                                                            <field name="path">/opt/ft/workspaces/FactoryCalib.json</field>
+                                                            <field name="mode">w</field>
                                                           </block>
                                                         </value>
                                                         <next>
-                                                          <block type="close_file" id="-H+C5cQki$wy-J!r(azo">
+                                                          <block type="write_file" id="Xyd9UH|T;|}=~oUv=wf)">
+                                                            <field name="new line">FALSE</field>
+                                                            <value name="value">
+                                                              <block type="variables_get" id="CMrJYzPm5.0@AS7XIg?e">
+                                                                <field name="VAR" id="q/.=RAMZ%`q2./=6O!Ce">calib_json</field>
+                                                              </block>
+                                                            </value>
                                                             <value name="name">
-                                                              <block type="variables_get" id="v,htJLbJzRgC$tNB{mNt">
+                                                              <block type="variables_get" id="vm#_]i|r^b6:=z^SU,I2">
                                                                 <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
                                                               </block>
                                                             </value>
                                                             <next>
-                                                              <block type="util_python" id="h+c/cbWJp[TLFFN9`$$q" inline="true">
-                                                                <field name="value">#try to write a backup to usb stick&amp;#10;try:&amp;#10;  fileUSB = open('/opt/ft/workspaces/ext_usb/sda/'+controller_name, 'w', encoding='utf8')&amp;#10;  fileUSB.close()&amp;#10;  fileCalib = open('/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json', 'w', encoding='utf8')&amp;#10;  fileCalib.write(calib_json)&amp;#10;  fileCalib.close()&amp;#10;except IOError as e:&amp;#10;  print(e)</field>
+                                                              <block type="close_file" id="-H+C5cQki$wy-J!r(azo">
+                                                                <value name="name">
+                                                                  <block type="variables_get" id="v,htJLbJzRgC$tNB{mNt">
+                                                                    <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
+                                                                  </block>
+                                                                </value>
                                                                 <next>
-                                                                  <block type="util_python" id="Izs2GXFiON#$#Yl{Q8;1" inline="true">
-                                                                    <field name="value">#write backup if usb stick available</field>
-                                                                    <next>
-                                                                      <block type="controls_if" id="09=a@^dj}r4pu#WD/eA6">
-                                                                        <value name="IF0">
-                                                                          <block type="exist_file" id="I7|+c5i*^F2*?:6N5#yo">
-                                                                            <field name="path">/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json</field>
-                                                                          </block>
-                                                                        </value>
-                                                                        <statement name="DO0">
-                                                                          <block type="variables_set" id="K*DH,4qh!p;ur/6|~F[h">
-                                                                            <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
-                                                                            <value name="VALUE">
-                                                                              <block type="open_file" id="yVNjYQ8Th%ZaX#4A|f~J">
-                                                                                <field name="path">/opt/ft/workspaces/FactoryCalib_backup.json</field>
-                                                                                <field name="mode">w</field>
-                                                                              </block>
-                                                                            </value>
-                                                                            <next>
-                                                                              <block type="write_file" id="5Aks_^CG:3r|wT@(n;^X">
-                                                                                <field name="new line">FALSE</field>
-                                                                                <value name="value">
-                                                                                  <block type="variables_get" id="RRF]jvzKJCYMj;YbDg/T">
-                                                                                    <field name="VAR" id="q/.=RAMZ%`q2./=6O!Ce">calib_json</field>
-                                                                                  </block>
-                                                                                </value>
-                                                                                <value name="name">
-                                                                                  <block type="variables_get" id="PjAAgZ}`zVf?!(S#FKKf">
-                                                                                    <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
-                                                                                  </block>
-                                                                                </value>
-                                                                                <next>
-                                                                                  <block type="close_file" id="^8,Y3Of?qgB2|tPVM4+l">
-                                                                                    <value name="name">
-                                                                                      <block type="variables_get" id="$N{1fKu=_KJ=vM|ZrGd{">
-                                                                                        <field name="VAR" id="~VV%d%niWCJE,.rkhq+F">fileCalib</field>
-                                                                                      </block>
-                                                                                    </value>
-                                                                                  </block>
-                                                                                </next>
-                                                                              </block>
-                                                                            </next>
-                                                                          </block>
-                                                                        </statement>
-                                                                      </block>
-                                                                    </next>
+                                                                  <block type="util_python" id="h+c/cbWJp[TLFFN9`$$q" inline="true">
+                                                                    <field name="value">#try to write a backup to usb stick&amp;#10;try:&amp;#10;    fileUSB = open('/opt/ft/workspaces/'+usbpath+'/'+controller_name, 'w', encoding='utf8')&amp;#10;    fileUSB.close()&amp;#10;&amp;#10;    fileCalib = open('/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json', 'w', encoding='utf8')&amp;#10;    fileCalib.write(calib_json)&amp;#10;    fileCalib.close()&amp;#10;&amp;#10;    #write backup if usb stick available&amp;#10;    if exists('/opt/ft/workspaces/'+usbpath+'/FactoryCalib.json'):&amp;#10;          fileCalib = open('/opt/ft/workspaces/FactoryCalib_backup.json', 'w', encoding='utf8')&amp;#10;          fileCalib.write(calib_json)&amp;#10;          fileCalib.close()&amp;#10;except IOError as e:&amp;#10;    print(e)</field>
                                                                   </block>
                                                                 </next>
                                                               </block>
@@ -402,7 +354,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="tVMP(UyYD{#akqawgAD)" x="0" y="2842">
+  <block type="procedures_defnoreturn" id="tVMP(UyYD{#akqawgAD)" x="0" y="2748">
     <field name="NAME">printData</field>
     <statement name="STACK">
       <block type="util_python" id="?2BTA(iUoYy2fTZ{kwC]" inline="true">
@@ -415,7 +367,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="W_Tm2ceF76n#%|aA^wY=" x="0" y="3111">
+  <block type="procedures_defnoreturn" id="W_Tm2ceF76n#%|aA^wY=" x="0" y="3017">
     <field name="NAME">writeFileFactoryCalib_current</field>
     <statement name="STACK">
       <block type="util_python" id=":#2-+xit`bp;61|s@=sM" inline="true">
@@ -469,7 +421,7 @@
       </block>
     </statement>
   </block>
-  <block type="procedures_defnoreturn" id="D4S#AhC`3g4!*EYi+(|," x="0" y="3402">
+  <block type="procedures_defnoreturn" id="D4S#AhC`3g4!*EYi+(|," x="0" y="3308">
     <field name="NAME">writeFileFactoryCalib_defaults</field>
     <statement name="STACK">
       <block type="util_python" id="~Y`c%9oJ)a#:TlTdG*+N" inline="true">
diff --git a/lib/File.py b/lib/File.py
index 1de67ae..6435c25 100644
--- a/lib/File.py
+++ b/lib/File.py
@@ -17,10 +17,11 @@ _vgr = None
 _dps = None
 _sld = None
 fileCalib = None
+usbpath = None
 calib_json = None
 ts = None
-calib_data_SSC = None
 calib_map = None
+calib_data_SSC = None
 calib_data_HBW = None
 calib_data_VGR = None
 calib_data_DPS = None
@@ -28,14 +29,11 @@ calib_data_SLD = None
 
 
 def loadFileFactoryCalib():
-    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
     if exists('/opt/ft/workspaces/FactoryCalib.json'):
         logging.log(logging.DEBUG, 'load calibration values')
         readFileFactoryCalib()
-        #write copy to usb stick .../sda/FactoryCalib.json
-        print('cp /opt/ft/workspaces/FactoryCalib.json /opt/ft/workspaces/ext_usb/sda/FactoryCalib.json')
-        subprocess.Popen(['cp', '/opt/ft/workspaces/FactoryCalib.json', '/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json'])
     else:
         logging.log(logging.DEBUG, 'use default calibration values')
         writeFileFactoryCalib_defaults()
@@ -44,7 +42,7 @@ def loadFileFactoryCalib():
 
 
 def readFileFactoryCalib():
-    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
     fileCalib = open('/opt/ft/workspaces/FactoryCalib.json', 'r', encoding='utf8')
     calib_json = fileCalib.read()
@@ -65,8 +63,9 @@ def readFileFactoryCalib():
 
 
 def writeFileFactoryCalib(_ssc, _hbw, _vgr, _dps, _sld):
-    global fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
+    usbpath = 'ext_usb/sda1'
     controller_name = os.uname()[1]
     ts = timestamp_utcnow()
     calib_data_SSC = _ssc
@@ -104,22 +103,24 @@ def writeFileFactoryCalib(_ssc, _hbw, _vgr, _dps, _sld):
     fileCalib.close()
     #try to write a backup to usb stick
     try:
-      fileUSB = open('/opt/ft/workspaces/ext_usb/sda/'+controller_name, 'w', encoding='utf8')
-      fileUSB.close()
-      fileCalib = open('/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json', 'w', encoding='utf8')
-      fileCalib.write(calib_json)
-      fileCalib.close()
-    except IOError as e:
-      print(e)
-    #write backup if usb stick available
-    if exists('/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json'):
-        fileCalib = open('/opt/ft/workspaces/FactoryCalib_backup.json', 'w', encoding='utf8')
+        fileUSB = open('/opt/ft/workspaces/'+usbpath+'/'+controller_name, 'w', encoding='utf8')
+        fileUSB.close()
+
+        fileCalib = open('/opt/ft/workspaces/ext_usb/sda/FactoryCalib.json', 'w', encoding='utf8')
         fileCalib.write(calib_json)
         fileCalib.close()
 
+        #write backup if usb stick available
+        if exists('/opt/ft/workspaces/'+usbpath+'/FactoryCalib.json'):
+              fileCalib = open('/opt/ft/workspaces/FactoryCalib_backup.json', 'w', encoding='utf8')
+              fileCalib.write(calib_json)
+              fileCalib.close()
+    except IOError as e:
+        print(e)
+
 
 def printData():
-    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
     print("SSC: ", calib_data_SSC)
     print("HBW: ", calib_data_HBW)
@@ -129,13 +130,13 @@ def printData():
 
 
 def writeFileFactoryCalib_current():
-    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
     writeFileFactoryCalib(get_calib_data_SSC(), get_calib_data_HBW(), get_calib_data_VGR(), get_calib_data_DPS(), get_calib_data_SLD())
 
 
 def writeFileFactoryCalib_defaults():
-    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, calib_json, ts, calib_data_SSC, calib_map, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
+    global _ssc, _hbw, _vgr, _dps, _sld, fileCalib, usbpath, calib_json, ts, calib_map, calib_data_SSC, calib_data_HBW, calib_data_VGR, calib_data_DPS, calib_data_SLD
     logging.log(logging.TRACE, '-')
     if exists('/opt/ft/workspaces/FactoryCalib.json'):
         fileCalib = open('/opt/ft/workspaces/FactoryCalib.json', 'r', encoding='utf8')
-- 
GitLab