Beispiel #1
0
void manageAlarm(void)
{
	int ii;
	char szBuf[1024];

	for (ii = 0; ii < TH_LAST; ii++)
	{

		if (thermometer[ii].smsSent == 0)
		{
			if ((time(NULL) - thermometer[ii].mesure_date) > 60 * 30)
			{
				thermometer[ii].smsSent = 1;
				sprintf(szBuf, "        --- HomeControl ---\n%s thermometer looks to be off", thermometer[ii].name);
				sendSMS(szBuf);
			}
		}
		else
		{
			if ((time(NULL) - thermometer[ii].mesure_date) < 60 * 2)
			{
				thermometer[ii].smsSent = 0;
				sprintf(szBuf, "        --- HomeControl ---\n%s thermometer is back to normal", thermometer[ii].name);
				sendSMS(szBuf);
			}
		}

	}

}
Beispiel #2
0
void SendView::Send() {
    QString text = ui_sendview_base.SmsTextEdit->toPlainText();
    QString address = ui_sendview_base.AddressEdit->text();
    if (text!="" && address!="") {
        emit sendSMS( address, text );
    }
}
Beispiel #3
0
void OnClick0()
{
    uint8_t msg[] = "How are you?";
    uint8_t recipient[] = "+31641600986";
    uint8_t pdu[160];
    sendSMS(recipient, msg);

}
Beispiel #4
0
MainWidget::MainWidget(QWidget *parent) :
    QWidget(parent)
{
    m_controller = new ControllerObject;
    m_gpsWgt = new GPSWidget;
    m_gsmWgt = new GSMWidget;


    ///////////////////////////////////////////////

    QGroupBox* gpsGroupBox = new QGroupBox("GPS");
    m_gpsWgt = new GPSWidget;

    QVBoxLayout* gpsLayout = new QVBoxLayout;
    gpsLayout->addWidget( m_gpsWgt );
    gpsGroupBox->setLayout(gpsLayout);


    QGroupBox* gsmGroupBox = new QGroupBox("GSM");
    m_gsmWgt = new GSMWidget;

    QVBoxLayout* gsmLayout = new QVBoxLayout;
    gsmLayout->addWidget( m_gsmWgt );
    gsmGroupBox->setLayout(gsmLayout);


    QHBoxLayout* mainLayout = new QHBoxLayout;
    mainLayout->addWidget( gpsGroupBox );
    mainLayout->addWidget( gsmGroupBox );

    setLayout( mainLayout );

    /////////////////////////////////////////
    connect( m_gsmWgt, SIGNAL(newSMS(QString,QString)),
             m_controller, SLOT(setMessage(QString,QString)));
    connect( m_controller, SIGNAL(newSMS(QString,QString)),
             this, SLOT(sendSMS(QString,QString)));
}
Beispiel #5
0
int GM862::extractData(char *buf2){
  String date;
  String command;
  String tempS;
  int counter = 0;
  int counter2 = 0;
  int state = -1;
  char * temp2;
  char * temp = strtok(buf2,",");
  while(temp != NULL){
    tempS = temp;
    switch(counter){
      case 2:    // phone number
//	      Serial.println("phone number (pre): " + tempS);
//	      Serial.println("length: " + tempS.length());
	messagePhoneNumber = getPhone(tempS);
//	      Serial.println("phone number: " + phoneNumber);
	break;
      case 4:    // year month and day
//	      Serial.println("ymd: " + tempS);
//	      Serial.println("current date: " + year() +"/"+ month() +"/"+ day());
	date = tempS;
	break;
      case 5:    // time
//	      Serial.println("time: " + tempS);
//	      Serial.println("current date: " + hour() +":"+ minute() +":"+ second() + "-24");
	temp2 = strtok(temp,"\"");
	while(temp2 != NULL){
	  tempS = temp2;
	  tempS = tempS.trim();
//            Serial.println("inner temp: " + tempS);
	  switch(counter2){
	    case 1:
	      command = getCommand(tempS);
	      break;
	    default:
//                    Serial.println("don't care: " + tempS);
	      break;
	  }
	  counter2++;
	  temp2 = strtok(NULL,"\"");
	}
	date += tempS;
	break;
      default:
//        Serial.println("don't care: " + tempS);
	break;
    }
    counter++;
//	  Serial.println("temp: " + tempS);
//	  Serial.println("counter: " + counter);
    temp = strtok(NULL,",");
  }
  if(verifyPhoneNumber(messagePhoneNumber)){
    state = executeCommand(command);
//    sendSMS(messagePhoneNumber, returnMessage(state)); // don't want to send till after it has completed now.
  } else {
    sendSMS(messagePhoneNumber, "This phone number is not authorized.");
  }
  return state;
}
Beispiel #6
0
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;	// Stop watchdog timer

    // Setup and pin configurations
    clkSetup();
    directionSetup();
    timerA0Setup();
    boardSetup();
    rtcSetup();
	initUART();
	pinGSM();
