ハイパー・マイコン mbedでインターネット 電子工作 2章 リスト2-2 InformEmailのプログラム
Dependencies: EthernetInterface NTPClient SimpleSMTPClient TextLCD mbed-rtos mbed
main.cpp
00001 // -- InformEmail -- 00002 #include "mbed.h" 00003 #include "EthernetInterface.h" 00004 #include "NTPClient.h" 00005 #include "SimpleSMTPClient.h" 00006 #include "TextLCD.h" 00007 00008 #define DOMAIN "mbed" 00009 #define SERVER "smtp.mail.yahoo.co.jp" 00010 #define PORT "587" //25 or 587(OutBound Port25 Blocking ) 00011 00012 #define USER "yahoo-japan-ID" 00013 #define PWD "password" 00014 #define FROM_ADDRESS "yahoo-japan-ID@yahoo.co.jp" 00015 // TO_ADDRESS (Of some address is possible.) 00016 // to-user1@domain, to-user2@domain, to-user3@domain .... 00017 // The TO_ADDRESS are less than 128 characters. 00018 #define TO_ADDRESS "to-address@domain" 00019 00020 #define SUBJECT "Notice of the detection log" 00021 00022 #define INIT 5.0 00023 #define NOISE 3.0 00024 #define DELAY 10.0 00025 #define INTERVAL 3600 00026 00027 TextLCD lcd(p24, p26, p27, p28, p29, p30); 00028 DigitalOut led1(LED1); 00029 DigitalOut led2(LED2); 00030 DigitalOut led3(LED3); 00031 DigitalIn msensor(p20); 00032 int cnt,flag,flag1; 00033 00034 void emailsendInterval(void const *args) 00035 { 00036 while (true) { 00037 led1 = !led1; 00038 Thread::wait(1000); 00039 cnt++; 00040 if ( cnt == INTERVAL ){ 00041 cnt = 0; 00042 flag = 1; 00043 } 00044 } 00045 } 00046 00047 void lcdUpdate(void const *args) 00048 { 00049 char lcdMsg[16]; 00050 while(true){ 00051 Thread::wait(30000); 00052 time_t ctTime = time(NULL)+32400; 00053 strftime(lcdMsg,16,"%y/%m/%d %H:%M",localtime(&ctTime)); 00054 lcd.locate(0,0); 00055 lcd.printf("[%s]",lcdMsg); 00056 } 00057 } 00058 00059 void flip(void const *args) { 00060 while (true) { 00061 led1 = !led1; 00062 Thread::wait(200); 00063 } 00064 } 00065 00066 int main() 00067 { 00068 SimpleSMTPClient smtp; 00069 EthernetInterface eth; 00070 00071 char sendMsg[512]=""; 00072 char strTimeMsg[16]; 00073 int ret; 00074 flag1 = 0; 00075 00076 lcd.cls(); 00077 printf("\n\n/* Inform Email System */\n"); 00078 00079 printf("Setting up ...\n"); 00080 eth.init(); 00081 eth.connect(); 00082 00083 printf("Connected OK\n"); 00084 00085 printf("IP Address is %s\n", eth.getIPAddress()); 00086 lcd.locate(0,1); 00087 lcd.printf("%s", eth.getIPAddress()); 00088 00089 printf("NTP setTime...\n"); 00090 NTPClient ntp; 00091 ntp.setTime("ntp.nict.jp"); 00092 00093 time_t ctTime = time(NULL)+32400; 00094 printf("\nTime is now (JST):%s\n", ctime(&ctTime)); 00095 strftime(strTimeMsg,16,"%y/%m/%d %H:%M",localtime(&ctTime)); 00096 lcd.locate(0,0); 00097 lcd.printf("[%s]",strTimeMsg); 00098 00099 led1 = 1; 00100 Thread thread0(flip); 00101 wait(INIT); 00102 thread0.terminate(); 00103 led1=0; 00104 00105 00106 Thread thread(emailsendInterval); 00107 Thread thread1(lcdUpdate); 00108 00109 smtp.setFromAddress(FROM_ADDRESS); 00110 smtp.setToAddress(TO_ADDRESS); 00111 smtp.setMessage(SUBJECT,sendMsg); 00112 00113 while(1) 00114 { 00115 led2 = msensor; 00116 if ( led2 == 1 ){ 00117 wait( NOISE ); 00118 led2 = msensor; 00119 00120 while ( led2 == 1 ){ 00121 led3 = 1; 00122 wait( DELAY ) ; 00123 led2 = msensor; 00124 if ( flag1 == 0 ){ 00125 ctTime = time(NULL)+32400; // JST 00126 strftime(strTimeMsg,16,"%m/%d %H:%M\r\n",localtime(&ctTime)); 00127 smtp.addMessage(strTimeMsg); 00128 printf("[%s]",strTimeMsg); 00129 } 00130 flag1 = 1; 00131 } 00132 flag1 = 0; 00133 led3 = 0; 00134 } 00135 if ( flag == 1 ) { 00136 if ( smtp.msgLength() != 0 ){ 00137 ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN, PORT,SMTP_AUTH_LOGIN); 00138 smtp.clearMessage(); 00139 if (ret) { 00140 printf("E-mail Transmission Error\r\n"); 00141 } else { 00142 printf("E-mail Transmission OK\r\n"); 00143 } 00144 } 00145 flag = 0; 00146 } 00147 } 00148 } 00149
Generated on Mon Jul 25 2022 15:47:38 by 1.7.2