From 20157e422d04e1d0004017e54ac2eb8ec1c41a7b Mon Sep 17 00:00:00 2001
From: Elisa <20030784@studenti.uniupo.it>
Date: Fri, 16 Sep 2022 19:36:27 +0200
Subject: [PATCH] aggiunta la configurazione

---
 antifurto/bin/code/Antifurto.class            | Bin 10000 -> 10444 bytes
 antifurto/bin/code/Automa.class               | Bin 4342 -> 4088 bytes
 antifurto/bin/code/Esecutore.class            | Bin 4293 -> 4075 bytes
 antifurto/bin/code/Helper.class               | Bin 1449 -> 1106 bytes
 antifurto/bin/code/MyQueue.class              | Bin 1157 -> 1160 bytes
 antifurto/bin/code/Pair.class                 | Bin 899 -> 902 bytes
 antifurto/bin/code/Publisher.class            | Bin 1042 -> 1051 bytes
 antifurto/bin/code/SubscribeCallback.class    | Bin 8241 -> 8929 bytes
 antifurto/bin/code/Timer.class                | Bin 853 -> 856 bytes
 antifurto/certificates/localhost/README       |   2 -
 antifurto/certificates/localhost/ca.crt       |  24 --
 antifurto/certificates/localhost/ca.key       |  30 ---
 antifurto/certificates/localhost/ca.srl       |   1 -
 antifurto/certificates/localhost/client.crt   |  22 --
 antifurto/certificates/localhost/client.csr   |  18 --
 antifurto/certificates/localhost/client.key   |  27 --
 antifurto/certificates/localhost/server.crt   |  22 --
 antifurto/certificates/localhost/server.csr   |  18 --
 antifurto/certificates/localhost/server.key   |  27 --
 antifurto/res/CONF/deltaSensoriMovimento.json |   2 +-
 antifurto/res/CONF/zona.json                  |   2 +-
 antifurto/res/stato.json                      |   2 +-
 antifurto/src/code/Antifurto.java             | 240 ++++++++++--------
 antifurto/src/code/Esecutore.java             |  11 +-
 antifurto/src/code/Helper.java                |  91 -------
 antifurto/src/code/SubscribeCallback.java     |  84 ++++--
 26 files changed, 209 insertions(+), 414 deletions(-)
 delete mode 100644 antifurto/certificates/localhost/README
 delete mode 100644 antifurto/certificates/localhost/ca.crt
 delete mode 100644 antifurto/certificates/localhost/ca.key
 delete mode 100644 antifurto/certificates/localhost/ca.srl
 delete mode 100644 antifurto/certificates/localhost/client.crt
 delete mode 100644 antifurto/certificates/localhost/client.csr
 delete mode 100644 antifurto/certificates/localhost/client.key
 delete mode 100644 antifurto/certificates/localhost/server.crt
 delete mode 100644 antifurto/certificates/localhost/server.csr
 delete mode 100644 antifurto/certificates/localhost/server.key

diff --git a/antifurto/bin/code/Antifurto.class b/antifurto/bin/code/Antifurto.class
index 43b851c415891f675e6187c84cf73694cd7bc082..12945e7039b8b0405b15cb5080541a4137dddfe3 100644
GIT binary patch
literal 10444
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

