コード例 #1
0
    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();
        }
      }
    }
コード例 #2
0
    /**
     * 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);
      }
    }