Weerstation.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909
  1. import java.util.ArrayList;
  2. import java.util.Calendar;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.Timer;
  7. import java.util.TimerTask;
  8. /**
  9. * De main klasse die het hele programma aanstuurt
  10. *
  11. * @author Projectgroep B5
  12. */
  13. public class Weerstation{
  14. WeerstationConnector weerstation1;
  15. Calendar now, calPeriod;
  16. Measurement meting1;
  17. ArrayList<Measurement> meting2;
  18. ArrayList<Periode> periods;
  19. ArrayList<Grootheid> day, week, month, month3, month6, year, year2;
  20. ArrayList<ArrayList<Grootheid>> periodsScreens;
  21. Timer starter;
  22. Timer animator;
  23. int currentScreen;
  24. int periodeNr;
  25. boolean startup, startupState, load;
  26. boolean button1, button2, button3, graphIsDisplayed;
  27. boolean console;
  28. /**
  29. * Constructor voor weerstation
  30. */
  31. public Weerstation(){
  32. GUIboard.init();
  33. startupState = true;
  34. starter = new Timer();
  35. startStartupAnimatie();
  36. Timer timer = new Timer();
  37. createPeriods();
  38. backgroundLoader();
  39. currentScreen = 0;
  40. periodeNr = 0;
  41. graphIsDisplayed = false;
  42. console = true;
  43. //De thread die op de achtergrond alles laad
  44. while(periodsScreens.size()<=0)
  45. {
  46. try
  47. {
  48. Thread.sleep(1);
  49. }
  50. catch(InterruptedException e)
  51. {
  52. e.printStackTrace();
  53. }
  54. }
  55. stopStartupAnimatie();
  56. while(startup)
  57. {
  58. try
  59. {
  60. Thread.sleep(1);
  61. }
  62. catch(InterruptedException e)
  63. {
  64. e.printStackTrace();
  65. }
  66. }
  67. GUIboard.clearTop();
  68. GUIboard.clearLeft();
  69. GUIboard.clearRight();
  70. console();
  71. //Screen switcher
  72. timer.scheduleAtFixedRate(new TimerTask()
  73. {
  74. public void run()
  75. {
  76. if(button2)
  77. {
  78. if(!graphIsDisplayed)
  79. {
  80. setScreen(currentScreen + 1);
  81. if(currentScreen == 0 && button1)
  82. {
  83. setPeriod(periodeNr + 1);
  84. }
  85. }
  86. }
  87. else if(button1)
  88. {
  89. if(!graphIsDisplayed)
  90. {
  91. setPeriod(periodeNr + 1);
  92. }
  93. }
  94. if(button3)
  95. {
  96. displayGraph();
  97. }
  98. else
  99. {
  100. displayMain();
  101. }
  102. }
  103. }, 0, 5*1000);
  104. //Update recent measurement every 60 seconds
  105. timer.scheduleAtFixedRate( new TimerTask()
  106. {
  107. public void run()
  108. {
  109. meting1 = weerstation1.getMostRecentMeasurement();
  110. for (ArrayList<Grootheid> l: periodsScreens)
  111. {
  112. for (Grootheid obj : l)
  113. {
  114. obj.updateRecent(meting1);
  115. }
  116. }
  117. }
  118. }, 120*1000, 60*1000);
  119. //Button checker
  120. timer.scheduleAtFixedRate( new TimerTask()
  121. {
  122. boolean oldButton1, oldButton2;
  123. public void run()
  124. {
  125. if(IO.readShort(0x0090) == 1)
  126. { //Blauw 1 aan
  127. button1 = true;
  128. }
  129. else
  130. {
  131. button1 = false;
  132. }
  133. if(IO.readShort(0x00100) == 1)
  134. { //Blauw 2 aan
  135. button2 = true;
  136. }
  137. else
  138. {
  139. button2 = false;
  140. }
  141. if(IO.readShort(0x0080) == 1)
  142. { //Rood aan
  143. button3 = true;
  144. displayGraph();
  145. }
  146. else
  147. {
  148. button3 = false;
  149. if(graphIsDisplayed)
  150. {
  151. displayMain();
  152. }
  153. }
  154. if(button2 == !oldButton2)
  155. { // If the button is changed, the play/pauze icon wil be updated
  156. displayMain();
  157. oldButton2 = button2;
  158. }
  159. if(button1 == !oldButton1)
  160. { // If the button is changed, the play/pauze icon wil be updated
  161. displayMain();
  162. oldButton1 = button1;
  163. }
  164. }
  165. }, 0, 200);
  166. }
  167. public void setScreen(int screen)
  168. { //Set the next screen
  169. if (screen >= periodsScreens.get(periodeNr).size() || screen < 0)
  170. {
  171. currentScreen = 0;
  172. }else{
  173. currentScreen = screen;
  174. }
  175. }
  176. public void setPeriod(int period)
  177. { //Set the period
  178. if(period >= periodsScreens.size() || period < 0)
  179. {
  180. periodeNr = 0;
  181. }else{
  182. periodeNr = period;
  183. }
  184. setScreen(currentScreen);
  185. }
  186. public void displayGraph()
  187. {
  188. if(!graphIsDisplayed)
  189. {
  190. Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
  191. obj.displayGraph();
  192. graphIsDisplayed = true;
  193. }
  194. }
  195. public void displayMain()
  196. {
  197. Grootheid obj = periodsScreens.get(periodeNr).get(currentScreen);
  198. obj.display(periods.get(periodeNr).getName(), button1, button2, meting1.getBattLevel());
  199. graphIsDisplayed = false;
  200. }
  201. public void console(){
  202. new Thread("Console")
  203. {
  204. public void run()
  205. {
  206. Scanner scanner = new Scanner(System.in);
  207. String voorvoegsel = "weerstation ~ $ ";
  208. String input;
  209. System.out.println("Applicatie geladen. Console is klaar voor gebruik.");
  210. while(console)
  211. {
  212. System.out.print(voorvoegsel);
  213. input = scanner.nextLine();
  214. System.out.println(parseCommand(input));
  215. }
  216. }
  217. public String parseCommand(String command){
  218. if(command.startsWith("/")){
  219. command = command.substring(1);
  220. String[] parts = command.split(" ");
  221. int length = parts.length;
  222. if(length==0)
  223. {
  224. return help();
  225. }
  226. else if(length==1)
  227. {
  228. switch (parts[0]){ //A command without parameters
  229. case "help":
  230. case "?":
  231. return help();
  232. case "exit":
  233. case "close":
  234. return exit();
  235. }
  236. }
  237. if(length==2){ //A command with 1 parameter
  238. switch(parts[0]){
  239. case "periode":
  240. case "p":
  241. return periode(parts[1]);
  242. case "scherm":
  243. case "s":
  244. return scherm(parts[1]);
  245. }
  246. }
  247. }
  248. return notFound();
  249. }
  250. //Commands
  251. public String notFound()
  252. {
  253. return notFound(false);
  254. }
  255. public String notFound(boolean param)
  256. {
  257. if(param)
  258. {
  259. return "Dit is geen geldige paramater. Type /help voor alle commando's";
  260. }
  261. else
  262. {
  263. return "Dit is geen geldig commando. Type /help voor alle commando's";
  264. }
  265. }
  266. public String help()
  267. {
  268. String tab = "\n ";
  269. String comS = "\n"; String comE = ":" + tab;
  270. String desc = tab + "> ";
  271. String help = "";
  272. //start
  273. help += "HELP\n------------";
  274. //help
  275. help += comS + "Help" + comE
  276. + "/help" + tab + "/?"
  277. + desc + "Laat dit scherm zien";
  278. //exit
  279. help += comS + "Exit" + comE
  280. + "/exit" + tab + "/close"
  281. + desc + "Sluit de console permanent af";
  282. //periode
  283. help += comS + "Periode" + comE
  284. + "/periode <num|name>" + tab + "/p <num|name>"
  285. + desc + "Zet de huidige periode op getal <num>" + desc + "Zet de huidige periode op naam <name>";
  286. //scherm
  287. help += comS + "Scherm" + comE
  288. + "/scherm <num|name>" + tab + "/s <num|name>"
  289. + desc + "Zet het huidige scherm op getal <num>" + desc + "Zet het huidige scherm op naam <name>";
  290. return help;
  291. }
  292. public String exit()
  293. {
  294. console = false;
  295. return "Console is afgesloten.\nDe console kan alleen herstart worden door de applicatie opnieuw te starten.";
  296. }
  297. public String periode(String param)
  298. {
  299. int param1 = -1;
  300. try
  301. {
  302. param1 = Integer.valueOf(param) - 1;
  303. }
  304. catch(NumberFormatException e)
  305. {
  306. param = param.toLowerCase();
  307. if(param.contains("dag") || param.contains("day"))
  308. {
  309. param1 = 0;
  310. }
  311. else if(param.contains("week"))
  312. {
  313. param1 = 1;
  314. }
  315. else if(param.contains("month") || param.contains("maand"))
  316. {
  317. if(param.contains("6"))
  318. {
  319. param1 = 4;
  320. }
  321. if(param.contains("3"))
  322. {
  323. param1 = 3;
  324. }
  325. else
  326. {
  327. param1 = 2;
  328. }
  329. }
  330. else if(param.contains("year") || param.contains("jaar"))
  331. {
  332. if(param.contains("2"))
  333. {
  334. param1 = 6;
  335. }
  336. else
  337. {
  338. param1 = 5;
  339. }
  340. }
  341. else if(param.contains("next") || param.contains("volgend"))
  342. {
  343. param1 = periodeNr+1;
  344. }
  345. else if(param.contains("prev") || param.contains("vorig"))
  346. {
  347. param1 = periodeNr-1 < 0 ? periodsScreens.size()-1 : periodeNr - 1;
  348. }
  349. if(param1==-1)
  350. {
  351. return notFound(true);
  352. }
  353. }
  354. setPeriod(param1);
  355. displayMain();
  356. return "Periode gezet";
  357. }
  358. public String scherm(String param)
  359. {
  360. int param1 = 0;
  361. try
  362. {
  363. param1 = Integer.valueOf(param) - 1;
  364. }
  365. catch(NumberFormatException e)
  366. {
  367. param = param.toLowerCase();
  368. if(param.contains("period"))
  369. {
  370. if(periodeNr < 4)
  371. {
  372. setPeriod(4);
  373. }
  374. if(param.contains("regen") || param.contains("rain"))
  375. {
  376. if(param.contains("max"))
  377. {
  378. param1=15;
  379. }
  380. else if(param.contains("lang") || param.contains("long"))
  381. {
  382. param1=19;
  383. }
  384. }
  385. else if(param.contains("hitte") || param.contains("golf") || param.contains("heat") || param.contains("wave"))
  386. {
  387. param1=17;
  388. }
  389. else if(param.contains("zomer") || param.contains("summer"))
  390. {
  391. param1=18;
  392. }
  393. else if(param.contains("droog") || param.contains("droge") || param.contains("dry"))
  394. {
  395. param1=20;
  396. }
  397. else
  398. {
  399. param1=15;
  400. }
  401. }
  402. else if(param.contains("graad"))
  403. {
  404. if(periodeNr < 4)
  405. {
  406. setPeriod(4);
  407. }
  408. param1=16;
  409. }
  410. else if(param.contains("temp"))
  411. {
  412. if(param.contains("binnen") || param.contains("inside"))
  413. {
  414. param1=7;
  415. }
  416. else if(param.contains("gevoel"))
  417. {
  418. param1=4;
  419. }
  420. else
  421. {
  422. param1=0;
  423. }
  424. }
  425. else if(param.contains("hum") || param.contains("vocht"))
  426. {
  427. if(param.contains("binnen") || param.contains("inside"))
  428. {
  429. param1=8;
  430. }
  431. else
  432. {
  433. param1=1;
  434. }
  435. }
  436. else if(param.contains("wind"))
  437. {
  438. if(param.contains("direction") || param.contains("richting"))
  439. {
  440. param1=3;
  441. }
  442. else if(param.contains("chill"))
  443. {
  444. param1=4;
  445. }
  446. else
  447. {
  448. param1=2;
  449. }
  450. }
  451. else if(param.contains("rain") || param.contains("regen"))
  452. {
  453. param1=2;
  454. }
  455. else if(param.contains("druk") || param.contains("baro"))
  456. {
  457. param1=6;
  458. }
  459. else if(param.contains("next") || param.contains("volgend"))
  460. {
  461. param1 = currentScreen+1;
  462. }
  463. else if(param.contains("prev") || param.contains("vorig"))
  464. {
  465. param1 = currentScreen-1 < 0 ? periodsScreens.get(periodeNr).size()-1 : currentScreen - 1;
  466. }
  467. if(param1==-1)
  468. {
  469. return notFound(true);
  470. }
  471. }
  472. setScreen(param1);
  473. displayMain();
  474. return "Scherm gezet";
  475. }
  476. }.start();
  477. }
  478. /**
  479. * Start de animatie die speelt tijdens het opstarten en laden van het weerstation
  480. *
  481. * @param starter De timer die de animatie laat lopen
  482. */
  483. public void startStartupAnimatie()
  484. {
  485. starter.scheduleAtFixedRate(new TimerTask()
  486. {
  487. public void run()
  488. {
  489. startup = true;
  490. GUIboard.clearBottom();
  491. GUIboard.clearTop();
  492. GUIboard.clearLeft();
  493. GUIboard.clearRight();
  494. char[] charray;
  495. if(startupState)
  496. {
  497. charray = " Weerstation Breda\n Connecting".toCharArray();
  498. }
  499. else
  500. {
  501. charray = " Weerstation Breda\n Calculating".toCharArray();
  502. }
  503. for(char ch : charray)
  504. {
  505. IO.writeShort(0x40, ch);
  506. }
  507. int p = 1;
  508. for(int i=0; i<256;i++)
  509. {
  510. if(i<128)
  511. {
  512. IO.writeShort(0x42, 1 << 12 | i << 5 | 26);
  513. }
  514. else
  515. {
  516. IO.writeShort(0x42, 0 << 12 | i-128 << 5 | 26);
  517. }
  518. if(i%42==0)
  519. {
  520. p = p << 1;
  521. if(p>32)
  522. {
  523. p=1;
  524. }
  525. for(int q=0x10; q<0x40; q+=0x02)
  526. {
  527. IO.writeShort(q, 0x100 | p);
  528. }
  529. }
  530. IO.delay(4);
  531. }
  532. startup = false;
  533. }
  534. }, 0, (128 + 1)*8);
  535. }
  536. /**
  537. * Stopt de animatie die speelt tijdens het opstarten en laden van het weerstation
  538. */
  539. public void stopStartupAnimatie()
  540. {
  541. starter.cancel();
  542. }
  543. /**
  544. * Start de animatie die speelt tijdens het laden op de achtergrond van het weerstation
  545. */
  546. public void startLoadAnimatie()
  547. {
  548. animator.scheduleAtFixedRate(new TimerTask()
  549. {
  550. public void run()
  551. {
  552. load = true;
  553. for(int i=0; i<128;i++)
  554. {
  555. if(!graphIsDisplayed)
  556. {
  557. IO.writeShort(0x42, 1 << 12 | i << 5 | 31);
  558. }
  559. IO.delay(4);
  560. }
  561. for(int i=0; i<128;i++)
  562. {
  563. if(!graphIsDisplayed)
  564. {
  565. IO.writeShort(0x42, 0 << 12 | i << 5 | 31);
  566. }
  567. IO.delay(4);
  568. }
  569. load = false;
  570. }
  571. }, 0, (128 + 1)*8);
  572. }
  573. /**
  574. * Stopt de animatie die speelt tijdens het laden op de achtergrond van het weerstation
  575. */
  576. public void stopLoadAnimatie()
  577. {
  578. animator.cancel();
  579. }
  580. public void createPeriods()
  581. {
  582. now = Calendar.getInstance();
  583. calPeriod = Calendar.getInstance();
  584. periods = new ArrayList<Periode>();
  585. calPeriod.add(Calendar.DATE, -1);
  586. periods.add(new Periode(now, calPeriod, "Dag"));
  587. calPeriod = Calendar.getInstance();
  588. calPeriod.add(Calendar.DATE, -7);
  589. periods.add(new Periode(now, calPeriod, "Week"));
  590. calPeriod = Calendar.getInstance();
  591. calPeriod.add(Calendar.MONTH, -1);
  592. periods.add(new Periode(now, calPeriod, "Maand"));
  593. calPeriod = Calendar.getInstance();
  594. calPeriod.add(Calendar.MONTH, -3);
  595. periods.add(new Periode(now, calPeriod, "3 Maanden"));
  596. calPeriod = Calendar.getInstance();
  597. calPeriod.add(Calendar.MONTH, -6);
  598. periods.add(new Periode(now, calPeriod, "6 Maanden"));
  599. calPeriod = Calendar.getInstance();
  600. calPeriod.add(Calendar.YEAR, -1);
  601. periods.add(new Periode(now, calPeriod, "Jaar"));
  602. calPeriod = Calendar.getInstance();
  603. calPeriod.add(Calendar.YEAR, -2);
  604. periods.add(new Periode(now, calPeriod, "2 Jaar"));
  605. calPeriod = Calendar.getInstance();
  606. weerstation1 = new WeerstationConnector();
  607. day = new ArrayList<Grootheid>();
  608. week = new ArrayList<Grootheid>();
  609. month = new ArrayList<Grootheid>();
  610. month3 = new ArrayList<Grootheid>();
  611. month6 = new ArrayList<Grootheid>();
  612. year = new ArrayList<Grootheid>();
  613. year2 = new ArrayList<Grootheid>();
  614. periodsScreens = new ArrayList<ArrayList<Grootheid>>();
  615. }
  616. public void backgroundLoader()
  617. {
  618. new Thread("Backgroundloader")
  619. {
  620. public void run()
  621. {
  622. Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
  623. meting1 = weerstation1.getMostRecentMeasurement();
  624. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(0).getBeginPeriode(), periods.get(0).getEindePeriode());
  625. startupState = false;
  626. //Day
  627. day.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  628. day.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  629. day.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  630. day.add(new WindDirection(meting1, meting2)); //Windrichting
  631. day.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  632. day.add(new RainRate(meting1, meting2)); //Regenval
  633. day.add(new Barometer(meting1, meting2)); //Luchtdruk
  634. day.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  635. day.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  636. day.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  637. day.add(new Sun(meting1)); //Sunrise en Sunset
  638. day.add(new UVLevel(meting1, meting2)); //UV Level
  639. day.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  640. day.add(new DewPoint(meting1, meting2)); //Dauwpunt
  641. day.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  642. day.add(new Voorspellingen(meting1)); //Voorspellingen
  643. periodsScreens.add(day);
  644. animator = new Timer();
  645. startLoadAnimatie();
  646. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(1).getBeginPeriode(), periods.get(1).getEindePeriode());
  647. //Week
  648. week.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  649. week.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  650. week.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  651. week.add(new WindDirection(meting1, meting2)); //Windrichting
  652. week.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  653. week.add(new RainRate(meting1, meting2)); //Regenval
  654. week.add(new Barometer(meting1, meting2)); //Luchtdruk
  655. week.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  656. week.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  657. week.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  658. week.add(new Sun(meting1)); //Sunrise en Sunset
  659. week.add(new UVLevel(meting1, meting2)); //UV Level
  660. week.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  661. week.add(new DewPoint(meting1, meting2)); //Dauwpunt
  662. week.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  663. periodsScreens.add(week);
  664. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(2).getBeginPeriode(), periods.get(2).getEindePeriode());
  665. //Month
  666. month.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  667. month.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  668. month.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  669. month.add(new WindDirection(meting1, meting2)); //Windrichting
  670. month.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  671. month.add(new RainRate(meting1, meting2)); //Regenval
  672. month.add(new Barometer(meting1, meting2)); //Luchtdruk
  673. month.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  674. month.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  675. month.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  676. month.add(new Sun(meting1)); //Sunrise en Sunset
  677. month.add(new UVLevel(meting1, meting2)); //UV Level
  678. month.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  679. month.add(new DewPoint(meting1, meting2)); //Dauwpunt
  680. month.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  681. month.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
  682. month.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
  683. periodsScreens.add(month);
  684. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(3).getBeginPeriode(), periods.get(3).getEindePeriode());
  685. //3 Months
  686. month3.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  687. month3.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  688. month3.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  689. month3.add(new WindDirection(meting1, meting2)); //Windrichting
  690. month3.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  691. month3.add(new RainRate(meting1, meting2)); //Regenval
  692. month3.add(new Barometer(meting1, meting2)); //Luchtdruk
  693. month3.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  694. month3.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  695. month3.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  696. month3.add(new Sun(meting1)); //Sunrise en Sunset
  697. month3.add(new UVLevel(meting1, meting2)); //UV Level
  698. month3.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  699. month3.add(new DewPoint(meting1, meting2)); //Dauwpunt
  700. month3.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  701. month3.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
  702. month3.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
  703. periodsScreens.add(month3);
  704. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(4).getBeginPeriode(), periods.get(4).getEindePeriode());
  705. //6 Months
  706. month6.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  707. month6.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  708. month6.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  709. month6.add(new WindDirection(meting1, meting2)); //Windrichting
  710. month6.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  711. month6.add(new RainRate(meting1, meting2)); //Regenval
  712. month6.add(new Barometer(meting1, meting2)); //Luchtdruk
  713. month6.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  714. month6.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  715. month6.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  716. month6.add(new Sun(meting1)); //Sunrise en Sunset
  717. month6.add(new UVLevel(meting1, meting2)); //UV Level
  718. month6.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  719. month6.add(new DewPoint(meting1, meting2)); //Dauwpunt
  720. month6.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  721. month6.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
  722. month6.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
  723. month6.add(new LangsteHittegolfPeriode(meting1, meting2)); //Langste Hittegolf Periode
  724. month6.add(new LangsteZomerPeriode(meting1, meting2)); //Langste Zomerse Periode
  725. month6.add(new LangsteRegenPeriode(meting1, meting2)); //Langste Regen Periode
  726. month6.add(new LangsteDroogstePeriode(meting1, meting2)); //Langste Droogste Periode
  727. //month6.add(new LangsteTempStijgingPeriode(meting1, meting2)); //Langste temperatuurstijging
  728. periodsScreens.add(month6);
  729. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(5).getBeginPeriode(), periods.get(5).getEindePeriode());
  730. //Year
  731. year.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  732. year.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  733. year.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  734. year.add(new WindDirection(meting1, meting2)); //Windrichting
  735. year.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  736. year.add(new RainRate(meting1, meting2)); //Regenval
  737. year.add(new Barometer(meting1, meting2)); //Luchtdruk
  738. year.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  739. year.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  740. year.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  741. year.add(new Sun(meting1)); //Sunrise en Sunset
  742. year.add(new UVLevel(meting1, meting2)); //UV Level
  743. year.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  744. year.add(new DewPoint(meting1, meting2)); //Dauwpunt
  745. year.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  746. year.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
  747. year.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
  748. year.add(new LangsteHittegolfPeriode(meting1, meting2)); //Langste Hittegolf Periode
  749. year.add(new LangsteZomerPeriode(meting1, meting2)); //Langste Zomerse Periode
  750. year.add(new LangsteRegenPeriode(meting1, meting2)); //Langste Regen Periode
  751. year.add(new LangsteDroogstePeriode(meting1, meting2)); //Langste Droogste Periode
  752. //year.add(new LangsteTempStijgingPeriode(meting1, meting2)); //Langste temperatuurstijging
  753. periodsScreens.add(year);
  754. meting2 = weerstation1.getAllMeasurementsBetween(periods.get(6).getBeginPeriode(), periods.get(6).getEindePeriode());
  755. //2 Years
  756. year2.add(new OutsideTemp(meting1, meting2)); //Buitentemperatuur
  757. year2.add(new OutsideHum(meting1, meting2)); //Luchtv. Buiten
  758. year2.add(new AvgWindSpeed(meting1, meting2)); //Gem. Windsnelheid
  759. year2.add(new WindDirection(meting1, meting2)); //Windrichting
  760. year2.add(new WindChill(meting1, meting2)); //Gevoelstemperatuur
  761. year2.add(new RainRate(meting1, meting2)); //Regenval
  762. year2.add(new Barometer(meting1, meting2)); //Luchtdruk
  763. year2.add(new InsideTemp(meting1, meting2)); //Binnentemperatuur
  764. year2.add(new InsideHum(meting1, meting2)); //Luchtv. Binnen
  765. year2.add(new Zonsterkte(meting1, meting2)); //Zonkracht
  766. year2.add(new Sun(meting1)); //Sunrise en Sunset
  767. year2.add(new UVLevel(meting1, meting2)); //UV Level
  768. year2.add(new HeatIndex(meting1, meting2)); //Dauwpunt
  769. year2.add(new DewPoint(meting1, meting2)); //Dauwpunt
  770. year2.add(new CloudHeight(meting1, meting2)); //Wolkhoogte
  771. year2.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode
  772. year2.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode
  773. year2.add(new LangsteHittegolfPeriode(meting1, meting2)); //Langste Hittegolf Periode
  774. year2.add(new LangsteZomerPeriode(meting1, meting2)); //Langste Zomerse Periode
  775. year2.add(new LangsteRegenPeriode(meting1, meting2));
  776. year2.add(new LangsteDroogstePeriode(meting1, meting2)); //Langste Droogste Periode
  777. //Langste Regen Periode
  778. //year2.add(new LangsteTempStijgingPeriode(meting1, meting2)); //Langste temperatuurstijging
  779. periodsScreens.add(year2);
  780. stopLoadAnimatie();
  781. }
  782. }.start();
  783. }
  784. }