float Photoresistor::read(Photoresistor::Unit unit) { switch (unit) { case Photoresistor::VOLT: return getVoltage(); break; case Photoresistor::LUX: return getLightLevel(); break; } }
void meegoals::start(){ Unsigned data(((ALSSensorChannelInterface*)m_sensorInterface)->lux()); m_reading.setLightLevel(getLightLevel(data.x())); m_reading.setTimestamp(data.UnsignedData().timestamp_); newReadingAvailable(); meegosensorbase::start(); }
void meegoals::slotDataAvailable(const Unsigned& data) { QAmbientLightReading::LightLevel level = getLightLevel(data.x()); if (level != m_reading.lightLevel()) { m_reading.setLightLevel(level); m_reading.setTimestamp(data.UnsignedData().timestamp_); newReadingAvailable(); } }
void DimmableLight::handleDimming(QString actionName, void *serviceToken, const QHash<QString, QString> &arguments) { if (actionName == "SetLoadLevelTarget") { QString raw = QString(); if (arguments.contains("newLoadlevelTarget")) raw = arguments.value("newLoadlevelTarget"); if (raw.isEmpty() == false) { bool parseResult; int parsed = raw.toInt(&parseResult); if (parseResult) { if(parseResult < 0 || parseResult > 100){ _outArgs["__errorCode"] = QString::number(601); _outArgs["__errorMessage"] = "Argument Value Out of range"; }else{ _dimming->setDimmingLevel(parsed); lightLoadLevelChanged(getLightLoadLevel()); lightLevelChanged(getLightLevel()); QString serviceId(DIMMING_SERV_ID); if (_udaStack != NULL) _udaStack->sendEvent(serviceId, serviceToken, "LoadLevelStatus", raw); if (_ucaStack != NULL) _ucaStack->sendEvent(serviceId, NULL, "LoadLevelStatus", raw); } } else { _outArgs["__errorCode"] = QString::number(402); _outArgs["__errorMessage"] = "Wrong value, expected number."; } }else{ _outArgs["__errorCode"] = QString::number(402); _outArgs["__errorMessage"] = "Missing argument newLoadlevelTarget"; } } else if (actionName == "GetLoadLevelTarget") { _outArgs["retLoadlevelTarget"] = QString::number(getLightLoadLevel()); } else if (actionName == "GetLoadLevelStatus") { _outArgs["retLoadlevelStatus"] = QString::number(getLightLoadLevel()); } else{ _outArgs["__errorCode"] = QString::number(401); _outArgs["__errorMessage"] = "Invalid action"; } }
void DimmableLight::handleSwitchPower(QString actionName, void *serviceToken, const QHash<QString, QString> &arguments) { if (actionName == "SetTarget") { QString raw = QString(); if (arguments.contains("NewTargetValue")) raw = arguments.value("NewTargetValue"); if (raw.isEmpty() == false) { bool parseResult; int parsed = raw.toInt(&parseResult); if (parseResult) { _switch->setEnabled(parsed); lightEnabledChanged(_switch->getEnabled() > 0); lightLevelChanged(getLightLevel()); QString serviceId(SWITCHPOWER_SERV_ID); if (_udaStack != NULL) _udaStack->sendEvent(serviceId, serviceToken, "Status", raw); if (_ucaStack != NULL) _ucaStack->sendEvent(serviceId, NULL, "Status", raw); } else { _outArgs["__errorCode"] = QString::number(402); _outArgs["__errorMessage"] = "Wrong value, expected boolean."; } }else{ _outArgs["__errorCode"] = QString::number(402); _outArgs["__errorMessage"] = "Missing argument NewTargetValue"; } } else if (actionName == "GetTarget") { _outArgs["RetTargetValue"] = QString::number(getLightEnabled()); } else if (actionName == "GetStatus") { _outArgs["ResultStatus"] = QString::number(getLightEnabled()); } else{ _outArgs["__errorCode"] = QString::number(401); _outArgs["__errorMessage"] = "Invalid action"; } }
// Update function to be called from main loop() method void PetduinoSerial::update() { // Update Petduino Petduino::update(); // Process incoming serial data, and perform callbacks cmdMessenger.feedinSerialData(); // Check for btn1 state change bool btn1StateChanged = Petduino::debounce(BTN1, serialBtn1State, serialBtn1LastState, serialBtn1DebounceTimestamp); if(btn1StateChanged) { cmdMessenger.sendCmd(BTN1_EVENT, serialBtn1State == LOW); } // Check for btn2 state change bool btn2StateChanged = Petduino::debounce(BTN2, serialBtn2State, serialBtn2LastState, serialBtn2DebounceTimestamp); if(btn2StateChanged) { cmdMessenger.sendCmd(BTN2_EVENT, serialBtn2State == LOW); } // Check for temperature state changed if(tempBroadcastThreshold > 0){ float reading = getTemperature(); int readingInt = (int)floor(reading + 0.5); int readingDir = (lastTempReading - reading)/abs(lastTempReading - reading); if(abs(lastTempReading - reading) >= tempBroadcastThreshold) { if(tempReadingDir == 0 || tempReadingDir == readingDir) { if(tempReadingCount >= tempConsecutiveReadings){ tempReadingCount = 0; tempReadingDir = 0; lastTempReading = reading; cmdMessenger.sendCmd(TEMPERATURE_EVENT, reading); } else { tempReadingCount++; tempReadingDir = readingDir; } } else { tempReadingCount = 0; tempReadingDir = readingDir; } } else { tempReadingCount = 0; tempReadingDir = 0; } } // Check for light level state changes if(ldrBroadcastThreshold > 0) { int reading = getLightLevel(); int readingDir = (lastLdrReading - reading)/abs(lastLdrReading - reading); if(abs(lastLdrReading - reading) >= ldrBroadcastThreshold) { if(ldrReadingDir == 0 || ldrReadingDir == readingDir) { if(ldrReadingCount >= ldrConsecutiveReadings) { ldrReadingCount = 0; ldrReadingDir = 0; lastLdrReading = reading; cmdMessenger.sendCmd(LIGHT_LEVEL_EVENT, reading); } else { ldrReadingCount++; ldrReadingDir = readingDir; } } else { ldrReadingCount = 0; ldrReadingDir = readingDir; } } else { ldrReadingCount = 0; ldrReadingDir = 0; } } }
// Get temperature command handler void PetduinoSerial::onGetLightLevel() { // Send status that describes the led state manually cmdMessenger.sendCmd(LIGHT_LEVEL_EVENT, getLightLevel()); }