literal 10000
zcmb7K34B~t)&HMtZ}Re*wi9R>y3m#a*#}yXGQmolwvdvvv6Hr>wc^X<HJx@cZ+P>j
z5L6UIKiqIfK?DV*?n<$f*ocBF;_|tEel92~?(2suiq`+VZ)P%+q%>cD&D-ud=bn4^
zbMHL*@8h2Yu)gYa6IG}-P-CGMb%F&4?Zb97Wv54?+lLN1313imX)>Mk*9)qfTXq=;
z2^uv}&QGSIn{3}PVW7Gm4X_N%v(Sk71WCBVPIN=sPwvlozALC1CM4<iR^oOk<b@W(
zXc8DBjz5qbB^amLYT|S(GO*af8Hf}o)tvRZ=@CK5cjLa7RF9`OZ*2((>+#@oSC}hY
zVqqzk2^Npqhn#LVov{7gN&f(!vc8@6vx0M*XJXDmOs(%M3oEdaGbd6>C++tP3&Jyz
zLpYlpb#_KQCmZeFzHLi1;imU@9?ZIFMdTa{=PDxgYUt`MJ-wUN*JcYXXr-|2obQg>
zf_c4x1odl|fp$TY>y1PendsK|_HBWBOmre@;Cu@gsAV>2q$`|M#_>2s${86+Zb_!7
zqBg8mD!xz&YbMVvyFz#t7nbo{-%YqF1;5V1C5mP}wGv1)gf4P8<hh3&FN9}PsTtSv
z73^~?T!sxCBy3NbMl<UqJz)sCl}0uRE}4amnT++EL={^sT&|@UaI@1(h0r4~N3Zey
zO%z~K%lb+SJy;n+ALXe=;<=&W(%^OreOPJWxs>dbQEu=&d#pE^<+Az%s~)hh6T2t}
z-_0ZwS<>M00#3CHlrXwNxQZh1-Kd?S1pBea!d^U&)@%>cR4POgXs@efk4fb}-@?^+
z0kucz^^wg1&!G>T);!DF!*tgrAtXqy+`_JR)3&y-5Qu3d)4t<*Ip23ZM_Jd11qUm`
zs76vr|Da&qoTNVs10kg7#aSnvb-iStdzkK;_FZKIX$vkgoSmys2CC&EXr5)Jmfi|e
z){tF_QO`maG#{fd0i`e-sENb4*1&ZZ#&A8Ia3(eCA?2h;`~y0c^eBWES$HvS;5+$K
z+NdzCf<BapUaCZN<0(Z{)Zk2;4dG=pskA%lY|r_boL`E9YK1Si@G@nR|3!7XdN`hQ
z)2<qNrG-~1n_gV5zJP>=38Mx}!gOL@>afJX>jW)o=?>#jChJ5q_5n8<#HOe+_rq(W
z%AC4&v@-ApuIUuu3>#V6ezeaSb-l6v;LS-V7(iZ+Y7@8O%_@q#MX+xcwayfUR^FW0
zE1RpUWtS4iTP?f|w-<amSc9N#?iA^cZx=AVyhCuoDb}sU<fhY1c-u36lG(w;ooc~%
z;++=Wg?j|^vkoQc*y*^F%@TsquX&G(o9`xzsazu2nQ{|0{r)~2G4Ngs@5B2m@@X+y
zg_sU}1}Ns9CFMfwK45!s=bD@nHv>ZmAEfip$rFypEShBIVm=vi?2(i+<fffy!oJ+g
zWisxX&V=WO@L@swGeK)3sKEH>{|DocGZw;8m7{}6m1sU@;h4%O4HV7JtmAF7N1YJH
znMd~L($`Z)wvxujEgZ)rp?p^@u@Dw&np^gED<ThC_#{3R5b3wG*=t>o!Lqh_Z?`go
zhw*6xpRw>+e6CWMV_DxBr8CoqO5r%^M*CS1sBGofqs;#XmY8@1Uo`Njg)b>qgGgTq
z$VFuoS}JXFzOPvLD*l_=b*@X2bPeOgF2(29Eqp_LZ{%W?x$IKT;S!|*-?H#+{15qK
zWQn_pLyo`2PB8Y42@aNPxKNkO;wDp7*GXZ5SbSYH?fB7bHWiJ>dn@K*C3PqM*TQ%4
zJsqH@bFwtxBp^_Usmi(^6lJ3;sLj_U9PI}tzK<VT_>rm&=W8j&eLHbzz_SyMfgcMN
z>579%F`Mv`LrynS-w**zJdU5LQ1OJ|aC4!SDOQ7B!FzvhD3#0}aJ;TLNkmVyIqM`?
z5_wL6#)hCinn^$@?N<EU!Y}a4z_^O63C?exQxqvIh2cn%`n84M;J36Dy03~8f@jT*
zOhs7H#QO1j3xB{L=_pAiYMbk!AdBf<7Zp8)?_CXe5`QxAXA6J9UzzHrDwQG#Svp{6
zw>j65CDzS*6vp2zJcWPIdei!IWhqg}T*`8vw(u|Q7OYSPRCzPtmQ<-0eZpb{rQ6hJ
ziwfpfsj{S6YREn9U1JH>&tm66mOn-G*Z5tA(7syd5TyGUeC-jYqx&ReNxhf>7aPYI
z9F?=S?A>TetynZYnWw|ZMygNd%K}3dS`rqv8O?K;r?4y|6WFNW1#?n%fxWIdEq#-d
zN*;E+u>sc8X}WKNoNmb?<!KFUPCP%ZV;ntD&afn+3Ph6vFH8|eh$Vn5Wxb^xqi^iF
zIVb0svV`rNoJAV?bKoDQELX{_K~^cbusvB&bjiSd7y#s)V$)V~OH)?Mc?zLfu(E(q
zn5O7`C687V*uDg9U&%>LX_0nCp+j(4fkKIVfyOk7C--MVqLhGMm1+__Q#$1WMSP85
zRdY{I5L8NY7g;Q>P%ZyLOD+=jIe~nOHO1Kl&ZeVIajHycwXCz`5~ZD5tsS+tb&7{|
zVbmkZ3RBiw@*KI0UdW<vTH#x&7M1OldbptQHDse;jT#tobLqrb!p{0BCwef!iq2z&
zJ?wbVje4Y8kMtKlnzDgfmCdrnkjpK(Lf8N;((yqBNiXS-MdO7BE}0%)M4T!-N`S?o
zu9hA{u4E0W=`c^K?y)D$1qDgfl&x56$TpHFLTt?K-|u+Na0OJK^efe{w>qN`8Az)P
zf^je;amw<l&Wp~!#FU*v1KMrLRWc|zr*aXh0E%``RY9fXs`{lK-N+}{^>ob|g62f3
z%alIZYsvFeH&M?WkYvgpV%JQzo^Q$3Lf2~=andSOJ7tUrE<VZPf_zkx?(`Kf-m!^X
zH4AT7Q5t147{Xd;)eO^cGwi=u1N3k1>$g2tUWV*1=7xgKb~rZe#uNu@O-Ts*zFJ}5
z*EGd&0HG2R$5WP!s)S*(avBbd)ex6){iJgrOxVgow<a8NvB^nzV;SbLq8)9_B~yC-
zv@+4Oc$Q>^PEk9g1_WzWeW$Z<h0T{OYz9dR?eJ`VQp71SWRsyQoiXn5FuF32nvz3x
zNLY<kZS3ZYywH*t$%|DOaQq^}f-7dVpHr`Y`gG*;C9JGZib(D@r?t48VY1n8C&}Rr
za-$_T2^+`8;Xsy!A;GR7^UPgN&n(vhU7CDOUT(=Ngq^6$E2a6E%Abk%B7R|Spk(94
z?}ofmaP}N1D6@ODC9lyTHIZ_&^tW5(b%wm&k~gSqH!YTNg1D;uC?c}E$=Pq`QvSeL
zMx(t+g^o8<?6WGd($R{9D1uw%HcQ?rZ)53@a&6k>nN$8z9<5X}5|TSqg0nl6Hy0W*
zMd40M-XV9<wN!&RHMBYHs|MhrSr|H1bWn4>lPsxVV9GsmuOaVN>w6FLuv*Gg6ENWA
zvVNbPW=Z6g!eTKfmG6a4?;d7Bq&V)8BbK~Z-p9Gsp6@Jqq9i-T;|ElgF}325e25>|
zBpha#>^S6%neq|&s3G@Ta#S8*mo`HU%Ju{6W8bE*1WSu$aLKR=L!6nObxg3ll8j=Y
zJUb|rj9W4x9}gUycm-8ld1_UtN%nT{J+*>NnUqf$@}MQ3RHk}XrCLa4x>A@wiZ;6;
zHNw3!|G=ms@{m&O!?WATbfwK8OO;K^XOzl5D_B-oUP*8S*ABxKDQ$h8jlw{0{O|>x
zYfO1WzG%p!YVI#FMOSjq&XTdy*PTP>EHazU))c(v=PQ<cRaB!K1eJmySe-9pb*?2l
zWxrD^($@ENOTHoB3>xWj3nlVdGm*<7i2jItTS<a_`0nOsm}mM>1(j)vkE`;@*<q)-
zYpfIHBf<{*+wxsian2%!%C?%NL_9f?wtdpzPF+B|a?AMA;A6R`uIC>6Jj!36PwcW&
zIpPLq1$(%sO3&=($qJkC-elU@mKz;%ya83K5Gk%Y^FBLMcsEN;eAbYkGMuWITq-?F
zgNFR9*!rsyZF||kFA8bw6fIl{gFF=ar9Q_$;4++^H;ehqTyo1UE=%p%t1h_UeB~lh
z<7U=(GeJibM2vW_1+7qmgjZTxP*oF(C2s)b81jFDj%P|rGs+F($K9Nla8w0MYcB2L
zb}Db7jc#;ZKkIvTCRl8Cex3Z)l)uT}4S9-N$iixBwGLH!DarI<wt3NDdxz@fc3vr9
zzpY$K1;Bvl6*Rq+lU?2Gx`%R^u9>1M`%;0Z^5QJu<-#qsBr}*)J0)@MOmv0hX&Rq&
zu>0?zW<&CC#t?}`qY{%)6=;QCCJ~h=Ptt;OzED*ajbOj$j`HhBh6Y8r8isxzij;vx
zv+hVLX@{!VO`Vb8=~(5U)~pk%;!)$$X^7ltbxN8DRk8g)ZD;yW+PyZtLZ1YsSLD3Z
z3Qo$6i)EWV&-G#}#N6TNmW^kHE3&$&?(FOgRW-6xV^7Hrx`#VDUU!PSk51O8T3GBr
z$`v=8K8&iSVmdl0C=Vh6<zXfFTdH^@*$7jeUGb?(oyzDt_x<&qM+3Z@>JUWVdGG|0
z@2N5QKH+(`s^NGHsqZ{9)OT)_^KPosE`8_07Vlwo(n$OtXqZ(zMSZO7eTe+9AeXaA
z`-hyMhTEkzfDE^eLs}<c434Az7|hnzkHO4i!30h_jx)h6-{r00RmZTpwe1+rn?&1S
zc+~_t#<8ZaJ$z9f7q^FF`g&;|>yKk2@BlWqhp*tb2e7q0+^Zk9O`@L@?05k2qlkxh
z=P|gO4-?pT95$d{HR+)O>DKn}FcFVoe*i_M_8-TA0J1%ND38$xa8334Wk+#M9=UsP
zRshG>WqG{tI9?Kf-drt5PCQ0xH)(1&m#E!bqQ=2j=)qe`gSV6hgHOlt>VRDF^);2R
zuMJ))#ajoDVl$atK8e?Jy>A@Hn~veO`;|uIN4$DGYy#F%@*UJ|CsyGiH1puK16_#W
zQVihP*oXDlkLMtRZXS4T!7bGDTd);(qZdc99TX+Lfal^d-hWDr-(jZ!yT#;r<TC7)
zcI=Zb*lgX0B!OXhoHH&$)d@U^8Uqc6EH}_bjDO%9`7y^r^oyU!6Y_J~4);p}`;ZsX
zzD$mODSXGa@Ex%l{?$(6PA=-MSY4#9I*+@#)bPD|yyteT3V&c*_(KHxNUSze7rsA_
z2YAcpF_Fh7j^Om8c!<Eq@p&bvFVsxn%aOXeJigWusfpBv@0h?hV@9MdV&w6iBQRs3
zNGOlTD8}0+@%UhCyV5@YZfWD?JpSE0j-TZ5Gd|rGA(>xMEqVM-p?w^T{I}x__4GHv
zL%1(i-x{gU<DW-PJaIoA;CVc?^tj6%sAGsfHULI=40wR<kfe(o!f8m+?niMB(o~I$
zb}Hh0;#^EO-Nb{%9k`ZmdOa!KK&+P#;wFy1lrDTD)paxOz$<VsmG&@RiAV7&E&fi_
zoglKI#ouDcY6JHb|KABL+-u<bb^qd_zJVv7!g8&a8mfaTQ9HJQO2|=_4k`6&;ca>R
zTiKOpyHdaF0C#XhJS9{*Eg;J;<yQsd7{Afqab|!lvaMrMY6si%VvI{eUK)2#QEQ|?
zfH!iZ>rIH@&1Dqp<=65X&dCTu0R-$UnUK?tU~w;%+?JQc$AwXYS|)>!DT#x`>Piwn
zlh43U`0W>bdV&l78IAMjl=!c-qzqJTp)i_Ys=d(y@9*Q2K{RJlmJE)|vMUSs-bq=`
z_Z5AUXc%lCmzCQlW%XcN$GDsutC^IR!AMPOdj}0?T-s>8(mA+rai%I#OVIOUbsdq~
zNKIbWs>{WZ+PuVQOwu(ahBdG_>F+7jKVSj=NLzW50rgL`h(FU!|H9uB{EfdA_&fG+
z_x)<R(=h(2MK$G6_3~S?9*8SKTI!!nO~4_(o0Kzu5KsVHtu+Z)N3r!NwjGyCfsZOQ
zt>*w^9<%iC<o5-PrCP|;IfLJH$c2Rb0}Uu(K^c%zNIfB2^YZL6m1_f%)A@U!MRa?f
zZv~>SN^$i~oPFP<Y@n#SCuGxZQNrCi*g7t~N~(Q>k=k+D9;<7T9TPI3JUK6W?m{@C
zpY}Z@cC6;eiQg(nh1W(r4KMWAnV=yJnjom7bUHFF2V(VfVL22tCnZfLG94<g$ThKs
zNy+j3+9tU!FW1Mci21PGa61-9`1Fw65TRMWG%q*D<{iQO;M*<wRZ)A@guHe_-WY3)
zG>YWqEs@41xm}sU+neO>33*p+eq?^6F)#NO;1)y{1aJ$Q<o%3K^7aUyJ{Xyomk%p`
zY95r24OT}&@x0_G<oJYqDz-4PFtQ-v_0vuAxe56~EF1|(7Ut#4k@<P~8mIkMB%GJ;
zD6Itn=?>;_$Wm@zpM^$Qi8Evse_wPq<MlaME9YXPv?4BT{DDe4o-Z93l?(VIhc$S)
zti@~PLLSv$gu5BT-!1ESpd7<7W`YUcACmR>vRsC*OE<nNoA9`7#;;`yo|Mb+6nB6{
zdL_hN(J=RV+qsV$m43NUc5s7xr(7<(WH(#K$I0bB70B8UDh4kd#l$vbt08@c>|~~S
z8cl}Si%u|5&N~?x0Srmd*A4lj!TmZst@6@Gih+jFqFSERLiv;YnfLV!2Y;av|5IQ8
mrLQN{wMz80T3>7R)zH^^eQnU!c~z>6G6}t)DqM9MBL4v!t|IyX

diff --git a/antifurto/bin/code/Automa.class b/antifurto/bin/code/Automa.class
index c606cfee341329883be8d41f4f90d6a9e3bc4d65..9ee24747ba7dfbd2afb48f9cf9bbb09b3eade611 100644
GIT binary patch
literal 4088
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

literal 4342
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
T{E`2E#VrwtcV*ncUG)ARn*8#&

diff --git a/antifurto/bin/code/Esecutore.class b/antifurto/bin/code/Esecutore.class
index 5a9a55bbfcd00494cc875ff88c33a56c0e9f1e4b..adfd4a031bf2c22d8b40e866da7f46202eccb30f 100644
GIT binary patch
literal 4075
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

literal 4293
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
K{1g8|_5T2E#b50J

diff --git a/antifurto/bin/code/Helper.class b/antifurto/bin/code/Helper.class
index 27eb86ed7d768ec518afd3d2d023d10e0143c0aa..cbfca13d4240a1884a93c6cbb7ccbb591b612e09 100644
GIT binary patch
literal 1106
zcmZuwT~pIQ6g}HEYze_a3oZ2n@eAA1Hhv%~1r!iRofc-SqtnNbE}dXaI%$gj8y|hu
zmv+X^_~?Uw!~Y@PO<F-{lD*m7yZ79)=Wc%e`ThgIGImtVVv*xEM@B^$SrsAVR4gGc
zX9a1BQRp0ZRH(>u+*P6Bo;3G4mQ}>CD9r<DC`Ut)V};`(!`PZ-TiymkIFo(L5ZQL>
zf+1G6Y_Z$<urJ&<#(tALYTI<JBkQ>(KXRF}<2LlewqxtBs(ZV8`-j5xO65c2$k3aH
z-O#I^YuSyGgj9DvnWE)cj@{;X#4z3zjm7|IF*73Pyo+J7>KW$yiqZ1va6G2H(l!ab
z>U3OF1iU6*h-OQ;Mae@$5-EnH&&hK1t<J%La7F!{Yk9(Dhz|oYHE_z5RcT5bYZ}(E
zq2Y=2Je5c|lk-{_bqRE?LJ*KRn;N!2+NRD5v(>Shl&oPJ&lo055?v3tGfbT<4s>Nm
z47tAC`zPjq3j?_sW=H8sJxC1vq(iV(zcYyuO=O6A&Jb=UlO5Fz<)hS)K{1<7o8G6;
zgT4FcQI`ag=ZFrO(P|01&QKV|?_7z2Iwf4g44r&=g-LztC)qjrx<YSi2$Wn8>>EuO
z(qzYcr-m#p;u8H6a_J@%N~V-PLbX1^wWS^+Jt&oYu8XlQc)pA12}B$bS{%a^-E)}6
zWyEQKyo{=5F^{VQ;LilBP-HzmUg<-v5tWJEKD1h)hso7QI?~03TKOl^eZ*=#Oi`Wb
zB^q7CD_@R(%XlLHl>kCM_jz!dCkZq~zvmpy(paE<tWfz9m0qA|9-(6jD4c|$!Ev4A
V25?NAq;L2H-cz(0Zu)g@{RJL2@pb?J

literal 1449
zcmaJ>+fvg|6kUh5q=aCh+(B*?ut1@RH>8L{1p!-_u?$Sdr;r{>AS9h6p!|mq{(-Oh
z0y8k<qYr+JpCInjv`{2tGtD{Kd!2RG+UN4?&&3Y_3)qlRhk%5jf)MH%nh(?yHEF13
zF}b;Wz%`eleqJ|qcYz@gAKR7?X6Pt`bSt@Zytl_~Uf8j9m)jC#hG;dnq8r?c%V>Zi
z_?sBo<C&Woa;~kL#njlg3<(i|Xl7`wAc)=@Ud~6+Dxpn5J30tr*~R36W0}eI+~!7A
zXV|qoLWZ{Z*xhNwBwY%+g^bWgp;$zE72FrbLz-bZJdAz@iVpr`<ULml+?Fu_MZyE0
z3RD3xj0hj2w|scXvX2<z3dV$quuYs9-Q-bPhzSJ=OfqyHsfRpmnVRbE=<YuC99K16
zhhf&IaCbfW+K!=D!ZbspW)*mHl^Z2)GX&H0#Sjq^Hja;WxxJ<C8WfQo&DKwJv3?BW
z@r+NgQ$90q)5zsd8ZWszsh04ZN>JSkYn#^@h6aNdixv7&A6Gse7@BgfsvTz4Qdy*g
z`CD7Hy6$q$I<__LNpJL=P6-i&Ua~CLac#Af<?g;!a3b|sl(B@ggg2u4%M8OeTT?er
ztV5pkh`j|_Q8m}HPZ_?{imm`X(pA+g7~C1oSk~cj$)`#+b-Oii>$Jpu;2&!6-ZoFw
zR;NOdRt+OZ+c_1+TZTHu7?d^B<aXLn9f#9etTT+<@#ZI4LWZIL|4_OSJbxHMl5P+2
z3xG}#>goN6zWS)8V}#K7IoNmVFwD?fqye%0AL9uP6wpN)7NEB85>oyW4f%<4G@j#L
zHZgvNmNRrF&d_s15k-)|5j4}&g%&!xQ9Pwckf@&#@ho0ch(8l;h%z(LzU(Ci@+4(w
z;}Ws_<T-}tg5AM0Jj`c);$C9n0^>mT>(y@&oJxG7QFUd({d5xm9mLd0vb(6)jY0Ha
zg65qjmvfX&pzewiAqgo$rz8wWhyhn<E62*A>u8PE0A7~oS->l5!=(Q;{a3I`Uo!R9
J@D5pY{{`$OVOIbE

diff --git a/antifurto/bin/code/MyQueue.class b/antifurto/bin/code/MyQueue.class
index 9801fb6cbdbcc4c4617ce10657e8202676670f8f..50ac71d1e9f4ea9afa31bd320196bcda41a7245b 100644
GIT binary patch
literal 1160
zcmZ`&*-{fx5IvJ^vP=@fs;CHpItfZpaU(H`2vt-Cmr6=Y--hH$T}&o%GK1z*`~qHl
zP)kFVR`~(`i67vrdTx>eS$w(O)A#i0?$dXE{QmkKzyemINWs*Rj=~2sf&pZdH>-|I
z>h5xsF@B~nrz0D|Jg$UsHHvFkP?+oLxS`{wj$0anuRY-j4I{-ZYun0tuB>I39LH)G
zWy{TJh?L}}ZMmL9%=mGbe7T$}5E#l!Te<}eelz`4Ltwd4WlFLrZSl~nZwRMsZPXai
zWoxD0blY9v3j$lhuCl(_Bd=NZX7<s>mZ-Qn#S=2guN>VG6(P6DFl?reVl~7|u2p%p
zZZ*4wI5~$i)6C`&j;J@b#Zs-N!OWKzkER!nhBQP=4bQ2FRjK+m*4s~%RC7uv1EUzz
zFm#M&1_m)?U>v6m+{U7T9L5af6?~!#?@qX8yTWn2rYou|Z!4nd%7(4uj)4O1QjCAD
zC&m8#Jp)U)Z(tb@46G<hqe7Xp{nj)L>{sY%NR_SX|Kz3m5xe2am+h`Hfj5?P4{(&)
zEmzdZ(eQZDe<HGxee6ivExC@c>QuL<!oe{2)l{IGeQ34JlJ;hAwY{w<z}m4J4OVKx
zaxlf`oZ{2h_-?5!?J&Q57(tLe7s2xcBlGan0|qj?&@$iPd%g?*7X&_bb5HV25CMb{
zKm<udiRPO6*^{&?JDmB9KnKD1ds(4wJkCB&;|%MnT645M+Jr*Sb`W}&=|DeRDaAU2
zh_mNj#}ni@i^)ER>~l;rHT({vG?AS@zlxs_8#FqI@BI0x*!>+OKClHHF%F=9UNy=D
zzro>kwiDwJ2}Y9~XN>+h+nnNUnB%VNI2Y@epJsGsPp+AR11I;JS2aK^Q|a|uKaUHH
H`Ec<seKzU}

delta 671
zcmY*WyKWOf6g@NRc)Xjj;|C52uXu3)dkwJ@9!Vf1m=FmhB18dEpjzxD+Q`_JSp%-9
zkZ4!iz!#)J;vv{bAR*CGQBv>&d;l%sj%|Tx=FWYcbMC#*^=JCZ*WVvM16anI0S-+d
zA~Av}Lvq`GWS1LubE|yg-nLWo7@|vV)Ag1av_kQ=K#U>d+Zoe<fTm*<QXnpoz!-z9
zwdziJy?3+gbRGXzuBeJq5@}=@g!^#qLEG!~f$peGR$?6c$+zqNkBJJ!I3^_yC?R^Y
z<+=BJ)kec0j+9CrmN=qPk;k^{3FLw=%#7<eioC$I#4#KXw)kuzh5|$OTGMknoo?H6
z>N)30&1rjXt7*VON#LZ!Da-^f_=2HiR3v6G7kuMpTDfN=&MKObTEnqBez)Ymp7g(O
z1as`}RhT4()8-hxG&0$9<Z;Z?`ltm_dKV~Cfkr<dY3+hppCC4Op?`q!w%@xLRJH6=
z+RCsxM^;tGtoJZNBwr1x=v8<?oOsXU0`Vy98L~=4LRFVS?Ax$HObn4#oVbA$blQ8I
zI0g!r2;(AMe1PGC&-X#{)O+wH#>pJo+52_<9nAEJ5XGInp9)?JQGP=j1kIhm6tye{
uGLqk1A%+<7tP4zy4jC>HL-p?lrvIPm^gn&-mY`Zer{lxk%UGot$CW?CVq+u#

diff --git a/antifurto/bin/code/Pair.class b/antifurto/bin/code/Pair.class
index 63c21e1fcc5b31b57a8ebe1d164faa30bbad0c41..86b1dcf26b53593f2adc887c6453e5aa817d353f 100644
GIT binary patch
literal 902
zcmaJ<ZEw<06n-uR3Z<h^HgV3mu@?sgR}=j<;}>7Eu+0Rb@nh*4Qrucnit%S*;#i`I
zKfoVld~TT|$}~;Sx%b@XKIc5=+#f%`eh2Uv4>c4~%VP;!(rl~P(U3+h2SfVZ9LgHw
z_vL0!MO{My4HcG(ra&eRhrTOdwg=8f$3Am{zTJr<Kj<F_DCeWTK=z3r`0-PLz4{_(
zG17P|kbV}PdICn<54_{?dC!ZwPVbD7T;Gekvy992#^PmWBjQM=)#LDR6b2`~f#=2o
zRl>ulZx0x=4?8EvvjbMCz4+vM!`Kgl5fjAWtbBo`PVBfJj+|kVo5Bh0gyYEdUiz|@
z{2RxQ_N8ncCR#cSlysC)5~$peNyh{1>sZAd9d}U`xb+9<x(FRMT4Z<G0$ZjKD9wBO
zTaHqfeNu*FN;~*}U$2DzOTIDWwBkf-H*#DLH4eMTmyzN}Ny&<;=riD;QK4Pt?h(%w
zdc(Seu$mW0S*;5wpBWNZp*8tnz{iq?4*9Z*{3sjMD}r@;K}5#-g4E>tS~dxmX>Z>M
zRsM#q5X!c)99h<L7L}sk{D$=VOJv$jGb<BJp}uRHIWCoCIcJ&Gxr!V)Dp<ok&S#Ab
zY4R5Mb6T{L`xU+9HmoV~Q)rWRa|&Hd7zR`l6nH$BUSnj7(zhvo7wg1O+iR5x1U9%!
GVe=O}d#4ou

literal 899
zcmaJ<+iufP5S){n9mj6cq!$XbB)!nYDfI)7L4Dz>Ds7Px74hh}mgUgek>emfD@Zhz
zK;i@VD8!sNG(aO{dG~m|J3F&`e*FCU9l#MR4Jo7*WOQVa6DalVkG6Gb2cC7->$^@Y
zkbC9_etaa5t~bu}P?1-l=_o)K$UEVMYrVDoNFW=B1K$xSx91q0IPwFpC99Tn6lF>J
zYUn9g7N~@gXZ43+U>$ePPLpmLN=U0HNWZFM4eKlzjL4!@zYF_EBq?t-+6zEiDvBBz
z+}H5{4+Zo%JZ9V9`qt}<t0adl9gk2IP~$L>BCx{rI|3DK3#|Rs`{gIc9mIYZXsBUV
z$DSN-alm=Ro!E9hbR*kw1@`~1Yc{~fxj^PQXHAH<AGoKZtDYNm?cOCLs^`YtWcE28
zPlld=cH4d^U`!jH*n?St)(J<E<G%7`bzW}oP%0u%mA3(WQ*yo26L&_R1^0``wEO&e
zD(?(^(Y%2$o7YgxgKHR{84{?|mXV<?(CWy;z!D#U2C6fFO?ttMtoa4X__i!J4KCA~
z3sa4MQ&*YFm6DF6^@5}%{pvTA-rw*ZHp>;+V1ku*&GJ1Sjp=cYlJMM+cLNn7Z4s+U
zgbZ<Oe7SpCiT#>hVi(N`HYV5{x0@5}h%v)}LVy~7&!x*rZd3XW#qZ&OIn?$>nSwsy
IR|<!}08ApMk^lez

diff --git a/antifurto/bin/code/Publisher.class b/antifurto/bin/code/Publisher.class
index 7f601d48df6a54254ba827d30fb5fe762a636eca..4d607d806d239c2b6883e4b242d430e7d963e18a 100644
GIT binary patch
delta 612
zcmYLFO;6NN6g{u4ylLmn2ZJCo794P7rc<a2egVSP1!E*kOx*bxnxQ%wNtv1$7bGs-
zja~W!*cnZvL`{rq7ybly{s>)&_Z1S-^xSveedpYh`!@3~^W?|BFW&$xV$DJxS4`wk
zRdAJK)`EeWg*qGs4MklAa~9^|aa^;I#dVGw919Fa`}wwH$gflNz2?h}$dCNx_z!aj
zuO>`}p_QN)^jG5<?e*Y8t;(Q>QID`zf5ed6?92AErrd4Gt*)P1&eDMRvo^UVFbZ3s
zfTF+%&NG<lgoiQ+RjbUgC~y<E1a9Mwz+Ef}EMtjdMc^LF@q6ag1y*5GxD#cx)eZJ`
z{E(seRKAd2SN1wyYbW&O_Tcw?Y_m#ypG~XG9lzh)>%?zZWuKw28wS08nzR+lwvP%e
zDo@+f=%aXG7*1J<I3=aCPIsdiBYuI{0#%)A!8rnR8i&vv_YnF=x?&h7EYWrWwc{*I
z2r|!|T3+0zCle?Wo;Vrl(~++*9yi=0oO|GWf;N|6=*%sj4l9!1Fgce<dI|QaK}0<j
zrK)5J_;(oVbkrLOGW44XtOI14ZUS*|{EI}{ERDA*mxl59r#@AkB=s119FwcYF~xBi
PjHB|Gf-y`}SHsMIuUKFm

delta 569
zcmXYtPfrt36vcn<P3cUBX-f;Gq6J#83e$nA_#eV2U{E75apzDc*hnfF+Jzf6F5T5x
z`T<zEAd!-2VqE(LT$uPlT!?pC@-p+@Irp7&-?^Wxk5>8TzpvkcO*U*ahDpj{jC5Sp
zB|p8<?zFp`3S(*cNd}9IiS00sqsX;hJrA1?d%OGX!xv$sNC^=LzcnoQuOIcoUbvp9
zat?VW`X4GYCPhVNqzu}TO@XPTT`6uVH)~Vog2{}-MJ~l_deu&tS%*31<3QI07N|Ka
zuo%DB3)KYH9j>sbNbiMR|8UP{iDeVlp&_Q9bxi`T#J^RuV&l<txJFu$KZx3$?&EII
zdbtw?t+4;h>mR?HGNN8bksb1WaIh2X?uYRkHTQs;q|h=YElbj)xIRQT1WPnI8^VpT
zCiteHWH)5byQe6(af0c3CuEO>QrwE0M)~c?;I`m9l;l5>rAW!0$!`>%HoQ|Nx7{z8
zD+8v_rBcidohL}r7iB5#l0G-+NiFGHPh<lsKPYU;G20kWmGAO^t4CPAH=wwBboNJ7
n<1*`68I6`_{W9k3_e4D{9%oe0CYC8(l!^CO9;Uc2Rn7W;e5G03

diff --git a/antifurto/bin/code/SubscribeCallback.class b/antifurto/bin/code/SubscribeCallback.class
index 1d482a3ae71725639e0a6261a65cf3d1aa32831e..39b015fa02874cceef916f7b8aafb994c701a80d 100644
GIT binary patch
literal 8929
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
Lf+LJ3AD;RXn^6|7

literal 8241
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

diff --git a/antifurto/bin/code/Timer.class b/antifurto/bin/code/Timer.class
index 2edff9f10d2659030c9ea4fad254d1e005b90b87..453e7f52694373063e3dfdbee7b4c29d1ec4ba84 100644
GIT binary patch
delta 501
zcmXYtPfrt36vcmUI_;z5s~`%}Qj`kTb}AJ7i-IhhsJNnG!G;X&1V%?_YBe!&>j!9N
z<<4D~Mq{gS;nIbB6Lv2A6l|<_8W-=LdvfnNIq&{Touqbu{{8kHxW%SJhRbOT^KmJ}
z<w{%@92U9iP~=*?Qqq*uxKtdjv!q$pR29jlA9}A9>Y*YfeaCy;eUt0H&!&ZM1V=$<
zGy1J+dx=tcN0Hg?c#UUIyjI=Y4}CFIINQfB+YP@Kguak^@Z4`NKlNUDhADD}vy2-i
z;&P5j!+9=fRt&4$(A+c<|F+={ccXPxSkbH*?r~qUZrI>~_%)83esyH3n22qwp?7pp
ztsl01ui5=k?4B0K<r6PL-)|}G(xdWD6sXmxr`Gl<$PqGfBO5EuA)OUR8KI;Zp#&PC
zlDN|-E()v3UQ#gUenGjjeJnTMC*dyjvE8iQC;3sPikawxRoKds`>$(>&XP&R{Y-K|
z>fP{EI$K_1fEKXcer2pT{Im55r!wG7Z+IfoDdw0bEz+4NpIDfl6$>qFPm`DNoKTBP
F{{Us4R?`3g

delta 561
zcmXAlO-~b16o#MMkGXcZQ>%PKLFz|sr$Rwd(IN?(CMvFI*cmgn6Rj57)MDbQD|c?l
zBqsg>))HEc3x9xn6ZS6r4Q{Mw#>GAFeb0H%=b81>>i_ur?K`l=1DhCeO~R1GQe<9v
zZ@qHMJ9ts9z3lp4Lt$+;51PF#MZ8elOL2~r#x{&$6n4Gc@XNL4zTZ_O8-B}sr%(?=
zRoZYqlvv{Jd5=Ta1;a(g6^Wy#)2pFl(lEueXuQK-d*4$yJ5j;yh*oT7nbXW0vMdB2
zRNk?<#F8dwxXhK{MCG&L{MQV5uFC*#TE5?r`h`cuJxwvFsGO6c#0|}|VTE$=Tdhfv
zHEwEd8P>TS%)~a1K34nAZqKW~e&Tg%-t(3(o9(s_yLG?Xj7YTMN_ZP`GIvaFmk=vA
zkY6lZG(y=fLRl(88Hqb6?h31lE-5(YenGkO1GJkR;JC{JGVW|YF<|1egcTd12uo~A
zn%H8;NK1op9JxnY6!#?hzi3B_hQpNHQznMYd>Z|cUq+rYWKlrB|H{?l(XX8o+|rQM
k<I$O<PO`uf1xXE?EusnX@$A%nAzGZzw8Rt@p)of90pmVfc>n+a

diff --git a/antifurto/certificates/localhost/README b/antifurto/certificates/localhost/README
deleted file mode 100644
index 30b62c5..0000000
--- a/antifurto/certificates/localhost/README
+++ /dev/null
@@ -1,2 +0,0 @@
-In questa directory ci sono i certificati che ho creato. 
-La password usata è: pissir
diff --git a/antifurto/certificates/localhost/ca.crt b/antifurto/certificates/localhost/ca.crt
deleted file mode 100644
index 8d8e551..0000000
--- a/antifurto/certificates/localhost/ca.crt
+++ /dev/null
@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID/TCCAuWgAwIBAgIUC9arj1dlWXFbpFhOY4tTSHvpPQcwDQYJKoZIhvcNAQEL
-BQAwgY0xCzAJBgNVBAYTAklUMQswCQYDVQQIDAJBTDEUMBIGA1UEBwwLQWxlc3Nh
-bmRyaWExDzANBgNVBAoMBnVuaXVwbzEOMAwGA1UECwwFRElTSVQxDjAMBgNVBAMM
-BW1pYUNBMSowKAYJKoZIhvcNAQkBFhsyMDAzMDc4NEBzdHVkZW50aS51bml1cG8u
-aXQwHhcNMjIwMTEwMTQzMDE1WhcNMjMwMjE0MTQzMDE1WjCBjTELMAkGA1UEBhMC
-SVQxCzAJBgNVBAgMAkFMMRQwEgYDVQQHDAtBbGVzc2FuZHJpYTEPMA0GA1UECgwG
-dW5pdXBvMQ4wDAYDVQQLDAVESVNJVDEOMAwGA1UEAwwFbWlhQ0ExKjAoBgkqhkiG
-9w0BCQEWGzIwMDMwNzg0QHN0dWRlbnRpLnVuaXVwby5pdDCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBAJ0JxzeKCC0rChOt9C+ixBi3BtFLMNxF0EY2lraY
-80gIneAVNub/UMnv7UiWcfWOQgt1qaPwSRyW9TMu9EK7wG/Ak5ldj7Q7saGj2QU0
-S8u3iesfwjazHYfI2lE39uLe55toRmgH4Zo2vFnMXxj3Ch1Clysjy4L14KpgmmMd
-rfhZEu27ZqxZ4cyKE54slCPHxmBamBq7q/ZpDhEFtqRXDyH59wfzHhPsm/wAcCSR
-MFdDR6ZGNvYIyH9HdSu/PW+Fg4oeC4JZs8g9ZmiaR99B0VRMSrKOotpJkkUPeR5X
-uIdO91CSieuAsXFR0isSgWPN28aGKuDZ+q9usuop/wVxfC0CAwEAAaNTMFEwHQYD
-VR0OBBYEFKnDlntcV1O604yubWyepbv2x0z2MB8GA1UdIwQYMBaAFKnDlntcV1O6
-04yubWyepbv2x0z2MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
-ADr0hF+pqZL96JI2MazxuJ8aaShNM+JHsaTuicR7gBFMB9C21QOmLD6lREun1pdD
-oldfr+WtfnFkYjvACTbRkCShfmMIVOimXGw2xxzx1o+nRrIRyvqlisidb1QCl28c
-BXtr3Mm8U+lsdIoUcKT+nWvHFlXpqtSNoRpO4SCawJr/dkgZi3D5MmlsiYYMA/3V
-gJPyDX5XuEvRmGIf1kluAWIWebyCc4KDyM/PT3QQKAyeQwAhRJGnnx6LLP5nBscn
-+FumrHPBKf8KBgP3+DjdzVC+5o23VqXoRGCf8J6ectzkPmH+zUZUZfRF2dZk4rVR
-Lmm+2hhoFwvyAlVCPLqnNnk=
------END CERTIFICATE-----
diff --git a/antifurto/certificates/localhost/ca.key b/antifurto/certificates/localhost/ca.key
deleted file mode 100644
index c590a58..0000000
--- a/antifurto/certificates/localhost/ca.key
+++ /dev/null
@@ -1,30 +0,0 @@
------BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIB3awHNyDig8CAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECJmPW6mIm/P6BIIEyKGZWCtCmZ8f
-rxSS4T7MEhWtURpSsOZxFewf9NPp2/ac0Q2i8+K0qU+1NTuEduxla97JBSVCtb1c
-Gz3R9oIEz6RtSWmueyFABdiXgIcSThTf+j/XQF+k7kwKk++MJVufWT5VNcPtifQ+
-pkwWGOz/qx9MWzEyKLv2u5lC3S+VCqYQkCQFDNQrZf+VCbn33EScxMjwg6MlbzMB
-t8UqzJ/R1l+06lQ/C2aGwNOq9F1yvvrayZMkHdQG1qvveBjbX+yKDAZvqolpZW0z
-jh1IE6wsy1tdyBUbqG6g7cAwzngaz2g3+O72JnLP7zAeIX/86whbPSUyCPIviuoV
-qT4lkTaU1LacvvjemSSry6ws13V6wJ1lgOk1gBoanOExaHPN1GNarbOT/HX1Qo28
-i3XQbmEiIzmk5O6VQjxO6lon04rYHJ4CF0dS3OW0cC1XBH2WZoFuhcPNSRrE4NcQ
-WwIx6TDm6DxlFuYiuf8Q5k5531VKEsPfdD4HiTiJWBwt+V66V63AMeiPM7nKD2Se
-ACs8wor1D1iFTw20BXG20w/I7TvZ9d2UrVtBiIUszJHzRm2hSXxptcLey06RF+qi
-qscs248MlcnheDWPiKdXPICATgF8G0xjSvoAr6STw9n3agKeNLVsqkBex8Ao496R
-hqGtQ70P2PcF6Aq2CjmtqjLHSLTiGmfVOYH0bWFUWNpasXiZXwLPKu9/M9e7NERD
-i7lwUJgevz8VL9afq5pc9vTf9K36kpfIXUpQt/+QkPYiiMdeiqbiRncS3Kp/m+Ks
-vfCaJYuOwNXVvpg+cGiLIeFbEVQeSbl9kVQvpposQ/oIFHZekaH1fP0fE9pw0w72
-etix/OZ2BXOSR2XxxZsTvrjdyOk89Ulz0/ZB4RQ0Fn+H9IQgqPTeU4ioYwza2x8y
-rBT9QW52TJAPEHHPLkqKDZl0a8vCS3JARZ+OpeKoqhDM4cnEC3ASuFIBhtxmbBio
-AGFAZcTys1PENha0L956LoQ+9TvsvJrDVIA+yT+BuHqVhdJoYJ/n9Z1UQgv3vKDO
-2XWlEnK/me8n2cDsFC6CB6IrHurofXAeMQosV+KoSn/oGNOpFWDfXMbaxyRpi4rj
-qRbqw7Fzs7BC7MdLAGq2pN8yvbgEs1N3lzkJBNFodxc+Y2iU3CCD1TWv2eEW3/x1
-74RFZFmHRhdH1pBlp+7TCiw/nc33Kn34jpANuYWKv3eJdq0TghjPgDpL7vIaYKbb
-gzR6lboYnFWSude2zd8OLjadUWzoCk67Qcd+dkNnCSTDTb7auckzDWU8NDH7zHca
-jbQ+5Xq86U/glvExw4VBtiCrtBbHbqXhbnTB7u3Elx6HFD2lDmjAwX1pK6HgTqLo
-8h7lgtpgZ4rXQD/b8r8AHrjcas5h5n3pLw1UGIcH+6AQ8Z4DYL9X4dWiZpsw+fGo
-BpHUYrgRMYWG7IVB6Ta2lskrpEBYMZJFOzvLUGwhZnD7wd5GWRbq9r4Im7f7Ee5d
-ntJjgz7e1Je+CFCxl/wESsa2LOkaODKhWbJNJa+jpGrBcXcA87W/LBSy0mn66B3f
-0OBSBG50rgwUvbYtMFvV4k6uj0YjAg/gASOiMU9QXrljOiSE/vINQgYPOuJhVUri
-nMbdQnuNJ27s+a/l8XdS7A==
------END ENCRYPTED PRIVATE KEY-----
diff --git a/antifurto/certificates/localhost/ca.srl b/antifurto/certificates/localhost/ca.srl
deleted file mode 100644
index 791528c..0000000
--- a/antifurto/certificates/localhost/ca.srl
+++ /dev/null
@@ -1 +0,0 @@
-6F563B2A9592BC5962855BCC51155644910E685A
diff --git a/antifurto/certificates/localhost/client.crt b/antifurto/certificates/localhost/client.crt
deleted file mode 100644
index f9e8b05..0000000
--- a/antifurto/certificates/localhost/client.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpDCCAowCFG9WOyqVkrxZYoVbzFEVVkSRDmhaMA0GCSqGSIb3DQEBCwUAMIGN
-MQswCQYDVQQGEwJJVDELMAkGA1UECAwCQUwxFDASBgNVBAcMC0FsZXNzYW5kcmlh
-MQ8wDQYDVQQKDAZ1bml1cG8xDjAMBgNVBAsMBURJU0lUMQ4wDAYDVQQDDAVtaWFD
-QTEqMCgGCSqGSIb3DQEJARYbMjAwMzA3ODRAc3R1ZGVudGkudW5pdXBvLml0MB4X
-DTIyMDExMDE0Mzk1NloXDTIzMDExMDE0Mzk1NlowgY4xCzAJBgNVBAYTAklUMQsw
-CQYDVQQIDAJBTDEUMBIGA1UEBwwLQWxlc3NhbmRyaWExDzANBgNVBAoMBlVOSVVQ
-TzEOMAwGA1UECwwFRElTSVQxDzANBgNVBAMMBnBpc3NpcjEqMCgGCSqGSIb3DQEJ
-ARYbMjAwMzA3ODRAc3R1ZGVudGkudW5pdXBvLml0MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEA03P5/25CxPGTBFgfJHXzZMoT986OwPG9zyYUnhCXLEI7
-GYdF+42OVdY/NPLQqvCe+G70Q2g6B4nYBlFc1VugjcZpvnm/pbJWHs1T6QIcp8CY
-29BqHMztoYjCciK5xLO65hZ9+w4EwoBqlyXfqXbJBgatomh7W7hpM/s/c7uh+/e8
-CAEexPnRXC7URAYJ0UZmFonpKOm0iM1GsxZEARhpmEDfiPSBlPmX42YeAWHQWVJw
-9bZccD2X5u9MeHa1sSorPWmsKVgCOPFoOh8wAmo+ANgDCGlMjPRlH8b8szy/mEAL
-p2Jf1XbIAB4xlIZnA5GCN45SBbT7ExjrF48V7yg1eQIDAQABMA0GCSqGSIb3DQEB
-CwUAA4IBAQCFWrxUlJL/t+w+vZUZQBli1EM42fkc/9E1zet4kgjda8x776fLse9J
-ghynwR+2Dy7Ct+L7fyjSRXrrQ0iV1Y+h6oQyBwrnlpIwTC6T2UxRO40/XyPAKBT1
-RVakHpzObi3Q2RqsVT45wjVeRRui0WTLMuQ8z8ntKtMnNQ35uvdpCChF7ceY7Zcs
-F3ip+P3tUKGjw782wDVirTNyAa602JKS5pOfxWCoRSckdiC56Jd26BITEaKRUEQh
-Lcs729HwKU0rU0F3hD2BkJvpyp4bdZcpMNjW6FrdudMFqjOdwvCfvPcx4Rv5MdX1
-2YjJ1axBuN75y4DMGhh+4Mbn3L4n812i
------END CERTIFICATE-----
diff --git a/antifurto/certificates/localhost/client.csr b/antifurto/certificates/localhost/client.csr
deleted file mode 100644
index 54a3948..0000000
--- a/antifurto/certificates/localhost/client.csr
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIIC6zCCAdMCAQAwgY4xCzAJBgNVBAYTAklUMQswCQYDVQQIDAJBTDEUMBIGA1UE
-BwwLQWxlc3NhbmRyaWExDzANBgNVBAoMBlVOSVVQTzEOMAwGA1UECwwFRElTSVQx
-DzANBgNVBAMMBnBpc3NpcjEqMCgGCSqGSIb3DQEJARYbMjAwMzA3ODRAc3R1ZGVu
-dGkudW5pdXBvLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA03P5
-/25CxPGTBFgfJHXzZMoT986OwPG9zyYUnhCXLEI7GYdF+42OVdY/NPLQqvCe+G70
-Q2g6B4nYBlFc1VugjcZpvnm/pbJWHs1T6QIcp8CY29BqHMztoYjCciK5xLO65hZ9
-+w4EwoBqlyXfqXbJBgatomh7W7hpM/s/c7uh+/e8CAEexPnRXC7URAYJ0UZmFonp
-KOm0iM1GsxZEARhpmEDfiPSBlPmX42YeAWHQWVJw9bZccD2X5u9MeHa1sSorPWms
-KVgCOPFoOh8wAmo+ANgDCGlMjPRlH8b8szy/mEALp2Jf1XbIAB4xlIZnA5GCN45S
-BbT7ExjrF48V7yg1eQIDAQABoBcwFQYJKoZIhvcNAQkHMQgMBnBpc3NpcjANBgkq
-hkiG9w0BAQsFAAOCAQEAwUWZxRNPK4DujSRt834LblMRE8q6r7Uc7i/lcjULsQYe
-1My89BwG3f166xOyEi373NQVjGPeQMWcO9ZgfZsGq+9UrYKaP2F9hER0A4clzhlU
-htwrWzTK2ixq4i/xlh0zTCr9P9l5ljfAN1B62k/8sK4UVkUmMu9iWzjKKctt43SP
-0v9sQIP/5mtQpJ5/a/M9pxis455W4gPKBs3OOXIWycoXWFOKGkP2bS4JBIhzi/88
-zRrkkQQfJD7Af0Vf4NTVu1Lx4C0RK+XIvzQ6VO74uIvRwmOMaotwikW9KiKB46kk
-UFNRKy1gze2afBPBRX9paQ9uzTgkFIZZdlsGsySWfA==
------END CERTIFICATE REQUEST-----
diff --git a/antifurto/certificates/localhost/client.key b/antifurto/certificates/localhost/client.key
deleted file mode 100644
index 18c7d64..0000000
--- a/antifurto/certificates/localhost/client.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA03P5/25CxPGTBFgfJHXzZMoT986OwPG9zyYUnhCXLEI7GYdF
-+42OVdY/NPLQqvCe+G70Q2g6B4nYBlFc1VugjcZpvnm/pbJWHs1T6QIcp8CY29Bq
-HMztoYjCciK5xLO65hZ9+w4EwoBqlyXfqXbJBgatomh7W7hpM/s/c7uh+/e8CAEe
-xPnRXC7URAYJ0UZmFonpKOm0iM1GsxZEARhpmEDfiPSBlPmX42YeAWHQWVJw9bZc
-cD2X5u9MeHa1sSorPWmsKVgCOPFoOh8wAmo+ANgDCGlMjPRlH8b8szy/mEALp2Jf
-1XbIAB4xlIZnA5GCN45SBbT7ExjrF48V7yg1eQIDAQABAoIBACmOkYNx2A18rLgd
-2YEA7WTRkjsRjVy+Jd+gTE0EVbGNErBhtY9Ksr6L7MArOHdf8t5AcCEPSthQbvRO
-6T/FUjiK1h1pMBEQi3xiPit9DsSpRWFuBGzEma81gYGM8ZWG/SRbJ0c/6g+PzWMH
-Pn2/qqJUjattfVD5XTOqHT5RkfRC0A2Chh6btbw717etEhFSKfzORCYvDqlkxmci
-BM+R7Nm+yafZxncm1+i9SfMepttCREge4KIUOrXBwgJhzP6q78rLCCqobTygkPDM
-dNlgo6C/o4zNVg7ZDkv5PIdbB2rYNpDqMio85nXth5RTLR+QRNbU7qWvCnNvUvvZ
-nbze2AECgYEA/r67EBQJK1PVKuIvzodEv05QxSRdVXe6HIkIgVLMh9CIpqDb0rjA
-haMTCHwtsaLmrAp8BkUelknjQ3TOH8KHler0tlzk5/3ycrYKtvvYyKDZ5gON8uXo
-nbNCdptLLVsqP+P4/R4H4bnk5wj2LFCaly2ZScOVJt3/Lc1NHIQOcfECgYEA1H6m
-BmZ9H6xpzT9ldidCTR+DN/bPYCu4N5olDlYStfsBnZWpuu0hjpo3/+MqEDR9lkhX
-vN4QwnLSUhMqWN1OBcjcQV9cDHSZj7mOy5fKcTaWCbDiSiVQhsR1Fxht8EDonDKz
-a9nMEDIcFWZ1zjPPtw/OIDdbnNL1W8GUd4pVdAkCgYEA6Mx+gLP+qSTEcpsfmzqM
-vdMhBvgzfy6Z2wfzyNNU7GzK5JOuL8T802NyuldZHrPC38f5DXXO/QLq+DNfRzDr
-3TpJhfogik3Nab0oz44Zz0cHuibXavll+e/etis2qW1dj+OTICV4iHTsVaIf7eF/
-VNar9fgRbuKDF2U9qeiYltECgYAd90Y+fNGEV/ILqbcLNHobGiiNCdcwvrmZzbkQ
-Dn9Q/na53FM1Mx+aVpEzGrvh0SUsvkLxNXezlDGotV8xbPQFyM+WwHXgo8jMBeTn
-PR6lXIdIEpO21RBIEQhaG23VhbHH5TZ8LRij6A0hz3MpgxD1xdrRnDzlHrLPH7tq
-KC3o0QKBgQCDzcHP6IT+ATnZ8uGxCtdB7F/NiHKotx4mmCYw2G4EXkmFEef+t41V
-Xieo6Aoj/f2BfS5qsiW+EEvQMCIAF8+Gcaggz6p4UAAC3MbLpmcTeE+rpxBLxI7v
-VWBDeb3MRU6PkPL/fFW7Uf/Qvv1qwhzKG18Dv7SKPk4lUv1fbpSUkg==
------END RSA PRIVATE KEY-----
diff --git a/antifurto/certificates/localhost/server.crt b/antifurto/certificates/localhost/server.crt
deleted file mode 100644
index ac30db9..0000000
--- a/antifurto/certificates/localhost/server.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpDCCAowCFG9WOyqVkrxZYoVbzFEVVkSRDmhZMA0GCSqGSIb3DQEBCwUAMIGN
-MQswCQYDVQQGEwJJVDELMAkGA1UECAwCQUwxFDASBgNVBAcMC0FsZXNzYW5kcmlh
-MQ8wDQYDVQQKDAZ1bml1cG8xDjAMBgNVBAsMBURJU0lUMQ4wDAYDVQQDDAVtaWFD
-QTEqMCgGCSqGSIb3DQEJARYbMjAwMzA3ODRAc3R1ZGVudGkudW5pdXBvLml0MB4X
-DTIyMDExMDE0MzYyNFoXDTIzMDExMDE0MzYyNFowgY4xCzAJBgNVBAYTAklUMQsw
-CQYDVQQIDAJBTDEUMBIGA1UEBwwLQWxlc3NhbmRyaWExDDAKBgNVBAoMA1VQTzEO
-MAwGA1UECwwFRElTSVQxEjAQBgNVBAMMCWxvY2FsaG9zdDEqMCgGCSqGSIb3DQEJ
-ARYbMjAwMzA3ODRAc3R1ZGVudGkudW5pdXBvLml0MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAx0Uvd1dkTF7c0z9+6LkaasOlXN2na98GDIQgE/0tyKDb
-WFFKn3AiA4JlKsMQy6iv6deAyJPxNXBdgQ5U1QxJtp/WS7W7MvJwm1nTN2+0M0DZ
-OYu5jvDUcq2jovxuQ4EMzUCzmfUPQ972Pl4Slf9uG6AWlsm7gnzF7a2mKG4QfxLT
-o4coYG3M+Wwo0z9YQKbVrEQ+khUT0mSXe305Wj/l7amKaADrNAaHI2f357p1SJPX
-FVAIp0tl9dpJ8HWtSEuPjoNnoLUHLcviLX8saRz8hnxjuvxBOxIJFkunndqLo6wY
-2K//3Y8rLTm4aiXnRVhR0kkwxFVYsHtCWtvTF1VrjQIDAQABMA0GCSqGSIb3DQEB
-CwUAA4IBAQB/U+S1oMe4c2B51AkTcDc3lccBpR5OTUrcuOCLLTc37SP/+8lpzGin
-RmgX9rJ8vshEVPNhoAHYAk0ueuf/7g3atWPPFzovhLH7Z9Q+zuBA/zl9Ae/xs5e2
-1t53Uok+zhvP0CBGz2nfPrVlfSRqc9KX6voyrQqKpJ9v6UBOLLGQ6b+OCAGAWQ3F
-q59dskih9RF+riCLuprOdjCOlTjgD/Pw3jmR0Szdio2/2bMEjrZQnpJoDG+JZnMt
-AbpxANFsZhTp8ezrVNbs8omAvMjUbjaVvnM3c7l3PTpIE4UMbYhsl9J5RXj56Tnb
-5lNLitkvWon5ZKQ8BynqOHS/nqZPujIs
------END CERTIFICATE-----
diff --git a/antifurto/certificates/localhost/server.csr b/antifurto/certificates/localhost/server.csr
deleted file mode 100644
index 6461b4b..0000000
--- a/antifurto/certificates/localhost/server.csr
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIIC6zCCAdMCAQAwgY4xCzAJBgNVBAYTAklUMQswCQYDVQQIDAJBTDEUMBIGA1UE
-BwwLQWxlc3NhbmRyaWExDDAKBgNVBAoMA1VQTzEOMAwGA1UECwwFRElTSVQxEjAQ
-BgNVBAMMCWxvY2FsaG9zdDEqMCgGCSqGSIb3DQEJARYbMjAwMzA3ODRAc3R1ZGVu
-dGkudW5pdXBvLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx0Uv
-d1dkTF7c0z9+6LkaasOlXN2na98GDIQgE/0tyKDbWFFKn3AiA4JlKsMQy6iv6deA
-yJPxNXBdgQ5U1QxJtp/WS7W7MvJwm1nTN2+0M0DZOYu5jvDUcq2jovxuQ4EMzUCz
-mfUPQ972Pl4Slf9uG6AWlsm7gnzF7a2mKG4QfxLTo4coYG3M+Wwo0z9YQKbVrEQ+
-khUT0mSXe305Wj/l7amKaADrNAaHI2f357p1SJPXFVAIp0tl9dpJ8HWtSEuPjoNn
-oLUHLcviLX8saRz8hnxjuvxBOxIJFkunndqLo6wY2K//3Y8rLTm4aiXnRVhR0kkw
-xFVYsHtCWtvTF1VrjQIDAQABoBcwFQYJKoZIhvcNAQkHMQgMBnBpc3NpcjANBgkq
-hkiG9w0BAQsFAAOCAQEAxETR2K8P8HvjemMVOKocDuMOcMZMz0gzOgXipj8Ekm1N
-Lt/jjE1oC1VLjXfP+7Ahb7KTSGYrJKuWTq0ZDMDemOaKqQN0qrrwiQZEhKPrTWuZ
-I2luFKOx/KL7NVlPRu71EfQCyAWZwoBh/LUMFAlZZdXkf7/kmPEgx/BGXXoEN+H/
-0SS3s2lT9Ow++OTyl1pMS2Gsh3zx/Wd0dgXTqsty5+0hpgVK+6Hh8VUByZ8sS+aA
-tGgnf/Wz+/URrr9I7idWiQ9CrfusIJAlmAs1ssEQWzdIkGH3B9rrFl9zPdqWUay2
-+b8fyfGXj+ieL70u/MF6I+EwJ+Di/Aq0y9/zQcsreg==
------END CERTIFICATE REQUEST-----
diff --git a/antifurto/certificates/localhost/server.key b/antifurto/certificates/localhost/server.key
deleted file mode 100644
index 6acf828..0000000
--- a/antifurto/certificates/localhost/server.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAx0Uvd1dkTF7c0z9+6LkaasOlXN2na98GDIQgE/0tyKDbWFFK
-n3AiA4JlKsMQy6iv6deAyJPxNXBdgQ5U1QxJtp/WS7W7MvJwm1nTN2+0M0DZOYu5
-jvDUcq2jovxuQ4EMzUCzmfUPQ972Pl4Slf9uG6AWlsm7gnzF7a2mKG4QfxLTo4co
-YG3M+Wwo0z9YQKbVrEQ+khUT0mSXe305Wj/l7amKaADrNAaHI2f357p1SJPXFVAI
-p0tl9dpJ8HWtSEuPjoNnoLUHLcviLX8saRz8hnxjuvxBOxIJFkunndqLo6wY2K//
-3Y8rLTm4aiXnRVhR0kkwxFVYsHtCWtvTF1VrjQIDAQABAoIBAElMlsA0Yk2BW4NN
-SPZ8GE6Ldwlo80vHtubltxMDP1MccHLVPDjXu3tE/Me1BzmS7Fp9Df86BDEfCxYM
-2oGfyoGl2+Lvj1OXQHq0mPA8Y7GyufTkA7ajudIRMy8h4cFs9/OMSERqk1no6vVY
-D0gjtDHvOj/vJs1B7mCWTpdynRjQgkdruPzvTMBMr1vv8g4963+IBPD1GyqIdATa
-gS/uXixn6ZyjjTB1mp11DNetUcR8ApEW98lT2o1LqqbJ3ZCRzml8wxPKysu2O0y3
-kr4dj690bzVXyofwlhJ3rFTpFGVz66dDHmrvizktfaI3a8P8OzU6H6rZUkJ0u6rw
-GH53xuECgYEA9i4HMg1tezKOMumHIpvc0ZnrC2iBAHVSQnFIbO3sfIgK1UC6fn7m
-cYxk0z6RWzP4Ef5Kvzlmtk/d155Z5svcIVtsptBHrzrKLVcGKKPr9vevI5ci5Xfp
-S5+QBtIMHVpgkIOr6mWzxtUAGozpIHAVy5cv8RvxGqi0otKITHKO4EUCgYEAzzge
-wltdwGcODGtYrZ5q9FmsRREcanIiPqP1Nafv0pVwFq+gHgSqjzvLvTBiofTxq0X2
-hvyBBmrS1HsdZXacqIn8JVH2h0DC1EryYMnJU34rrl73gg74H+zzLg8LJhnjFGuV
-nUyjAyYgSqTI1cqWZMkmV+mgTdWUEuo6cvs2xqkCgYEArzUVE+9wkvTpNZz0+5G4
-eEi2ezkWTvAw6m7boAM5g2wDYcEeufaxJfFItPvb0fBLxuqX4j8FNg3jkpj13QgM
-FIWP761ex3zs9ZXxIS2BPBUNxiPDx1MvbA4VIHWP/7gZ7+B2k21spL9lwn+1T8vW
-Bz8D9PLxBws4/IUgUmBaBY0CgYBSLufEHYhpLnYb5tccxJ+WmZoBKnAip3F9dnlh
-9mDfG/WAidbvENq0Q/rh5ba4lPTkALNtheeGLAfBzbIy83/eOBuQkZk8uyqKF89Z
-I659NqUMWw2+v0EZKFiqA71gNxQgnSqRYDumnBBiikg8wkQzZLOYWkgBlptLhSn5
-QDjRQQKBgBwGEJUX2O23HCUxS24i8cbNJishkoqPsRg2o2oeNLTleRlReJoenuEW
-N5NP1J4zr37BIHgXYn3jCQdPWKc7cKWsLPAFFC1zCqmCQDULEo6fJ2inZ4VN3Umu
-Kdl08D5KHCAHDj+dBCwMnLwlZmYmMT8kdxloBK/IWtbKITQgd7IE
------END RSA PRIVATE KEY-----
diff --git a/antifurto/res/CONF/deltaSensoriMovimento.json b/antifurto/res/CONF/deltaSensoriMovimento.json
index 54e8762..061b7bd 100644
--- a/antifurto/res/CONF/deltaSensoriMovimento.json
+++ b/antifurto/res/CONF/deltaSensoriMovimento.json
@@ -1 +1 @@
-{"IN2":4,"IN1":33,"IN3":8}
+{"IN2":4,"IN1":33}
diff --git a/antifurto/res/CONF/zona.json b/antifurto/res/CONF/zona.json
index a702f5b..3d6ac91 100644
--- a/antifurto/res/CONF/zona.json
+++ b/antifurto/res/CONF/zona.json
@@ -1 +1 @@
-{"interruttore":"IN0","sensoriMovimento":["IN1","IN2","IN3"],"outputSuono":"OUT0", "nomeOutputAntifurto":"OUT1"}
+{"nomeOutputAntifurto":"OUT1","interruttore":"IN0","sensoriMovimento":["IN1","IN2"],"outputSuono":"OUT0"}
diff --git a/antifurto/res/stato.json b/antifurto/res/stato.json
index 2eb08bd..3e3cef8 100644
--- a/antifurto/res/stato.json
+++ b/antifurto/res/stato.json
@@ -1 +1 @@
-{"soglia":32,"stato":0,"valore":0}
\ No newline at end of file
+{"soglia":32,"stato":0,"valore":0,"tempoAllarme":"2022-09-16T19:06:34.450705"}
\ No newline at end of file
diff --git a/antifurto/src/code/Antifurto.java b/antifurto/src/code/Antifurto.java
index 9337c69..f93094d 100644
--- a/antifurto/src/code/Antifurto.java
+++ b/antifurto/src/code/Antifurto.java
@@ -45,72 +45,73 @@ public class Antifurto {
 	private Date date = new Date();
 	private String clientId = Long.toString(date.getTime()) + "-sub-pub"; // unique client id
 	private Automa automa;
-
+	
 	private MqttClient mqttClient;
 	private static String mqttDomain;
 	private static String mqttSubdomain;
-
+	
 	private final String CONF_FILE = "../res/CONF/conf.json";
 	public static final String CONF_ZONA = "../res/CONF/zona.json";
-
+	
 	public Antifurto(Automa automa) throws JSONException, IOException, MqttException {
 		this.automa = automa;
-
+		
 		JSONObject jsonObject = new JSONObject(Helper.leggiFile(CONF_FILE));
 		brokerUrl = jsonObject.getString("protocol") + "://" + jsonObject.getString("broker") + ":" + jsonObject.getInt("port");
 		mqttDomain = jsonObject.getString("mqttDomain");
 		mqttSubdomain = jsonObject.getString("mqttSubdomain");
 		topicsSub = new ArrayList<String>();
-
-		// Su questo topic ricevero' un messaggio del tipo {request:description}
+		
+		// Su questo topic ricevero' un messaggio del tipo {request:description} 
 		// Dovro' quindi mandare la mia descrizione json
-		topicsSub.add("to/all");
-
+		topicsSub.add("to/all"); 
+		
 		// Su questo topic ricevero' le richieste di inviare il mio stato attuale
 		topicsSub.add("rpc/"+getMqttTree()+"/antifurto");
-
-
+		
+		
 		jsonObject = new JSONObject(Helper.leggiFile(CONF_ZONA));
-		interruttore = jsonObject.getString("interruttore");
-
+		interruttore = jsonObject.getString("interruttore"); 
+		
 		topicsSub.add("from/"+getMqttTree()+"/gpio/" + interruttore); // Sottoscrivo i messaggi che notificano il cambiamento di stato dell'interruttore
-
-		// Per ogni sensore di movimento, sottoscrivo i messaggi che notificano il loro cambiamento di stato
+		
+		// Per ogni sensore di movimento, sottoscrivo i messaggi che notificano il loro cambiamento di stato 
 		sensori = jsonObject.getJSONArray("sensoriMovimento");
 		for(int i=0; i<sensori.length(); i++) {
-			topicsSub.add("from/"+getMqttTree()+"/gpio/" + sensori.get(i));
+			topicsSub.add("from/"+getMqttTree()+"/gpio/" + sensori.get(i)); 
 		}
-
+		
 		nomeOutputAntifurto = jsonObject.getString("nomeOutputAntifurto");
 		topicsSub.add("from/"+getMqttTree()+"/gpio/" + nomeOutputAntifurto);
-
+		
 		interruttoreOutputSuono = jsonObject.getString("outputSuono");
 		topicsSub.add("from/"+getMqttTree()+"/gpio/" + interruttoreOutputSuono); // Sottoscrivo i messaggi che notificano il cambiamento di stato dell'interruttore
-
-
+		
+		
 		topicsSub.add("to/"+getMqttTree()+"/antifurto/soglia"); // Su questo topic mi arrivera' un messaggio {"soglia": 30} e dovrò impostare la soglia di conseguenza
-
-		topicsSub.add("conf/"+getMqttTree()+"/antifurto/sensore"); // Su questo topic mi arrivera' un messaggio per l'aggiunta di un sensore di movimento.
-																   // Ad esempio se mi arriva il messaggio {"in": "IN3", "delta":33 } devo aggiungere il sensore di movimento che si
+		
+		topicsSub.add("conf/"+getMqttTree()+"/antifurto");
+		topicsSub.add("conf/"+getMqttTree()+"/antifurto/sensore"); // Su questo topic mi arrivera' un messaggio per l'aggiunta di un sensore di movimento. 
+																   // Ad esempio se mi arriva il messaggio {"in": "IN3", "delta":33 } devo aggiungere il sensore di movimento che si 
 																   // chiama IN3, il cui valore di delta e' 33 (devo quindi aggiornare il file deltaSensoriMovimento.json
-
+		
 		topicsSub.add("to/"+getMqttTree()+"/antifurto/luceAntifurto");
 		this.mqttClient = new MqttClient(brokerUrl, clientId, new MemoryPersistence());
-
+		
 	}
-
+	
 	public void startClient(Esecutore esec, Publisher publisher) throws MqttException {
 		String caFilePath = "";
 		String clientCrtFilePath = "";
 		String clientKeyFilePath = "";
-
-		MqttConnectOptions options = new MqttConnectOptions();
+		
+		MqttConnectOptions options = new MqttConnectOptions();  
 		options.setCleanSession(false);
 		if(brokerUrl.contains("luci.local")) {  // devo connettermi al mosquitto della beaglebone
 			caFilePath = "../certificates/beaglebone/caGruppo2.crt";
 			clientCrtFilePath = "../certificates/beaglebone/clientGruppo2.crt";
 			clientKeyFilePath = "../certificates/beaglebone/clientGruppo2.key";
-
+			
 			options.setUserName("gruppo2");
 			options.setPassword("funziona".toCharArray());
 		}
@@ -120,7 +121,7 @@ public class Antifurto {
 		}
 
 		options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
-
+		
 		SSLSocketFactory socketFactory;
 		try {
 			socketFactory = getSocketFactory(caFilePath, clientCrtFilePath, clientKeyFilePath, "");
@@ -128,100 +129,100 @@ public class Antifurto {
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
-
-		mqttClient.setCallback(new SubscribeCallback(this, publisher, interruttore, interruttoreOutputSuono, esec, automa, nomeOutputAntifurto));
-
+		
+		mqttClient.setCallback(new SubscribeCallback(this, publisher, esec, automa));
+		
 		mqttClient.connect(options);
-
-		for(String t: topicsSub)
+		
+		for(String t: topicsSub) 
 			addTopicToSubscribe(t);
 	}
-
+	
 	// sottoscrive il topic passato come parametro
 	public void addTopicToSubscribe(String topic) throws MqttException {
-		mqttClient.subscribe(topic);
+		mqttClient.subscribe(topic); 
 	}
-
+	
 	public void publishMethod(String topic, String msg) throws MqttException {
 		final MqttTopic msgTopic = mqttClient.getTopic(topic);
 		msgTopic.publish(new MqttMessage(msg.getBytes()));
 	}
-
-
-
-
-
+	
+	
+	
+	
+	
 	/*
 	 * Abbiamo 3 tipi di eventi:
-	 * 		to 		Command Events - mi viene richiesto di eseguire un comando --> sottoscrivo
-	 * 		from 	Status Events - io annuncio un cambiamento di stato
+	 * 		to 		Command Events - mi viene richiesto di eseguire un comando --> sottoscrivo 
+	 * 		from 	Status Events - io annuncio un cambiamento di stato  	
 	 * 								(inviato a tutti i client che hanno sottoscritto il topic su cui faccio la publish)
-	 * 		rpc 	Query Events - richiesta di inviare uno stato a un client (o microservizio). --> sottoscrivo
+	 * 		rpc 	Query Events - richiesta di inviare uno stato a un client (o microservizio). --> sottoscrivo 
 	 * 			  				   Query implementati come coppia di eventi: <query event, status event>
 	 * RICORDIAMO COME ABBIAMO IMPLEMENTATO LA RPC SU MQTT
-	 *
-	 *
-	 *
-	 * Il cuore della nostra business logic è un metodo in cui mi metto in attesa su mqtt e:
+	 * 
+	 * 
+	 * 
+	 * Il cuore della nostra business logic è un metodo in cui mi metto in attesa su mqtt e: 
 	 * 		se arriva un comando, chiamo il metodo responsabile per eseguire quel comando;
 	 * 		se arriva un evento di stato, chiamo il metodo responsabile per gestire quell'evento di stato;
-	 * 		se arriva una remote procedure call, attivo la risposta sulla remote procedure call
-	 *
-	 *
-	 *
+	 * 		se arriva una remote procedure call, attivo la risposta sulla remote procedure call 
+	 * 
+	 * 
+	 * 
 	 * Capire come gestire sistema a regole (vedi slide "Esempio" in "Applicazioni IoT "Cloud Based"")
-	 *
-	 *
-	 *
+	 * 
+	 * 
+	 * 
 	 * Sicurezza gestita con TLS
-	 *
-	 *
-	 *
+	 * 
+	 * 
+	 * 
 	 * FILE DA FARE per un servizio: (?)
-	 * 		file che contiene le informazioni per connettersi al mosquitto locale
+	 * 		file che contiene le informazioni per connettersi al mosquitto locale 
 	 * 		file che dice qual'è la porta che lui deve esporre
 	 * 		file che mi dice tutte le cose che lo configurano, ad esempio quanti device deve guardare
 	 * 		...
-	 *
+	 * 
 	 * 	I file di configurazione sono in JSON o in XML
 	 * I dati persistiti si troveranno nella sottodirectory (chiamata con il nome del servizio) di Home
-	 *
-	 *
-	 * Nella fase di configurazione potremo ancora modificare i file di configurazione (ad esempio aggiungendo device,
-	 * regole). Dopodiché quando si fa partire il servizio si inizierà a usare l'altra parte di file system (ovvero il Local
+	 * 
+	 * 
+	 * Nella fase di configurazione potremo ancora modificare i file di configurazione (ad esempio aggiungendo device, 
+	 * regole). Dopodiché quando si fa partire il servizio si inizierà a usare l'altra parte di file system (ovvero il Local 
 	 * Dynamic File System) dove si andranno a salvare gli stati per renderli persistenti.
-	 *
-	 *
-	 *
-	 * Ho un processo principale che come unico compito ha quello di fare una fork() e creare un processo figlio.
-	 * Sarà questo processo figlio a eseguire effettivamente il programma. Se il processo figlio termina (PER UN QUALCHE
+	 * 
+	 * 
+	 * 
+	 * Ho un processo principale che come unico compito ha quello di fare una fork() e creare un processo figlio. 
+	 * Sarà questo processo figlio a eseguire effettivamente il programma. Se il processo figlio termina (PER UN QUALCHE 
 	 * PROBLEMA), allora il processo padre se ne accorge e fa ripartire un nuovo processo figlio.
-	 *
-	 *
-	 * Devo avere una thread di configurazione che obbedisce ai miei comandi (dati sulla HAT interface andando su
+	 * 
+	 *  
+	 * Devo avere una thread di configurazione che obbedisce ai miei comandi (dati sulla HAT interface andando su 
 	 * 	192.168.0.101:9001/configure.html (dove 192.168.0.101 è l'indirizzo della beaglebone)
-	 *
-	 *
+	 * 
+	 * 
 	 * Ho una classe che implementa l'automa a stati finiti
-	 *
-	 *
-	 *
-	 *
+	 * 
+	 * 
+	 * 
+	 * 
 	 * NOTA:
-	 * All'avvio, leggo il file stato e mi imposto di conseguenza. Poi interrogo la beaglebone per sapere SOLO lo stato
-	 * dell'antifurto (luce rossa), ovvero se l'antifurto e' on o off. Lo stato del sensore di suono, non mi interessa: poiche'
+	 * All'avvio, leggo il file stato e mi imposto di conseguenza. Poi interrogo la beaglebone per sapere SOLO lo stato 
+	 * dell'antifurto (luce rossa), ovvero se l'antifurto e' on o off. Lo stato del sensore di suono, non mi interessa: poiche' 
 	 * sono solo io a impostarlo (la web app si comporta in conseguenza dei miei messaggi).
-	 * Mi serve interrogare la beaglebone per lo stato dell'antifurto perche' puo' succedere che l'antifurto abbia avuto
-	 * dei problemi e quindi non abbia funzionato per un po' e nel mentre l'utente ha attivato l'antifurto dagli scenari.
+	 * Mi serve interrogare la beaglebone per lo stato dell'antifurto perche' puo' succedere che l'antifurto abbia avuto 
+	 * dei problemi e quindi non abbia funzionato per un po' e nel mentre l'utente ha attivato l'antifurto dagli scenari. 
 	 * Quindi proprio perche' sia il mio antifurto sia gli scenari comandano lo stesso antifurto, devo fare questa richiesta
 	 * alla beaglebone.
-	 * Dopo aver chiesto lo stato dell'antifurto alla beaglebone, so esattamente lo stato in cui devo essere --> mi imposto
+	 * Dopo aver chiesto lo stato dell'antifurto alla beaglebone, so esattamente lo stato in cui devo essere --> mi imposto 
 	 * di conseguenza!
 	*/
-
+	
 	public static void main(String args[]) {
-
-		// while(true) {
+		
+//		while(true) {
 			try {
 				startSystem();
 			}
@@ -229,42 +230,42 @@ public class Antifurto {
 				System.out.println("Error: "+ e.getMessage() + "\nRestarting system...");
 				e.printStackTrace();
 			}
-		// }
+//		}
 	}
-
-
+	
+	
 	private static void startSystem() throws JSONException, IOException, MqttException {
-
+		
 		MyQueue<Integer> codaVal = new MyQueue<Integer>();
 		MyQueue<Pair> codaMsg = new MyQueue<Pair>();
 		Automa automa = new Automa();
-
+		
 		Antifurto antifurto = new Antifurto(automa);
 		Publisher publisher = new Publisher(codaMsg, antifurto);
-		Esecutore esec = new Esecutore(publisher, codaVal, automa, antifurto.interruttoreOutputSuono);
+		Esecutore esec = new Esecutore(publisher, codaVal, automa, antifurto);
 		Timer timer = new Timer(6000,-1,esec,automa);
-
+		
 		antifurto.startClient(esec, publisher);
 		publisher.start();
 		esec.start();
-		timer.start();
+		timer.start(); 
 	}
-
+	
 
 	public static void stopSystem() {
 		// DA FARE
 //		codaVal.removeAll();
 //		codaMsg.removeAll();
-//
+//		
 //		publisher.interrupt();
 //		esec.interrupt();
 //		timer.interrupt();
 //		mqttClient.disconnect();
-//
+//		
 //		startSystem();
-
+		
 	}
-
+	
 	public static String getMqttTree() {
 		return mqttDomain+"/"+mqttSubdomain;
 	}
@@ -272,12 +273,43 @@ public class Antifurto {
 	public static JSONArray getSensori() {
 		return sensori;
 	}
-
+	
 	public static void addSensore(String newSensore) { // aggiunge un sensore di movimento
 		sensori.put(newSensore);
 	}
-
-
+	
+	public String getNomeInterruttoreAntifurto() {
+		return interruttore;
+	}
+	
+	public String getNomeOutputAntifurto() {
+		return nomeOutputAntifurto; 
+	}
+	
+	public String getNomeOutputSuono() {
+		return interruttoreOutputSuono;
+	}
+	
+	public void setNomeInterruttoreAntifurto(String nuovoNome) {
+		if(nuovoNome.startsWith("IN"))
+			this.interruttore = nuovoNome;
+	}
+	
+	public void setNomeOutputAntifurto(String nuovoNome) {
+		if(nuovoNome.startsWith("OUT")) 	
+			this.nomeOutputAntifurto = nuovoNome;
+	}
+	
+	public void setNomeOutputSuono(String nuovoNome) {
+		if(nuovoNome.startsWith("OUT")) 
+			this.interruttoreOutputSuono = nuovoNome;
+	}
+	
+	public void unsubscribeTopic(String topic) throws MqttException {
+		mqttClient.unsubscribe(topic);
+	}
+	
+	
 	private static SSLSocketFactory getSocketFactory(final String caCrtFile,
 			final String crtFile, final String keyFile, final String password)
 			throws Exception {
@@ -343,6 +375,6 @@ public class Antifurto {
 
 		return context.getSocketFactory();
 	}
-
+	
 
 }
diff --git a/antifurto/src/code/Esecutore.java b/antifurto/src/code/Esecutore.java
index ac2dbe5..1fba064 100644
--- a/antifurto/src/code/Esecutore.java
+++ b/antifurto/src/code/Esecutore.java
@@ -17,14 +17,15 @@ public class Esecutore extends Thread {
 	private static  int soglia;
 	private Publisher publisher;
 	private Automa automa;
-	private String outputSuono; // nome logico dell'interruttore che fa scattare il suono dell'allarme 
+//	private String outputSuono; // nome logico dell'interruttore che fa scattare il suono dell'allarme 
+	private Antifurto antifurto;
 	private LocalDateTime tempoAllarme; //valorizzato solo quando l'allarme sta suonando. Contiene l'ora in cui l'allarme ha iniziato a suonare 
 	
-	public Esecutore(Publisher publisher, MyQueue<Integer> codaVal, Automa automa, String outputSuono) throws JSONException, IOException {
+	public Esecutore(Publisher publisher, MyQueue<Integer> codaVal, Automa automa, Antifurto antifurto) throws JSONException, IOException {
 		this.codaVal = codaVal;
 		this.automa = automa;
 		this.publisher = publisher;
-		this.outputSuono = outputSuono;
+		this.antifurto = antifurto;
 		
 		JSONObject statoJson = new JSONObject(Helper.leggiFile(Automa.FILE_STATO));
 		this.valore = statoJson.getInt("valore");
@@ -62,7 +63,7 @@ public class Esecutore extends Thread {
 					JSONObject statoJson = new JSONObject(Helper.leggiFile(Automa.FILE_STATO));
 					statoJson.put("valore", valore);
 					if(valore >= soglia && (!automa.allarme()) && delta>0) {	
-						publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+outputSuono, "{cmd:1}");
+						publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+antifurto.getNomeOutputSuono(), "{cmd:1}");
 						tempoAllarme = LocalDateTime.now();
 						statoJson.put("tempoAllarme",tempoAllarme.toString());
 					}
@@ -71,7 +72,7 @@ public class Esecutore extends Thread {
 							LocalDateTime tempoAttuale = LocalDateTime.now();
 							long durata = Math.abs(Duration.between(tempoAllarme, tempoAttuale).toMinutes());
 							if(valore < soglia || durata >= DURATA_SUONO || !automa.antifurtoAttivo() ) {
-								publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+outputSuono, "{cmd:0}"); // l'allarme viene disattivato
+								publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+antifurto.getNomeOutputSuono(), "{cmd:0}"); // l'allarme viene disattivato
 							}
 						}
 					}
diff --git a/antifurto/src/code/Helper.java b/antifurto/src/code/Helper.java
index 7732e4c..9b12be4 100644
--- a/antifurto/src/code/Helper.java
+++ b/antifurto/src/code/Helper.java
@@ -29,95 +29,4 @@ public class Helper {
 		return answer;
 	}
 	
-	// se add = true, aggiungo il valore n alla codaVal; 
-	// se add = false, rimuovo il valore n dalla codaVal
-//	public static synchronized void modificaFileStato(MyQueue<Integer> coda, boolean add, int n, int valore, String path) {
-//		try {
-//			JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
-//			statoJson.put("valore",valore);
-//			JSONArray arrayCodaVal = statoJson.getJSONArray("codaVal");
-//			if(add)
-//				arrayCodaVal.put(n);
-//			else {
-//				int index = -1;
-//				for(int i=0; i<arrayCodaVal.length(); i++) {
-//					if(arrayCodaVal.getInt(i)==n)
-//						index = i;
-//				}
-//				arrayCodaVal.remove(index);
-//			}
-//			Helper.scriviFile(statoJson.put("codaVal",arrayCodaVal), path);
-//		} catch (JSONException e) {
-//			e.printStackTrace();
-//		} catch (IOException e) {
-//			e.printStackTrace();
-//		}
-//	}
-//	
-//	public static synchronized void modificaFileStato(boolean add, int n, String path) {
-//		try {
-//			JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
-//			JSONArray arrayCodaVal = statoJson.getJSONArray("codaVal");
-//			if(add)
-//				arrayCodaVal.put(n);
-//			else {
-//				int index = -1;
-//				for(int i=0; i<arrayCodaVal.length(); i++) {
-//					if(arrayCodaVal.getInt(i)==n)
-//						index = i;
-//				}
-//				arrayCodaVal.remove(index);
-//			}
-//			Helper.scriviFile(statoJson.put("codaVal",arrayCodaVal), path);
-//		} catch (JSONException e) {
-//			e.printStackTrace();
-//		} catch (IOException e) {
-//			e.printStackTrace();
-//		}
-//	}
-//
-//	public static synchronized void modificaFileStato(boolean add, Pair p, String path) {
-//		try { System.out.println("pair = " + p+ " path  = " + path);
-//			JSONObject statoJson = new JSONObject(Helper.leggiFile(path)); 
-//			JSONArray arrayCodaMsg = statoJson.getJSONArray("codaMsg"); 
-//			if(add) 
-//				arrayCodaMsg.put(p.toJsonObject());
-//			else {
-//				int index = -1;
-//				for(int i=0; i<arrayCodaMsg.length(); i++) {
-//					JSONObject msgJson = arrayCodaMsg.getJSONObject(i); 
-//					if(msgJson.getString("topic").equals(p.getTopic()) && msgJson.getJSONObject("msg").toString().equals(p.getMsg()) )
-//						index = i;
-//				}
-//				arrayCodaMsg.remove(index);
-//			}
-//			Helper.scriviFile(statoJson.put("codaMsg",arrayCodaMsg), path);  System.out.println("FINE");
-//		} catch (JSONException e) {
-//			e.printStackTrace();
-//		} catch (IOException e) {
-//			e.printStackTrace();
-//		}
-//	}
-	
-//	public static synchronized <T> void getFromFileStato(MyQueue<T> coda, String key, String path) throws JSONException, IOException {
-//		JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
-//		JSONArray arrayCoda = statoJson.getJSONArray(key);
-//		if(coda.getClass().equals(Pair.class)) {
-//			MyQueue<Pair> codaMsg = (MyQueue<Pair>) coda;
-//			for(int i = 0; i<arrayCoda.length(); i++) {
-//				JSONObject pairJson = arrayCoda.getJSONObject(i);
-//				Pair p = new Pair(pairJson.getString("topic"), pairJson.getString("msg"));
-//				codaMsg.send(p);
-//				
-//			}
-//		}
-//		if(coda.getClass().equals(Integer.class)) {
-//			MyQueue<Integer> codaVal = (MyQueue<Integer>) coda;
-//			for(int i = 0; i<arrayCoda.length(); i++) {
-//				codaVal.send(arrayCoda.getInt(i));
-//			}
-//		}
-//			
-//	}
-	
 }
diff --git a/antifurto/src/code/SubscribeCallback.java b/antifurto/src/code/SubscribeCallback.java
index d6691c2..66f8908 100644
--- a/antifurto/src/code/SubscribeCallback.java
+++ b/antifurto/src/code/SubscribeCallback.java
@@ -1,6 +1,7 @@
 package code;
 
 import java.io.IOException;
+import java.sql.ClientInfoStatus;
 import java.util.Date;
 
 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
@@ -13,9 +14,9 @@ import org.json.JSONObject;
 public class SubscribeCallback implements MqttCallback {
 	private Antifurto client;
 	private Publisher publisher;
-	private String nomeInterruttore;
-	private String nomeOutputSuono;
-	private String nomeOutputAntifurto;
+//	private String nomeInterruttore;
+//	private String nomeOutputSuono;
+//	private String nomeOutputAntifurto;
 	private Esecutore esec;
 	private Automa automa;
 	private int contatore = 0; // quando pubblico un messaggio per accendere la luce che indica che l'antifurto
@@ -26,13 +27,12 @@ public class SubscribeCallback implements MqttCallback {
 								// sia il microservizio degli scenari
 								// inviano il comando allo stesso OUT per dire che l'antifurto e' acceso
 
-	public SubscribeCallback(Antifurto client, Publisher publisher, String nomeInterruttore, String nomeOutputSuono,
-			Esecutore esec, Automa automa, String nomeOutputAntifurto) {
+	public SubscribeCallback(Antifurto client, Publisher publisher, Esecutore esec, Automa automa) {
 		this.client = client;
 		this.publisher = publisher;
-		this.nomeInterruttore = nomeInterruttore;
-		this.nomeOutputSuono = nomeOutputSuono;
-		this.nomeOutputAntifurto = nomeOutputAntifurto;
+//		this.nomeInterruttore = nomeInterruttore;
+//		this.nomeOutputSuono = nomeOutputSuono;
+//		this.nomeOutputAntifurto = nomeOutputAntifurto;
 		this.esec = esec;
 		this.automa = automa;
 	}
@@ -81,8 +81,8 @@ public class SubscribeCallback implements MqttCallback {
 				handleConfSensoreMovimento(msgJson);
 			return;
 		}
-		if (topic.equals("conf/" + Antifurto.getMqttTree() + "/antifurto")) {
-			// DA FARE
+		if (topic.equals("conf/" + Antifurto.getMqttTree() + "/antifurto")) { 
+			handleNewConfig(msgJson);
 			return;
 		}
 		if (topic.equals("to/" + Antifurto.getMqttTree() + "/antifurto/luceAntifurto")) {
@@ -100,7 +100,7 @@ public class SubscribeCallback implements MqttCallback {
 				sendMyState("from/" + Antifurto.getMqttTree() + "/antifurto");
 			return;
 		}
-		if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + nomeOutputSuono)) {
+		if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeOutputSuono())) {
 			int newStatus = -1;
 			if (msgJson.has("status"))
 				newStatus = msgJson.getInt("status");
@@ -111,7 +111,7 @@ public class SubscribeCallback implements MqttCallback {
 			handleStateMsgFromOutputSuono(newStatus);
 			return;
 		}
-		if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + nomeOutputAntifurto)) {
+		if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeOutputAntifurto())) {
 			if (msgJson.has("event"))
 				handleLuceAntifurto();
 			if (msgJson.has("status"))
@@ -122,7 +122,7 @@ public class SubscribeCallback implements MqttCallback {
 		if (event == 1) {
 			// e' stato premuto l'interruttore / il sensore di movimento ha rilevato
 			// qualcuno
-			if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + nomeInterruttore)) {
+			if (topic.equals("from/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeInterruttoreAntifurto())) {
 				handleStateMsgFromInterruttore();
 				return;
 			}
@@ -137,7 +137,7 @@ public class SubscribeCallback implements MqttCallback {
 
 	private synchronized void handleStateMsgFromInterruttore() {
 		if (automa.getStatoInterruttore().equals("on"))
-			publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + nomeOutputAntifurto, "{cmd:0}"); // voglio
+			publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeOutputAntifurto(), "{cmd:0}"); // voglio
 																													// spegnere
 																													// l'antifurto,
 																													// quindi
@@ -155,7 +155,7 @@ public class SubscribeCallback implements MqttCallback {
 																													// e'
 																													// acceso
 		else
-			publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + nomeOutputAntifurto, "{cmd:1}"); // voglio
+			publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeOutputAntifurto(), "{cmd:1}"); // voglio
 																													// accendere
 																													// l'antifurto,
 																													// quindi
@@ -186,7 +186,7 @@ public class SubscribeCallback implements MqttCallback {
 			JSONObject js = new JSONObject();
 			automa.changeStatoInterruttore();
 			if (automa.getStatoInterruttore().equals("off")) {
-				publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + nomeOutputSuono, "{cmd:0}");
+				publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/gpio/" + client.getNomeOutputSuono(), "{cmd:0}");
 				esec.reset();
 				js.put("event", esec.getValore());
 				publisher.aggiungiComando("from/" + Antifurto.getMqttTree() + "/antifurto/valore", js.toString());
@@ -274,10 +274,10 @@ public class SubscribeCallback implements MqttCallback {
 	private void sendMyState(String topic) throws JSONException {
 		JSONObject json = new JSONObject();
 		json.put("stato", automa.getStatoAutoma());
-		json.put("interruttore", nomeInterruttore);
+		json.put("interruttore", client.getNomeInterruttoreAntifurto());
 		json.put("sensori-movimento", Antifurto.getSensori());
-		json.put("output-suono", nomeOutputSuono);
-		json.put("output-antifurto", nomeOutputAntifurto);
+		json.put("output-suono", client.getNomeOutputSuono());
+		json.put("output-antifurto", client.getNomeOutputAntifurto());
 		json.put("soglia", Esecutore.getSoglia());
 		json.put("allarme", automa.getStatoSuonoTrueFalse());
 		json.put("valore-attuale", esec.getValore());
@@ -307,7 +307,7 @@ public class SubscribeCallback implements MqttCallback {
 
 	private void sendOutAntifurto() throws JSONException {
 		JSONObject js = new JSONObject();
-		js.put("attiva-scenari", nomeOutputAntifurto);
+		js.put("attiva-scenari", client.getNomeOutputAntifurto());
 		publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/scenari/luceAntifurto", js.toString());
 	}
 
@@ -316,5 +316,49 @@ public class SubscribeCallback implements MqttCallback {
 		js.put("status", automa.getStatoAutoma());
 		publisher.aggiungiComando(topic, js.toString());
 	}
+	
+	private void handleNewConfig(JSONObject msgJson) throws JSONException {
+		JSONObject jsResponse = new JSONObject();
+		try {
+		if(msgJson.has("interruttore")) {
+			client.unsubscribeTopic("from/"+Antifurto.getMqttTree()+"/gpio/" + client.getNomeInterruttoreAntifurto());
+			String interruttore = msgJson.getString("interruttore");
+			client.setNomeInterruttoreAntifurto(interruttore);
+			client.addTopicToSubscribe("from/"+Antifurto.getMqttTree()+"/gpio/" + interruttore);
+		}
+		
+		
+		if(msgJson.has("outputSuono")) {
+			client.unsubscribeTopic("from/"+Antifurto.getMqttTree()+"/gpio/" + client.getNomeOutputSuono());
+			String outputSuono = msgJson.getString("outputSuono");
+			client.setNomeInterruttoreAntifurto(outputSuono);
+			client.addTopicToSubscribe("from/"+Antifurto.getMqttTree()+"/gpio/" + outputSuono);
+		}
+		
+		
+		if(msgJson.has("nomeOutputAntifurto")) {
+			client.unsubscribeTopic("from/"+Antifurto.getMqttTree()+"/gpio/" + client.getNomeOutputAntifurto());
+			String nomeOutputAntifurto = msgJson.getString("nomeOutputAntifurto");
+			client.setNomeInterruttoreAntifurto(nomeOutputAntifurto);
+			client.addTopicToSubscribe("from/"+Antifurto.getMqttTree()+"/gpio/" + nomeOutputAntifurto);
+		}
+		
+		
+		jsResponse.put("interruttore", client.getNomeInterruttoreAntifurto());
+		jsResponse.put("outputSuono", client.getNomeOutputSuono());
+		jsResponse.put("nomeOutputAntifurto",client.getNomeOutputAntifurto());
+
+		
+		JSONObject jsFile = new JSONObject(Helper.leggiFile(Antifurto.CONF_ZONA));
+		jsResponse.put("sensoriMovimento", jsFile.get("sensoriMovimento"));
+		Helper.scriviFile(jsResponse, Antifurto.CONF_ZONA);
+		jsResponse.remove("sensoriMovimento");
+		publisher.aggiungiComando("from/" + Antifurto.getMqttTree() + "/antifurto" , jsResponse.toString());
+		} catch (MqttException | IOException e) {
+			JSONObject jsError = new JSONObject();
+			jsError.put("error", e.getMessage());
+			publisher.aggiungiComando("from/" + Antifurto.getMqttTree() + "/antifurto", jsError.toString());
+		}
+	}
 
 }
-- 
GitLab