endpoint including temperature and distance sensors

Dependencies:   mbed mbedConnectorInterface mbedEndpointNetwork TrashSensors

Fork of TempAndDistTest by Tim Ambrose

main.cpp

Committer:
coyotebush
Date:
2015-05-02
Revision:
2:b51fcb5fd114
Parent:
1:2d8c4995c5bc
Child:
4:1ca75e77ae33

File content as of revision 2:b51fcb5fd114:

#include "mbed.h"
#include "EthernetInterface.h"
#include "ConnectorEndpoint.h"
#include "OptionsBuilder.h"

#include "hcsr04.h"
#include "GroveTemp.h"
#include "OnBoardLED.h"

#include "StaticResource.h"

/* CoAP/NSP */
uint8_t my_nsp_address[NSP_IP_ADDRESS_LENGTH] = {54, 191, 98, 247};
int my_nsp_coap_port                          = 5683;
#define MY_NSP_DOMAIN    "trash"                               
#define MY_ENDPOINT_NAME "trashcan"
EthernetInterface ethernet;

/* Terminal connection */
RawSerial term(USBTX, USBRX);
Logger logger(&term);

/* Sensors */
#define TRIG_PIN D6
#define ECHO_PIN D7
#define FIRE_THRESH 32.0
HCSR04 distS(TRIG_PIN, ECHO_PIN); 
GroveTempSensor tempS;

/* Resources */
StaticResource mfg(&logger, "3/0/0", "Freescale");
StaticResource model(&logger, "3/0/1", "K64F mbed Ethernet demo");

/*
DistanceResource distS(&logger, "3302/0/5600", distS);
TemperatureResource tempR(&logger, "3303/0/5700", tempS);
*/
LEDResource led(&logger, "3311/1/5706");

/* invoked through linker magic via Endpoint::start() */
Connector::Options *configure_endpoint(Connector::OptionsBuilder &config)
{
    logger.log("configure_endpoint: building endpoint configuration...");
    return config.addResource(&mfg)
                 .addResource(&model)
                 /* .addResource(&distR) */
                 /* .addResource(&tempR) */
                 .addResource(&led)
                 .build();
}

int main() {
   double temperature;
   unsigned int distance;

   logger.log("\r\n\r\nSmart Trash Can booting\r\n");
   Connector::Endpoint::plumbNetwork();
   Connector::Endpoint::start();
   
   while (1) {
      temperature = tempS.getTemp() * 3.0 / 5.0;
      logger.logIt("Temp: %0.1f\n\r", temperature);
      if (temperature > FIRE_THRESH) {
         logger.logIt("    OMG! THE TRASH CAN CAN IS TOTALLY ON FIRE!!\n\r");
      }
      
      distS.start();
      wait_ms(500);
      distance = distS.get_dist_cm();
      logger.logIt("Distance: %d\n\r", distance);
   }
}