Weerstation.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package weerstation;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Timer;
  5. import java.util.TimerTask;
  6. import java.util.Calendar;
  7. public class Weerstation {
  8. WeerstationConnector weerstation1;
  9. Periode periodeDag, periodeWeek, periodeMaand, periode3Maanden, periode6Maanden, periodeJaar, periode2Jaar;
  10. Calendar now, calDag, calWeek, calMaand, cal3Maanden, cal6Maanden, calJaar, cal2Jaar;
  11. Measurement meting1;
  12. ArrayList<Measurement> meting2;
  13. Timer starter;
  14. int currentScreen;
  15. boolean wait;
  16. boolean graph;
  17. boolean startup;
  18. public Weerstation(){
  19. now = calDag = calWeek = calMaand = cal3Maanden = cal6Maanden = calJaar = cal2Jaar = Calendar.getInstance();
  20. calDag.add(Calendar.DATE, -1);
  21. calWeek.add(Calendar.DATE, -7);
  22. calMaand.add(Calendar.MONTH, -1);
  23. cal3Maanden.add(Calendar.MONTH, -3);
  24. cal6Maanden.add(Calendar.MONTH, -6);
  25. calJaar.add(Calendar.YEAR, -1);
  26. cal2Jaar.add(Calendar.YEAR, -2);
  27. periodeDag = new Periode(now, calDag);
  28. System.out.println(periodeDag);
  29. periodeWeek = new Periode(now, calWeek);
  30. periodeMaand = new Periode(now, calMaand);
  31. periode3Maanden = new Periode(now, cal3Maanden);
  32. periode6Maanden = new Periode(now, cal6Maanden);
  33. periodeJaar = new Periode(now, calJaar);
  34. periode2Jaar = new Periode(now, cal2Jaar);
  35. GUIboard.init();
  36. starter = new Timer();
  37. startAnimatie();
  38. weerstation1 = new WeerstationConnector();
  39. meting1 = weerstation1.getMostRecentMeasurement();
  40. meting2 = weerstation1.getAllMeasurementsBetween(periodeDag.getBeginPeriode(), periodeDag.getEindePeriode());
  41. stopAnimatie();
  42. while(startup)
  43. {
  44. try
  45. {
  46. Thread.sleep(1);
  47. }
  48. catch(InterruptedException e)
  49. {
  50. e.printStackTrace();
  51. }
  52. }
  53. currentScreen = 0;
  54. wait = true;
  55. graph = false;
  56. Timer timer = new Timer();
  57. //All the different screen classes
  58. final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
  59. lstScreens.add(new LangsteZomerPeriode(meting1, meting2, periodeDag));
  60. lstScreens.add(new MaximaleRegenPeriode(meting1, meting2));
  61. lstScreens.add(new WindDirection(meting1, meting2));
  62. lstScreens.add(new OutsideTemp(meting1, meting2));
  63. lstScreens.add(new WindChill(meting1, meting2));
  64. lstScreens.add(new OutsideHum(meting1, meting2));
  65. lstScreens.add(new Barometer(meting1, meting2));
  66. lstScreens.add(new AvgWindSpeed(meting1, meting2));
  67. lstScreens.add(new RainRate(meting1, meting2));
  68. lstScreens.add(new InsideTemp(meting1, meting2));
  69. lstScreens.add(new InsideHum(meting1, meting2));
  70. lstScreens.add(new CloudHeight(meting1, meting2));
  71. lstScreens.add(new UVLevel(meting1, meting2));
  72. lstScreens.add(new Zonsterkte(meting1, meting2));
  73. lstScreens.add(new DewPoint(meting1, meting2));
  74. lstScreens.add(new Sun(meting1));
  75. //Screen switcher
  76. timer.scheduleAtFixedRate(new TimerTask() {
  77. public void run() {
  78. if(!wait){
  79. currentScreen++;
  80. }
  81. if(currentScreen == lstScreens.size()){
  82. currentScreen = 0;
  83. }
  84. Grootheid obj = lstScreens.get(currentScreen);
  85. if(graph)
  86. {
  87. obj.displayGraph();
  88. }
  89. else
  90. {
  91. obj.display();
  92. }
  93. }
  94. }, 0, 5*1000);
  95. //Update recent measurement every 60 seconds
  96. timer.scheduleAtFixedRate(new TimerTask() {
  97. public void run() {
  98. meting1 = weerstation1.getMostRecentMeasurement();
  99. for(Grootheid obj : lstScreens){
  100. obj.updateRecent(meting1);
  101. }
  102. }
  103. }, 60*1000, 60*1000);
  104. //Update 24hours every 60 seconds
  105. timer.scheduleAtFixedRate(new TimerTask() {
  106. public void run() {
  107. meting2 = weerstation1.getAllMeasurementsLast24h();
  108. for(Grootheid obj : lstScreens){
  109. obj.update24Hour(meting2);
  110. }
  111. }
  112. }, 10*60*1000, 10*60*1000);
  113. //Button checker
  114. timer.scheduleAtFixedRate(new TimerTask() {
  115. public void run() {
  116. if(IO.readShort(0x100) == 1){
  117. if(IO.readShort(0x80) == 1){
  118. wait = true;
  119. if(!graph)
  120. {
  121. Grootheid obj = lstScreens.get(currentScreen);
  122. obj.displayGraph();
  123. }
  124. graph = true;
  125. }else if(IO.readShort(0x80) == 0){
  126. wait = false;
  127. if(graph)
  128. {
  129. Grootheid obj = lstScreens.get(currentScreen);
  130. obj.display();
  131. }
  132. graph = false;
  133. }
  134. }else if(IO.readShort(0x100) == 0){
  135. if(IO.readShort(0x80) == 1){
  136. if(!graph)
  137. {
  138. Grootheid obj = lstScreens.get(currentScreen);
  139. obj.displayGraph();
  140. }
  141. graph = true;
  142. }else if(IO.readShort(0x80) == 0){
  143. if(graph)
  144. {
  145. Grootheid obj = lstScreens.get(currentScreen);
  146. obj.display();
  147. }
  148. graph = false;
  149. }
  150. wait = true;
  151. }
  152. }
  153. }, 0, 100);
  154. }
  155. public void startAnimatie()
  156. {
  157. starter.scheduleAtFixedRate(new TimerTask() {
  158. public void run() {
  159. startup = true;
  160. GUIboard.clearBottom();
  161. for(int i=1; i<128;i+=2)
  162. {
  163. for(int n=0; n<32;n++)
  164. {
  165. IO.writeShort(0x42, 1 << 12 | i-1 << 5 | n);
  166. IO.writeShort(0x42, 1 << 12 | i << 5 | n);
  167. IO.delay(1);
  168. }
  169. }
  170. startup = false;
  171. }
  172. }, 0, 128*32);
  173. }
  174. public void stopAnimatie()
  175. {
  176. starter.cancel();
  177. }
  178. }