Dreamforce 2014 Demo of RFID-based Salesforce Case generation for status reporting.

Dependencies:   ID12RFID ReportDB SalesforceCaseGenerator SalesforceInterface

Dependents:   mbed_mqtt_endpoint_ublox_ethernet mbed_mqtt_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_ethernet ... more

Revision:
16:d196d812f651
Parent:
14:f4ab5c7abc50
Child:
18:a89333f9f671
--- a/StatusReporter.cpp	Sun Sep 21 07:28:42 2014 +0000
+++ b/StatusReporter.cpp	Wed Sep 24 18:52:58 2014 +0000
@@ -18,6 +18,9 @@
  
  #include "StatusReporter.h"
  
+ // temperature sensor
+ AnalogIn temp_sensor(TEMP_PIN);
+ 
  StatusReporter::StatusReporter(ErrorHandler *logger,void *transport) : m_case_generator(logger,transport), m_db(), m_rfid_reader(RFID_TX_PIN,RFID_RX_PIN) {
      this->m_logger = logger;
  }
@@ -25,6 +28,18 @@
  StatusReporter::~StatusReporter() {
  }
  
+ // Calculate the ambient temperature of the TMP36 sensor in C...
+ int StatusReporter::getLocalTemperature() {
+     //conversion to degrees C - from sensor output voltage per TMP36 data sheet
+     float tempC = (float)(((float)temp_sensor*3.3)-0.600)*100.0;
+     
+     // DEBUG
+     this->m_logger->log("Ambient Temp: %.1f C",tempC);
+     
+     // convert to int for brevity...
+     return (int)tempC;
+ }
+ 
  void StatusReporter::checkAndReportOnStatus() { 
     // look for a readable RFID tag
     if(this->m_rfid_reader.readable()) {
@@ -33,8 +48,8 @@
         int rfid = this->m_rfid_reader.read();
         this->m_logger->log("RFID: ID %d found...\r\nProcessing...",rfid);
         
-        // look it up in our WidgetDB... proceed only if we find something we know about...
-        char *name = this->m_db.lookupWidgetName(rfid);
+        // look it up in our ReportDB... proceed only if we find something we know about...
+        char *name = this->m_db.lookupReportName(rfid);
         if (name != NULL) {
             // build out a simple subject for the case
             char subject[DB_MAX_NAME_LENGTH+1];
@@ -43,7 +58,12 @@
             
             // create and dispatch a case
             this->m_logger->turnLEDPurple();
-            bool success = this->m_case_generator.createCase(subject,this->m_db.lookupWidgetDescription(rfid));
+            char *description = this->m_db.lookupReportDescription(rfid);
+            char *condition = this->m_db.lookupReportCondition(rfid);
+            int temperature = this->getLocalTemperature();
+            char *latitude = this->m_db.lookupReportLatitude(rfid);
+            char *longitude = this->m_db.lookupReportLongitude(rfid);
+            bool success = this->m_case_generator.createCase(subject,description,condition,temperature,latitude,longitude);
             if (success == true) {
                 this->m_logger->log("Case Generated!\r\nScanning...");
                 this->m_logger->turnLEDGreen();