diff --git a/ST-B-L072Z-LRWAN1/longfi-us915-button/lambda_button_text.py b/ST-B-L072Z-LRWAN1/longfi-us915-button/lambda_button_text.py new file mode 100644 index 0000000..a998cff --- /dev/null +++ b/ST-B-L072Z-LRWAN1/longfi-us915-button/lambda_button_text.py @@ -0,0 +1,27 @@ +import base64 +import json +import os +from botocore.vendored import requests + +TWILIO_ACCOUNT_SID = os.environ.get("TWILIO_ACCOUNT_SID") +TWILIO_AUTH_TOKEN = os.environ.get("TWILIO_AUTH_TOKEN") +TWILIO_SMS_URL = "https://api.twilio.com/2010-04-01/Accounts/" + TWILIO_ACCOUNT_SID + "/Messages.json" +TWILIO_ASSIGNED_NUMBER = os.environ.get("TWILIO_ASSIGNED_NUMBER") +USER_NUMBER = os.environ.get("USER_NUMBER") + +def lambda_handler(event, context): + + byte_arr = list(base64.b64decode(event['payload'])) + + if byte_arr[0] == 1 : + to_number =USER_NUMBER + from_number = TWILIO_ASSIGNED_NUMBER + body = "Button pressed!" + data = {"To": to_number, "From": from_number, "Body": body} + + response = requests.post(TWILIO_SMS_URL, data = data, auth=(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)) + print(response.text) + return "Button pushed - Message Sent" + else: + print("Heartbeat") + return "Heartbeat" diff --git a/ST-B-L072Z-LRWAN1/longfi-us915-button/longfi-us915-button.ino b/ST-B-L072Z-LRWAN1/longfi-us915-button/longfi-us915-button.ino new file mode 100644 index 0000000..acf8de5 --- /dev/null +++ b/ST-B-L072Z-LRWAN1/longfi-us915-button/longfi-us915-button.ino @@ -0,0 +1,236 @@ +#include +#include +#include + + +// This should also be in little endian format +static const u1_t PROGMEM DEVEUI[8]= { FILL_ME_IN }; +void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);} + +// This should also be in little endian format +static const u1_t PROGMEM APPEUI[8]= { FILL_ME_IN }; +void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);} + +// This key should be in big endian format +static const u1_t PROGMEM APPKEY[16] = { FILL_ME_IN }; +void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPKEY, 16);} + +static uint8_t mydata[] = {0}; +static osjob_t sendjob; + +// Schedule TX every this many seconds (might become longer due to duty +// cycle limitations). +const unsigned TX_INTERVAL = 15; + +// Pin mapping +#include "arduino_lmic_hal_boards.h" +// Pin mapping Discovery +const lmic_pinmap lmic_pins = *Arduino_LMIC::GetPinmap_Disco_L072cz_Lrwan1(); + +void printHex2(unsigned v) { + v &= 0xff; + if (v < 16) + Serial.print('0'); + Serial.print(v, HEX); +} + +void onEvent (ev_t ev) { + Serial.print(os_getTime()); + Serial.print(": "); + switch(ev) { + case EV_SCAN_TIMEOUT: + Serial.println(F("EV_SCAN_TIMEOUT")); + break; + case EV_BEACON_FOUND: + Serial.println(F("EV_BEACON_FOUND")); + break; + case EV_BEACON_MISSED: + Serial.println(F("EV_BEACON_MISSED")); + break; + case EV_BEACON_TRACKED: + Serial.println(F("EV_BEACON_TRACKED")); + break; + case EV_JOINING: + Serial.println(F("EV_JOINING")); + break; + case EV_JOINED: + Serial.println(F("EV_JOINED")); + { + u4_t netid = 0; + devaddr_t devaddr = 0; + u1_t nwkKey[16]; + u1_t artKey[16]; + LMIC_getSessionKeys(&netid, &devaddr, nwkKey, artKey); + Serial.print("netid: "); + Serial.println(netid, DEC); + Serial.print("devaddr: "); + Serial.println(devaddr, HEX); + Serial.print("AppSKey: "); + for (size_t i=0; i