From e2722975fd59cc869ab96ce6dd2d46601cb4c373 Mon Sep 17 00:00:00 2001 From: Walter Domenico Vergara Date: Tue, 26 Mar 2024 15:40:43 +0100 Subject: [PATCH] align docs --- docs/howto.md | 4 -- docs/images/OPC UA agent flow chart_2.png | Bin 39795 -> 18370 bytes docs/installation_and_administration_guide.md | 9 ++-- docs/opc_ua_agent_tutorial.md | 8 ++-- docs/quick_start_guide.md | 42 +++++------------- docs/user_and_programmers_manual.md | 36 +++++++-------- 6 files changed, 34 insertions(+), 65 deletions(-) diff --git a/docs/howto.md b/docs/howto.md index 90c0d13d..6f557604 100755 --- a/docs/howto.md +++ b/docs/howto.md @@ -256,10 +256,6 @@ config.opcua = { }; config.mappingTool = { - /** - * Boolean property to assess whether enabling MappingTool or not - */ - enabled: false, /** * Boolean property to assess whether enabling polling in MappingTool or not */ diff --git a/docs/images/OPC UA agent flow chart_2.png b/docs/images/OPC UA agent flow chart_2.png index 9e12ab47472bf7bcd942eb567163463f1b73ec62..01ee74a17e549820bb20ba970400bbe0de14f2e9 100644 GIT binary patch literal 18370 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 literal 39795 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Νr5cj{iokL>_@&sBJOJKiL`VGbos7|5y+Gn z*YE8ZgART63HiIHcJ}9&JuQ8LyC@0!dcJLo*}QZeEBq2stfz@JRS`B^8v1X`Jion-qwmUAd2zJ5>DeZ}eu&_y{Uh=*ubwkzVhgT2 zb6&Js@1&`^`9`DG=x`!T=@jobk(D#QBNh6mXv~$lxs}z8yR2{u z&sMFpd5i$J_G0N`cs6*MAn81x7$bBh%-I@d|PCD#X1MMlkL!A6w!Tl$(gz<*IGHmL)BI|Y#P1#xd za?ORb`(NcQ){27dSO`1`!S>YOArD)`&cmbKKvuifF52^;fvYXHH80mS3&}B@Vm>PM za+J1yIrPE9k?g7CVXBXSpNI>;BK^ys+SoGwg9kq$WOV5uEEEUpmTJUU-fUcn*VZCJ zN86}uYH7)Yye38$**7Eme+pvo^%QfNyu#eO9sY=H#45(VD*sRWBa<`qA8WyCy(?}V z{LtJy-|X8bKO!H=sfC|lIsS3-_eM*FgVzm8i%RJ!aV@BZ_AEK91$nD&h`ZcKYnh^P}R*m;wmuioLG>e8#{44crd z=~RQYOr>1r%Y*dt$l|w=`>*JoU@UFP^ zTft&U^)|YSxb0~<&Eta&Y9tYV_tWw%7LfLZr{6`=i3t1-edPt8^1j?uB+DlS!_Xj` z_2Pu&iT1Xv35T!j=DLi`9gUgl8?}9-adE~8s?(|VHuuN6G!P-z=$>gisNB16kmv{7 z*Y3#CmB+PQC_wgopBjz|IvC^;+fISKTNCn(yAC^I1Pkq~VT`_U~b; zvpgEVyT`c&cA>nfiZ*dihJcjs<^ zfKdbtcE2FKeZB)D0dGx=%i?#&ASsWt#P&}j6RB@kBUgUZ?H-xWFQ``A%n(ESO~0;O zV;7cacDs38XT%+h8iigyF2r>&TQY<5&n4{K#k_8p#g2n>y9(d)_UYa{v^@%E=j%+*JR+60?_n9o+0+s1g3 zE#c92<7;P{wjH8=L2~@&rH+HWtz1e@?F-Ls&Y0w_0M9hoKFH2^^eUg8?zv^oU$SSG&sbyyE$NMV*+vd7qQ1ir5 z>KI<3FFPDT`;*h3k0%jOt3ZvSwB*y+ob(P05vZC{sofl9 zs(XS7KO})qMA}q0{mD8BiEM~ff)2Zok&Xz3~2E0Sntal8(+#312#jba> z3Bq9QbZQq4fNVK3SQ`Yl7e6e0i?H|EmS2bXpYxw5Wq3h%2UmdgJ9Ulc8|KIYUxiv5lD81ZVMt>f0qKooQxN4ta9ZJ`DzXy{bENs%vO@`?Fyq`WSwDWgJ*CXI?zz1^g?Xn{ zM7$r;WM|UVOUg?rSjgRQJ(JB+q==I}aY`J2MMykGGhD=w&X33R9&t>tM?s`^iW4a+ z^T?J;{^mT>R`coc>3Al%M3@0>2~tgp6YY6zQ;p0;$FJ2NW2_aTBnmli+5Q!f}LbNe&j2pdlE;T!E+uds=yh)-e z92vni6v1jt1-=1d2Sbl&35?wysSdd+q@-)Zsg1);TXEa4;KFx-5lyG z+$IP;)*CW~#q{H1hza@)+_C?2btkAjfp@S*`P`fKqwm4)#gpI5ZOL-Ma~@7rsU6aL z)vLr#E**dCD<4^{K)-kK>#KIYSA4i{-PV(Hp;;^YF3^$T@8R4NQ*Tgg3=!fic3^{7 zzyi{S>mXbRyxJ?gylZewfku~})91eaGx)3{1nlwioENCMbbo%Z4vU2nWas-XlW?j} z$Ir19Xve-Gn)wyROm7*`au55mZ3o~PJ&Ecz$EBECa%Z_2eBXu=*W>MlTwh7-TDm-;gY$r(4Du~GU84*44@Yp} zx_{{rLxozXCe%K?$=z=uz`r+npe+fy~9I))|#Tie+RU7K!EB2#2DVkct*qv<-_P-Jl%z=X*M-(TH%!I zx8Ll>8aey7ZW`w|5RE|+oaUj8ik{v@$UPfeLXDEz-z0?_60}gB_9NfRi_xwr9FN!?Oy3YUvS#7%G^4A_XDJm&JDK~knk?^#= z=zq>M{PT+&M2NLVcAy%Y`-(1fi@>$YQ)6^68~2oo?An3vLy9|7mY+BKMq%lFdk_ec( zOJ(likFbhiS6Xg;OylJTPGaLJVR!)2F9%m@VLy(m?5rH9SbDz`?-Mr_a!EgZh$Y}nD6hp`?JD+#4ktLONHZj)<)z&>iUjf4+Tk_2tXc2*&R8k;>&SA!xAnXMMS)&qLe$Smt1_fo8J} zp_?G(|HdClptVdrWJokfy;%5O0R630Rg0j(SlV4Y^>SO)AMH2P&%gTxDQK{-AX`S|epwQq6p)=`i0Sicmti$z% zU{BHz*;^ySLh18fN}{2MyAtUE^$U_|p`D2+hnIZk|Lm`kY3b>F!#h7?Uo z-@B14D9D@ts5h#1PRC&Qp26&dL7zW>na;GsFXu@G_HaV^dC(!~|MOZiA<3mQykgj& z)d#-x4e~83V7JOY_x<@Y@H%na6+>fD$8$9ry4V-`sk6tVW;+H8deuOCT5mg$7v-5W z2Z|~{!Q4WWTR$|?*hhU3h{-+S^)j^6-4HuEU1A2`?R3?%H!a$;IE$|v=X&i->ZpTP zK%M-`Z}vamGtXSk9C-l%c8X9M{$?2E006lK)!TDk#C#+**ABm$6AVPQ1DG2W_x3L| z$jz++0_HpHm#5FygKP!`T=1OxlEbdns`_egQ_Kk0ZdtU5He_;R)J+LwNWe84Hv%sch*G5**CC8z+EP$&dqlhxWH07ppAJ zV*eOtYif=rpjETg_FU`f*RY-&8Bpe>g@8DWVhgZB!9`>VwD@a>Q>&~=q8#^t=RRy= z)**ATEd%g6nP((qn;Q&2A3c5=ASbRkD7mA~QS_(@v?7Y&M4KPvNrJ$t6XsMKh)6)Z zGJD)1&204G0X#{PPj2r6hn1knoZ zCcX)e`n2r*;91TK1Qb9cYXZd1>S6Tar{|pEbMFkf)*5rN4dqc$`7$FTgLDo_+0aP( z*1#N4Iczt8^{V)hkyiHezznWC@r(3tgxvMwHi3h&JHw!@djsek^$#4mmP9V zKw!hzN!hKrNsomxDOp2nhg}>%9bc>IJ%6S1+5ET;qn4eUTT9-XsQ1ZMB8*tuX5hs5 z_xcafzY25P0x)FLvuj zn24Fq?}IIq{GuX$1@uH?g!4p%{H{!W6$mpm)qa;ci|UGtg(HxV({oP1w!%Sa_4J(W zD{${aip0o<{T{PB15DNfIgdWKk(?W;RndNQc{9w_`gZM^czdxg*t~^i2wBn4j#?4yU$~yqND-96`<;v6r~~(udbdFXLp|SxvKn-XNW_5 z2dFs!8?;&!#|6^Sb&voAa}ySxUebVXVvs^%VCRNX!gw?xH>iKId?o z5mZY4@M@n8MSNCr@10!;`#WKMTr&6w{4Wp}Bu__Oo(6MVI)YTH4%KHwdLMubWbVVv zseqEfj|iX8daKM#5GHsTx_HtbWcY@|a~H9rq1>sctQ^Jk?49GVW~tHd+E~T9efQu% zh0NPc)~<>|3i{8k-887MOSTt3f9@RORFq(MTwD}=0+cAWVePgUc8#3Q(gvCU(S_j; zg783gVzpuy1}nPYEpqps`9X^B`1hwujv95_-{Y#ga89{6@Obc}It}gkeJnTmQdpq3 zqmr@po%{-Rey6bgvZ*^lsD%4@$YStN(D~P)6x#dg#A#ZA;BuRtJJoFo9M`fs)JTjw zAM=p4e%a#hy9S!53cGBCDP2hZmb2y~1ktt{`X)F+t9&il=ph~Qjn`uN(OA0*8w1%W zBXT}>*X;cb^E;I&{c*^WXqe>|t*uVB%)owbvnkRE@>{qE=cBR)ZS7YFtd$Vg1g*qe zq!N!B$-~ZAc`ADJ0^|kHS`*BlS#mpk?JbJ>;P_`mkIdO6G5PiG*#*bOLVDHb%U6#m6~(xA8c4DbHcKHBgB-CB2~z>{+UEK zvrVRK?UEW*A48@7^AFgI9tl>xkFtDZ61STY*eH}x^JCnLtl_;t084{xP{-6xJx3~7 z!8LT$WR-`Vxnmy1V2G9MA=0mPd5kdopnSI36xEg2b#Z;j=^CoSM0ypvmq2e2+9{s_ zbZ#fCT#I|&dhSUs^!G`HPT~I?zB27tXQ@a=;kZrD6WJVJXoW}EzI8M^S!S(z&nm9C zn2BLc5)JRn9Se-iPIpo-z}rhAs1F(mzrMDpHiYBJ0@28N|Q zF};5mMy2CP#0(^V?<~f7ll!Y*~hGwRqdby~d+o#ap)eEf`#$#K349+`2eb1DTU`n2K;f-DHhDDMT(o z4@>spkPWUm@{Ka{IId4-_$+G9s+`fPs|tnlUE{^-aG*_W4P{n$cs_P))m9X4_|7cKtl}Z@YN~RhYfuKq-|W1?Gf5)H*w#9=(Uckg;6YPQ zuz1gvnNM%IBmvSt;)>`PrJfOYLU6rw-X7q#mg~|dG&L5m=DrAt>dUD%xAE#1yu7^L zYZ3nPo_h#9p7q(ICt;+A-;9!gn^%o^`dmV_ut0>fo`iB>P=+rVbC1zha)fGjqRSF` z^cHSo4VL#e=X%OJpx&V3HtZ6o`Xvc&!OwI3x~q^V1dTm@8knu7FIO`b`rpfYpF7UF zeF5@o80FGgVf2Nx;OZwLvh9?(Yz!tEv4h`WJ==Z@C-o#t`s=$$?Xi@}BIS03%{PRjDXs&A~h4m&|sM4tvAE#DsEc$Q;%nK;N6zIp4kLxL? zB@4_rxTb_`slW(3Hhg)=FY6frDnQO!vAQ%*+p06gma1l@POju_l#YV229u;kpv)@w zS-=ErL)5OdGYfGlBxrxZKd6@oK0!B_qY5H?^K9sr9FEj;6euzk&MRT)hc`B=?YpyV zNtJ$#uUwd@@mMq8g;lMNg5bj6pCe`(#^mXWp~P8>_?z~|f-@p!gjg4jx(~vFi-T{1 zGllThnZM`0jGhL3XPV2C!|MbC);`qgfY|4J_VNtWV3I-Q`J@*Z=+I4u1{QCmh$Hg% zkr73@`XZ%F=pzFV0!tx1-0Vg-z^VF$NsX@k*HNUg&RQqh$OT_D4qx^#Lb*7+s;v5U zgrhK0wQK*x^?cnZF!{Ap33eWjt&54=5)dFY`9F`wTp*4rIam-M=8iWPgXE;%~+p%@t@@zp-;iR-m)Q6LyZ#CgcT$SjRiQC7;u zlOr;nZBG~DNXBUyMWyjXjSI|1rDDl)TU}QD-nnl|qsue2w|oWLF1=RhH!IV;E{-?g zoSY$MRxAHtCjlxLwif|-!$j#QlAxWutDZ9f;}afrxaT%E{`6d=xXBa7k*{buB@Ni9 zxX*{Fe|Ll78p(pu4tk{nZ^6|^YX53+W_PV7rI?J2Wze-9TIVjxpO}%=MDIpq7HcG} zdYFnFmJ@jTLN$p|ME9sK&s@HROYgKql`P{&`pwSb?DR!Y5iPI9IJB28XGg7Dm2{ss zj|oo{mC({smkQoV=`<$XpgpT3tr6o<=@$7xC`>(ojj^}KwC97yMyU3LaL^QBnu1py zIbMsSux67#`v-PRqFTE}4OhG<96ES1aI62i%?S@gK$OF|rjjLGS7z1ax?wKZc99l% zTuep8z9%lvKpEjv>dix0O>?!^8@|51{sVQTZ$&~e6uF#pKQoZ!>@Jqhf|)XZZZac6 zFCqF0nqVGAA@V`caL>eW@yQw&^Ko=fFxy?fp`VBKv|rO@y;rs=dN;3ZcA7b7YuH@< zcp$S$UaFlFeW-Sds_uMIljrn;NyxR7VlFbl&jn#-k()e;zr~NCnx}W{?#~>IlHXK1 zkA;GNa8O|OO9HydS;jbwmv$j0uLjYw+zE;%nX);)2Ddzp<+)z6;K;%3Zs#@Hi-I$I#xBk#v!>{Yrs&8g|;U zEpn4OT+J8n!O8Fbl~3_BqutA_7zUbV=b;+0|1A7KcgwzWt7eN+Wj5`<)y9_jDk3+Lzx$@HWnL zI8x_A?g{Z#{r8@W#*S49tUCSXwPphd_-8Ajqk)rMnR+g}mf?Rs^amx(+zC}xCk!Mj zgVb;t0vF>{{1amuz?c6{D1hZ#W%tzLiK>BY<=Z&&zy4{l4|&x!0DF4GEf(RpgRS+D z54TpJp{#UMFSB5+(lP(8u*kh2nmc$L=s1ydU&Wg;XNeg*SHTp`eY3Vtk}#pXPGC-u zIdv#w?RE8UqG*>3iAzzAW$#{Mt5~+*Q|k?8-ght6E&a^dD?xqxCq zz{xhvj)nZ`%$Q2Bg7@l^O}^Sn$=p@ou9>oA$~K@Pg=OGSX4_wa#Puj?`~%hh7Mm%C6qpWnJE}P)%RGdRvs?TC5<# z3z{wI)E;YB$@pBo@U4q9x%guW&Hp^V%+HbdmN$X{Kc>X(i|Vfr<)CgUlJ-AlQ&Glc z=o!?EoOfn=`(6EYzJhb(5ffHk>C@96Xj5lxGc3Hs1sm^HL_Hj)J^x={6F2wF&l5$l zmZ15p_ZoI%G)t5<)KF52itd{&LK)ly`9Tq|a*)As8EsTvg`T?Z6Xk5=ZiyT6?D#+b zUdW8j68^6-`@hyL=Y;_+@o+#XadQ78-wW8{UK$5e0X3|N$Nny+^$7QsC}^#_+amAs z$Kwun-BYdhDpXUUPDj9f{O>g&c|3%H=Y0%X_+0Yc9>ut?n8MvqJ^$#1gfTauVC-B+ zsk2QvA9xc7iRI?T#^n?6^wP|JE~O$_gLX)BEBE*JuR{j{QHi`f&?^M|X*PCKcTb(2 zESy9F0xx=k?}mq~5^X(L!IhvW6h-w*Maj;tcz1I2PM)p5vc)hynI8f^&dI0f+sVWgc z0xhy|@*V#MDC_QPWPgqkJeh*-DUbm_f*7&%kNo}fQN(isvpOs{m(Rj;Nn<{YC!XDc zwf9LZ!T&qp@FD)+^OT4}VI-}j#@+hI5(upVh)^U@c%t#XWa!k!k1=nf*(lY+#mC13 zgN=3EosfW!9f=vyX)92&JS4#Q-meCG3jmI1|9~~b`G35D1bmc#|7$>)KRBLs4sg(n z^Y`qZ{WylTKSIzLK$#Tzs%U<7_T{umaf8d~(xV+yBwy>X?QYqX6Dsu`QmiKk(u5BO z8PUym1AKr3|94NH~8uHpA0PAa4r8Q{`_o1gK!yh=>SZ<f4%26VJ?+0|x~r@E#W2?J+9y{n^8LGC%ATd-Ap#$mCz4ssFNA1qQjg ztJa4JNYAAVMNb)(s9AQ?rkAOE|7WL7EaRojvH> z)$Puv6JIaNK)vxwHTMW`Or0j{oTXvEOu{k~MnYx0$^xrQXHCGBZwHCp?> zQem=lu~(i2_n0|%wfdFfJ=jvoGxsI0eCXY)^^0ON5G+9o@YShG-m&k*ck9%b8g&&L zAJJ9>@gNHR9k$eL@ru$woOjFTK|U3a$0s~yg}01Sv-pMoEIt0Cky}tygs}H%njtAF z4brP@(WM#R&C=ObXg)q%cCcdY>FO=65{k99 z^b33EDVBr7f%PaB9Cjn@Tk-1NNaA=D&*k^Z8W|_|VOK`dto(ILvI+RbS_xS6qoQjb=FQ+t!-6W{FwFKd%$ThH3Thb`)Gj=}8)`m76$Kpm4Jy zq^*3mVL&vxAa&zChfBxB2jQ3>i&1OqErt8v!TxdM=1}$Y{)1R&Xrn6CzMnwVok3_R z1mzs0ar1XQi)2~IW#k}YlNwWQ`9dD1nrbNWS<8DCMd6MM{Lx~8eCC!{xOo;SXq zp#I?1YKbke0kKy2SF}p}%nsO^-qt+lh}L&BqiVSp;dmh8>S5V_R<_cLThGI$m^|cl zwqa_PR(~}`KTX0QcCcxmNQU9T(xReSe{@1EXY4uL+M6GAyB;>mxcyU)e}3|F{w_tb z)3gKfgEZ*6;15kIpIufE2QaGU@Rt$R&C`zqkcKBv4$lNkTu5Y(C(J+DP0U3#JTYM? z4!$5Bden5>E$S?t4qo+{~Tv zbm)>IJxfCG#`K8tih+tmSW1e*GY{GofsmIuon0Ys7{58;=tNyL|182>K5OCwqzTE7 z(`S!HOiuvZ#k#oaMMh>O8k7&~P}C2>bq^rdBW#7knHyqj1g15f@)~_)-|n15)$IqV)T8UD3xH2 z{=Nakrz*31n@qu@YvUT)K~4*+zY;%~crEak$+d-5$rVwGTw0tzg7kjFD5LdJOIh%V zVCpB-vS-S0>$)cI?IDdJ^CaVDJWEX|zJoXQe6evXMdkQw_pp_rBF5&rAeS$kD!KTf zm$lW4F8qV5=%=g3CY-mT6!Zfn^BT8)--R(X@IY+%$HU@pOYfN@TrNS(JcN3g+V`+c z89x*a?crFEpMIGo-@%dbbaKkQV@I1aa<)yp$|4Bgs>oe#T2-OrEV*D<=2_c+s6`sR zd8kE7GUTC_J>8n7t|ga2z4-(ctyOquTFvU~qIbfj^M!5|n<-4qlPSH;PCbbsHEnIR zG`VM4RWp+Zhv#z&SB5xYCngx;!LO!V&1hX%U2Ns_`<73=x})(h+HdUQzTq&l4l(Kj z^_xD;fgqfFR4+CnGGgV#E%`$BGhJDYf0WpIcus$;~eOZH4|d_hak8Dm20wf&UsYHLhrpFqfR zS;q@BMSmTeByn$W%5YLnxO3?0vwJUBGfe}97#8-VqEwx><)vi!+6)U4!-_oyhlY$w ze>_gyEsA6M%v6*f$8Xg|AaovCC=_s{FMF*;f3~r7Cn~%)o=((y-A=7zKR$DNsk2b7 zbx`b@GzMMH{|KKhXL}=jU0}MKLhT*n;4SeQqU5OFa&+3LOxp=r91WNCV%154NA$?M zQ9%Xxbgzxz&3)FaV_MX^36(Jk7>OP&di{i~kHs}B=s++qw;zLYV>omyL^xc6dX|NaHfXnlM7@+5NQWwI#X*=a0$0y|k z>Tk%Me7T@7P;V)?4^3gAOwhq<3H!F?qmkvpPSfq#c&t~!G*5C0__a|n)PG{Ii_wqH zSJV=dg3GxU?sOU|gIk=f$qCRTTMM_ZvsoRbp{>mVeJU>}J;|c`l%t#oJy5&OwMYI2 z_RcpvG19;rL$nQt<>luq>Q{=gkFw1mO{bth&$9^tk|8+k8{z{;1eXuSSKKvGYbO13 zDlI@yR&1IeHOvKe~>mb!8X7t#(6hKd<<0}ADsJg*`o6;o!6uwuPEVGD_F48PJ{VQ*3m z7x4z9blm{Bgf>m!=LZ0UCUe_kvl2nG!_AcL%fLXyTTLVM=(0Fqb=R9YOTGht))Mj| zrY+FBa1DmPr0>Co4kC&IQp*Vh65I(14SP!~xf=9fIk(FaK3Oh|URh61Zyf}~!Q9Z6 zO&Pu+&2pRm+mL$!)PW$%KdS?}yrBShM`+~Z;)Xbr^8lpxMm6r~&}ASlmu+wz=m zhsIKw-4tHmmq*Du3#o6;B!Afelr0G~l2ZLK6&3a|%PpkE5}?b_$;`bPQDge-oxv@* zjrvpL0CHvt{XtAapzqPwCs|*^p|#ZWvGH*`0ys4J^)E1^NC zR*}bAc=pu7z{kgr^*{Pze-IH6oTUNMTq(MXg@(^EJoOf|5WT1z&l@VB?afGe7WdX$ ze~(-Ik2mqgFNgOd<+ZTm>3L-VN1cSDmZ3=a9h&qVJil@8(=AT`(t)BYfdyo}8QUZb z=^&dGwA~|IhbJB)4*lUA0jl?PI;qS+#BsY_jqJ3~-I#zo913gCJIq*FRMO9@+E|2d zJO~qK*`y#K*oJ=I(cl<*Q^t=yTS>CHiwji`y38FlyI|4@{zB5dY>*zT!{ZAQCm|qk zfmYKG0n&wJ7j~FF#gSoS4|0G_F_&ez0Tl@Y)n|nkt*@_aUM3)LhZf59r>@o9W7`fm zbCEsfsA=e(`2Fbnk3%osl$%FE->@vYI#Akq`yU|vgTUk+8BAEJUAblqz#O35kyY%% z3>=6(NpRc(ZfN=EGqT;29`vL(8=|yXw{I231KsZpQKscyc)$bb-Ka1?_~?8d9DY67 zpxm2V>=L3k8Vex+M`n`mfQ_bmlx zXlVN#3WT>lZ~q-F9T$yjOA(a2uBeUjI?#w z(GPU{_2{Hl^kXjW`8jn|6<`NAl;r3sV|x|xU6CtydqEJQz#dW4dna$@u7fK}wu*9A zI&i0dRZ^H4OlZuQH(|7ZbzHunev{p+Dv_gH37?sjAr!`|uEBO+m#a=JS|;zNDej3-_Vn(+rl7FIKJmULy;im-VRiX}j7;i1Z~MF!zREuQj);Ey^mq z7spze#eZVQcm&a}B#hm8kI}JUD{DYSVf>C+%$1XLT0~Lgf-cHhF^nSW?LrI+#YVG1+@!}5Hp~eFEq$BmkXttr?Knv)1MP@SwjC~5U13(UcP#j$^=jO0)Zv25SA9OfJF%E&Xh z!=?P%NG5wSMl&fnM?mm{_jFp@bQZQ{(EbVI;(zH|zC6`>_@?Q-Q1Y&wZj}|_*aEa1M6RdW8{>z@A%l*x2tK>(BWHs$+XU&f9rP) z4F6&pnkj6zVhB6@Hx7=^mwlGBM$SuRz7K8t0A)ol`H8#!ySh9xfj2zr z2d084hNqX($1rTc7ha?_BA#X}?Bk~ClFwS&1%cIgWCi35N)k}GK# z(N1ADYhI*Fc}n+#SMi=q3#=MlH5^l%W!gS%2^!-?+)A=su|=hkn@d7eO4us%;yIz5 zVx99!37I`PCDpSWyRf0HQzImJ#2Xv6ZeWkiPKhJ_?fmPz6nEAVINC91$>>YgO>?Hy zKCdzw@v{3RCg&DrSRJejM66p3M$ZtlwMcULzjKV)XhNEtC@Q-?VMO%{TXb+F6t-5l zCAcn%-s-0L5Tbsn?m?*v>~43AUc^K!-I=O})5S(dNrPKP%o(1Tr{_goH775>!r(qX~^4A5qdT zGU6zk!3SUVDVxdnR=k^&nq*P95R>D?-N_M2wUn28{xx7Q9%u!zT-*96rl=hMZhxxR zpIAYEFs0btY6pBND ze1D!g;h}Mn|Jtw*iNdL+T^NmuL+>jEim3AvaoYnU!l&^n>K} z+I^eXc{=Bel0Uv9RdTw?cIAcFn?3umyS!%2d?vODs-yr%5(KF~fe^WpVnWqSPU0_^ zWvRlFl+4XplD$`(`0VjwD=#Gxy?)6(6%|i8efPf9pOL**ZrB+8JXhNrAuKQavunb} zX>yKx5w$ckMpC_VAtj&A^qKBot24XT$>&tGh~4d;&%*7X_;d{)FNAOg%c-mibgl`z5si%QGo%F`ToOK#e`Z@&{=&_yI`w!_t0mzbebsHq<6&-Qp&?ZDG6 zVTc)fT*RS?a@ITJ53WTe_w0U@bt;311h1b)Y45G}ItO}m7={^Y$N+bO=r>!Z{KB_7 zw61({_g^fu-f4TjbT!%+VjfC%nZdAELyJ*RKPp3*5wv3Dry_aaTs;=d+5M$?5jrWn z_bEgBY*#_!R+)o8U^IxO8c=X&9xG3oU4c%Iaru#W3_5B%mVhAXg)LLj3gk53Oy|9S z{~iswxbYkptm#WAZj28;Yiks8q7?3gLbkY&T>WA!`FK@k1pF^;GA(4>;`(q{p`y> zM^5b@npBPu2%S(EIPyq2!Mf92*qVuzwV;E+V?qsgoAyMB^PDTzQ_Oj;w~ZA&bnz5{ z#Sv5muVF}UyKv%U;Ryij`O)}b z2>t4mSv!~rP^T8nRYAXmQqC0iCwzgUD4Dj}G7~T6Judz9Wopqle^;Tt5Te?527^&jb z>oxlyD<89Lw+T9_u~&DWS?C1oI~)ydFXmS{ z&z4?WkrR6o(azR7R2p?(V+l6A5foioUF?C^c#S$yU5YV!7TveewpDPG&HUf^B%|&! zJ9IVz{jDk2(%8jPimo{OaPn+?>V9VRVK2QzCz8GzOZBRTBCc1wn6+QCZK4^JpE*~Pjk50Opz8Y3 zvqq(uK}GFYDz(jS-E3FDDj}4h!ua~V*oSkm9cVCRsfGFd_@SGcB?)R+hiLc`Al$xs zMs)sq*^^fxv@G1;;36Y2XXiloOwobfa#S%WN>z!yJ2HpOHgDz1E?@9cX*$#uQ69l7 zE3q~mH9=h@nmallgL!O=y^QiGDfakKmhd4J_-{)A1JE+kCvwwW>~Lm<%ADLIdt;uo zEl4!yv;EQ44;M6`xr*+bv0mjhven?bzm>9B?4=SL4!>5Ht%}j77_IiMXy8iM^fgh8 zShCa9cg+2DwD2Qoj-7G6fmL}*RvE1|aMgq*q?{0Vu*36z?#KP5c@YccpPyH8Piy*d z$592zwTzK$Ztsm>mSLRpSG~pQs%ch@YnRFfqQ&_G9OJ0f7WXM=Xf8?}P&jxkg)U$P z%UpQ|t_g&%!{roM@+3xPs&H6K)MxK*JD6(YQpCm7+PATnX zgz%_s?d9dBSe}_(xY{GS;&O=lp@)t9mP? z9g(x$ySlM8w&{ALOT=}i>(f>*n`Tp2JF|v=y3TcZMHsXok=J=ghF?)7qt~!0dn%ymX?uQ z-p+opL&x~;KY3?E#QR3mXGDb~8Nvm_>PhWyDc3(30)gaQMwTRJ`*IuWPvKpbX7Hy^ zMy(H3Igv&d7Z+2>A0_yd2Oq2Kc^WO?ZtecDf`?MGej`D;ApPJy%fJDQxFJhZ`A++Dp zFB_+>*84eAZsdJwOwE+jSqsqslic0R+exr|HMl_K#Xx`{Fca6nNrL0=GaTpaUiwf% zDR)&mfeWQ7u`n1nv~&*`W4@77K4%DylYzJCu7*bD=6=t~trYR4jDZCEtaG;t6Gy)? ztS)>#Lnrbb(EIyG+x8&IDgoIDKl!U&eQ!QES0y2qjTl1HB2D{0!3YY8AAd?Fzha)D}_8{21`|x2_$=hkQrtO^5yf-fQHiDTrIJ#qb;XP+bO{8|A z?kKAzzM_%^QqxezKP&d)rW?mtiwov3!iF(MjE-$XYcb{Nw6u(fzZR( zacWsYh7_)mIMVgHLAj0EsXd@eL?CIqXP36c*i06$MxDT6MhEZA25ha{{ZWaIj-FsO z=dM{IARvfz6@m;|UdhkL(4^}ZWc~OWGXS;RGs@}|N1<@+86S_oeH^Yaf=naeOzws9 zE%1=B(v4{_;2|vqMTh&JU}vBTIxC42Vqgq7WW-H;7M?3~`v3LZKle2AWSc)94uj4P`Q7nd6nHTm&@7hwrk?t(lE!HhPCs4b z%x`px^VvQE&y50|op4+Qcm(4ti;te6hirr-<_o>J_&Ci9c=OfE4To=eZRbx1 zHl4!Pm&%!DiRi}fyOVDX^g`2jP6mb(z+pkqAle1s4y>h*9-Q9J#wW9)%*-0tj9hBu zwC5pXvfiE#POmO6=U=*HNkCxW#FE*w4&R>losofo1?b%3x<4P?Z|y2w9ikEy2b@)0 zy6n%ATMs++U+(&LEBh*6#@kz47Xz<}p9R`Angv{s6OvSR7P$XvHP?*#C37ksb%Jia zDy=E8vo%OLA+U6s?L?q6)bGX}Jal{3c1s3^7U1f!kbl2k>jRfVOn?6?Yst%?xHv!H z!kHr*<}oy|0SA%6qqm`2cT|8|ETdLdOgQi`_t@>e?TY!{!06GLV6sAdpUw;50{igU zSzo6YDc<{F_AvMG?T+nNLHj$l$uKaykp&)XCt?%x6m)7ga7RJd(<96UANKZvc2az* zu<7GkFT7rQz4ChP^~US1+upD+n3w}+LV#D>2Lk6$fXQhQaH<42BIpX5xnf}G1}-82 zQevQ^a2XhMxPX%_3=9z>z-<^Pq%n%g3GJ8J_iVeoYIb6Mw<&;$T! CV^VMc diff --git a/docs/installation_and_administration_guide.md b/docs/installation_and_administration_guide.md index 666a6334..2013a081 100755 --- a/docs/installation_and_administration_guide.md +++ b/docs/installation_and_administration_guide.md @@ -30,11 +30,12 @@ Open the `conf/config.js` and make your changes (see how to do this [here](howto The downloaded repository comes with a `config.js` (conf/config.js) in which an empty Device is preloaded. -At this point, you have three options: +At this point, you have three options for the configuration: -- Use the mapping tool to automatically generate a `config.js` -- Define your own context mappings in fields `types`, `contexts`, `contextSubscriptions`, `events` in `config.js` -- Dynamically provision the new Device (mapping between OPC UA Server and OPC UA Agent) via REST interface +- `auto`: use the mapping tool to automatically generate a `config.js` +- `static`: define your own context mappings in fields `types`, `contexts`, `contextSubscriptions`, `events` in + `config.js` +- `dynamic`: dynamically provision the new Device (mapping between OPC UA Server and OPC UA Agent) via REST interface If you want to use the mapping tool simply set as empty the following properties in the config.js: diff --git a/docs/opc_ua_agent_tutorial.md b/docs/opc_ua_agent_tutorial.md index 9ead6f31..c92d2bff 100644 --- a/docs/opc_ua_agent_tutorial.md +++ b/docs/opc_ua_agent_tutorial.md @@ -141,11 +141,9 @@ configuration file (config.js) or through the REST API Three different initialization modalities are available: -- Use a preloaded config.js -- Invoke a mapping tool responsible of automatically building the mapping between OPC UA and NGSI (**NOTE:** **_Before - using the MappingTool, erase the three objects: *types*, *contexts*, *contextSubscriptions* within the existing - config.js_**) -- Use the REST API +- `auto`: invoke a mapping tool responsible of automatically building the mapping between OPC UA and NGSI +- `static`: use a preloaded config.js +- `dynamic`: use the REST API Since in the following parts of this tutorial we are going to use the REST API you have not to worry about the initialization. diff --git a/docs/quick_start_guide.md b/docs/quick_start_guide.md index a1d5dae3..7335fed7 100755 --- a/docs/quick_start_guide.md +++ b/docs/quick_start_guide.md @@ -16,37 +16,17 @@ Main sections are: - `config.iota`: configure northbound (Context Broker), agent server, persistence (MongoDB), log level, etc. - `config.opcua`: configure southbound (OPC UA endpoint) - `config.mappingTool`: configure mapping tool properties to set auto configuration -- `config.autoprovision`: flag indicating whether or not to provision the Service Group and Device automatically when - measures arrive -##### Auto provisioning +#### Option 1: Auto configuration (usage of Mapping Tool) -Setting property `autoprovision` in the config.js to `false`, a manual provisioning can be performed using -iotagent-node-lib [API](https://github.com/telefonicaid/iotagent-node-lib/blob/master/doc/api.md) interfaces. +When `config.configurationType` is `auto`, the Mapping Tool creates a mapping for all OPC UA objects (except those with +namespace to ignore matching): all OPC UA variables will be configured as active attributes whereas all OPC UA methods +will be configured as commands. -Setting property `autoprovision` in the config.js to `true`, the OPC UA Agent will perform autoprovisioning when -measures arrive. +#### Option 2: Static configuration (editing config.js file) -#### Auto Configuration (usage of Mapping Tool) - -When `config.mappingTool.enabled` is `true` and `config.iota.types` is empty, the Mapping Tool creates a mapping for all -OPC UA objects (except those with namespace to ignore matching): all OPC UA variables will be configured as active -attributes whereas all OPC UA methods will be configured as commands. - -To enable auto configuration, simply set as empty the following properties in the config.js: - -- `types: {}` -- `contexts: []` -- `contextSubscriptions: []` - -and enable the mapping tool: - -- `mappingTool: { enabled: true, ... }` - -#### Manual Configuration (editing config.js file) - -Using Manual Configuration it is possible to specify the mapping between OPC UA objects and NGSI attributes and -commands. The mapping can be specified in the config.js, editing the properties `types`, `contexts` and +When `config.configurationType` is `static`, it is possible to specify the mapping between OPC UA objects and NGSI +attributes and commands. The mapping can be specified in the config.js, editing the properties `types`, `contexts` and `contextSubscriptions`. To define active attributes: @@ -73,11 +53,11 @@ To define poll commands: An example can be found [here](../conf/config-v2.example.js). -#### Dynamic configuration (REST API) +#### Option 3: Dynamic configuration (REST API) -If you want to use the REST interface have a look at Step 4 -[here](https://iotagent-opcua.readthedocs.io/en/latest/opc_ua_agent_tutorial.html#step-by-step-tutorial) to see how to -provision a new device. +When `config.configurationType` is `dynamic`, you can use the REST interface to setup the Agent once it has started. To +provision a new device have a look at Step 4 +[here](https://iotagent-opcua.readthedocs.io/en/latest/opc_ua_agent_tutorial.html#step-by-step-tutorial). ### Run diff --git a/docs/user_and_programmers_manual.md b/docs/user_and_programmers_manual.md index a0125978..d414b6ad 100755 --- a/docs/user_and_programmers_manual.md +++ b/docs/user_and_programmers_manual.md @@ -35,35 +35,29 @@ one is needed when the OPC UA Server answers to the mapping tool returning its h ## Step 3 - Preparing the Agent for start up OPC UA Agent is configurable through a single configuration file. All properties are explained in the -[config.js](../conf/config.js) template. +[config.js](../conf/config.js) template. If you are running the Agent using Docker, please use the environment variables +defined in the docker-compose example provided. Main sections are: - `config.iota`: configure northbound (Context Broker), agent server, persistence (MongoDB), log level, etc. - `config.opcua`: configure southbound (OPC UA endpoint) - `config.mappingTool`: configure mapping tool properties to set auto configuration -- `config.autoprovision`: flag indicating whether or not to provision the Service Group and Device automatically -#### Auto Configuration (usage of Mapping Tool) +Three options are available to configure the Agent, described below. -When `config.mappingTool.enabled` is `true` and `config.iota.types` is empty, the Mapping Tool creates a mapping for all -OPC UA objects (except those with namespace to ignore matching): all OPC UA variables will be configured as active -attributes whereas all OPC UA methods will be configured as commands. +![edit config.js](./images/OPC%20UA%20agent%20flow%20chart_2.png) -To enable auto configuration, simply set as empty the following properties in the config.js: +#### Option 1: Auto configuration (usage of Mapping Tool) -- `types: {}` -- `contexts: []` -- `contextSubscriptions: []` +When `config.configurationType` is `auto`, the Mapping Tool creates a mapping for all OPC UA objects (except those with +namespace to ignore matching): all OPC UA variables will be configured as active attributes whereas all OPC UA methods +will be configured as commands. -and enable the mapping tool: +#### Option 2: Static configuration (editing config.js file) -- `mappingTool: { enabled: true, ... }` - -#### Manual Configuration (editing config.js file) - -Using Manual Configuration it is possible to specify the mapping between OPC UA objects and NGSI attributes and -commands. The mapping can be specified in the config.js, editing the properties `types`, `contexts` and +When `config.configurationType` is `static`, it is possible to specify the mapping between OPC UA objects and NGSI +attributes and commands. The mapping can be specified in the config.js, editing the properties `types`, `contexts` and `contextSubscriptions`. To define active attributes: @@ -90,11 +84,11 @@ To define poll commands: An example can be found [here](../conf/config-v2.example.js). -#### Dynamic configuration (REST API) +#### Option 3: Dynamic configuration (REST API) -If you want to use the REST interface have a look at Step 4 -[here](https://iotagent-opcua.readthedocs.io/en/latest/opc_ua_agent_tutorial.html#step-by-step-tutorial) to see how to -provision a new device. +When `config.configurationType` is `dynamic`, you can use the REST interface to setup the Agent once it has started. To +provision a new device have a look at Step 4 +[here](https://iotagent-opcua.readthedocs.io/en/latest/opc_ua_agent_tutorial.html#step-by-step-tutorial). ## Step 4 - Run the Agent