//! [4] void TodoEditor::updateDates() { QDateTime startTime = startDateEdit->dateTime(); QDateTime dueDateTime = dueDateEdit->dateTime(); todo.setStartDateTime(startTime); todo.setDueDateTime(dueDateTime); updateAlarm(alarmCombo->currentIndex()); }
void AddEditAlarmDialog::showForEdit(Alarm *alarm) { this->ui->buttonBox->button(QDialogButtonBox::Ok)->setWhatsThis(tr("Changes the properties of the alarm.")); this->ui->buttonBox->button(QDialogButtonBox::Cancel)->setWhatsThis(tr("Closes the window without modifying the alarm.")); this->ui->messagePlainTextEdit->setPlainText(alarm->message()); this->ui->dateTimeEdit->setDateTime(alarm->dateTime()); this->ui->frequencyComboBox->setCurrentIndex(alarm->frequency()); this->ui->displayMethodComboBox->setCurrentIndex(alarm->displayMethod()); if (this->exec() == Accepted) { updateAlarm(alarm); } }
Alarm *AddEditAlarmDialog::showForAdd() { this->ui->buttonBox->button(QDialogButtonBox::Ok)->setWhatsThis(tr("Adds the new alarm to the current file.")); this->ui->buttonBox->button(QDialogButtonBox::Cancel)->setWhatsThis(tr("Closes the window without adding the alarm to the current file.")); this->ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime()); if (this->exec() == Accepted) { Alarm *alarm = new Alarm(); updateAlarm(alarm); return alarm; } return 0; }
void HAlarm::on_pushButton_clicked() { if(action=="i") { if(addAlarm()) { mod->select(); filterTargets(); QMessageBox::information(this,QApplication::applicationName(),"notifica registrata",QMessageBox::Ok); } else { QMessageBox::warning(this,QApplication::applicationName(),"errore\n"+db.lastError().text(),QMessageBox::Ok); } toggleUIInteractivity(false); } else if (action=="m") { if(updateAlarm()) { mod->select(); filterTargets(); QMessageBox::information(this,QApplication::applicationName(),"modifiche salvate",QMessageBox::Ok); } else { QMessageBox::warning(this,QApplication::applicationName(),"errore salvando le modifiche",QMessageBox::Ok); } toggleUIInteractivity(false); } action="n"; updateButtons(true,true,true,false,false); filterTargets(); }
static void do_alarm(mongoc_collection_t *sensorcoll,char * se_id,char * alarmType,char * upperBoundC,char *lowerBoundC, char *duration,char *target,char * contactId,char* addr,mongoc_collection_t *alarmlogcoll,char* userId,char *device_name,char * de_id){ mongoc_cursor_t *cursor; bson_t *doc; bson_t *query; char *str; query = bson_new (); bson_oid_t se_oid; bson_oid_init_from_string(&se_oid, se_id); BSON_APPEND_OID (query, "_id",&se_oid); cursor = mongoc_collection_find (sensorcoll, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL); double ivalue=0; double dalarmtime=0; int interval=0; int balarm=0; int buse=0; char name[1024]; memset(name,0,1024); while (mongoc_cursor_next (cursor, &doc)) { str = bson_as_json (doc, NULL); printf ("%s\n", str); bson_free (str); bson_iter_t iter; bson_iter_t sub_iter; if (bson_iter_init (&iter, doc)) { while (bson_iter_next (&iter)) { //printf ("Found a field named: %s\n", bson_iter_key (&iter)); bson_value_t *value; value = bson_iter_value (&iter); //printf("type %d\n",value->value_type); if (value->value_type == BSON_TYPE_INT32) { if(strcmp(bson_iter_key (&iter),"value")==0){ printf("value %d\n", value->value.v_int32); ivalue=value->value.v_double; buse =1; }else if(strcmp(bson_iter_key (&iter),"interval")==0){ interval=value->value.v_int32; }else if(strcmp(bson_iter_key (&iter),"balarm")==0){ balarm=value->value.v_int32; } } if(strcmp(bson_iter_key (&iter),"value")==0){ printf("value type %d,%d\n",value->value_type,BSON_TYPE_INT32); } if (value->value_type == BSON_TYPE_DOUBLE) { if(strcmp(bson_iter_key (&iter),"value")==0){ //printf("value %d\n", (int)value->value.v_double); buse =1; ivalue=value->value.v_double; } if(strcmp(bson_iter_key (&iter),"alarmtime")==0){ dalarmtime=value->value.v_double; } } if (value->value_type == BSON_TYPE_UTF8) { if(strcmp(bson_iter_key (&iter),"name")==0){ //printf("value %d\n", (int)value->value.v_double); strcpy(name,value->value.v_utf8.str); } if(strcmp(bson_iter_key (&iter),"value")==0){ //printf("value %d\n", (int)value->value.v_double); ivalue=atof(value->value.v_utf8.str); buse =1; } } } } } bson_destroy (query); printf("se_id:%s,buse:%d\n",se_id,buse); printf("alarmType:%s,%f : %s,%s",alarmType,ivalue,upperBoundC,lowerBoundC); time_t t; t = time(NULL); struct tm *lt; int ii = time(&t); int bdoalarm=1; if(balarm==1){ bdoalarm=1; if(dalarmtime>0 &&interval>0){ if((ii-dalarmtime)<3600){ bdoalarm=0; } } } if(buse ==1){ if(strcmp(alarmType,"val_above")==0){ int iupper=atoi(upperBoundC); if(iupper<ivalue){ printf("val_above %d value\n",iupper,ivalue); char msg[2048]; memset(msg,0,2048); snprintf(msg, sizeof(msg) - 1, "故障报警:%s的%s数值高于%d,位置是%s,请及时处理!", device_name, name, iupper, addr); char buf[1024]; URLEncodeGBK(msg, strlen(msg), buf,sizeof(buf)); printf("%s\n",buf); printf("alarm info: %s\n",msg); if(bdoalarm>0){ int code=sendsms_c(buf,contactId); saveAlarmLog(alarmlogcoll,se_id,code,contactId,msg,userId,device_name,name,de_id); updateAlarm(sensorcoll,se_id,interval+1,1); printf("send sms \n"); } }else { updateAlarm(sensorcoll,se_id,0,0); } }else if(strcmp(alarmType,"val_below")==0){ int iupper=atoi(lowerBoundC); if(iupper>ivalue){ printf("val_below %d value %d\n",iupper,ivalue); char msg[2048]; memset(msg,0,2048); snprintf(msg, sizeof(msg) - 1, "故障报警:%s的%s数值低于%d,位置是%s,请及时处理!", device_name, name, iupper, addr); char buf[1024]; URLEncodeGBK(msg, strlen(msg), buf,sizeof(buf)); printf("%s\n",buf); printf("alarm info: %s\n",msg); if(bdoalarm>0){ int code=sendsms_c(buf,contactId); saveAlarmLog(alarmlogcoll,se_id,code,contactId,msg,userId,device_name,name,de_id); updateAlarm(sensorcoll,se_id,interval+1,1); printf("send sms \n"); } }else { updateAlarm(sensorcoll,se_id,0,0); } }else if(strcmp(alarmType,"switch_on")==0){ if(ivalue==1){ char msg[2048]; memset(msg,0,2048); snprintf(msg, sizeof(msg) - 1, "故障报警:%s,%s,位置是%s,请及时处理!", device_name, name, addr); char buf[1024]; URLEncodeGBK(msg, strlen(msg), buf,sizeof(buf)); printf("%s\n",buf); printf("alarm info: %s\n",msg); if(bdoalarm>0){ int code=sendsms_c(buf,contactId); saveAlarmLog(alarmlogcoll,se_id,code,contactId,msg,userId,device_name,name,de_id); updateAlarm(sensorcoll,se_id,interval+1,1); printf("send sms \n"); } }else { updateAlarm(sensorcoll,se_id,0,0); } }else if(strcmp(alarmType,"offline")==0){ if(ivalue==1){ char msg[2048]; memset(msg,0,2048); snprintf(msg, sizeof(msg) - 1, "故障报警:%s,%s,位置是%s,请及时处理!", device_name, name, addr); char buf[1024]; URLEncodeGBK(msg, strlen(msg), buf,sizeof(buf)); printf("%s\n",buf); printf("alarm info: %s\n",msg); if(bdoalarm>0){ int code=sendsms_c(buf,contactId); saveAlarmLog(alarmlogcoll,se_id,code,contactId,msg,userId,device_name,name,de_id); updateAlarm(sensorcoll,se_id,interval+1,1); printf("send sms \n"); } }else { updateAlarm(sensorcoll,se_id,0,0); } } } }
void loop() { // If error detected, disable buttons. if (fsmState != ERROR_MODE) { buttonA.tick(); buttonB.tick(); } // If alarm condition is detected, modify FSM state accordingly // Alarm is just triggered outside the edit modes. if (wkAlarm.isTriggered(now()) && fsmState != EDIT_ALARM_MODE && fsmState != EDIT_TIME_MODE && fsmState != SHOW_ALARM_MODE) { oldFsmState = fsmState; // update the time, so the display is not stuck in garbage. updateTime(); display.enableClockDisplay(); fsmState = SHOW_ALARM_MODE; digitalClockDisplay(); printAlarmStatus(); } // After an alarm is cleared by the user, wait for a minute // and re-enable the alarm to provide for repeatable alarms // everyday without user intervention. if ((millis() - lastAlarmTrigger) > ONE_MINUTE && lastAlarmTrigger) { enableRtcAlarm(); lastAlarmTrigger = 0; } switch (fsmState) { case EDIT_TIME_MODE: if (oldFsmState != fsmState) { display.enableNumericDisplay(); display.writeMessage("hora"); delay(600); updateTime(); display.enableClockDisplay(); activeDigit = 0; display.enableBlink(activeDigit); } oldFsmState = fsmState; break; case EDIT_ALARM_MODE: if (oldFsmState != fsmState) { display.enableNumericDisplay(); display.writeMessage("alarme"); delay(600); updateAlarm(); display.enableClockDisplay(); if (isRtcAlarmOn()) { for (int i = 0; i < N; i++) display.enableDecimalPoint(i); } else { for (int i = 0; i < N; i++) display.disableDecimalPoint(i); } activeDigit = 0; display.enableBlink(activeDigit); } oldFsmState = fsmState; break; case SHOW_TIME_MODE: if (oldFsmState != fsmState) { updateTime(); lastClockRead = millis(); lastShowTimeStart = lastClockRead; display.enableClockDisplay(); } oldFsmState = fsmState; if ((millis() - lastClockRead) > updateInterval) { updateTime(); lastClockRead = millis(); } if ((millis() - lastShowTimeStart) > SHOW_TIME_DURATION) { fsmState = SHOW_TEMP_MODE; } break; case SHOW_TEMP_MODE: if (oldFsmState != fsmState) { updateTemperature(); lastTempRead = millis(); lastShowTempStart = lastTempRead; display.enableTempDisplay(); } oldFsmState = fsmState; if ((millis() - lastTempRead) > updateInterval) { updateTemperature(); lastTempRead = millis(); } if ((millis() - lastShowTempStart) > SHOW_TEMP_DURATION) { fsmState = SHOW_TIME_MODE; } break; case SHOW_ALARM_MODE: display.disableDisplay(); display.disableColon(); playAlarmSong(); display.enableColon(); display.enableDisplay(); break; case ERROR_MODE: if (oldFsmState != fsmState) { display.enableNumericDisplay(); display.writeMessage("ERRO"); Serial.println("Error detected, disabling buttons."); Serial.println("Error detected, disabling RTC alarm."); disableRtcAlarm(); } break; } }