blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
PHP, Arduino programátor
deadawp



Odosielanie e-mailov cez Arduino/NodeMCU - The Easiest way
pridal deadawp 23.5. 2018 o 2:53



Zdravím všetkých, dnes sa pozrieme nato, ako jednoducho odosielať e-maily cez Arduino s využitím prostredíka - webservera. Využijeme Arduino s Ethernet shieldom W5100 a NodeMCU v klientskom móde pre odosielanie mailov cez PHP script, na ktorý sa daný mikrokontróler ako klient pripojí.

Budeme odosielať text, ktorý bude preddefinovaný v php súbore, ktorý sa odošle na zadaný mail.
Väčšina hostingov, kde sa umiestňujú webové stránky podporujú aj rozšírenia ako funkciu mail, čo umožňuje komunikáciu so SMTP serverom. Budeme teda využívať externý webový sever, kam sa budeme pripájať ako klient. Vďaka spomínanej mail funkcii môžeme priamo z webových stránok odosielať e-maily na rôzne e-mailové adresy, pričom je odosielateľom e-mailová adresa registrátora danej domény (vaša e-mailová adresa), z ktorej sa budú tieto maily odosielať.

Testované hostingy: php5.sk (php5.cz), sweb.cz

PHP kód (univerzálny pre všetky dosky):

 

Arduino + Ethernet shield W5100 sketch (HTTP):

#include #include #define Hostname "Arduino" byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; char server[] = "www.mojweb.php5.sk"; IPAddress ip(192, 168, 1, 254); EthernetClient client; void setup() { Serial.begin(9600); } void loop() { if (Ethernet.begin(mac) == 0) { Serial.println("Chyba konfiguracie cez DHCP, nastavujem pevnu IP"); Ethernet.begin(mac, ip); } if (client.connect(server, 80)) { Serial.println("Pripojenie uspesne na webserver, vykonavam request: "); client.print("GET /email.php"); client.println(" HTTP/1.1"); client.println("Host: www.mojweb.php5.sk"); client.println("Connection: close"); client.println(); client.stop(); } else { Serial.println("Pripojenie zlyhalo..."); } delay(10000); }

 

NodeMCU - HTTP sketch:

#include const char* ssid = "wifimeno"; const char* password = "wifiheslo"; const char* host = "mojweb.php5.sk"; void setup() { Serial.begin(9600); Serial.println(); Serial.println(); Serial.print("Pripajam sa na wifi "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); } String url = "/email.php"; client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10000); }

 

NodeMCU - HTTPS sketch:

#include
#include
const char* ssid = "wifimeno";
const char* password = "wifiheslo";
const char* host = "mojweb.php5.sk";
const int httpsPort = 443;
const char* fingerprint = "35 85 74 EF 67 35 A7 CE 40 69 50 F3 C0 F6 80 CF 80 3B 2E 19"; //odtlacok sha1 certifikatu
void setup() {
Serial.begin(9600);
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print("."); }
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); }
void loop() { // Use WiFiClientSecure class to create TLS connection WiFiClientSecure client; Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed"); return; }
if (client.verify(fingerprint, host)) { Serial.println("certificate matches"); } else { Serial.println("certificate doesn't match"); } String url = "/email.php"; Serial.print("requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: BuildFailureDetectorESP8266\r\n" + "Connection: close\r\n\r\n"); delay(10000); }

 

 

Nezabudnite pri HTTPS uviesť aj fingerprint HTTPS certifikátu v SHA1 formáte, inak pripojenie nebude úspešné.
Freehostingy pracujú pri SMTP serveroch s e-mailovou adresou, ktorú ste si registrovali. Pozor na adresu g-mail. Z tejto adresy e-maily nebudú odosielané z dôvodu blokácie g-mailu pre odosielanie mailov externými službami/stránkami. E-maily centrum, zoznam fungovali ok.
E-maily sa dajú využiť napríklad pri rôznych situáciách, napríklad vytečenie vody, zadymenie..

Viac zaujímavosti i na mojom webe: https://arduino.php5.sk



Prístupov 240
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Ovládanie hlasom v slovenčine pre mikrok...
[ 30.5.2018] (príspevkov 0)
Odosielanie e-mailov cez Arduino/NodeMCU...
[ 23.5.2018] (príspevkov 0)
Ovládanie 16x relé - Multiuser web aplik...
[ 1.3.2018] (príspevkov 0)
Ovládanie hlasom - Arduino + Ethernet sh...
[ 16.1.2018] (príspevkov 0)
Ovládanie relé z internetu
[ 16.1.2018] (príspevkov 0)
Inteligentné vykurovanie - NodeMCU v3 Lo...
[ 16.1.2018] (príspevkov 0)
Inteligentný dom - NodeMCU
[ 10.11.2017] (príspevkov 0)
Webaplikácia na používateľský hardvér
[ 3.9.2017] (príspevkov 0)
NodeMCU ovládané hlasom
[ 2.9.2017] (príspevkov 0)