using websocket to dynamic display sensor data on webpage; sends alert email from mbed.

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

Committer:
cryptoc
Date:
Thu Feb 18 20:04:08 2016 +0000
Revision:
3:26beaa8b94ce
Parent:
0:9bb9ffde0d91
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cryptoc 0:9bb9ffde0d91 1 /**
cryptoc 0:9bb9ffde0d91 2 xAP enabed one wire master Part II
cryptoc 0:9bb9ffde0d91 3 Author: Zhongying Qiao
cryptoc 0:9bb9ffde0d91 4 Date: 9th March 2014
cryptoc 0:9bb9ffde0d91 5 Tested working 3rd March 2014 Qiao
cryptoc 0:9bb9ffde0d91 6
cryptoc 0:9bb9ffde0d91 7 **/
cryptoc 0:9bb9ffde0d91 8
cryptoc 0:9bb9ffde0d91 9
cryptoc 0:9bb9ffde0d91 10 //one wire communication
cryptoc 0:9bb9ffde0d91 11 #include "mbed.h"
cryptoc 0:9bb9ffde0d91 12 #include "rtos.h"
cryptoc 0:9bb9ffde0d91 13 #include "OneWire.h"
cryptoc 0:9bb9ffde0d91 14 #include "Network.h"
cryptoc 0:9bb9ffde0d91 15 #include "DS1920.h"
cryptoc 0:9bb9ffde0d91 16 #include "demo_for_temperature.h"
cryptoc 0:9bb9ffde0d91 17 //xAP
cryptoc 0:9bb9ffde0d91 18 #include "EthernetInterface.h"
cryptoc 0:9bb9ffde0d91 19 //webpage
cryptoc 0:9bb9ffde0d91 20 #include "Websocket.h"
cryptoc 0:9bb9ffde0d91 21 //email SMTP client
cryptoc 0:9bb9ffde0d91 22 #include "NTPClient.h"
cryptoc 0:9bb9ffde0d91 23 #include "SimpleSMTPClient.h"
cryptoc 0:9bb9ffde0d91 24
cryptoc 0:9bb9ffde0d91 25 #define DOMAIN "DOMAIN"// no impact
cryptoc 0:9bb9ffde0d91 26 #define SERVER "aspmx.l.google.com"
cryptoc 0:9bb9ffde0d91 27 #define PORT "25" // Port 25 doesn't require TSL
cryptoc 0:9bb9ffde0d91 28 #define USER "me"//doesn't matter
cryptoc 0:9bb9ffde0d91 29 #define PWD "does_not_matter"//doesn't matter
cryptoc 0:9bb9ffde0d91 30 #define FROM_ADDRESS "mbed"// doesn't matter
cryptoc 0:9bb9ffde0d91 31
cryptoc 0:9bb9ffde0d91 32
cryptoc 0:9bb9ffde0d91 33 // less than 128 characters.
cryptoc 0:9bb9ffde0d91 34 #define TO_ADDRESS "anywhere@gmail.com" // must be an gmail address
cryptoc 0:9bb9ffde0d91 35
cryptoc 0:9bb9ffde0d91 36 #define SUBJECT "temperature warning message"
cryptoc 0:9bb9ffde0d91 37
cryptoc 0:9bb9ffde0d91 38
cryptoc 0:9bb9ffde0d91 39
cryptoc 0:9bb9ffde0d91 40 int main() {
cryptoc 0:9bb9ffde0d91 41 char recv[30]; //webpage data
cryptoc 0:9bb9ffde0d91 42 char strTimeMsg[16];// time of LCD
cryptoc 0:9bb9ffde0d91 43 char msg[]="Hello this is a message from mbed ";//email content
cryptoc 0:9bb9ffde0d91 44 const int BROADCAST_PORT=3639 ;//designated port for xAP sending UDP packets
cryptoc 0:9bb9ffde0d91 45 puts("program started\r");
cryptoc 0:9bb9ffde0d91 46
cryptoc 0:9bb9ffde0d91 47 printf("Setting up Ethernet...\n");
cryptoc 0:9bb9ffde0d91 48 EthernetInterface eth;
cryptoc 0:9bb9ffde0d91 49 eth.init();//use DHCP
cryptoc 0:9bb9ffde0d91 50 //printf("result from init %d\r\n",eth.init("172.20.177.241 ", "255.255.255.0", "172.20.177.1"));
cryptoc 0:9bb9ffde0d91 51 //printf("IP Address is %s\r\n", eth.getIPAddress());
cryptoc 0:9bb9ffde0d91 52 //printf("gateway is %s\r\n", eth.getGateway());
cryptoc 0:9bb9ffde0d91 53 //printf("mask is %s\r\n", eth.getNetworkMask());
cryptoc 0:9bb9ffde0d91 54 eth.connect();
cryptoc 0:9bb9ffde0d91 55 printf("IP Address is %s\n", eth.getIPAddress());
cryptoc 0:9bb9ffde0d91 56
cryptoc 0:9bb9ffde0d91 57 //UDP packet broadcast setup
cryptoc 0:9bb9ffde0d91 58 UDPSocket udp;
cryptoc 0:9bb9ffde0d91 59 udp.init();
cryptoc 0:9bb9ffde0d91 60 printf("broadcasting success? %d \n", udp.set_broadcasting(true));
cryptoc 0:9bb9ffde0d91 61 Endpoint broadcast;
cryptoc 0:9bb9ffde0d91 62 printf("set address result %d\n", broadcast.set_address("255.255.255.255", BROADCAST_PORT));
cryptoc 0:9bb9ffde0d91 63
cryptoc 0:9bb9ffde0d91 64 //setting up SMTP client
cryptoc 0:9bb9ffde0d91 65 SimpleSMTPClient smtp;
cryptoc 0:9bb9ffde0d91 66 int ret;
cryptoc 0:9bb9ffde0d91 67 smtp.setFromAddress(FROM_ADDRESS);
cryptoc 0:9bb9ffde0d91 68 smtp.setToAddress(TO_ADDRESS);
cryptoc 0:9bb9ffde0d91 69
cryptoc 0:9bb9ffde0d91 70 //xAP message upon Ethernet connection
cryptoc 0:9bb9ffde0d91 71 char *packet_a = "xap-header\n"
cryptoc 0:9bb9ffde0d91 72 "{\n"
cryptoc 0:9bb9ffde0d91 73 "v=12\n"
cryptoc 0:9bb9ffde0d91 74 "hop=1\n"
cryptoc 0:9bb9ffde0d91 75 "uid=FF101200\n"
cryptoc 0:9bb9ffde0d91 76 "class=SMS.Message\n"
cryptoc 0:9bb9ffde0d91 77 "source=georg.mbedlpc1768.ibutton7E\n"
cryptoc 0:9bb9ffde0d91 78 "}\n"
cryptoc 0:9bb9ffde0d91 79 "Outbound\n"
cryptoc 0:9bb9ffde0d91 80 "{\n"
cryptoc 0:9bb9ffde0d91 81 "msg=(This is an xAP message from mbed, Ethernet connected!)\n"
cryptoc 0:9bb9ffde0d91 82 "num=(00447401696842)\n"
cryptoc 0:9bb9ffde0d91 83 "}\n";
cryptoc 0:9bb9ffde0d91 84
cryptoc 0:9bb9ffde0d91 85 printf("Broadcasting...\n");
cryptoc 0:9bb9ffde0d91 86 printf( "bytes sent= %d\n",udp.sendTo(broadcast, packet_a, strlen(packet_a)));
cryptoc 0:9bb9ffde0d91 87
cryptoc 0:9bb9ffde0d91 88
cryptoc 0:9bb9ffde0d91 89 while(true){
cryptoc 0:9bb9ffde0d91 90
cryptoc 0:9bb9ffde0d91 91
cryptoc 0:9bb9ffde0d91 92 reset_thread();// calling one_wire demo for returning temperature measurement and device ID
cryptoc 0:9bb9ffde0d91 93
cryptoc 0:9bb9ffde0d91 94
cryptoc 0:9bb9ffde0d91 95
cryptoc 0:9bb9ffde0d91 96 sprintf(msg, "IButton thermometor ID %llX , temperature measured at %f \n",rom, temperature);
cryptoc 0:9bb9ffde0d91 97
cryptoc 0:9bb9ffde0d91 98 smtp.setMessage(SUBJECT,msg);
cryptoc 0:9bb9ffde0d91 99 smtp.addMessage(" It's exceeding previously set temperature threshold!! \r\n");
cryptoc 0:9bb9ffde0d91 100
cryptoc 0:9bb9ffde0d91 101 while(temperature> 10.0) {
cryptoc 0:9bb9ffde0d91 102 printf("temperature alart\n");
cryptoc 0:9bb9ffde0d91 103 ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN,PORT,SMTP_AUTH_NONE);
cryptoc 0:9bb9ffde0d91 104
cryptoc 0:9bb9ffde0d91 105 if (ret) {
cryptoc 0:9bb9ffde0d91 106 printf("E-mail Transmission Error\r\n");
cryptoc 0:9bb9ffde0d91 107 }
cryptoc 0:9bb9ffde0d91 108 else {
cryptoc 0:9bb9ffde0d91 109 printf("E-mail Transmission OK\r\n");
cryptoc 0:9bb9ffde0d91 110 }
cryptoc 0:9bb9ffde0d91 111 wait(1.0);
cryptoc 0:9bb9ffde0d91 112 break;
cryptoc 0:9bb9ffde0d91 113 }
cryptoc 0:9bb9ffde0d91 114
cryptoc 0:9bb9ffde0d91 115 Websocket ws("ws://sockets.mbed.org:443/ws/georg/rw");//"ws://sockets.mbed.org/ws/georg/rw" to view the dynamic reading
cryptoc 0:9bb9ffde0d91 116 ws.connect();
cryptoc 0:9bb9ffde0d91 117
cryptoc 0:9bb9ffde0d91 118 sprintf(recv, "Temperature of device %llX is %f: \n",rom, temperature);
cryptoc 0:9bb9ffde0d91 119 ws.send(recv);
cryptoc 0:9bb9ffde0d91 120 temperature =0;
cryptoc 0:9bb9ffde0d91 121 wait(2.0);
cryptoc 0:9bb9ffde0d91 122 }
cryptoc 0:9bb9ffde0d91 123
cryptoc 0:9bb9ffde0d91 124
cryptoc 0:9bb9ffde0d91 125
cryptoc 0:9bb9ffde0d91 126 }