Пример #1
0
//! [4]
void TodoEditor::updateDates()
{
    QDateTime startTime = startDateEdit->dateTime();
    QDateTime dueDateTime = dueDateEdit->dateTime();

    todo.setStartDateTime(startTime);
    todo.setDueDateTime(dueDateTime);

    updateAlarm(alarmCombo->currentIndex());
}
Пример #2
0
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);
    }
}
Пример #3
0
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;
}
Пример #4
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();
}
Пример #5
0
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);
        }
     }
   }
}
Пример #6
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;
	}
}