From af0bf649dc74a73b762039dfa6d6931dbf060f32 Mon Sep 17 00:00:00 2001 From: "kevin.shehu" Date: Wed, 6 Apr 2022 09:59:48 +0200 Subject: [PATCH] NEW : Introducing Nica System --- .idea/runConfigurations.xml | 10 -- pom.xml | 17 +++ src/main/java/Data/Spritztagebuch.xlsx | Bin 0 -> 48878 bytes src/main/java/Data/securityToken.txt | 2 +- src/main/java/Files/ReadExcelFile.java | 17 +++ src/main/java/Files/UnZipFile.java | 113 ++++++++++++++++++ src/main/java/eu/hsrw/ias/ggd/ApiCall.java | 2 +- src/main/java/eu/hsrw/ias/ggd/Greenhouse.java | 9 ++ .../eu/hsrw/ias/ggd/PlonkDataRequest.java | 36 +++++- src/main/resources/rules/CriticalBattery.drl | 3 +- .../resources/rules/CriticalPrecipitation.drl | 3 +- .../resources/rules/CriticalSoilMoisture.drl | 5 +- .../resources/rules/CriticalTemperature.drl | 3 +- .../rules/DielectricPermittivity.drl | 3 +- src/main/resources/rules/optimal.drl | 2 +- src/main/resources/rules/warnings.drl | 2 +- target/classes/rules/CriticalBattery.drl | 3 +- .../classes/rules/CriticalPrecipitation.drl | 3 +- target/classes/rules/CriticalSoilMoisture.drl | 5 +- target/classes/rules/CriticalTemperature.drl | 3 +- .../classes/rules/DielectricPermittivity.drl | 3 +- target/classes/rules/warnings.drl | 2 +- 22 files changed, 215 insertions(+), 31 deletions(-) delete mode 100644 .idea/runConfigurations.xml create mode 100644 src/main/java/Data/Spritztagebuch.xlsx create mode 100644 src/main/java/Files/ReadExcelFile.java create mode 100644 src/main/java/Files/UnZipFile.java diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 797acea..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index a1c26ad..b364086 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,23 @@ + + + + org.apache.poi + poi + 5.2.1 + + + + org.apache.poi + poi-ooxml + 5.2.1 + + + + + org.jbpm jbpm-test diff --git a/src/main/java/Data/Spritztagebuch.xlsx b/src/main/java/Data/Spritztagebuch.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..162d10bc71225fb2f0f7a890e33cae991fb996c7 GIT binary patch literal 48878 zcmeF42UL{XmY_+Zhy=j^NK}Fn1(X~_3}jFwCnYM9b1nn{6%+)?Nf1S{l8R7J0wR=z zBIhDX&Y{RqbN=G``rYo=)6=tN&GhuUYk7Z;`|Pv7ozCHS|5c!&OiXf;fPmlx_>XO& z$>oA~G9dv$DiF~EiGjSmor{H?i^&5|2McE-eh*ul`j{rQx~tT;VH|6v)`r7W*DY$y zg5KXBBOdY?&~>$G627swrP2{VKzQ%gEs?K`=pkoYE5>kvo{y?2Z0W1~wBEA{?4wQv zuMI56SH~F#w-S?U|vrAIohdZ9-rsXDi>U3L*H#PZ? zh<>-e_Sbvg!v{`Euh;@QbO|(`bW&6B)YDV17Hc%x$Digc4P3H}cCus&3?dU7^=CQJ z-H7%#8kV-dbB!S~>y=BU(woSqJSIMdEmbBTk)g##2^Ff!7DMmjO^$!aO{{wJ8Zi&w z_&O3rHER1>t>0imdpoNa`_re(?&@tr|1Z9WnA?1v1h)oszvUxQ`o%8|KcDcr^EG>> zHFP}Ctur!5JP{*ewCuw-5HRA(S3JqG(JZ?V59<=fm02AsqW3#fcC2tM(}*Vzo5AR!05tGZYukWGu)XZmP(WSdZ;uO0VN^=F`qI5L=zM2FjT30V^fGVmG5fG4r zuO?0wHqHY4&@(quRlV-&so-UW{gB43ZcGIAO=WjEg-W&ue*TI>R3)!JuwTF+xfrP* zFa#3cg;n|O{~W|fy`F1i+Z?}^8%lFV@=~dLUU2NLqw8^QPN$eVj=5vsPrG$vyEo(S zDtTUZs|x4NDf^tJj2gLgr*rkzS86oB4g(qON5K^yb3mZ@PfunPv?`F-ZQ;RH?d4NzlS{hG8y?x%)-;ajN6@+QAZ(Q zHJ$zSO#7VA3B%Xh6}DkX-4r)?6>k61Jf8j3l{vZK^2FnN&pHhTdrKLs3HNQtNi${1 zN{1P>qLPGbV%A9BZ{0zzj+Ckl`kf6}9HcuXzs7nZ{FcQE!C4<_9*>%nln+a>$ab4~ zf@vS>7MPs#Mo}k6*2?0WG6w4e`_J0(*)DlEZ?>Mi=qT8J_o~H(ed}j%)sD!MoNuhe zpV=|b_|%sW3EVS4iPQDe$s3W#&1@^tyg02xxXocHr+!L~f z^bgDn-(IYp;QM|y@?+1Mb$Vud)k8k?s&7qCo_TJ?T?#>xDUFsbnqG>oW9PQ+-nwni zw@;RxZn$G#O;_%X6Qp~{6TW-RNHM==&(n+WO1WHk1nYabuLUE{jsA-=ZAo`G>$bkm zzfStL8rByoT^E}CO=0}1NPym`m|~KCn!WUVHtC0?H0_wZUzcZIF1;S^ueden*HD@s zbLO~kwZUHaYHJ%TCA#j_IXH>^_h%f|*|y6k`1&l7BSkSyn##$vq>2 zV_ST!_Pxm-ag-L>ol5PQZ0?CSLX=@AYp^Z}mUm*FYu1t1cD-nDwA@x)cy27@EU!~f zFc~Q|F0TLCAv=k&zt18MW?jtlYQ$4Hl*ozXAk9GMt$P~vMOSWF0h=JFT*13Mh{x+| z3Nm7m?iHGQA67~~+;Dvz8&@~^Y{WqFa%J+Gw~~g}^YNQnYxDiX+_yyI&c)4JA&t<5 z>X}n-8(~dw7Y^#!!03ce7w0k2g|&>2UWQ~_o~_l;arwNTaH)b{@NJz|_06Z&JL-&I zV_|gJZ7&$K&X(=R9&B~DOlG1{R-yrf`tPJ~(KCduWp^U`t4yfbz7jc|Y3th|{Na{0KY4aO<&w+ULu}Vdd0?-Zzi4Yw(v^)nDS-IQ4XDH&~RC$!wwgjUe{E)l|6U zEbnS6Z1Ohd`uNODVWaZHo}>>x6u4ObpJX)Dq?K0NU%$STRpULcvLPfXEG1bS#!el1Ki?7th>l7- zSjIWHNoqLkE;{*%Yiyc|z{;8`%8>Jm{1+_IY(?m?e&nBzi!(EJ+l1gC86hShU^qH1 zj*ip6KQ!=1YgLr0HTVV@RB+MKq{*#QL+PE(O|~|zMCKcPW=(xDVU`^~-~|qBrEGEh zDmtdakB9f#&`S=s7gmE(xUJ5z-#bNQJGJ&R=A;a|fC|m}qNK%jf|q;d?dX@0Dzgvb zVG&spG&OaRM0G<|3X1VH+M2&4iqka3Myx463Rq+o>BnB~6dP8O#rl_LicOx}zXBt1 zT$0=mh4Z}PuKUo$&!=Ba%eMM+CeLn|+u*p#qO$ohP1kC!mp4fo_snM#%tu;#&8a=V zS17WFa2N$B9@1N`nwLJUjc8|Hr`jBo>o{>OD)wQDcF@ci5FBH= zm`3$$54P{9$pn zXm1rxmDs)3c zzTf)FHlnn0UM8o~z|If1x-#YEyYvTep2se$E1N9D&`agH$eO}$b2VXP{qiZ5P1fvI8*rH1YG%LTZYl38U57iK#6R{l zXRMvqJa@_%^6hccQ%#$Dc06uKNfT|8SXn!`?RM#}@yQ^ZE-oS0uG)8G$@t31()Qsg zudPY6dQQVU=1SFID}3w;d44ZEd=DpEURge}Jcd~dKahnnX*0T!Yu9%QOsA?_%`9ck zvxE;~G0vC?CCa)Tu_TjV=hhVmMrPySEv73CZ`Ud?8>P#m<6>nV^eSD>k3AXntCzlP zp5VhB&n^aTBe5Ta_kQ`}ulkhH*?!E5rcv!{CtplIEnrR*dhx{jQVoX#?ljE<}I%2v>CS7n@v*nN+;|S zP1|Va#&*Ope!WWwb33>g_H~FQ zlxrnRI(WV=E?x4m3*Gm?*n1NXK7Nu^deoJn8A|yfodWSf)M0?$PORTP5bQE)JbdDtHVhZ=bY#7_GqrX5IIbu642R; z6;Js(HfG_MJay@@apPrU^PzlivD0%B2^}8IzdW1$E`6XKy=d$;kpInTsOa+#Ugql! zi{p>A&#lHOGhVuvoU?iHk;70Nr*w3UcyyX{bjTv>E0IGfMq|4-NbmNhI%;(bv8C=N zl^@Ds#I5H0P4waM&wErz-&hJkHor)o3}O24m~-Nu^AJB}yUGtUep<8ikwakh*_#V> zv+-x9Rg`k>I7%5@9@uskN2vTzQId+HL7OAK>pomge4NJ+9lItAmEUnuNlcTMGKK zN;5%ZB{bmux&DhLiqmuJv4e|qC@I@7a$)wV3Y1@YHFQY~g5(q;kcfOPo?vxU` zFw?8~4n67nJ;0JRS|9J-Z%f-0SDBq(n!UQ5QZNwud?LQ}$AyQBNhKB1PaBluw=sJN z8N?7>k#sr(c%?}e8|ClKlSO4(MpvK+7FE1Jl$LZc!t-s;tb6P<9bqz16 z^H8wFK=5s;DVm1oWrQ{YG;fv*ZCw1-;V{F_&1);J!*9-CVchcH>s~gd>hT_QeAd%N zNKZ)b{))v)Ab~3AUR3P8y`8{(8Dqbb=A`D7=7hh5zLsbWvAV>Np~ox?Uu*anWNu}Y zEK|Hg+o!BzPcYd_p7~)vxQg9Osy8PwAIkDgD&kH7#rkE@<<~mr(KcaO&!9E>|f#$W@oU}k;4L1d}$ z5s1Urjee{D%l?_hQ;m#`M2%YB$VwO|Rs<#WBAhRRP5$^PP`2j4uCK4XAJU1AxltMZ zkiPnNH5*=D`ik8wRB^B|6EdH90C|$C=plEKT(t}n7vpGlvPu2fAJr*wFZ5=`z?!YZ zA_VD$4ojHzRanhfPny>*`V~G$q9<5p(o#u|I$^kB$#G-z4I{35kFhZ#O_&7agf#sI z=a3z7P8r4X-&wcqkhUHs4WB?>O(mumaTRy+s82y96s9{Gz9|Kas>H)XcbNjYUg{0?sC z#C({tWhJ^seIuBV;RIA#kWrd}1Nj$;hPr>-=7p*i4ef)nBr`1jr-(PG{>T%1@m>hG zAI$%Ea5wk|GrSok4+6~@@8UJHOWR}#@ZPhYzwzmhoz5TFeVb&JS#stgu;p_44_hRS z$0C0Bb<;yEP1*|3;DBf}|4_sAOxgy}xD44i^A9z!XVcbz1`lN8>_60SJ)gD-H25JK z=l`JwmM#tQR1mU3_YXB(8H5~|C7-DgH)_1^gti{kW;gi#RepEvt8V)fp5aUz7j6U- z9gu=UK#=;F5TO&H`R^n2elD|opZCK11_Gfofb>U8M3A%o-hi>D*t6q{JS4j(S>>Nq z6a7&~f^q_(-zVP{Z4YMKifC-<+lt2-xBGE6R#^2lWqpoj|*xoDWXI!l$5+tnL zJ=ZJ53fk`y_4eF&keg%RXpDJ7lCSjavusx znvV*CD`)vePZGU2*W>LW*P6c4Lw<{VzNO%y)jbb1QF;(I{~n3ey%XN7`nrw=FN!W_ zuv7EpCUKv%y5~cA?q=4Pn^~8WZ?i@DKYnC!|DJg0O?JZe+E*FrZs&q-fz{CpLBelO zDzJmqFCR$IW<3YOkI@Prh2JVcLjC`w@Viwb+gl}`w@OwQqaze<6c^KExp3Ymdr5Lj z`Awj0copvfhAv#(iTKFwDFTp#*cUf3Lv!2 z{XZ=9v!Q0cZ^l7Gk@VJuuJ1~yg5+iHg|Lrx-#%X@(L8=TD7oE*j_z!*!`%DNUxZUA zi9gg*YcQQT>vpH>(ZdIHH?srNYg^+aPKBM6*KpN%&_}No^6cKD6FHQxPD)P9UA@YE z>RGqky+>B&Or&>$*oq|}<9T@FI>&FP3QVfzf4}QW*a6hNqj<2MnsJ8aoaa5Gcvfqa z{ELC@;a^HV{?x3CfG%22lNv>g_YbVftReVg)#}&Fe^Zq?@mrPU9pT?p6(Ciamo15g z+o#E29GR^}v)sr4foyV~mnjH8Qswvg#`HFF=d<`%(ef2~$6HEMode&8f7LeRo_+#S zQH2Up=e~4bD3zWQTD1_Wfbv<0=>t{~ycapvQCg<lvE5lqy zRp*Cgg6NP+yABDbP&}=)36Rh|1+gZTCJhOvQ9Nz5 z3>!cgl2Sz}{Xsrlq2Fbuf4)sv0ti+A{}*yqf1+mc5@GV%l-Nkxrj!N2;p20jlU$}T z@v`EK?M<8h9{Zi6nxplwLZm<*{c>4P*{40>;I)-;NJ@L!-J_#LXMC`l#$?L^wj2X3 zIB&^OE!cE8$Bkc*q~tUE?qE?JETAxqL7$;~p8#D#5ixM7v-Ub(?M_Nkyuby)pP?XPXz=Qita64uwQTJUn} z)st-U-cxCo<|%x2_KVd6`LDG@MM62cWZp5CwG+IxEzaibHtSg|=_PCB{wR8zrfa*T z7p0Z^OjLP+M9kCS4|IkK(7x1yw6_XrZULc#D~Dx(f_8vHdT0$u3p7gQ zztc?eHkahBj8Rw|*+o6Fi@r3s{*aJeJklALIgzsaZx)iA7M6RJOLAqGUEvX@!rN%p z+o_USLGi4&wFA!hE@hmv3^=1lc7LNhN8Db}Nm}-Mp#SiTjZ`c+!9Pq`wNm*%fmQ{x+3M#tfzMVP3Yg5$tQL|i5YbW;Ye_t- zt9C#a$X1VKKo{^}3uG%1ua~SqUB>(Q4^5DdBPnK@Awz^Vqg5%QLOr1C_ZrgQ7V&x= zAlIEhPmnePr4;cAJz~lrESHc=q9~RH?S*T4WRVW{X+h6CDWqW^%isiC09sP3SU)1% zsYs!!9l)N{1+_M`Mm!7JRh&F>G-}q+{`o!2BWE5F#Tw~!f1>D~3YQkCIOvkog97I|czJCfd4<6er7 zX9d!Xqz6!M;8|xY=zwQ`te;C%%l@;`Nnli1t}yArAJGEqyJA_u>Bz|prJsuRAZdSI zFqSc%6#uWS9Ay$(!osBmQUcjK%J`oae+-Y}J_`0IOHimXYT0pka~%zeXO9B;7YF`k zZFVB#)og|mi0CNOf5Zc`JaV*FQ58Bsjxr|}_S@&LaYt)F#-aZFSDC}t`A?qyBNzT; z8ro7v75tk$?sLMw(+hPIl!Je?CDHUKugz`Wk^w(`yI7VHSs#;;f>P05oy4eu z`Mt&ZSfeqF63$20SFFl}s&`9PC$S+Bd(b%(G70ZCE#Gl-#(6kZ?pBN>U_|V|8#UOW zXQf{s?tzZb`}D}El~fG3Yyo@_o4h){1>R;_JNH#$+;ZV)oKx=Zp!MFw*sn)BUk3Kw z)(bG77S(pKQ~2HnvwU@f4c8}2yazu6YwAaXYLo+YNDC;27c%!; z;cmFKr&T+?vg<53mOsBj4h`1f8<8X+sObN9Um*)YuaK)Sw$2wCqGwhM(sKsj?;KiZ z<7+R2Ta}ZX_jHb{f*5!6B*dH$p}(nP}ax6^~sNa*W&{q&)bR0_~CXJLqgy>9!{RAPYw6?*9S$X1^9>e zHxKvgu#30((IZvWGE%!aCc}qbC5DR!iF<}i2lGwH!_E2r#Lz7yGym!|e0kUyw?1*3 zMaBa+h0=lTI5_U?qL(Qv4?{9~?V0x{)>dF%+jTLOJAD}GD%jrC+W6e~^!(ir9u}6O zk;8otzx~~oStUQ*Rz+Aw9qkGnE-EmRsXU8Y)32M=-<>txL?Ze;D*9SFU3Y%L;j+Gm zD@c>Yj-m}8y4D3xFUOdatYm5LY&6;&=QPw*q$9NO1LwJ2Z^a_;K!Ak>Hx~k*h9N7~ zd#UV({bAK*+w(0WKCWdeOH(4#%dI0rh_lQHnf+P&X*39SZ-1<_&N%;Yd2$EMf?IQ_ zX~@hOI+&lFE0C#{otq4lMOI6|{8pD5;Ic+ICo%evz}3zjbOFrU-B(nG!BxyR&1nCi zX&nyRncQ889&2~mu5H+Ah)O-&8Q-648Kdy_hzqBjrwSiysjtil#~q9w3?@3ed(>4O zHZ;iM4mLaX?m9V7=FG!}5jb{fpOq=_UOaTGNt#8#$=g|a*l>Ah{}5g}k+83!OP$_oi|sDUTxv0*$ur3z zNG}qkd(h--F85*2p7rY3$ttedC9^MY8onS7%&~{_9>l0M%6IDaa!i%^Ul7M9I}Nuhxy-pZ&&e=ntey^+O>K?zLu|aW6R7HJ(Zs1NOZnHq(*`qLz2Ch#Paj^e@`Z(^ zpPwR-IcCmoeW6O%$Vs9)VbH8ZzgTv7d8(#LVtCnSf6Z=P=CBSEx)8hdebX@S9LlkM z(>(9otYiC>AgoH?95E9P58qj-!mc_+zM0%aN&9@jFs4t$HcZ62S9s<`cVpCi;3K)` z7CrAt4|gxFKUr^O?iU+arNSUYkyS?0EF;mKegfgYR!rb9l|g4$L*G4;`46+jk=ii# zt+Cdc^@9WJ_B9{-lxmzlpOVi<7VS_{@Os zZVH8ail?v$2nmEZFtg11$+ljMaq%X##rj(8oI{E;2=wN#iv=}>Zx6;kamsY?Jxl&( z%uDNJD|oCZ`BoWEnq&_~l}RnldK8w*j`iq}wW=8B3x!Otmzl;tU|zIT+#Bm;Nj$%n zXmPN*BjdxvG%X3U;Wvq$gsbCx)(y;jR_$ZE8)C<%62iwr;TE11y=FUh*msI6Yd%Qh z>!iostGKtTH|qfH;z615b=-VWVnwT6Mb+n}^t!~QVYrfmS8US^W5F(v+ud+Vbx(p0C;oZ(3T=(`FDkX1Sp5x}M*)hsb zAKNj~?vq9@7asaqed2El@lGDGz3ml2O3AeTPYVD;dmz22LHh^15zJbh>5M$i&I>3OE>hb3To3@Vg_Z)RuR- zogKV%a)ONjz%Zq?u5fET%%R*`v329jkt-AIs^KbW0vy^=KEA zsG69oj+HO=oJtXh?PpP6E*q3)h+L#Z#)pN#Yp1sJ3&fAtty^~&lfPMBP2nPY1Ds=E z9Kmvfzk_U9gKV8`c7Pc&Z_xp%R=_N9tv~h6^3(=DdF||O;>4>1p<^~8MzIAfu+<^^ zlu>&yI$nU;Jo~tbXhL$^uB6j+w$3O zFs|F|$}4d4DJjjVHY{KW)P#e&=$jPi9E<8@0lBT&R(IE#<&Q(Gx$IXkj`SujU$O9w z9&Okbo!6>CzpOAmoAlNm=q*dxR&k468p+c+hTh$p*J`lx?L(;Jo>p;t^uToUB1iRb zj#YEp!n>`qn?}h$eS5QpSOl`$vxW+myglQq@i7+neM+8Deh2YQ4GCJ9W_{|9neLmSJAUX!oucFm1gkGNO9u;nP>K zf3m#1KsK*{Ch0B0kR#~BLgBdBf}PsI$6WDf}DwrnnlV?7+iv3%S85Zg0H(rU!zAY<(ELTwaLu`DR|tjXdNmW=V! z!K158aHL9pfu~Q4%Q~}fxv{HHOK{89zD|R;%wg#g)#w~|!$=Q?&`_XblmK7_dV1%z zu88?J)iDPUmsKmRT)HHn6JJYQmfJT$Xjm-)9@4>VVw8}J$l4N6YcU^C6REn90-cX| z3$h6?-GY-T)1W+`V7>(QGU9EHM6&$I@&y@*08yT$p#vux5&QV*rl22_CI;b7bZ-|{ za+*E%Qd_PVnz-#u8o-ff>|*!?Fq_B6W{3I2UL?-5%e+j~l6N>G+7!^cINwruMJz0{ zp_)o{P*-6Sqc%ntk%792yz@;^erQV7m z45=q_tih>>cl+5v9T0@!%8X0*$=6rR?PRCdCAl=;#73`}|D0R8E)m}pWaBEtM-c*F z8jB5GtT8mXevEj|vY(o%d9t-(=3#z;@Ui30Rn{y_&Dg?G*FCQ)n;q9dmgWhwR1S%_ z`FRpqowZqsb1cmkisOOhKJ;Au6`qVW^gC`vym3zkE%hAkR1fl!r_3+wG}-J-4zNI0 zj_*(bhlLL(EaMMaYli&J%(zp2VivgIN2=iBx+U*&HJ1E!PGG#-gkRt5rSlCfTA2?W zFuVqScSqFnGbK|$1eRB{uD#`TzuKFV9!_iEH^&q%lf#8cUPg!vVU9h zc;_zVCnn$w|BPjQa^=X~Rnhj_voSBeosxsKv zdEes7D;7Vm)qecBNK?A{3EP<0?I=U$y)((pSl4tavgG{r*%31vswv0YwP<0O^RAFu zh3mo9QIiN3swpqMtE;7db85h<$R>;u2sb=a0f1OG(PDj>vAH^Yzi}~>+vbGq`XzVS zFApGe#&5Wdl*DfokhXu$A_n8b)p%(1(fDN8GxW4O<6bE_&iRozk z@UWk^b40w!mj(BB%%gv0T~;V}N#?edXL;KfiKcazZThF8sighPQ&@{wDniue)q>dD zsYDW(JsFAS`T6GdN5*`EcUedVctd5#ib1)~fFg+*z@Wd=6ic1Wr0S}BWNdO}``CIS z$ll%i(wMQsln_rn*^%|DEWPN;J?5$IiIfjiM4&@b@n%j!X3jk>ve{0q8^S($Z{@U~ z8=QRDa296Ru`&y@AJg2-;(a3Z(cULpc_6g|E>psx%7Sxu&Y|$z9SxEx-x;AeY$fGF z)}ZX$J}zkLbzmqe9>lu12lAJ2)R1oZUKrY=SUMmz`Y995fx*02c2#s2ow;v7W8<(i zIJzJzwntI%&X-%cqEaq)E^^7P?PDoBQV!#4tKn`Js9aGbms+T9q3A9$qiNKUOtIS) zLvrC=HN~ru_uKz=UEljnTa5$K?tkP+o_*ky=wrV?ev8zfcuYk`nd6&A7j793JUBw@n+0g70G1TJ`_78rM_heDqAl^AH`qXS_ z_R|>q2j8f$UBx>G>=Pi>V69I!G@B3{6^2z6n&P5g$3sjZGYJsnoSIONC@L=1y!i;S z1I$=MvwC7E-4S*(zevF&2w0n%4b57Pv6}%181CaCV69I!G@B6gUlx*4t;o3p{rQo( zps5Ij#|fh9x-W+M=b1U>8`V6@6<>p|^UqOGusP^4K&>VuKf*4&t!TM|?+u}CkR=J| zA@V$`xlI&x$}f`ssMKJznnejcD8|@@H&lfJQ_V?_+5?PyvZ05yycp`gJgQF=6$YX@ z+9hDLn)L>HyarKistSEbHNSHd6&U$sLl0{+F;o~x;0#xM`%wbHhE1J=9s_i0LS`U= zyNZ?@M+t0$R`_mSZj)*{>!7P?IZj56fKuQ z{NRj+zRV4Syp;Hgp%(TyM7_U0@CT=8V4N^#SV<4d+U~N-f!* z8%=FLv+_#k?j~v)*mhHiX5KMaykKwFYY(40&iI&KU%aGS`yj&EIwx;eaJuVpj&ES= z;_jmM!DnJVd7jMDfov9cHQN#`*_9*)+YY`++8g=<96VdLomMsxoTj0)}bmnHTZoASm#FM zElIuU=EolJ$5b4c3dK)tzP^JuS$F!k$s2f+FCdd@F80UghFilG+k}dpfcr#M@bw~^ zVmIqATC+(pB%e5*Jwd@CPcV7A+Uko-+P+Vr*#9(TopY6sOhvgG?}wT)QD@}0;$H^A z+EB!Ckd2Xntafe5Okhj#q5j%YMz~cVMf*jNtYl~b`&GW*Q5`|ufOoCX0-CrOpQH4j zJhBW`W*S-mL61@xgtwfR46^I2e=$7nhAGXueN!T$GGs0Rr{a|g9GiHyqz6l2Ru*Zabj1oHcCG6N$Gtelf zSHjY?2;1rOqx!DJsCDVyxPI>8Ydk;%0Bp(4CT)b`5X`&8b^#)h_p@0(v;#v6!s zzY@Ssfvgh|2^DicWR-tP!_(M-VkH-AB%&4qJ#j*}u`Sy__*9Xv9~}7ls0M8v zD0%YjHliEX@HJ=$02&GaxTVZ>hL80&xkfu4a2o)OApjj;vU#yTJ)i#_Jm3NVG`0hP zTd~V{JCRp00Sg`w009)B8gz7^6v)Loh$8R+-3|cYgaC@lT$lM+mB=GH@Bk$M$cF&D ze96Vd{(OA?%6NbP0G#LqfFH#!7dwf5783~L0UZ!P6{TW#X0RX672Y?5B$q!2WwfOwC@BkgC z2HgN)S>lr3O=Mj{V1NfWK>!`72HhPf9rEpNB7Z!9t_J{2A%LzjmpLD+9=S#j9-s#R zDG=Z>Uvfr?{}VoceLUbPRD&J>C@par?;)xvA+W~-Y9W9jRD<3Qlp(oTFHsvFpxX-o zZV$-_t}s4UGxD}RJirV9WJCZUf-m`2ssCF(e{(z_ z3aUXr0BD!GnD!ItmlDL{0j3bZ5~@Le2g;JXte?mM59sR$fD{N|rOfr7kM%J*^#C65 z7y#ZtfDFFmccuOx`TU>Y0hv$@1_0nwsZ06*QFbXo4jxbl0iHrN80bJfCEp$(`i2M4 z4FW(R1h7%&D&}LgCD$0l18f0c7y^{>CI2e*FX!{O!viXz8Vmx!W~s~gAkl6q0TK@& z5(NMUs0KqFCI4W~B^07LRM-1TsP5{6!3INS~$=BfiEqwmY zcmNuz0R{l>z+En4h?L+2op``~2;d6U0MmhTCHKG(J;VdzFaR(B0o;_ihWJ?B$=fh^ zfI9&AL4Z-dCz}@tRPsYFlCLzGd7}4VFho16J84QL8o_O-; zf++}aS$DWC8>r+xvGIJGIhpqmngW1ypqm4!eEK?>mke0}QxE{siF*F6;8vowm`CtV7fS7Q=sV5FzBRQDap=_}^!oDX&F>@pJIep?#pu8MFE?NCrnR=1 z1l)oDqqm$SG44e8YZMK*7+XU_<*$>;5`4@5k0-Xk8|#yuz^UJvlm8?9Z)evg&3=Qq}_QJ%`1p>IW&ARSD_i0&}4>u+8&&fgL ze&IeATVKF}vzGmsd`dIH9_L*4D^(!BKw$W|$^PU%R((2F)I^FAo+`kfABz+pn#az| zA|(q71PTh65#`&9Q^z7g+~)$Dxa_H@cGq%Je@#%z^5Mpd)?tRY*}2_`RF-|Woz3+S z+`;}%)9UP16|41)g&n=!bw3&J-SK{pO;bOa!Szh_)c#N%oU=#E2y)K>`)lPV>~JM^ ze%>Ti%FhQo6}!F#aDVq%LVNyU+3M|`X}EnWi^+kPXWzF5E9^mKL&acA_;kav3G%?f z<9$e|)Xwb61Ki3kX0R@mN`3MP%U&l_6>{Vt2{+NQ(=Z>t+8thisf6qFQn4WXwwA`1 z(Zf}TE4_(Ui#6Q>=V7?Hx&oxp^ml? zZ5Op+_e9}2JqA0t%Bu4d?~J7qr;4U49mSN|p{MsL;CAJ-FRkJYs;!I0w_Osp#fGQQw-fxH)Ts zOf^vvO||seb%KSfR#)`@%GtA7quTvNg=LRmnK%wS<(k@=X_)#@@dC$fvn^yc1qtM$%Ub(6VA zsRdKOa8shHpJ%G7-$(W8T{tpQqN?zGQL?me{4ZYB^_-$iH?j1I{f-prL8RB_Le{WZ z6xK2dE0egdpXzh4Jp8L^XQwDuJ>#`lq|+( zO?|8Xm;3IoO4t@>!-mSQtVQ%j5R>1RpYN@TWR$HE?kGl8du@&zTNMu36b@NMjm$?a zFBd7k2tkdmeAw9CM9Na02*>$3?(~MsB9Ys$KYb{eK=-)ltlDt`f^V!xzp4WK{C=0m z7Pb~gPyCORUeId^y&!r9d45;+l(YN(^@(tf;Zd|r6o%bA`5j|P>B2p2VWCLG1zI8w zaqRue86RVB+DpIdxIs)&wGmFnUOdav&ehU)DQ}WJ(MCz%jUx2!VO3`4R*Ik3y31-u zRh-w|IP%)a7?Wy^HR+_VzBu;I7}!&>%h!C=72buNwji_HA?Mv!9!&LfI&F(O(a=Y{ zbIT?zhDA|)ko#QyiQu$Rjc|rFDAZm`J=eg<6gV7rj_2e3Ji1Gf+r|N=8s5G_ zY?l`71-dt{%&28(5MTPa6@4G^hKVKS>`mTVu};e;+GD7M!}?dLN203lzKvLsZxWc5 zMV9$~eNigJ#x2^&;6!{7i?Se^sC$(XrB0L&5 zxz|eSd-Mui0#7~l?OYABk!I_AQiZtr{mL36jB9KP6P=s8={PA}pJcQp}C9M0X^h6`O7KSC; z5M{bo9Q2kgZ-Gep`#?lt1MMX>%fd+$!n|ri&(($g^$_(`+5N?x4|mZlhmkFLT6#{B zm*W$h3cyE~mzR+%hr8Giop7XLrp(LpoQIQWlj{A0@ZPMDv(xz=tBX;w>ZyqBr5st9 z*FxLy)XcZ%REl9i?i4KEqI##uUHZbQwrAOcPhX57d36IW?`m@A+{ysaz4Q5jw&#bZ zz6tSPqtTCvnxjImtx=U zk;@1<`m(WgXsX2bvY4?M3iXQT_MX_)dPwKqw>5LI^sQl}d~B=H_qdk}U+e6ikH>df zM&9Dw6m~pu#=IpFW~18(AMy=>U3sE$#n@hFTI$wXkIud zdr$k^h_`dY0Lnx?8T9LF8p51~hdQQ4a&GzA z($7xvspfAk9|AkG-=qZ6wB*G`8ic z#gd(j{3$P$?~Id@ppz(6_tFv+JkS%3oGJS-*PYk$JbIpyIIZe$r*{T3F_S=BSS9ORpVoSfLl#(zEKaWLPa$H&3oH!nO;|EwP)+AQ z+pO`2FYSE4U?4+#bGF)01Ht3cd-vOg77v2J3Z{?VkvZo^c>@ac0#UW9;vGWFR%^}| zKOCHBd4K&uPfKf7;{){|Q8OZmJ6^h?_g2X;70cJcxBA2uU1FNDbK)yBSmVQEYrDl< zvdmxQcdsvDl&Y3O)Ldg-pZG^gzdrrLy!5nI$Z6~(>#Z@@J2TPAFVCumoTd2aN1ttR zMkk-3Q~TaC9Xl%HE(1Th3?}o(Kjb`Rv>lZaQB5=1qe)LPM8%^L=m|JBg^1S_M5FUA z#Aa&8ei|^iH6T>0AUb&B62&Et)2)S_Hsz@nxrv?%eCzLcVk+50KMZeEf7NDp3b^pt zROpy0Vj{*QC)goX=w?xj?6Wt5KCi7JByU!^vPlGy$G-hF8w@*d8SlvEt#B)=?)q$o z4K?k{^1F&dYu#%){WoY^*ak|Sj-43$a6O-_c#+@h=yPP@9NLxl`a9S?~#zpxl%&jHo zaW2&isBs4FeaWKGnH~;_ZA_KYuM(O!7jB zs$^Zjx0PGAfg{>h&pT>g z$!!xa;`k0yo44LVIj6@GMW-_+M+AZv-y4us2Hn53a6Z6VgZo;oTS*&bopm`&jB=IQ zBq1ZO(5t3LUiW1Ec}`U{=Feld2cmruh>zu0O&#CP^6aFG7@G9Q^1R{kw*PE5-cW`8#2 z4qiDQHCe20nBsz)uIq3AGN{)(QSTyU!2dI9$*6qka1y&(QJomQT=27S=^EL&`KTo= zBNOBtwkImbNyZpyXdD|lC2+o}+s9CpMJKiji_Kiz3~ z_pF}ocJ=za(mDQY&QM4DJY4zV{Ao*pLEn3={a$Oj&rzw0XZia5Xuj{Nsc+Ft1a*D& z^?P%%@3}YLcqUzKL^iGYh+46&ym<4XCCiPw{@EQT9p>%WQRQ`$sgIf*yI(8Tc=_V$ zSyc72kQ?-#ZG@}sCvP4h3logT9*-Q(E%JaHRsO}Tu^m6GPJ3rin{xAgJ| z+Uq@g<0Km+Wdf=z~{8`KCSC~r+47m2rewoy0n

f7kDY?}@XI3kF(Mh(xJ*xEhy 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

)%bR9 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 W)uuRMfHaRn;lQ&VY-!XjfBGK+D5X>Y literal 0 HcmV?d00001 diff --git a/src/main/java/Data/securityToken.txt b/src/main/java/Data/securityToken.txt index 4116f70..18b3348 100644 --- a/src/main/java/Data/securityToken.txt +++ b/src/main/java/Data/securityToken.txt @@ -1 +1 @@ -MmfFR7KvbrelQJAsfKnmLKfdIATdIuHOTZc0H4B9gJweQ3Ifx6SJjVoBs59hW1iY \ No newline at end of file +936JzYXxJIzzITnuVOGYMDHRCYtKuaF4EOSY3p8jUPeZNV9HeqPBYXQ0WybUy11V \ No newline at end of file diff --git a/src/main/java/Files/ReadExcelFile.java b/src/main/java/Files/ReadExcelFile.java new file mode 100644 index 0000000..8627791 --- /dev/null +++ b/src/main/java/Files/ReadExcelFile.java @@ -0,0 +1,17 @@ +package Files; + +import java.io.FileInputStream; +import java.io.IOException; + +import static Credentials.UserCredentials.getHomeRoot; + + +public class ReadExcelFile { + + public void readExcel() throws IOException { + // Create an instance of the class that reads Excel files + + // Read XLSX file + FileInputStream file = new FileInputStream(getHomeRoot() + "Spritztagebuch.xlsx"); + } +} \ No newline at end of file diff --git a/src/main/java/Files/UnZipFile.java b/src/main/java/Files/UnZipFile.java new file mode 100644 index 0000000..dd59b4c --- /dev/null +++ b/src/main/java/Files/UnZipFile.java @@ -0,0 +1,113 @@ +package Files; + +import Credentials.UserCredentials; +import HttpCall.PlonkHttpGet; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +public class UnZipFile { +// public static void main(String[] args) { +// +// UserCredentials userCredentials = new UserCredentials(); +// String workPath = userCredentials.getHomeRoot(); +// +// Path source = Paths.get(workPath+"PlonkData.zip"); +// Path target = Paths.get(workPath); +// +// try { +// +// unzipFolder(source, target); +// System.out.println("Done"); +// +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// } + + public static void unzipFolder(Path source, Path target) throws IOException { + + try (ZipInputStream zis = new ZipInputStream(new FileInputStream(source.toFile()))) { + + // list files in zip + ZipEntry zipEntry = zis.getNextEntry(); + + while (zipEntry != null) { + + boolean isDirectory = false; + // example 1.1 + // some zip stored files and folders separately + // e.g data/ + // data/folder/ + // data/folder/file.txt + if (zipEntry.getName().endsWith(File.separator)) { + isDirectory = true; + } + + Path newPath = zipSlipProtect(zipEntry, target); + + if (isDirectory) { + Files.createDirectories(newPath); + } else { + + // example 1.2 + // some zip stored file path only, need create parent directories + // e.g data/folder/file.txt + if (newPath.getParent() != null) { + if (Files.notExists(newPath.getParent())) { + Files.createDirectories(newPath.getParent()); + } + } + + // copy files, nio + Files.copy(zis, newPath, StandardCopyOption.REPLACE_EXISTING); + + // copy files, classic + /*try (FileOutputStream fos = new FileOutputStream(newPath.toFile())) { + byte[] buffer = new byte[1024]; + int len; + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + }*/ + } + + zipEntry = zis.getNextEntry(); + + } + zis.closeEntry(); + + } + + } + + // protect zip slip attack + public static Path zipSlipProtect(ZipEntry zipEntry, Path targetDir) + throws IOException { + + // test zip slip vulnerability + // Path targetDirResolved = targetDir.resolve("../../" + zipEntry.getName()); + + Path targetDirResolved = targetDir.resolve(zipEntry.getName()); + + // make sure normalized file still has targetDir as its prefix + // else throws exception + Path normalizePath = targetDirResolved.normalize(); + if (!normalizePath.startsWith(targetDir)) { + throw new IOException("Bad zip entry: " + zipEntry.getName()); + } + + return normalizePath; + } + +} \ No newline at end of file diff --git a/src/main/java/eu/hsrw/ias/ggd/ApiCall.java b/src/main/java/eu/hsrw/ias/ggd/ApiCall.java index 2129529..8e19ecd 100644 --- a/src/main/java/eu/hsrw/ias/ggd/ApiCall.java +++ b/src/main/java/eu/hsrw/ias/ggd/ApiCall.java @@ -42,7 +42,7 @@ public class ApiCall { ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner(); ArrayList outputValue = - (readSensors4Partner.FetchSensor4Box("Germes", token)); + (readSensors4Partner.FetchSensor4Box("Nica", token)); for (int i = 0; i < outputValue.size(); i++) { Device device; diff --git a/src/main/java/eu/hsrw/ias/ggd/Greenhouse.java b/src/main/java/eu/hsrw/ias/ggd/Greenhouse.java index 107144b..e6d5416 100644 --- a/src/main/java/eu/hsrw/ias/ggd/Greenhouse.java +++ b/src/main/java/eu/hsrw/ias/ggd/Greenhouse.java @@ -6,6 +6,7 @@ import java.util.List; public class Greenhouse { private String id = "8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + private String id2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica private Severity state = Severity.Unknown; public Greenhouse() { @@ -16,6 +17,14 @@ public class Greenhouse { this.devices = devices; } + public String getId2() { + return id2; + } + + public void setId2(String id2) { + this.id2 = id2; + } + public void addDevice(Device device) { this.devices.add(device); } diff --git a/src/main/java/eu/hsrw/ias/ggd/PlonkDataRequest.java b/src/main/java/eu/hsrw/ias/ggd/PlonkDataRequest.java index bf60f0e..77f16f9 100644 --- a/src/main/java/eu/hsrw/ias/ggd/PlonkDataRequest.java +++ b/src/main/java/eu/hsrw/ias/ggd/PlonkDataRequest.java @@ -1,9 +1,17 @@ package eu.hsrw.ias.ggd; import Credentials.PlonkTest; +import Credentials.UserCredentials; +import Files.ReadExcelFile; +import Files.UnZipFile; import HttpCall.PlonkHttpGet; + import org.json.JSONObject; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; + public class PlonkDataRequest { public static String x() throws Exception { String token; @@ -14,7 +22,7 @@ public class PlonkDataRequest { String outputToken = PlonkHttpPostRequest.OnCallMethod(); JSONObject obj = new JSONObject(outputToken); token = obj.getString("access_token"); - String urlExtension= plonkTest.getServer()+"/api/pre/objects"; + String urlExtension= plonkTest.getServer()+"/api/pre/ ubersicht/data/Gießen-Düngen%20(Stufen)"; result = plonkHttpGet.PlonkHttpGetCall(urlExtension,token); } @@ -23,10 +31,30 @@ public class PlonkDataRequest { } public static void main(String[] args) { + //if we want to fetch data from PlonkApi + +// try { +// String output = x(); +// System.out.println(output); +// } catch (Exception e) { +// e.printStackTrace(); +// } + + //This part is unziping the excel file from the url + UnZipFile unZipFile = new UnZipFile(); + UserCredentials userCredentials = new UserCredentials(); + String workPath = userCredentials.getHomeRoot(); + + Path source = Paths.get(workPath+"PlonkData.zip"); + Path target = Paths.get(workPath); + ReadExcelFile DT = new ReadExcelFile(); + try { - String output = x(); - System.out.println(output); - } catch (Exception e) { + + unZipFile.unzipFolder(source, target); + DT.readExcel(); + System.out.println("Done"); + } catch (IOException e) { e.printStackTrace(); } } diff --git a/src/main/resources/rules/CriticalBattery.drl b/src/main/resources/rules/CriticalBattery.drl index d36a328..bad9126 100644 --- a/src/main/resources/rules/CriticalBattery.drl +++ b/src/main/resources/rules/CriticalBattery.drl @@ -16,8 +16,9 @@ rule "CriticalBattery" then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalBatteryOutput); insert(new Notification("battery", sensorData, Severity.Critical)); diff --git a/src/main/resources/rules/CriticalPrecipitation.drl b/src/main/resources/rules/CriticalPrecipitation.drl index 1d32305..6cc9f40 100644 --- a/src/main/resources/rules/CriticalPrecipitation.drl +++ b/src/main/resources/rules/CriticalPrecipitation.drl @@ -13,8 +13,9 @@ rule "CriticalPrecipitation" sensorData: SensorData(tag == "precipitation", value > 15.5) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalPrecipitationOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Precipitation %s in the following sensor %s \", \"precipitation\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalPrecipitationOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Precipitation %s in the following sensor %s \", \"precipitation\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalPrecipitationOutput); insert(new Notification("precipitation", sensorData, Severity.Warning)); diff --git a/src/main/resources/rules/CriticalSoilMoisture.drl b/src/main/resources/rules/CriticalSoilMoisture.drl index bd6a81d..505d8c6 100644 --- a/src/main/resources/rules/CriticalSoilMoisture.drl +++ b/src/main/resources/rules/CriticalSoilMoisture.drl @@ -12,9 +12,10 @@ rule "CriticalSoilMoisture" device: Device(sensorDatas: sensorData) sensorData: SensorData(tag == "soilMoisture", value < 28.0) from sensorDatas then - String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; +// String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";//Germes + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Soil Moisture %s in the following device %s \", \"soilMoisture\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Soil Moisture %s in the following device %s. It’s too dry and the field needs fertilizer \", \"soilMoisture\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalSoilMoistureOutput); final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical); diff --git a/src/main/resources/rules/CriticalTemperature.drl b/src/main/resources/rules/CriticalTemperature.drl index cde7f84..21dc8c2 100644 --- a/src/main/resources/rules/CriticalTemperature.drl +++ b/src/main/resources/rules/CriticalTemperature.drl @@ -13,8 +13,9 @@ rule "CriticalTemperature" sensorData: SensorData(tag == "temperature", value < 10.0 || value > 30.0) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalTemperatureOutput); final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical); diff --git a/src/main/resources/rules/DielectricPermittivity.drl b/src/main/resources/rules/DielectricPermittivity.drl index 80e781f..ee915b4 100644 --- a/src/main/resources/rules/DielectricPermittivity.drl +++ b/src/main/resources/rules/DielectricPermittivity.drl @@ -13,8 +13,9 @@ rule "DielectricPermittivity" sensorData: SensorData(tag == "dielectricPermittivity", value > 20.0) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivityOutput); insert(new Notification("dielectricPermittivity", sensorData, Severity.Warning)); end diff --git a/src/main/resources/rules/optimal.drl b/src/main/resources/rules/optimal.drl index 9d0657f..b3e714f 100644 --- a/src/main/resources/rules/optimal.drl +++ b/src/main/resources/rules/optimal.drl @@ -9,7 +9,7 @@ when then HttpPost httpPost = new HttpPost(); - final String optimalGreenhouse = String.format("{\"id\":\"germes-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is optimal\"}]}}"); + final String optimalGreenhouse = String.format("{\"id\":\"nica-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is optimal\"}]}}"); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalGreenhouse); System.out.println("Green House optimal, because of: '"+warning.getType()+"'"); end diff --git a/src/main/resources/rules/warnings.drl b/src/main/resources/rules/warnings.drl index b6bc444..2dfbede 100644 --- a/src/main/resources/rules/warnings.drl +++ b/src/main/resources/rules/warnings.drl @@ -7,7 +7,7 @@ when warning: Notification(severity > Severity.Warning) then HttpPost httpPost = new HttpPost(); - final String criticalGreenhouse = String.format("{\"id\":\"germes-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is critical\"}]}}"); + final String criticalGreenhouse = String.format("{\"id\":\"nica-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is critical\"}]}}"); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalGreenhouse); System.out.println(criticalGreenhouse); System.out.println("Green House critical, because of: '"+warning.getType()+"'"); diff --git a/target/classes/rules/CriticalBattery.drl b/target/classes/rules/CriticalBattery.drl index d36a328..bad9126 100644 --- a/target/classes/rules/CriticalBattery.drl +++ b/target/classes/rules/CriticalBattery.drl @@ -16,8 +16,9 @@ rule "CriticalBattery" then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalBatteryOutput); insert(new Notification("battery", sensorData, Severity.Critical)); diff --git a/target/classes/rules/CriticalPrecipitation.drl b/target/classes/rules/CriticalPrecipitation.drl index 1d32305..6cc9f40 100644 --- a/target/classes/rules/CriticalPrecipitation.drl +++ b/target/classes/rules/CriticalPrecipitation.drl @@ -13,8 +13,9 @@ rule "CriticalPrecipitation" sensorData: SensorData(tag == "precipitation", value > 15.5) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalPrecipitationOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Precipitation %s in the following sensor %s \", \"precipitation\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalPrecipitationOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Precipitation %s in the following sensor %s \", \"precipitation\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalPrecipitationOutput); insert(new Notification("precipitation", sensorData, Severity.Warning)); diff --git a/target/classes/rules/CriticalSoilMoisture.drl b/target/classes/rules/CriticalSoilMoisture.drl index 8340986..bd71d93 100644 --- a/target/classes/rules/CriticalSoilMoisture.drl +++ b/target/classes/rules/CriticalSoilMoisture.drl @@ -12,9 +12,10 @@ rule "CriticalSoilMoisture" device: Device(sensorDatas: sensorData) sensorData: SensorData(tag == "soilMoisture", value < 28.0) from sensorDatas then - String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; +// String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";//Germes + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Soil Moisture %s in the following device %s \", \"soilMoisture\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Soil Moisture %s in the following device %s. It’s too dry and the field needs fertilizer \", \"soilMoisture\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalSoilMoistureOutput); final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical); diff --git a/target/classes/rules/CriticalTemperature.drl b/target/classes/rules/CriticalTemperature.drl index cde7f84..21dc8c2 100644 --- a/target/classes/rules/CriticalTemperature.drl +++ b/target/classes/rules/CriticalTemperature.drl @@ -13,8 +13,9 @@ rule "CriticalTemperature" sensorData: SensorData(tag == "temperature", value < 10.0 || value > 30.0) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalTemperatureOutput); final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical); diff --git a/target/classes/rules/DielectricPermittivity.drl b/target/classes/rules/DielectricPermittivity.drl index 80e781f..ee915b4 100644 --- a/target/classes/rules/DielectricPermittivity.drl +++ b/target/classes/rules/DielectricPermittivity.drl @@ -13,8 +13,9 @@ rule "DielectricPermittivity" sensorData: SensorData(tag == "dielectricPermittivity", value > 20.0) from sensorDatas then String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; + String greenhouse2="e5ec9f15-f214-455d-9f02-3c134c770dc1";//Nica HttpPost httpPost = new HttpPost(); - final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); + final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse2, sensorData.getValue(),sensorData.getTag(),sensorData.getValue()); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivityOutput); insert(new Notification("dielectricPermittivity", sensorData, Severity.Warning)); end diff --git a/target/classes/rules/warnings.drl b/target/classes/rules/warnings.drl index b6bc444..2dfbede 100644 --- a/target/classes/rules/warnings.drl +++ b/target/classes/rules/warnings.drl @@ -7,7 +7,7 @@ when warning: Notification(severity > Severity.Warning) then HttpPost httpPost = new HttpPost(); - final String criticalGreenhouse = String.format("{\"id\":\"germes-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is critical\"}]}}"); + final String criticalGreenhouse = String.format("{\"id\":\"nica-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is critical\"}]}}"); httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalGreenhouse); System.out.println(criticalGreenhouse); System.out.println("Green House critical, because of: '"+warning.getType()+"'");