//	clkDebug();
	readDip();
	// test
	V4Stop();
	V5Stop();

	// Sensor variables
	int sensorValue = 0;
	int sensorData[LengthOfSensordata] = {0};
	char dataEnable = 0; 				// != 0 if the vector is filled ones
	int dataPosition = 0;
	int overflowCount = 0;
	char alarm = '0';

	// Parameters (From and to the flash)
	int lowerThresholds = readFlashLowTolerance();
	int upperThresholds = readFlashHighTolerance();
	int normalLvl = readFlashSensorOffset();			// Default higth over the water lvl

	// GSM decision variable
	char execution = '0';
	char disableAlarmFlag = '0';	// Disable = 1

	// RTC variable time offset1 = 1 min
	unsigned int rtcOffsetH = 0xFC6C;
	unsigned int rtcOffsetL = 0x78FF;

	__enable_interrupt();

	while(1)
	{
		V5Start();

		_no_operation();
		char c = '0';
		if(loop2Mode == '1' || startMode == '1')
		{	// Power on the GSM regulator
			V4Start(); 	// Enable power to GSMJa
			if(P8IN &= BIT4)
			{
				c = checkAT();
				if(c =='0') pwrOnOff();
			}
			else
			{
				pwrOnOff();
				Delay();
				c = '0';
			}
		}
		sensorValue = mainFunctionSensor(sensorData, LengthOfSensordata, &dataPosition, &dataEnable, &overflowCount);

		if (loop2Mode == '1' || startMode == '1')
		{	// wait for connection and check if SMS
			unsigned int count = 0;

			while(!(P8IN &= BIT4) || count < 40000)
			{
				count++;
				__delay_cycles(100);
			}
			if(c == '0') c = checkAT();

			if(c == '0')
			{
				V4Stop();
				Delay();
				Delay();
				V5Start();
				V4Start();
				if(P8IN &= BIT4)
				{
					c = checkAT();
					if(c =='0') pwrOnOff();
				}
				else
				{
					pwrOnOff();
					Delay();
				}
			}
			initGSM();
			execution = readSMS();

			if (execution == '0')
			{	// Nothing
				_no_operation();// test
			}
			else if (execution == 'S')
			{	// Status report
				responseStatus("STATUS i ", (normalLvl-sensorValue));
				deleteSMS();
			}
			else if (execution == 'N')
			{	// Confirm Nr change
				responseNrChange("Nummerlista uppdaterad i ");
				deleteSMS();
			}
			else if (execution == 'L')
			{	// Confirm changed normal level
				normalLvl = readFlashSensorOffset();
				responseLvlChange("Offset i ", normalLvl);
				deleteSMS();
			}
			else if (execution == 'T')
			{	// Confirm changed thresholds
				lowerThresholds = readFlashLowTolerance();
				upperThresholds = readFlashHighTolerance();
				responseThChange("Toleranser i ", lowerThresholds, upperThresholds);
				deleteSMS();
			}
			else if (execution == 'E')
			{	// Enable SMS
				sendSMS("Modulen har blivit aktiverad i ");
				disableAlarmFlag = '0';
				deleteSMS();
			}
			else if (execution == 'D')
			{	// Disable SMS
				sendSMS("Modulen har blivit inaktiverad i");
				disableAlarmFlag = '1';
				deleteSMS();
			}
			else if (execution == 'A')
			{	// Disable SMS with when alarm
				sendSMS("Larmet stoppat");
				deleteSMS();
				disableAlarmFlag = '1';		// Reseted when the lvl goes back to normal.
			}
			else
			{	/* Nothing */  }
		}

		// if the GSM mode disable turn off the power
		if (loop2Mode != '1' && startMode != '1')
		{
			V5Stop();
			V4Stop();
		}

		if (dataEnable != 0 && overflowCount == 0)
		{	// Process the sensor value
			alarm = evaluateData(sensorValue, normalLvl, upperThresholds, lowerThresholds, &rtcOffsetH, &rtcOffsetL, &timerAlarmFlag);
		}
		else if (overflowCount > 10)
		{	// Alarm overflow (Problem om man minskar RTC och något ligger ivägen!!!!)
			alarm = 'O';
		}
		else
		{}
		if (alarm != '0')
		{
			if (loop2Mode != '1' && startMode != '1' && disableAlarmFlag != '1' && timerAlarmFlag == '1')
				startGSMmodule();
			if(loop2Mode == '1' && startMode == '1' && disableAlarmFlag != '1' && timerAlarmFlag == '1')
			{
				c = checkAT();
				if(c == '0')
					startGSMmodule();
			}
			if (alarm == '+')
			{	// Alarm for high water lvl
				if (disableAlarmFlag != '1' && timerAlarmFlag == '1')
				{
					sendAlarm("Hog vattenniva i ", (normalLvl-sensorValue));
					timerAlarmFlag = '0';
				}
			}
			else if (alarm == '-')
			{	// Alarm for low water lvl
				if (disableAlarmFlag != '1' && timerAlarmFlag == '1')
				{
					sendAlarm("Lag vattenniva i ", (normalLvl-sensorValue));
					timerAlarmFlag = '0';
				}
			}
			else if (alarm == 'O' && timerAlarmFlag == '1')
			{	// Alarm for overflow
				sendSMS("Sensor kan vara ur funktion i ");
				timerAlarmFlag = '0';
			}
			else {}

			if (loop2Mode != '1' && startMode != '1' && timerAlarmFlag == '1')
			{
				V5Stop();
				V4Stop();
			}
		}
		else if (alarm == '0' && timerAlarmFlag == '1')
		{	// return to normal mode
			disableAlarmFlag = '0';
			// RTC for Repeat alarm
			// Send sms
		}
		rtcStart(rtcOffsetH, rtcOffsetL);
	}
}