Skip to content

Instantly share code, notes, and snippets.

@choonewza
Created January 25, 2020 08:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save choonewza/bdc7f6953aeb560080a6876135fd16fd to your computer and use it in GitHub Desktop.
Save choonewza/bdc7f6953aeb560080a6876135fd16fd to your computer and use it in GitHub Desktop.
Content CAT LoRa Lab 9 - loraReceive Function
void loraReceive() {
String receive = lora.receive();
if (receive != "") {
unsigned int rxPort = lora.getPortReceive(receive);
String rxPayload = lora.getPayloadReceive(receive);
if (rxPort != 0 && rxPayload != "") {
Serial.println("-----RX From CAT LORA-----");
Serial.println(String("Port = ") + rxPort);
Serial.println(String("Payload = ") + rxPayload);
/*Downlink from Lora IoT by CAT is 012020012412105920200124143000 (00yyyyMMddhhmmssyyyyMMddhhmmss)
Device : RelayA => 01, RelayB => 02
Start : 2020-01-24 12:10:59 => 20200124121059
Stop : 2020-01-24 14:30:00 => 20200124143000
rxPayload = 012020012412105920200124143000;
*/
//for device
uint8_t device = (uint8_t) rxPayload.substring(0, 2).toInt();
//new start datetime
uint16_t sYear = (uint16_t) rxPayload.substring(2, 6).toInt();
uint8_t sMonth = (uint8_t) rxPayload.substring(6, 8).toInt();
uint8_t sDay = (uint8_t) rxPayload.substring(8, 10).toInt();
uint8_t sHour = (uint8_t) rxPayload.substring(10, 12).toInt();
uint8_t sMinute = (uint8_t) rxPayload.substring(12, 14).toInt();
uint8_t sSecond = (uint8_t) rxPayload.substring(14, 16).toInt();
//new stop datetime
uint16_t eYear = (uint16_t) rxPayload.substring(16, 20).toInt();
uint8_t eMonth = (uint8_t) rxPayload.substring(20, 22).toInt();
uint8_t eDay = (uint8_t) rxPayload.substring(22, 24).toInt();
uint8_t eHour = (uint8_t) rxPayload.substring(24, 26).toInt();
uint8_t eMinute = (uint8_t) rxPayload.substring(26, 28).toInt();
uint8_t eSecond = (uint8_t) rxPayload.substring(28, 30).toInt();
//set startLedUnixtime and stopLedUnixtime
String deviceSelected = "Not Found";
if (device == 1) {
deviceSelected = "Relay A";
relayA.trunOnWhen(sYear, sMonth, sDay, sHour, sMinute, sSecond, eYear, eMonth, eDay, eHour, eMinute, eSecond);
} else if (device == 2) {
deviceSelected = "Relay B";
relayB.trunOnWhen(sYear, sMonth, sDay, sHour, sMinute, sSecond, eYear, eMonth, eDay, eHour, eMinute, eSecond);
}
//set datetime format yyyy-MM-dd HH:mm:ss
char startLedDateTime[32];
char stopLedDateTime[32];
sprintf(startLedDateTime, "%04d-%02d-%02d %02d:%02d:%02d", sYear, sMonth, sDay, sHour, sMinute, sSecond);
sprintf(stopLedDateTime, "%04d-%02d-%02d %02d:%02d:%02d", eYear, eMonth, eDay, eHour, eMinute, eSecond);
//Show new datetime
Serial.println(String("Device Select : ") + deviceSelected);
Serial.println(String("New Start LED : ") + startLedDateTime);
Serial.println(String("New Stop LED : ") + stopLedDateTime);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment