From 5896212ed9cc9ad0c79b639b6c7e9fa5a472a9f6 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 21 Nov 2017 17:53:11 +0100 Subject: [PATCH] fix package name, start database handling --- .../MeasurementCollector/AJmsQueue.class | Bin 1994 -> 0 bytes .../MeasurementCollector/AMessageParser.class | Bin 2255 -> 0 bytes .../DataObjectQueue.class | Bin 493 -> 0 bytes .../MeasurementCollector/DatabaseEngine.class | Bin 3205 -> 0 bytes .../JmsQueueProducer.class | Bin 2379 -> 0 bytes .../MeasurementCollector/MBusParser.class | Bin 5627 -> 0 bytes .../MeasurementCollector.class | Bin 2430 -> 0 bytes .../MeasurementCollectorException.class | Bin 501 -> 0 bytes .../MeasurementCollector/TriggerTimer.class | Bin 625 -> 0 bytes .../ADataObject.class | Bin 1913 -> 1913 bytes .../ADataParser.class | Bin 830 -> 830 bytes .../measurementCollector/AMessageParser.class | Bin 0 -> 2286 bytes .../measurementCollector/DatabaseEngine.class | Bin 0 -> 3894 bytes .../ElectricEnergyDataObject.class | Bin 1310 -> 1310 bytes .../FinderOnePhasePowerMeter.class | Bin 1612 -> 1612 bytes .../FinderThreePhasePowerMeter.class | Bin 1619 -> 1619 bytes .../HottisFourChannelThermometer.class | Bin 1647 -> 1647 bytes .../ITriggerable.class | Bin 160 -> 160 bytes .../measurementCollector/JmsTopic$Mode.class | Bin 0 -> 1249 bytes .../measurementCollector/JmsTopic.class | Bin 0 -> 5142 bytes .../measurementCollector/MBusParser.class | Bin 0 -> 5832 bytes .../MeasurementCollector.class | Bin 0 -> 2526 bytes .../MeasurementCollectorException.class | Bin 0 -> 611 bytes .../MeasurementDatabaseEngine.class | Bin 0 -> 2205 bytes .../MqttReceiver$Callback.class | Bin 2294 -> 2294 bytes .../MqttReceiver.class | Bin 4591 -> 4591 bytes .../hottis/measurementCollector/MyQueue.class | Bin 0 -> 417 bytes .../TemperatureDataObject.class | Bin 1241 -> 1241 bytes .../measurementCollector/TriggerTimer.class | Bin 0 -> 625 bytes bin/measurementCollector.props | 20 +-- bin/measurementDataEngine.props | 5 + .../MeasurementCollector/AJmsQueue.java | 42 ------ .../MeasurementCollector/DataObjectQueue.java | 11 -- .../MeasurementCollector/DatabaseEngine.java | 81 ------------ .../JmsQueueProducer.java | 44 ------- .../ADataObject.java | 2 +- .../ADataParser.java | 2 +- .../AMessageParser.java | 15 +-- .../measurementCollector/DatabaseEngine.java | 122 +++++++++++++++++ .../ElectricEnergyDataObject.java | 2 +- .../FinderOnePhasePowerMeter.java | 2 +- .../FinderThreePhasePowerMeter.java | 2 +- .../HottisFourChannelThermometer.java | 2 +- .../ITriggerable.java | 2 +- .../hottis/measurementCollector/JmsTopic.java | 124 ++++++++++++++++++ .../MBusParser.java | 4 +- .../MeasurementCollector.java | 11 +- .../MeasurementCollectorException.java | 6 +- .../MeasurementDatabaseEngine.java | 30 +++++ .../MqttReceiver.java | 2 +- .../hottis/measurementCollector/MyQueue.java | 8 ++ .../TemperatureDataObject.java | 2 +- .../TriggerTimer.java | 2 +- src/measurementCollector.props | 20 +-- src/measurementDataEngine.props | 5 + start.sh | 12 ++ startDatabaseEngine.sh | 12 ++ 57 files changed, 367 insertions(+), 225 deletions(-) delete mode 100644 bin/de/hottis/MeasurementCollector/AJmsQueue.class delete mode 100644 bin/de/hottis/MeasurementCollector/AMessageParser.class delete mode 100644 bin/de/hottis/MeasurementCollector/DataObjectQueue.class delete mode 100644 bin/de/hottis/MeasurementCollector/DatabaseEngine.class delete mode 100644 bin/de/hottis/MeasurementCollector/JmsQueueProducer.class delete mode 100644 bin/de/hottis/MeasurementCollector/MBusParser.class delete mode 100644 bin/de/hottis/MeasurementCollector/MeasurementCollector.class delete mode 100644 bin/de/hottis/MeasurementCollector/MeasurementCollectorException.class delete mode 100644 bin/de/hottis/MeasurementCollector/TriggerTimer.class rename bin/de/hottis/{MeasurementCollector => measurementCollector}/ADataObject.class (93%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/ADataParser.class (77%) create mode 100644 bin/de/hottis/measurementCollector/AMessageParser.class create mode 100644 bin/de/hottis/measurementCollector/DatabaseEngine.class rename bin/de/hottis/{MeasurementCollector => measurementCollector}/ElectricEnergyDataObject.class (85%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/FinderOnePhasePowerMeter.class (73%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/FinderThreePhasePowerMeter.class (73%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/HottisFourChannelThermometer.class (73%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/ITriggerable.class (60%) create mode 100644 bin/de/hottis/measurementCollector/JmsTopic$Mode.class create mode 100644 bin/de/hottis/measurementCollector/JmsTopic.class create mode 100644 bin/de/hottis/measurementCollector/MBusParser.class create mode 100644 bin/de/hottis/measurementCollector/MeasurementCollector.class create mode 100644 bin/de/hottis/measurementCollector/MeasurementCollectorException.class create mode 100644 bin/de/hottis/measurementCollector/MeasurementDatabaseEngine.class rename bin/de/hottis/{MeasurementCollector => measurementCollector}/MqttReceiver$Callback.class (80%) rename bin/de/hottis/{MeasurementCollector => measurementCollector}/MqttReceiver.class (85%) create mode 100644 bin/de/hottis/measurementCollector/MyQueue.class rename bin/de/hottis/{MeasurementCollector => measurementCollector}/TemperatureDataObject.class (84%) create mode 100644 bin/de/hottis/measurementCollector/TriggerTimer.class create mode 100644 bin/measurementDataEngine.props delete mode 100644 src/de/hottis/MeasurementCollector/AJmsQueue.java delete mode 100644 src/de/hottis/MeasurementCollector/DataObjectQueue.java delete mode 100644 src/de/hottis/MeasurementCollector/DatabaseEngine.java delete mode 100644 src/de/hottis/MeasurementCollector/JmsQueueProducer.java rename src/de/hottis/{MeasurementCollector => measurementCollector}/ADataObject.java (96%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/ADataParser.java (92%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/AMessageParser.java (65%) create mode 100644 src/de/hottis/measurementCollector/DatabaseEngine.java rename src/de/hottis/{MeasurementCollector => measurementCollector}/ElectricEnergyDataObject.java (94%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/FinderOnePhasePowerMeter.java (93%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/FinderThreePhasePowerMeter.java (93%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/HottisFourChannelThermometer.java (94%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/ITriggerable.java (59%) create mode 100644 src/de/hottis/measurementCollector/JmsTopic.java rename src/de/hottis/{MeasurementCollector => measurementCollector}/MBusParser.java (96%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/MeasurementCollector.java (75%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/MeasurementCollectorException.java (63%) create mode 100644 src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java rename src/de/hottis/{MeasurementCollector => measurementCollector}/MqttReceiver.java (98%) create mode 100644 src/de/hottis/measurementCollector/MyQueue.java rename src/de/hottis/{MeasurementCollector => measurementCollector}/TemperatureDataObject.java (93%) rename src/de/hottis/{MeasurementCollector => measurementCollector}/TriggerTimer.java (86%) create mode 100644 src/measurementDataEngine.props create mode 100755 start.sh create mode 100755 startDatabaseEngine.sh diff --git a/bin/de/hottis/MeasurementCollector/AJmsQueue.class b/bin/de/hottis/MeasurementCollector/AJmsQueue.class deleted file mode 100644 index 28d1e3d26cd919a0dfb19cda00e4a8a315ccb938..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1994 zcma)6TXWk)6#mwBBS%)!)VVlNpia{e+o2JK5Wo&CX_}M0@nsOr9hiG6O>&`9r)hoRu6)(`E>x8SU=bZ_njBm%sk`?RNl6XiJDNWNKV( zSgvb0YKd!3*XC_*x@%Ue#dX)R)z!_mv)$!gE+NJ+*3=$oYD+Wg>Q=Q$2!^4SRj+fK zVWw!=bye$VdV{M%Xb_6lrKVc+AO!|lw@j0s8J5W~RTSDDs?D~et_|dbk{s?h9%MWO zDf>dYPt>^M8m8u}Nrf=if(yb8tr(`^US^19vO5g1HLJ#DL~%yJ2u5X$V^YEd!|Z=K zUeZjB;!`k%6vIfJySFXN^&_IEne2&S4};+q1*b5?aJp!i{ARaZ<#t7@wm3twXz5yO zN3#ua?h9jX!*CdK#s8ZfiZ&*KC5qP{>bxVUaU{$ztel|YxU3IUNSI}~7@|j`+&$p! z@6=UqQ`!y^w?TK7{X-mc43n-UrS}zreY~% zcO>K(QbCdV7gxJRtH$j(-eMRJDyVNTpO%ruy!fdK-o_S(vqr9mt@ssN$i8H_ zufHHvysJ=ayvGoCE#El91m*ZemkJ5Ij}Ik$z;G@^&v9k1ATI(wRpZreT~M&1;3H5~ zj_EenTplpUFx@xxQd5W;`dER4cmh{(O~M-abzJ)>SjQ+?b6m}KCE8;zK_l6&-Z~my^gzb`oVaRc8F%0*+GoOxQn~18cmn(}KTU!Z~@tK4Q z!bTP23?PoT}{7V(mMS)A(ySLt@8~-Op?(cZsBBXhM0@e zsE=Vn3?FYt1>~)iOm8JxX^jw)CL;Y$)9JEz29(?Z#&W+Rxrgbe9_m&4k9s=CN$UtD zWfEserqE0Ae+{qGN*N(k1m|cUqf=UFW!GsRA<6SYoZn4eIKZ35+%rrcBDj=3)NFfb_#W@=5;gcx#5GcLrLyIp!i^*F(+>Q|R z&Oqy3A9^PQ{RL+|Rmm?GdiXkuL!@_Ue}L*APrYa#;W28&h2UhFxB%^BVq=zASRfvj zh=p6k!99xqN6g?S>ikD^`ve!Tk2(B_d5^oa$LI4tcQSs)x2ThaCrF_IgLX~QJ&efT Pcr2loBEfwUM9}&d`w|GT diff --git a/bin/de/hottis/MeasurementCollector/AMessageParser.class b/bin/de/hottis/MeasurementCollector/AMessageParser.class deleted file mode 100644 index 47ff50f4876b55282a2c913d0045c678c416e2ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2255 zcmb7GYf~Fl7=BJj*bug*CKTn;Hb7Mfmj%Uo2}Y5&+L}<>Alg>#EXgq}CfT^VanKq6 zh=0Hje$g3eMQ0p8`yc!(*5{mE2vDXOhM7IL_xil=^M-%^`{OSFOL$};CNNi(*0vi2 zj&GHu?YBMIkj-G#t=DBGa6N0KBz@nm$#vWFrDq^6aAC*(*0$<)vu54d+M$?0Z{4lc zq$e<5biJBox9rNcwA7_TDXvR9R#A)O1rmYVaw-DpV#iQ9@F>a0x9uvqL8 z+wDkn-E*t$iu9=7S9WSmJ75|DkIt&U+)ZKSx*gbI&iMkp^;X>GS58e}C`_dtICYEB zw4@g}(pM78PSXhr0uQI2&GvMqZb5Wn&^YC%HwEIWZdInxgN%s*3<~s2O>d?!gqIAw zC@}fFqLl0=>+6{q#)!bVnhfr_ZV*&8n`TAov~~wTtY_K7&p;} zl-f<2FpyNcmrb0*d4YkV)0AuN#+LLp?5#S>n=ZN)yS{0Ajygw|@nGBW8A3M@kGC}o zmG~xXx`l3A}R8@mjJqhm>wahLhz=^IrpK!aFoB} zT4l+8sXO1Ro*_0#+~PoMgflK1!C39b$0!*n3S4;}b2Mw#aEIMfm0NAjfs3cGT!B}> zT@&|E7BIGLe@$meiarQ|Yp6moj3e_vmyR^HtFFLox1KzbHd}e(vT>Vv>d4=B*?IumNe*O(`er7OA_gU^<<$EqPh$&3- zMAJGTp?4~TnBL_uL)R=DHDj3LU7V+R9n>}MlzcMx8?ukF(D9wp+QYOsqJ5d6T;xmO zHN4Inm6#RTNYKW_FT99B1>dU`E+0`&94as24TjVSB}DF;Hup326;6vY`*>4e?I&dC z_VKR3-&ifFFlQg*2G`N_NBg+Vg!Zv6@Z-~eRqS!?dWg^i6U=uKW4Ou?Ca^$^6lPgn z#Kl9*7O{a(80sLg-NdJK{u!mhY}MO+zCGX#v3trY#|;RB!^a?pFvkBr9^!Mp3VgwD H3}5~af5S!X diff --git a/bin/de/hottis/MeasurementCollector/DataObjectQueue.class b/bin/de/hottis/MeasurementCollector/DataObjectQueue.class deleted file mode 100644 index 8fd22a8d0fa12241f7e6a72a049c365204d85d33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmb7B!AiqG5PjRGjfvH2@dvzV4~?L=hJr*qMMWyTZ<4`oO|!7s^}l)&Joo{AlsE~Z z;zea)-n`+>?!4L8x91lCXBheD2uuo!mfBiXM^_|kXJ}28O>|jOZncRnq?I?>ipi}b zM?O4(@k&0*$XQiJxvp|&47WtdXPT<&fr?fy(2rH6>`b70bi5Go5?xS;E`kAi=nD*4 zP1kOnk-3vuNdlu(=dxT#qZHopWcH!B~>aV$M1HoW1w&?BCw|%2;YVNRKm zq?t-YhR0pYjB6+tXkW!p|FCN(5|(R@CM|*Tq$3vsO;N{9M9j1q8@D1-XwxjmJrj|r zI?~0%F()-FB zMm(3_hNTkR$f;TJ3hc&S4SNI{9~V6px#uJarFLq}3Gs^ibv%y<1rv^)3W8wj^VH?N z*cn5D3gSh9-DgbOBV)#x;~JS9+?Al&DbI4*Z-XYsnMp*Pq%T35@l;tt00Dq|Pr-=F6t3RA}@VgkVo`&c|H zTimAN)}Y)Co0$t;$BxNb54c&fKgQ%*eldfYVU9Xk&+r^$nu#GpIIhE12_*$VTwsko zqBU-2n7J{_p0eV3LPD5?qk*hnR5kg2uxID>RoCv%$-63W32$q7OQ5=7CcmrW9fcre%`hk46$r0#gKilQ zADgV(_hlA-@JL_GL2nz8u0PcA5v~eojNBl-sP=G9hU^m^pW+%blP{q&MIM(m*SwK) zL43}(wp3b%oifOp<^HFkBpoL$F?}h^^($Uwg<=j?g;E$E#ZrzN~PK&luKSHuUp=?FQxOn z``{yv4?Ky#gR~qPaa%4zZOF&LZ#y0G%4lNk2l!uxa@5ENhy__9pC2{y@lhk6 z9yRjeQ6pOg$1>_wV*|fyxSF9}faBBQ>e_p#5C4Kqb1=f~bCm3yLrXX?hwbvK^^UR; z=J!^51hvcg%vGY6*6L8t&t^0b*+#T;*YK@kCw6f~`wE>U>u@Xw5v^gQK+6O91?BII5w$f+~GW=#DG2K&^89(gON@bge`eErg{SrL?ev z_FCz?jR6WPe>!bbIpv;$N)|^b1$#$;Ki8|Um#6ko zvY)B7mzVCsHXNYFVa~d72uJworA{BtbF|UVhJ1+Dj<1(l ztS(yqmV1KwA>73G#5Be9?7A z%k*wl`Enei)V7)tI5%h3Om|+OBRR1t5M8v2GL8;(>(CGr=*gNj`J_?Zk@kkMQ;`CR ztW_{7n}%(w?_e|PmQ6?CZuX22TM@Q!F@pZ1_FmOnHfR2?vAKs( zyQWohH1r9~oe|q~l6kbvfpP&yE}9AY`|Z)TL{yE?96SfINo z9oMWGDjb15z0&_ZUVocyd!Ip;GPNBeb@;{7Cg!YdoUWIl` zM<>p8V*-;JQUrDA@|e1gDcoi)IMQ8`6?0G8uX3ytGM#)pv8imOb-ahWET@W9DoI=5 zde*W_X`^lw$}+7s&00ylr+3p?PbH(_eG;L3rYi=8dDo`S!-iQYN;`%Rn7~#M&yK`# z4Zr;WL2hSXNPY7UfQ(6vL+i*H&`*c43W}wUKt?-cgmSOh4AK zf>oZ9wr!ElR2YaKSjJ1Qk7J{3TQ5{Ql86{`0%ONr9B(|&Qyjf`s#smsu+C0AEP(KF z0l`!chN>wnWxt)zyGG$z&Zq~&K$ErSYIw1vg0M|1otGRK74xScN`bDtSz!KhBN_nUe4DgNE;esyanQhXD?`F4nPsR26?g zM-i%)9j|2i{g98$OOMr(z{RRRKSu(9#TZPEwLzk4qQMKJvh&m z?kjPphhG|Ej(Zy%bB;4;@ye)W3B|KeKN*`o3ORO(j@@^`g~kqF*koa^yu6Uhj; zy7LzIwiD9_m{HsN_-G#=H?a`GFT5v}Jn?9N vSFJ462`5fIp2H@D6i+D*A|3}mKT2P5;Ojfo57;ot#yC}7iXv#hXJPMOZbny; diff --git a/bin/de/hottis/MeasurementCollector/MBusParser.class b/bin/de/hottis/MeasurementCollector/MBusParser.class deleted file mode 100644 index da0d0b867611e6e3b11654c3990a5c6adf252d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5627 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 W5oTD5YRhsi*EIS#k7jDb{Qm(La6;h# diff --git a/bin/de/hottis/MeasurementCollector/MeasurementCollector.class b/bin/de/hottis/MeasurementCollector/MeasurementCollector.class deleted file mode 100644 index f18ab02acfde894233ee690a938af45a59ca2eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2430 zcmbVNZBrXn6n-uwY)BVqL#e!oh0HtO>zl~$u8_}u==$# zj$iy-|AsmPR%iSH{wT-i?gj%Gn;DatyL<0>d(LytJ^SZhzx@GV2HzTJ6PPZk^p4~E zmY2>e>D63SRkojTDiu}q9k=PBfr!BQU3nnW6=|2#D}`Mu3v{opt*ov;UCQPbmlyJj z0*PEhY29}%yF4e*m2qs(m$ttlD>W5Er@&yfN$9CP*V*#~Ix0@NtXzT7oa2_$a!(d_ zR9YX>pMK8lrgMP`oyX>j70b5#y8`Xw$qj)>#wn>d&Ld&qg233TT;!!K8OcO1E)r*1 z`D>2jhrVe#o@@!A69Sh^#BolbCuiAexmGPG_n|CQl%~Te%F2dxExoTFcFYHO<7mf_ zi2-yGv%h08@!ProQ5$j)sY=Txj`1h|re9MMUwl?nd%ndo7`P(P+bGgMk{GTE3^(hD z5!TN2N&PvziE#th1unme)PT?=CWyDmR0|&4SIMeCvKjg?kmaPa_Fl~oRT(CQITQ1EkEvIPN}#`Pd`2_55ySh;o)=@= zD%V`8YcrxvR7tbEVB(%8Fj`WDTG_yTfmEy3*!Ky(sH_9!#*x92ZmkbBDpjk%WyV4sHqxnVID&;3=bM`-SYIS|izzaB7!($Vh!6nq!QipkB;&Xj4 z?5eWm`N};mlPYNsAs%*V23sbc;!F18v1TX}xHaAi%R*jx9*0k8K`1d4$WtTX2J!5p z8!dR!xC+u!i#BH@c`xFTULNaZ$AqQRi3ayLhOam&PU|0sV%ti$%t6%KWRP$!vq{*l zG;iKg0%r9@=MZ%(5>7T6=U8-Kca6Z!R(59#$q`pA9Cr%uN-O&Y%Z%DxIz^s9x|R89 z_UIzM9t@2oOAq~lW!wHoV4Fn}P=Y!3ntIccgBV=2J_f6Gs?4Ytk8*n4tn*$1oK;@dhr_@d)1| zl#J@wVxI3EJo)iw^d-h#;#wPiM{4tkRZS(tA*K?sL(CjvR?F|c#0OfQ*-RZ_F+X{T zkM!{;_2WFvR+jb2YW-wwGj-z#4`(9-kwbi{m(M2k`h`}Kb){mUq-LW7(L-$OrL4uf zfw+;`GC$uy4;j3G1pg!4PoNLexP&{TYk}lsF^F~MyTy!)%y)+w+thr9D|n7Ee2=U6 z0oU+?(^r#vH_ROsRJlvwJ8C=RW*Q26*e6?AtiXlGifv&QK5FFaIinunYt~lKvo6** Fe*-LWnz;Y~ diff --git a/bin/de/hottis/MeasurementCollector/MeasurementCollectorException.class b/bin/de/hottis/MeasurementCollector/MeasurementCollectorException.class deleted file mode 100644 index 7293159324a7ae82114e58c748626cce54308a27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmbtRJx{|h5PeS51VW)eVFxBCh%9WWx>O(`1(sIb-PB5q5*s-V@VA(d82ADFD8yNy zwi4Y~?(V&NzAt}%y?+3>!a)d+VK5hQp{0;wt2|yL7=nRR(heE=r|D8KwnnNvSz#uH(a(HVisWp{;E(iNL}+2NgEj(& zZYq_yZ>pIv6Q^R>Pj$x2DL2yLU(&aQtQm&sf3`^&T2-C97JnvYXlJ~sssG_haydLh zG}evD#Eo=Ao~*m&;yRbEJdQ#A=qEs)$|E2f61pYU@nQe`;tdLcyM`~JykcZwkRXK$S diff --git a/bin/de/hottis/MeasurementCollector/TriggerTimer.class b/bin/de/hottis/MeasurementCollector/TriggerTimer.class deleted file mode 100644 index ed194f60bef5dd7cccdf8be5093efc07ff91c444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmb7B%TB^T6g{_83Z;O6;%nuON3+vjnRc4;71wn zv`u7(F6MFWoO62b>DTwiCxCMtSuhCwxp0@EQZjaLg%>B0ScyOlLf;oN6-Mqjl8c3i z#&RVh3nroU;5~V6qNMMp#jzJZ5-KX=c~f5yPDUGCZ*p5rza$i|WFXZw;jHs7Wp_d_ z2jN`UD4^oNfpH3wTL66zxvh`VGpHmuFvgYU$<-J$r0@PFo|YjD0PI5_3xbO%yG;^75LW?3_Tg&48B_^ z@m^*$WNh$h_uhE*Ur~KdId$G^sj>uuIO@D*M$^KdsR&nIGYRk%7Y>=q8c6 diff --git a/bin/de/hottis/MeasurementCollector/ADataObject.class b/bin/de/hottis/measurementCollector/ADataObject.class similarity index 93% rename from bin/de/hottis/MeasurementCollector/ADataObject.class rename to bin/de/hottis/measurementCollector/ADataObject.class index 2ca7cd452a2df707715714eb6a1e9d1dd922b40a..6f5998454960772c18c965ad670e1ea244d0f34d 100644 GIT binary patch delta 23 fcmey#_mgje6l3n>dM5deRxV78xtr^mez5=mXc7o3 delta 23 fcmey#_mgje6r=CtdM5deRxV78zMJcrez5=mWl{(0 diff --git a/bin/de/hottis/MeasurementCollector/ADataParser.class b/bin/de/hottis/measurementCollector/ADataParser.class similarity index 77% rename from bin/de/hottis/MeasurementCollector/ADataParser.class rename to bin/de/hottis/measurementCollector/ADataParser.class index 2b080410392b20eba5abeba9b4d8e79d974f020c..65414224e09ebfcceda99b1e5660da5abbe97e8c 100644 GIT binary patch delta 27 jcmdnTwvTOs6l3m2>3l}U+{xXHw;6LMN=r^|VA=-&f656< delta 27 jcmdnTwvTOs6r=A(>3l{;-^tyKw;6pWN=r^|VA=-&dWs0^ diff --git a/bin/de/hottis/measurementCollector/AMessageParser.class b/bin/de/hottis/measurementCollector/AMessageParser.class new file mode 100644 index 0000000000000000000000000000000000000000..2c5ef961256957a7af792af6609145d222b5dbfa GIT binary patch literal 2286 zcmb_eT~ixX7=BJZSV*>|4FOw<2vlnlK2{5U22rG~Ruf7aj9RajT`xpE#*5~XlpJf`EahTbC_q-qHInQ~YH~jU_?|%ST!WRY-0`pC2 zZF@>Nfz^?A(DP+Sx@yg9w`D_lzO`DFL14G!hV2K^H;@vzv}1o`TW#BIS@*Vf7$z{# z_F66J3rtr$zh&87yRj`Tz34EC@1-595{8ro(#q>P4S`(cs8CJ$jMUDrd$K153Y9*< zs*mpLNTv+coR(`VLKmq2$F${sajUm%Wk<&=uW*xrhUb3iv;@W?)IH_2tqtGnN?$oL z&=Jdy>!=lhTH)z~ot@MV#K9Shb%F2x@2cmdKx0U)c}DIdz~%mZ`xaJ_C>DZHSBiX_8t8lFQ(MC69`!SuHmExc-3Pkt3B!-R@5yZ zkh#6vkX_|?ZeUaMP7JbhfH91@8?TqMcnf6%Z}T#aDjaxCEaM$E zm@9Y5-^o+PDm3t}K&cOt$7GwuD%K3VFL0wzQYt0vhmZRcCvGvsj) zcR2kz(LkJvDQ{-+AwDv2mo53M{ttWqV^lcensTehNiuqdqKkD+)4GX!*bp$b?O;7* zghG25k=)UjN*Ko`N_fo_quulb=K6N?vB@T|a;nZb8-q%&DZBAi)$YckGUTpo^b|F> z5T8#u9m(lW{c&fx$*=O$J*>MlQ}cR$L*8+;VnoN#!6*TY^Z63}rKl8c;AMWXXb4G!mIjdsEe$V;0&SC!bkq>7 zB<&*WBv?fsOJFtxILj{`B{Ymg2xA~zxDsv|m0)LwTk=;N3-s!fS$ylnbm=iBe?FBw zaV$A~m~7z{;yBtrBI?z!+)pu4i?jQ;(@WYe8HS$!5e2ljMOp&r_Ok#!yp2AIfGfH0VDP&Jt3KPR8!GkOI+=QDwa{{qtzPRjrQ literal 0 HcmV?d00001 diff --git a/bin/de/hottis/measurementCollector/DatabaseEngine.class b/bin/de/hottis/measurementCollector/DatabaseEngine.class new file mode 100644 index 0000000000000000000000000000000000000000..b8e2962f3f6105bd45b3929507089d8ce14e8cd1 GIT binary patch literal 3894 zcmbtXYj+dZ72Q{oJwhG=2n+_NATVHC7z+pm8oMOMHbKM&gB7QyY3WEB%VXpjWi-Me zeI#k~Y|}!Y2`x<@Y3n{iX=59guC9LTTKy&c0sYjKRl4t;ku4iHN>@L4=FZi<=j?ON zzWZGN{ojB33xK0o)DRLlm^V|Cj^|nB)U;`oE3P?h+Frj?ESfpbaZ>|^XJn1CIcOIw z+td&d*f?ceHBv>xE~GM(u4&{oGzuK3VSj8 z$4I}EXY~^TZNqC2wtFREV+do9j#jh@GzVA}a|2p+j>WJK?Hcye-iPsK*su-eT1N*u z$;E={U347JClt4Kbk=3vI`EL_(6L^Q4(fOa8{{aZVjM=fo8ri$?-9utU`47Y4@ z?!RO%ErIsw*p3|n8-}P3=PJ`#)6MuNJU-;)jN+K#TJk%XjChk)nIYGs*vcZ3!CO~a zyH=`N+~Ar#sbz0;vf|~P8CxLS(K!~yS%H1kxr8&3$Ok%>FqM!cf^BBL2}3xiVOU_- zht*%@<-DX(#Ih%x7-PSn<08&*V#=}XC^7=us<^9Ota3tvih{&_KVB!!$v76j}|CO6ox=cH5gy|6TxpjsGN?x0+lzjl|l>?nAAWOs_6~BXz8$Ijv8&p zvnI$-X3rv{VoPAl8m0w$>#6J-M}5hJ28Rq>J|ar?qIj0XT^U2h7t9!J?2+vCbZkS5 zhO714SFlx?j-i6*q^K~SLvrHsq&IB%2#^M zo|T#xb}P1q7fG>%pOqWShFGOR2&eobzClWO*nR3`x2BX@p7 z$93Fb3OvWRPLZRCu8xmuC-5yD-&O}rMiIq#skf^_oixfk(K*w)YUZm%ZNgi)so`yE zVm)&CEnLU<@dE)ZFBL`h{+22r%Sny$nqd^J=cSnSX!xN(vX0f7&K<>%nA265C!C6% zPuPxW+1XqR!Gg>V|6u%K@ zUphkx%TAChru%?W79FP~;r&kP(0hz~jat{#jaNcvMrBFL@b4*B)gWp_k$$Ev-jyha z8vY=#dAaUOh*$~BGpGAy0}2~?9`UYvZKEdTRJZ0DR7+Ml9~*TlZq7Vy$#b{4iq2QL zZV3dtsSRQNH6V%>XngW^$4hevF?MKna5ZNCR&RE1{vKE3&0NDCuEy-(>P?AJZ#GK4 z8@RR=4|AQr<73##*>~tK%=eLGeAfbYC+}kK9FoZcbLdKT&7nIPp2H#eIFd}hkFI!Z z9!Kxu(K$SRhr7Z!#pfR41n&)v3gI@|Z=t+xr>`B1s1=7f>gS4t?+F7Ki$_5s7aeBWi9`&CT*wpgx~k#M2?% z;r5N#MVOZYz&n{*aHffnHgbLo+W57X&wc1dy8^q_cNKtb9qz!VLKaD{6l z^jcI27-x!Qy4sWXV2{U33vlO9roZw%RK}AFm|4e<$2W!lG5N|oo?mwQkjnfa^5-!2 zGuyHnzQgvw;ck4X8i{y`E+r>!&*GL0<{n-ckH55luSnzbcsc(1Jia=Qud5Je(Zm41 zIg5zQ`H`FV|LLLW! z<6Vs4JzP*}Osaa`4$^oA8T^s77qoL6?_-XbZZOr)V4fq%oxO;L+fI``_y8^91MJjr X>pl^MGzfM#4R`*fO0&SVA>92B->?>) literal 0 HcmV?d00001 diff --git a/bin/de/hottis/MeasurementCollector/ElectricEnergyDataObject.class b/bin/de/hottis/measurementCollector/ElectricEnergyDataObject.class similarity index 85% rename from bin/de/hottis/MeasurementCollector/ElectricEnergyDataObject.class rename to bin/de/hottis/measurementCollector/ElectricEnergyDataObject.class index 0d046440d992ba2c13c1b408cf4b506c8d13a8b4..c1ef5627de72b5f912d54c079c75e7d729ac365f 100644 GIT binary patch delta 27 gcmbQoHIHk86l3m0X&c7ejS+rKAg0dd%S_%(0Car_GXMYp delta 27 gcmbQoHIHk86r=A%X&Xl0jS+rKAg0dd%S_%(0B-#U(*OVf diff --git a/bin/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.class b/bin/de/hottis/measurementCollector/FinderOnePhasePowerMeter.class similarity index 73% rename from bin/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.class rename to bin/de/hottis/measurementCollector/FinderOnePhasePowerMeter.class index 3d761d56d37468282ec08dd573cc85b7aab8d59a..3da231176feab1a9cc6630878c7c90f884e16d0e 100644 GIT binary patch delta 59 zcmX@ZbB1Sv6l3m0X&c7e$*&nDCl;1~csi4X7;k_@q8W2HyEENq1aj0_=75EiHa}xY GV*~(V`V?LO delta 59 zcmX@ZbB1Sv6r=A%X&Xl0$*&nDCl;1~csi4X7;k_@q8WWRyEENq1aj0_=75EiHa}xY GV*~(58WVm1 diff --git a/bin/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.class b/bin/de/hottis/measurementCollector/FinderThreePhasePowerMeter.class similarity index 73% rename from bin/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.class rename to bin/de/hottis/measurementCollector/FinderThreePhasePowerMeter.class index a2ec1906057ec146838edda5eceb0e6707d62664..517990cb6030a5058c362b0b7b3a957487c40548 100644 GIT binary patch delta 59 zcmcc2bD3v?6l3m0X*i!34&^>x4u$%&;UFcF!_Qj9mi9Hq&kOqLMg$=)oYn=6?1F~Yg6 MjJcaHvdm)y07oerx&QzG delta 79 zcmaFQ^PXpd6r=Cti!34&^>x4u$%&;UFcF!_Qj9mi9Hq&kOqLMg$=)oYn=6?1F~Yg6 MjJ}&Mvdm)y03*p6+5i9m diff --git a/bin/de/hottis/MeasurementCollector/ITriggerable.class b/bin/de/hottis/measurementCollector/ITriggerable.class similarity index 60% rename from bin/de/hottis/MeasurementCollector/ITriggerable.class rename to bin/de/hottis/measurementCollector/ITriggerable.class index dd0298d4ca5460653a86c790760fb4095059cadc..6f6cfa8f746d4558d63fd9fcad1dc1752088b41b 100644 GIT binary patch delta 11 ScmZ3$xPWnj6l3m0=~e(0Py>tr delta 11 ScmZ3$xPWnj6r=A%=~e&~&;x7$ diff --git a/bin/de/hottis/measurementCollector/JmsTopic$Mode.class b/bin/de/hottis/measurementCollector/JmsTopic$Mode.class new file mode 100644 index 0000000000000000000000000000000000000000..aa9c13ab3330ffea303bd954baa3d7352d2d6998 GIT binary patch literal 1249 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 Ee^SO~Pyhe` literal 0 HcmV?d00001 diff --git a/bin/de/hottis/measurementCollector/MBusParser.class b/bin/de/hottis/measurementCollector/MBusParser.class new file mode 100644 index 0000000000000000000000000000000000000000..47c40440693b491bf6e60ecaad3fe854ac7b7bc2 GIT binary patch literal 5832 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 Irb^WR58Qo-0ssI2 literal 0 HcmV?d00001 diff --git a/bin/de/hottis/measurementCollector/MeasurementCollector.class b/bin/de/hottis/measurementCollector/MeasurementCollector.class new file mode 100644 index 0000000000000000000000000000000000000000..2d1310dab3be6ce1fb6a9e0890918566ad11f795 GIT binary patch literal 2526 zcmbVO3s)OO7`+354e3(aP>_dMuvH!bqJ>&5h)n}jYL<7Y5wvcSAuJ}lVRu7||H^t! zu=X5(fIrIPon0b`vC+agyF2qe=6?5kOn(34*WUol;ztcF0y71fJaBy9@{(m~dR14J zrR}GkQc320$4wdyHZ?>9t{s}kX0l}3#pGJ#h{LUbP}_F zU@`E!nYYLdIf#@^%O;Mo-G9=rD2Xk-$jgdvF%25t7wA4u(qED&ZVL=GO8zi&=lZ1n z3O>Y`hEai=Zz44ybQ}}JW!d|VK+jksSQ;h;ZUjiGzEw)DGx?I|NH2y224hI#V+|jX z)^oJ!lIeLm?qG(s$7}`bjAIs5we&MxmsCU1Tnu+{Ps1mK(ojLir}&JtsQgRMsk(WY z@>ssoEDMY`LLVMvIms2fQuRYs9+SYFj(L2}&`U%m(068hNppNBiZ2*F8)M%pR$Wu& zW>}fXf?_$PxDM4a;}~uwpTO5^O$Mc`}etiQmN1Or_J2d&!2Cm zm{M5`@7cKpg?1~LOUstJSNa>x>1j3F$m9w;*$pP6WI`gUu`t4Gs+B(iTF{3!v~#5e zt0>pJyZGITD0FmEa+Rx5zSW=h3%Y(r&rkep!8?2^Q_!F<*a26(z|M@4d@E_=?Y zn{)&wdZ>VRF+{}P_n>fXiF(|)LCZY3;vU)!%&RVsU7jlF+(}zSxWQw zS1y<4315@5HL_XuY?eBMH&B@l#g()%j{jWjxix?zkR$plpgWSHRXs9LS*SMi PDPO8iu1Y%~p z1J=&?0KP$ArsH=uAcC~1O(r?}pa1s#*Zu3|AAbUv!M=f*!0oEC_Pj8(1FNoN(DYSZ zxna(8990QD-zuJ5F3C`qWuWqI&32W6xWL7I`Lnbf>DH{Z@;)^Lde=AC*0&xnuN3mD zi^aS^s&FE-75cVY%L?@5JU0lX8c)cft+(>5SaKFpRf&Cw}>uyva0*$3JZ5ew8hFM@hLttFiR-s3YfT! z&zT$D2`ccKenl+?>|`bD0_pS6w;b7?wc<9KVM~;5GRT^k#}^FUAu55PBjq!a=~4n; zGJ4L)u3c;TQWt1MtEj5Z@}h~abOJl8s@$v@SP~d((g(SGl#-tp~;YroeQ&wmkM2=`;8o3c9h20(Xz1K2z81|Ff7bX`5>%)}vw3 z<70rprrN}HdW$8ofo+ZJfxzNh;wnDbXsV{lYD61Y(|_NX*wL^$qv1&45ohqUaCtSn=`ujNjqmFzG?cn7J93vR=I%HPWd!=nixF2#hx^d zH`&8>rj8q9zMbHrcG`NaWEbc%xfRXcvaPr1wO1~rX+6XO=8EeoKUx8b>5c0)#wa&) z2j6}%451TUq>PA4kmkDPa|aSI(L+uzsWG1VWBiW3-!SkiA7glj|5_DP7>aH{iaYyA z$>OQGofC(+dRC=7QZZWsco*+cup8HKorXvF94BWq^8JF(ao#+9ih0R}N#Z~y=R literal 0 HcmV?d00001 diff --git a/bin/de/hottis/MeasurementCollector/MqttReceiver$Callback.class b/bin/de/hottis/measurementCollector/MqttReceiver$Callback.class similarity index 80% rename from bin/de/hottis/MeasurementCollector/MqttReceiver$Callback.class rename to bin/de/hottis/measurementCollector/MqttReceiver$Callback.class index cfca45eb50ee5edaecb885c9d1e5b87ca1dfdaa9..39e91f504ac4c176bca9402e6bdbfde9f910a593 100644 GIT binary patch delta 78 zcmew+_)Tzv6l3n>i%cRD^{b(b{i+bgWPc{U$?S}AFnQ6*{fyaADSjqxxS~eJ+|3u6 GRM`M0>=}9h delta 78 zcmew+_)Tzv6r=Cti%cRD^{b(b{i+bgWPc{U$?S}AFnQ6*{fyaADSjqxxS~cz-^~}9 GRM`Lp%ov&g diff --git a/bin/de/hottis/MeasurementCollector/MqttReceiver.class b/bin/de/hottis/measurementCollector/MqttReceiver.class similarity index 85% rename from bin/de/hottis/MeasurementCollector/MqttReceiver.class rename to bin/de/hottis/measurementCollector/MqttReceiver.class index 0924a6b1071aef9c65aabb9164670ba41bc84c4e..09ad6f342825ab474b78c90d952dd7fed3851ca5 100644 GIT binary patch delta 151 zcmaE_{9bv26l3n>Ko;T28+dp(TEAz6^76R_Ci^i-BjhG`F`Y!>l`t#8dHkDqGAl8` rxqOrVvgSj0n;Y0}vp^;Cxz*t;{>eMJm%@1hlbd*;uGqYR$DS1c8#yjA delta 129 zcmaE_{9bv2)Z|7sk;xl)csE+VX9TnJxdkTsF-gP3CwDQOgtJSSm7r|?%{!Tun4lcK p$$we%LF~;9Y`0m!g8AI)P?~@8PVS{pw!q{j9D0>a6H<%4xjS8~m&s!LvT;V!H(oI6{}o7cOVYZmAcMl1EK zq*29E-p*H^Cx`_J9@iBCA4X5(?U$Lt6G r)4(Jo5Vm}wK;SFtBSZk&lwDrGCG)5PGfFEVN z(>9SEx|qkgbI$3#r(fS6p8zg!Y{MY*=fYb?Ng`t}6n>m45sFnZh=M@Ol1O=DB^L{! z#xfMjhDB&S_)or8!o}@bSGsHYA&|0O{kCLO5CO4l&8qsYmTCsA545DH7<%)vXt>3T3-)@ zTQ^m@s$dWMHrkuhT%X&;fo|6>k|Q|xQL1KQD0PI5_3xbN%yGg)nf&VrhMtUX2H$Oz zcrP;=GB)^hdT+e?uc$s}oI3BdOj&}(%rYG8aIKxQ(Lj?C>oQkjw-(&O^O8@}Z@m{( b-?2;h^>i|QmHld&pVnxX+>da`$iUGL_4Sfk literal 0 HcmV?d00001 diff --git a/bin/measurementCollector.props b/bin/measurementCollector.props index c798c52..5feeb1b 100644 --- a/bin/measurementCollector.props +++ b/bin/measurementCollector.props @@ -3,11 +3,15 @@ mqtt.broker = tcp://eupenstrasse20.dynamic.hottis.de:2883 mqtt.username = tron mqtt.password = geheim123 -mbus.dataparser.1 = light,Light,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.2 = computer,Computer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.3 = laundry,Laundry,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.4 = dryer,Dryer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.5 = dishwasher,Dishwasher,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.6 = freezer,Freezer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.7 = electricity,Total,de.hottis.MeasurementCollector.FinderThreePhasePowerMeter -mbus.dataparser.8 = thermom.,null,de.hottis.MeasurementCollector.HottisFourChannelThermometer +mbus.dataparser.1 = light,Light,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.2 = computer,Computer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.3 = laundry,Laundry,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.4 = dryer,Dryer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.5 = dishwasher,Dishwasher,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.6 = freezer,Freezer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.7 = electricity,Total,de.hottis.measurementCollector.FinderThreePhasePowerMeter +mbus.dataparser.8 = thermom.,null,de.hottis.measurementCollector.HottisFourChannelThermometer + +jms.broker = tcp://localhost:61616 +jms.clientid = mcol +jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/bin/measurementDataEngine.props b/bin/measurementDataEngine.props new file mode 100644 index 0000000..29772d4 --- /dev/null +++ b/bin/measurementDataEngine.props @@ -0,0 +1,5 @@ +db.period = 3600 + +jms.broker = tcp://localhost:61616 +jms.clientid = mdb +jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/src/de/hottis/MeasurementCollector/AJmsQueue.java b/src/de/hottis/MeasurementCollector/AJmsQueue.java deleted file mode 100644 index 7ed3cac..0000000 --- a/src/de/hottis/MeasurementCollector/AJmsQueue.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.hottis.MeasurementCollector; - -import javax.jms.Connection; -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.Session; - -import org.apache.activemq.ActiveMQConnectionFactory; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public abstract class AJmsQueue { - final protected Logger logger = LogManager.getRootLogger(); - - protected Connection connection; - protected Session session; - protected Destination destination; - - public AJmsQueue() { - - } - - - public void init() throws MeasurementCollectorException { - try { - ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); - logger.debug("connectionFactory: " + connectionFactory); - connection = connectionFactory.createConnection(); - connection.start(); - logger.debug("connection: " + connection); - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - logger.debug("session: " + session); - destination = session.createQueue("TEST.FOO"); - logger.debug("destination: " + destination); - } catch (JMSException e) { - logger.error("JMSException in AJmsQueue.init", e); - throw new MeasurementCollectorException("JMSException in AJmsQueue.init", e); - } - } - - -} diff --git a/src/de/hottis/MeasurementCollector/DataObjectQueue.java b/src/de/hottis/MeasurementCollector/DataObjectQueue.java deleted file mode 100644 index 2d61e8e..0000000 --- a/src/de/hottis/MeasurementCollector/DataObjectQueue.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.hottis.MeasurementCollector; - -import java.util.List; -import java.util.concurrent.ConcurrentLinkedQueue; - -@SuppressWarnings("serial") -public class DataObjectQueue extends ConcurrentLinkedQueue> { - public DataObjectQueue() { - super(); - } -} diff --git a/src/de/hottis/MeasurementCollector/DatabaseEngine.java b/src/de/hottis/MeasurementCollector/DatabaseEngine.java deleted file mode 100644 index de1c630..0000000 --- a/src/de/hottis/MeasurementCollector/DatabaseEngine.java +++ /dev/null @@ -1,81 +0,0 @@ -package de.hottis.MeasurementCollector; - -import java.util.List; -import java.util.Properties; -import java.util.Timer; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DatabaseEngine extends Thread implements ITriggerable { - final protected Logger logger = LogManager.getRootLogger(); - - private Properties config; - private DataObjectQueue queue; - private boolean stop; - private boolean triggerFlag; - private Timer timer; - - public DatabaseEngine(Properties config, DataObjectQueue queue) { - super("MeasurementCollector.DatabaseEngine"); - this.config = config; - this.queue = queue; - this.stop = false; - this.triggerFlag = false; - } - - public void requestShutdown() { - logger.info("Shutdown of database engine requested"); - this.stop = true; - try { - this.join(); - logger.info("Database engine is down"); - } catch (InterruptedException e) { - logger.error("Waiting for shutdown of database engine interrupted"); - } - } - - public synchronized void trigger() { - logger.debug("DatabaseEngine triggered"); - triggerFlag = true; - notify(); - } - - public void init() { - timer = new Timer("DatabaseEngineTrigger"); - timer.schedule(new TriggerTimer(this), 0, 60 * 1000); - } - - @Override - public synchronized void run() { - while (! stop) { - logger.debug("DatabaseEngine is about to wait"); - while (! triggerFlag) { - try { - wait(); - } catch (InterruptedException e) { - } - } - triggerFlag = false; - logger.debug("DatabaseEngine has received trigger"); - - try { - while (true) { - List adol = queue.peek(); - if (adol == null) { - break; - } - - for (ADataObject ado : adol) { - logger.debug(ado); - } - - queue.remove(adol); - } - } catch (Exception e) { - logger.error("Exception in outer database engine loop", e); - } - } - logger.info("Database engine is terminating"); - } -} diff --git a/src/de/hottis/MeasurementCollector/JmsQueueProducer.java b/src/de/hottis/MeasurementCollector/JmsQueueProducer.java deleted file mode 100644 index a8834e9..0000000 --- a/src/de/hottis/MeasurementCollector/JmsQueueProducer.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.hottis.MeasurementCollector; - -import java.io.Serializable; - -import javax.jms.DeliveryMode; -import javax.jms.JMSException; -import javax.jms.MessageProducer; -import javax.jms.ObjectMessage; - -public class JmsQueueProducer extends AJmsQueue { - private MessageProducer producer; - - public JmsQueueProducer() { - super(); - } - - public void init() throws MeasurementCollectorException { - super.init(); - - try { - producer = session.createProducer(destination); - producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); - logger.debug("producer: " + producer); - } catch (JMSException e) { - logger.error("JMSException in AJmsQueue.init", e); - throw new MeasurementCollectorException("JMSException in JmsQueueProducer.init", e); - } - } - - public void enqueue(T item) throws MeasurementCollectorException { - try { - ObjectMessage message = session.createObjectMessage(); - message.setObject(item); - producer.send(message); - logger.debug("message enqueued"); - } catch (JMSException e) { - logger.error("JMSException in JmsQueueProducer.enqueue", e); - logger.error("Calling init"); - init(); - throw new MeasurementCollectorException("JMSException in JmsQueueProducer.enqueue", e); - } - } - -} diff --git a/src/de/hottis/MeasurementCollector/ADataObject.java b/src/de/hottis/measurementCollector/ADataObject.java similarity index 96% rename from src/de/hottis/MeasurementCollector/ADataObject.java rename to src/de/hottis/measurementCollector/ADataObject.java index cf36368..2feb296 100644 --- a/src/de/hottis/MeasurementCollector/ADataObject.java +++ b/src/de/hottis/measurementCollector/ADataObject.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.io.Serializable; import java.time.LocalDateTime; diff --git a/src/de/hottis/MeasurementCollector/ADataParser.java b/src/de/hottis/measurementCollector/ADataParser.java similarity index 92% rename from src/de/hottis/MeasurementCollector/ADataParser.java rename to src/de/hottis/measurementCollector/ADataParser.java index e69995e..bac90d2 100644 --- a/src/de/hottis/MeasurementCollector/ADataParser.java +++ b/src/de/hottis/measurementCollector/ADataParser.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.List; diff --git a/src/de/hottis/MeasurementCollector/AMessageParser.java b/src/de/hottis/measurementCollector/AMessageParser.java similarity index 65% rename from src/de/hottis/MeasurementCollector/AMessageParser.java rename to src/de/hottis/measurementCollector/AMessageParser.java index cb62567..ce2ec9b 100644 --- a/src/de/hottis/MeasurementCollector/AMessageParser.java +++ b/src/de/hottis/measurementCollector/AMessageParser.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.List; @@ -11,18 +11,16 @@ public abstract class AMessageParser { final protected Logger logger = LogManager.getRootLogger(); private String topic; - //private DataObjectQueue queue; - private JmsQueueProducer jmsQueue = new JmsQueueProducer(); + private MyQueue queue; protected Properties config; - public AMessageParser(String topic, Properties config, DataObjectQueue queue) { + public AMessageParser(String topic, Properties config, MyQueue queue) { this.topic = topic; this.config = config; - //this.queue = queue; + this.queue = queue; } public void init() throws MeasurementCollectorException { - jmsQueue.init(); } @@ -32,12 +30,9 @@ public abstract class AMessageParser { public void enqueue(List itemList) throws MeasurementCollectorException { for (ADataObject ado : itemList) { - jmsQueue.enqueue(ado); + queue.enqueue(ado); logger.debug("message enqueued"); } - - //queue.add(itemList); - //logger.debug("Queue size: " + queue.size()); } abstract public void execute(LocalDateTime timestamp, String msgPayload); diff --git a/src/de/hottis/measurementCollector/DatabaseEngine.java b/src/de/hottis/measurementCollector/DatabaseEngine.java new file mode 100644 index 0000000..e4a05ee --- /dev/null +++ b/src/de/hottis/measurementCollector/DatabaseEngine.java @@ -0,0 +1,122 @@ +package de.hottis.measurementCollector; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Properties; +import java.util.Timer; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DatabaseEngine extends Thread implements ITriggerable { + static final String DATABASE_ENGINE_PERIOD_PROP = "db.period"; + static final String DATABASE_URL_PROP = "db.url"; + + final protected Logger logger = LogManager.getRootLogger(); + + private Properties config; + private MyQueue queue; + private boolean stop; + private boolean triggerFlag; + private Timer timer; + private int period; + private String dbUrl; + + public DatabaseEngine(Properties config, MyQueue queue) { + super("MeasurementCollector.DatabaseEngine"); + this.config = config; + this.queue = queue; + this.stop = false; + this.triggerFlag = false; + this.period = Integer.parseInt(this.config.getProperty(DATABASE_ENGINE_PERIOD_PROP)); + this.dbUrl = this.config.getProperty(DATABASE_URL_PROP); + } + + public void requestShutdown() { + logger.info("Shutdown of database engine requested"); + this.stop = true; + try { + this.join(); + logger.info("Database engine is down"); + } catch (InterruptedException e) { + logger.error("Waiting for shutdown of database engine interrupted"); + } + } + + public synchronized void trigger() { + logger.debug("DatabaseEngine triggered"); + triggerFlag = true; + notify(); + } + + public void init() throws MeasurementCollectorException { + timer = new Timer("DatabaseEngineTrigger"); + timer.schedule(new TriggerTimer(this), 0, period * 1000); + } + + private String createStatementFromDataObject(ADataObject ado) { + return ""; + } + + @Override + public synchronized void run() { + while (! stop) { + logger.debug("DatabaseEngine is about to wait for (regularly) " + period + "s"); + while (! triggerFlag) { + try { + wait(); + } catch (InterruptedException e) { + } + } + triggerFlag = false; + logger.debug("DatabaseEngine has received trigger"); + + Connection dbCon = null; + try { + int itemCnt = 0; + + while (true) { + PreparedStatement pstmt = null; + try { + ADataObject ado = queue.dequeue(); + if (ado == null) { + logger.warn("DatabaseEngine found no data"); + break; + } + String stmtTxt = createStatementFromDataObject(ado); + pstmt = dbCon.prepareStatement(stmtTxt); + for (Object o : ado.getValues().values()) { + + } + itemCnt++; + logger.info("DatabaseEngine received (" + itemCnt + ") " + ado); + } catch (SQLException e) { + logger.error("SQLException in inner database engine loop", e); + } finally { + if (pstmt != null) { + try { + pstmt.close(); + pstmt = null; + } catch (SQLException e) { + logger.warn("SQLException when closing statement, nothing will be done"); + } + } + } + } + } catch (Exception e) { + logger.error("Exception in outer database engine loop", e); + } finally { + if (dbCon ! null) { + try { + dbCon.close(); + dbCon = null; + } catch (SQLException e) { + logger.warn("SQLException when closing connection, nothing will be done"); + } + } + } + } + logger.info("Database engine is terminating"); + } +} diff --git a/src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java b/src/de/hottis/measurementCollector/ElectricEnergyDataObject.java similarity index 94% rename from src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java rename to src/de/hottis/measurementCollector/ElectricEnergyDataObject.java index 93aeb77..cc0439e 100644 --- a/src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java +++ b/src/de/hottis/measurementCollector/ElectricEnergyDataObject.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java b/src/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java similarity index 93% rename from src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java rename to src/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java index a2be8c6..4aa5182 100644 --- a/src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java +++ b/src/de/hottis/measurementCollector/FinderOnePhasePowerMeter.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java b/src/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java similarity index 93% rename from src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java rename to src/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java index 4970271..7614ae9 100644 --- a/src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java +++ b/src/de/hottis/measurementCollector/FinderThreePhasePowerMeter.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java b/src/de/hottis/measurementCollector/HottisFourChannelThermometer.java similarity index 94% rename from src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java rename to src/de/hottis/measurementCollector/HottisFourChannelThermometer.java index 6c33253..82527a5 100644 --- a/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java +++ b/src/de/hottis/measurementCollector/HottisFourChannelThermometer.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/src/de/hottis/MeasurementCollector/ITriggerable.java b/src/de/hottis/measurementCollector/ITriggerable.java similarity index 59% rename from src/de/hottis/MeasurementCollector/ITriggerable.java rename to src/de/hottis/measurementCollector/ITriggerable.java index dcca883..c1e2cef 100644 --- a/src/de/hottis/MeasurementCollector/ITriggerable.java +++ b/src/de/hottis/measurementCollector/ITriggerable.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; public interface ITriggerable { public void trigger(); diff --git a/src/de/hottis/measurementCollector/JmsTopic.java b/src/de/hottis/measurementCollector/JmsTopic.java new file mode 100644 index 0000000..9abcfc1 --- /dev/null +++ b/src/de/hottis/measurementCollector/JmsTopic.java @@ -0,0 +1,124 @@ +package de.hottis.measurementCollector; + +import java.io.Serializable; +import java.util.Properties; + +import javax.jms.Connection; +import javax.jms.DeliveryMode; +import javax.jms.JMSException; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.ObjectMessage; +import javax.jms.Session; +import javax.jms.Topic; + +import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class JmsTopic implements MyQueue { + static final String JMS_PARSED_DATA_TOPIC = "jms.parseddata.topic"; + static final String JMS_CLIENTID_PROP = "jms.clientid"; + static final String JMS_BROKER ="jms.broker"; + + static enum Mode { CONSUMER, PRODUCER, CONSUMER_PRODUCER }; + + final protected Logger logger = LogManager.getRootLogger(); + + private String clientId; + private Properties config; + private Connection connection; + private Session session; + private Topic topic; + private MessageProducer producer; + private MessageConsumer consumer; + private String topicTxt; + private String broker; + private Mode mode; + + public JmsTopic(Properties config, Mode mode) { + this.config = config; + clientId = this.config.getProperty(JMS_CLIENTID_PROP); + topicTxt = this.config.getProperty(JMS_PARSED_DATA_TOPIC); + broker = this.config.getProperty(JMS_BROKER); + this.mode = mode; + } + + + public void init() throws MeasurementCollectorException { + try { + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(broker); + connectionFactory.setTrustAllPackages(true); + logger.debug("connectionFactory: " + connectionFactory); + connection = connectionFactory.createConnection(); + connection.setClientID(clientId); + connection.start(); + logger.debug("connection: " + connection); + session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + logger.debug("session: " + session); + topic = session.createTopic(topicTxt); + logger.debug("topic: " + topic); + + if ((mode == Mode.PRODUCER) || (mode == Mode.CONSUMER_PRODUCER)) { + producer = session.createProducer(topic); + producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + logger.debug("producer: " + producer); + } else { + producer = null; + } + + if ((mode == Mode.CONSUMER) || (mode == Mode.CONSUMER_PRODUCER)) { + consumer = session.createDurableSubscriber(topic, "DatabaseEngine"); + logger.debug("consumer: " + consumer); + } else { + consumer = null; + } + + } catch (JMSException e) { + logger.error("JMSException in AJmsQueue.init", e); + throw new MeasurementCollectorException("JMSException in AJmsTopic.init", e); + } + } + + public T dequeue() throws MeasurementCollectorException { + if (consumer == null) { + throw new MeasurementCollectorException("This is no consumer"); + } + try { + ObjectMessage message = (ObjectMessage) consumer.receiveNoWait(); + T item; + if (message != null) { + @SuppressWarnings("unchecked") + T t = (T) message.getObject(); + item = t; + logger.debug("message dequeued"); + } else { + item = null; + } + return item; + } catch (JMSException e) { + logger.error("JMSException in JmsTopic.dequeue", e); + logger.error("Calling init"); + init(); + throw new MeasurementCollectorException("JMSException in JmsTopic.dequeue", e); + } + } + + public void enqueue(T item) throws MeasurementCollectorException { + if (producer == null) { + throw new MeasurementCollectorException("This is no producer"); + } + try { + ObjectMessage message = session.createObjectMessage(); + message.setObject(item); + producer.send(message); + logger.debug("message enqueued"); + } catch (JMSException e) { + logger.error("JMSException in JmsTopic.enqueue", e); + logger.error("Calling init"); + init(); + throw new MeasurementCollectorException("JMSException in JmsTopic.enqueue", e); + } + } + +} diff --git a/src/de/hottis/MeasurementCollector/MBusParser.java b/src/de/hottis/measurementCollector/MBusParser.java similarity index 96% rename from src/de/hottis/MeasurementCollector/MBusParser.java rename to src/de/hottis/measurementCollector/MBusParser.java index 2e78cd4..ef5f009 100644 --- a/src/de/hottis/MeasurementCollector/MBusParser.java +++ b/src/de/hottis/measurementCollector/MBusParser.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.lang.reflect.Constructor; import java.time.LocalDateTime; @@ -24,7 +24,7 @@ public class MBusParser extends AMessageParser { private HashMap dataParsers; - public MBusParser(Properties config, DataObjectQueue queue) { + public MBusParser(Properties config, MyQueue queue) { super(TOPIC, config, queue); JsonParserFactory jsonParserFactory = JsonParserFactory.getInstance(); jsonParser = jsonParserFactory.newJsonParser(); diff --git a/src/de/hottis/MeasurementCollector/MeasurementCollector.java b/src/de/hottis/measurementCollector/MeasurementCollector.java similarity index 75% rename from src/de/hottis/MeasurementCollector/MeasurementCollector.java rename to src/de/hottis/measurementCollector/MeasurementCollector.java index e9de2d5..36b405a 100644 --- a/src/de/hottis/MeasurementCollector/MeasurementCollector.java +++ b/src/de/hottis/measurementCollector/MeasurementCollector.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.util.Properties; @@ -22,19 +22,14 @@ public class MeasurementCollector { mqttReceiver.connect(); logger.debug("MqttReceiver started"); - DataObjectQueue queue = new DataObjectQueue(); - logger.debug("Queue instantiated"); + JmsTopic queue = new JmsTopic(config, JmsTopic.Mode.PRODUCER); + queue.init(); MBusParser mbusParser = new MBusParser(config, queue); mbusParser.init(); mbusParser.registerConfiguredDataParsers(); mqttReceiver.registerParser(mbusParser); logger.debug("MBusParser started"); - - DatabaseEngine databaseEngine = new DatabaseEngine(config, queue); - databaseEngine.init(); - databaseEngine.start(); - logger.debug("DatabaseEngine started"); } } diff --git a/src/de/hottis/MeasurementCollector/MeasurementCollectorException.java b/src/de/hottis/measurementCollector/MeasurementCollectorException.java similarity index 63% rename from src/de/hottis/MeasurementCollector/MeasurementCollectorException.java rename to src/de/hottis/measurementCollector/MeasurementCollectorException.java index 758e889..a0db89c 100644 --- a/src/de/hottis/MeasurementCollector/MeasurementCollectorException.java +++ b/src/de/hottis/measurementCollector/MeasurementCollectorException.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; @SuppressWarnings("serial") public class MeasurementCollectorException extends Exception { @@ -6,4 +6,8 @@ public class MeasurementCollectorException extends Exception { super(msg, cause); } + public MeasurementCollectorException(String msg) { + super(msg); + } + } diff --git a/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java b/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java new file mode 100644 index 0000000..9797dd9 --- /dev/null +++ b/src/de/hottis/measurementCollector/MeasurementDatabaseEngine.java @@ -0,0 +1,30 @@ +package de.hottis.measurementCollector; + +import java.util.Properties; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + +public class MeasurementDatabaseEngine { + static final String PROPS_FILENAME = "measurementDataEngine.props"; + static final Logger logger = LogManager.getRootLogger(); + + + public static void main(String[] args) throws Exception { + logger.info("MeasurementDatabaseEngine starting"); + + final Properties config = new Properties(); + config.load(MeasurementDatabaseEngine.class.getClassLoader().getResourceAsStream(PROPS_FILENAME)); + logger.debug("Configuration loaded"); + + JmsTopic queue = new JmsTopic(config, JmsTopic.Mode.CONSUMER); + queue.init(); + + DatabaseEngine databaseEngine = new DatabaseEngine(config, queue); + databaseEngine.init(); + databaseEngine.start(); + logger.debug("DatabaseEngine started"); + } + +} diff --git a/src/de/hottis/MeasurementCollector/MqttReceiver.java b/src/de/hottis/measurementCollector/MqttReceiver.java similarity index 98% rename from src/de/hottis/MeasurementCollector/MqttReceiver.java rename to src/de/hottis/measurementCollector/MqttReceiver.java index 1bc09f4..426c952 100644 --- a/src/de/hottis/MeasurementCollector/MqttReceiver.java +++ b/src/de/hottis/measurementCollector/MqttReceiver.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/src/de/hottis/measurementCollector/MyQueue.java b/src/de/hottis/measurementCollector/MyQueue.java new file mode 100644 index 0000000..d73dfab --- /dev/null +++ b/src/de/hottis/measurementCollector/MyQueue.java @@ -0,0 +1,8 @@ +package de.hottis.measurementCollector; + +import java.io.Serializable; + +public interface MyQueue { + public T dequeue() throws MeasurementCollectorException; + public void enqueue(T item) throws MeasurementCollectorException; +} diff --git a/src/de/hottis/MeasurementCollector/TemperatureDataObject.java b/src/de/hottis/measurementCollector/TemperatureDataObject.java similarity index 93% rename from src/de/hottis/MeasurementCollector/TemperatureDataObject.java rename to src/de/hottis/measurementCollector/TemperatureDataObject.java index ba92bbe..90794a0 100644 --- a/src/de/hottis/MeasurementCollector/TemperatureDataObject.java +++ b/src/de/hottis/measurementCollector/TemperatureDataObject.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.time.LocalDateTime; import java.util.HashMap; diff --git a/src/de/hottis/MeasurementCollector/TriggerTimer.java b/src/de/hottis/measurementCollector/TriggerTimer.java similarity index 86% rename from src/de/hottis/MeasurementCollector/TriggerTimer.java rename to src/de/hottis/measurementCollector/TriggerTimer.java index 926b6e1..71aa361 100644 --- a/src/de/hottis/MeasurementCollector/TriggerTimer.java +++ b/src/de/hottis/measurementCollector/TriggerTimer.java @@ -1,4 +1,4 @@ -package de.hottis.MeasurementCollector; +package de.hottis.measurementCollector; import java.util.TimerTask; diff --git a/src/measurementCollector.props b/src/measurementCollector.props index c798c52..5feeb1b 100644 --- a/src/measurementCollector.props +++ b/src/measurementCollector.props @@ -3,11 +3,15 @@ mqtt.broker = tcp://eupenstrasse20.dynamic.hottis.de:2883 mqtt.username = tron mqtt.password = geheim123 -mbus.dataparser.1 = light,Light,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.2 = computer,Computer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.3 = laundry,Laundry,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.4 = dryer,Dryer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.5 = dishwasher,Dishwasher,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.6 = freezer,Freezer,de.hottis.MeasurementCollector.FinderOnePhasePowerMeter -mbus.dataparser.7 = electricity,Total,de.hottis.MeasurementCollector.FinderThreePhasePowerMeter -mbus.dataparser.8 = thermom.,null,de.hottis.MeasurementCollector.HottisFourChannelThermometer +mbus.dataparser.1 = light,Light,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.2 = computer,Computer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.3 = laundry,Laundry,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.4 = dryer,Dryer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.5 = dishwasher,Dishwasher,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.6 = freezer,Freezer,de.hottis.measurementCollector.FinderOnePhasePowerMeter +mbus.dataparser.7 = electricity,Total,de.hottis.measurementCollector.FinderThreePhasePowerMeter +mbus.dataparser.8 = thermom.,null,de.hottis.measurementCollector.HottisFourChannelThermometer + +jms.broker = tcp://localhost:61616 +jms.clientid = mcol +jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/src/measurementDataEngine.props b/src/measurementDataEngine.props new file mode 100644 index 0000000..29772d4 --- /dev/null +++ b/src/measurementDataEngine.props @@ -0,0 +1,5 @@ +db.period = 3600 + +jms.broker = tcp://localhost:61616 +jms.clientid = mdb +jms.parseddata.topic = IoT/Measurement \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..118d4e0 --- /dev/null +++ b/start.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +PWD=`pwd` +CLASSPATH=$CLASSPATH:$PWD/bin +for I in `find libraries -type f`; do + CLASSPATH=$CLASSPATH:$PWD/$I; +done +export CLASSPATH +export JAVA_HOME=/opt/jdk1.8.0_131 + +$JAVA_HOME/bin/java de.hottis.measurementCollector.MeasurementCollector + diff --git a/startDatabaseEngine.sh b/startDatabaseEngine.sh new file mode 100755 index 0000000..c38da59 --- /dev/null +++ b/startDatabaseEngine.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +PWD=`pwd` +CLASSPATH=$CLASSPATH:$PWD/bin +for I in `find libraries -type f`; do + CLASSPATH=$CLASSPATH:$PWD/$I; +done +export CLASSPATH +export JAVA_HOME=/opt/jdk1.8.0_131 + +$JAVA_HOME/bin/java de.hottis.measurementCollector.MeasurementDatabaseEngine +