using websocket to dynamically display temperature on webpage; tweets from mbed via xAP

Dependencies:   BroadcastSend EthernetInterface OneWire SimpleSMTPClient mbed-rpc mbed-rtos mbed

main.cpp

Committer:
cryptoc
Date:
2016-02-18
Revision:
3:d00432b8cb4a
Parent:
0:a96892f55b07

File content as of revision 3:d00432b8cb4a:

/** xAP enabled one wire master part I
Author: Zhongying Qiao
Date: 10th March 2014

Updated@24th July 2015

**/

//one wire communication
#include "mbed.h"
#include "rtos.h"
#include "OneWire.h"
#include "Network.h"
#include "DS1920.h"
#include "demo_for_temperature.h"
//xAP
#include "EthernetInterface.h"
//webpage
#include "Websocket.h"



int main() {
    char recv[30];   
    
    puts("program started\r");
    
    const int BROADCAST_PORT=3639 ;//designated port for xAP sending UDP packets
    
    EthernetInterface eth;
    eth.init();//use DHCP
    //printf("result from init %d\r\n",eth.init("172.20.177.241 ", "255.255.255.0", "172.20.177.1"));
    //printf("IP Address is %s\r\n", eth.getIPAddress());
    //printf("gateway is %s\r\n", eth.getGateway());
    //printf("mask is %s\r\n", eth.getNetworkMask());
    eth.connect();
    printf("IP Address is %s\n", eth.getIPAddress());
    
    
    UDPSocket udp;
    udp.init();
    printf("broadcasting success? %d \n", udp.set_broadcasting(true));
    Endpoint broadcast;
    printf("set address result %d\n",  broadcast.set_address("255.255.255.255", BROADCAST_PORT));
    
    
    
    char *packet_a = "xap-header\n"
                 "{\n"
                         "v=12\n"
                         "hop=1\n"
                         "uid=FF101200\n"
                         "class=SMS.Message\n"
                         "source=georg.mbedlpc1768.ibutton7E\n"
                 "}\n"
                 "Outbound\n"
                 "{\n"
                    "msg=(This is an xAP message from mbed, Ethernet connected!)\n"
                    "num=(00447401696842)\n"   
                 "}\n";
    
        printf("Broadcasting...\n");
        printf( "bytes sent= %d\n",udp.sendTo(broadcast, packet_a, strlen(packet_a)));
        


            
// xAP message composed to send warning email once a certain temperature condition is met.
           char *packet = "xap-header\n"
                 "{\n"
                         "v=12\n"
                         "hop=1\n"
                         "uid=FF89EA00\n"
                         "class=Mail.Outgoing \n"
                         "source=georg.mbedlpc1768.ibutton7E\n"
                 "}\n"
                "Message\n"
                 "{\n"
                 "To=(xxxxxxx@student.gla.ac.uk)\n"
                 "From=(Email From: temperature monitor )\n"
                 "Subject=(Email Subject: Temperature Alert)\n"
                 "CC=(example@gmail.com)\n"
                 "}\n"

               "Body.Text\n"
                "{\n"
                "Text.1=(The temperature xxx is exceeding safety limit)\n"
                "Text.2=(The current temperature is xxx)\n"
                "}\n"
                "Signature\n"
                "{\n"
                "Text.1=(iButton sensors)\n"
                "Text.2=(ID 7E00080292A87A10)\n"  
                "}\n";
while(true){
    printf("tem is %f \r\n", temperature);
      
    reset_thread();
    if(temperature> 17.0){
                            
                            printf("temperature alart\n");
                            printf( "bytes sent= %d\n",udp.sendTo(broadcast, packet, strlen(packet)));
                            udp.sendTo(broadcast, packet, strlen(packet));
                            wait(1.0);
                        
                            }
    
    Websocket ws("ws://sockets.mbed.org:443/ws/georg/rw");//("ws://sockets.mbed.org/ws/georg/rw");
    ws.connect();
    
    sprintf(recv, "Temperature of device %llX is %f: \n",rom, temperature); //E000080292CA1010
    
    ws.send(recv);
    temperature =0;
    wait(2.0);
    }
    
    
    
}