Weerstation.java 37 KB

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