public void run() { registerDriver(); dbConnection = establishConnection(); // #1 security EU. Plz no stealerino. String apiKey = "26ef2b98aa2077410020408feb29cde8"; owmap = new OpenWeatherMap(apiKey); System.out.println("created OpenWeatherMap instance"); while (true) { if (client != null) { client.requestAllData(); try { client.requestWindSpeed(); } catch (Exception e1) { System.out.println("Failed to request wind speed."); e1.printStackTrace(); } } // Not sure if needed // else { // System.out.println("SensorClient unreachable."); // if (!reconnectorRunning) { // SCReconnector reconnector = new SCReconnector(); // reconnector.start(); // } // } System.out.println("---------------------------------------"); Date date = new Date(); System.out.println(date.toString()); CurrentWeather currentWeather = null; try { weathermapAccessible = true; currentWeather = getCurrentWeatherWithTimeout(currentWeather); System.out.println("Received current Weather from OpenWeatherMap."); } catch (ExecutionException e) { System.out.println("OpenWeatherMap appears to be inaccessible."); weathermapAccessible = false; // e.printStackTrace(); } catch (InterruptedException e) { weathermapAccessible = false; System.out.println("Request interrupted while waiting for response."); // e.printStackTrace(); } catch (TimeoutException e) { weathermapAccessible = false; System.out.println( "Did not receive response from openweathermap within " + WEATHER_REQUEST_TIMEOUT + " seconds."); // e.printStackTrace(); } sensorServerAvailable = true; System.out.println("Creating WeatherData object..."); WeatherData data = initializeWeatherDataObject( currentWeather, sensorServerAvailable, weathermapAccessible); System.out.println("Created WeatherData object"); String query = "INSERT INTO weatherdatalog (temperature, pressure, humidity, owmtemperature, owmpressure, owmhumidity, sensorwindspeed, owmwindspeed, owmwinddegree, light, owmweathername, owmweatherdesc)" + " VALUES (" + data.getTemp() + ", " + data.getPressure() + ", " + data.getHumidity() + ", " + data.getOwmTemp() + ", " + data.getOwmPressure() + ", " + data.getOwmHumidity() + ", " + data.getSensorWindSpeed() + ", " + data.getOwmWindSpeed() + ", " + data.getOwmWindDegree() + ", " + data.getLight() + ", '" + data.getOwmName() + "', '" + data.getOwmDesc() + "');"; try { Statement statement = dbConnection.createStatement(); System.out.println("Executing query..."); statement.executeUpdate(query); System.out.println("Inserted data"); } catch (SQLException e) { e.printStackTrace(); } try { Thread.sleep(ACQUIREDATAINTERVAL); } catch (InterruptedException e) { System.out.println("Sleep was interrupted"); e.printStackTrace(); } } }
/** * Constructor * * @param cli SensorClient instance which the collector shall use to acquire data. * @param sensorServerAvailable If true, data is collected from given SensorClient (where * possible). Otherwise, all data is taken from openweathermap.org. */ public DataCollector(SensorClientMkII cli, boolean sensorServerAvailable) { this.client = cli; this.sensorServerAvailable = sensorServerAvailable; if (cli == null) { sensorServerAddress = "deffi.thecuslink.com"; } else { sensorServerAddress = cli.getSensorServerAddress(); } receiver = new Receiver() { @Override public void receivedTemperature(double temperature) { curSensTemp = temperature; } @Override public void receivedPressure(double pressure) { curSensPres = pressure; } @Override public void receivedAltitude(double altitude) {} @Override public void receivedSealevelPressure(double sealevelpressure) {} @Override public void receivedHumidity(double humidity) { curSensHumi = humidity; } @Override public void receivedLight(double light) { curSensLumi = light; } @Override public void receivedWindSpeed(double windspeed) { curSensWind = windspeed; } @Override public void receivedAllData(JSONObject json) { curSensData = json; } @Override public void receivedpong() {} @Override public void connectionReset() { System.out.println("SensorClient unreachable."); if (!reconnectorRunning) { SCReconnector reconnector = new SCReconnector(this); reconnector.start(); } } }; if (client == null) { System.out.println("SensorClient unreachable."); if (!reconnectorRunning) { SCReconnector reconnector = new SCReconnector(receiver); reconnector.start(); } } else { client.init(receiver); } }