/**
     * 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);
      }
    }