Content CAT LoRa Lab 9 - loraReceive Function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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