@Override public void changeState(final String[] sensorsIds, final SensorState newState, final String newSubstate) { updateMulti(Arrays.asList(sensorsIds), Arrays.asList("state", "substate"), Arrays.asList(newState.name(), newSubstate)); notifyStatesChange(sensorsIds, newState); }
public Long registerSensorIfNeedBe(final String providerId, final String sensorId, final SensorState state, final boolean update) { Long sid = jedisSequenceUtils.getSid(providerId, sensorId); // Sensor must be registered into Redis if its sid doesn't exist or if update is true if (sid == null || update) { if (sid == null) { final Long pid = jedisSequenceUtils.getPid(providerId); sid = jedisSequenceUtils.setSid(providerId, sensorId); // To quickly get the sensors list from a provider, a reverse lookup key is defined jedisTemplate.sAdd(keysBuilder.getProviderSensorsKey(pid), sid.toString()); // And finally, a new reverse lookup key is defined to quickly get the internal sid of a // sensor from the pair <providerId,sensorId>, so that sensor's data could be stored jedisTemplate.set(keysBuilder.getReverseSensorKey(providerId, sensorId), sid.toString()); } // Store a hash with key sid:{sid} and fields provider, sensor and state final Map<String, String> fields = new HashMap<String, String>(); fields.put(PROVIDER, providerId); fields.put(SENSOR, sensorId); fields.put(STATE, state.name()); jedisTemplate.hmSet(keysBuilder.getSensorKey(sid), fields); LOGGER.debug("Saved in Redis sensor [{}] with sid [{}] and state [{}], belonging to provider [{}]", sensorId, sid, state.name(), providerId); } return sid; }
public ObservationDTO(final Sensor sensor, final Observation observation) { this(observation); if (sensor != null) { this.sensor = sensor.getSensorId(); sensorType = sensor.getType(); sensorState = sensor.getState().name(); sensorSubState = sensor.getSubstate(); sensorSubstateDesc = sensor.getSubstateDesc(); unit = sensor.getUnit(); dataType = sensor.getDataType().toString(); } }