ControlEverything.com 4-CHANNEL RELAY CONTROLLER FOR I2C
×
1
Sensor rintangan IR
×
1
Kamera
×
1
Kawat jumper (generik)
×
1
Aplikasi dan Layanan Online
Arduino IDE
Amazon Alexa Alexa Skills Kit
Amazon Alexa echosim.io
ThingSpeak API
Backendless
Pushingbox
Tentang Proyek Ini
Pendahuluan:
Di dunia saat ini orang-orang menghabiskan lebih banyak waktu di tempat kerja daripada di rumah mereka. Oleh karena itu ada kebutuhan akan sistem pemantauan rumah di mana orang dapat mengetahui kondisi rumah mereka saat mereka bekerja. Akan lebih baik jika seseorang dapat bertanya pada "seseorang" tentang rumah mereka selama jam kerja. Ini dapat dicapai dengan menggunakan Amazon Alexa sebagai asisten yang dapat memberikan informasi yang dibutuhkan pengguna tentang rumah mereka.
Bukan Hanya Tempat Kerja pengguna dapat mengetahui kondisi rumah di mana pun di dunia selama mereka memiliki koneksi internet dan perangkat Amazon Alexa.
Fungsi-fungsi berikut diimplementasikan dalam proyek ini:
1) Kontrol perangkat rumah tangga seperti kipas dan lampu
2) Memberi tahu status perangkat
3) Memberi tahu kondisi cuaca rumah (suhu dan kelembaban)
4) Mengirim gambar interior rumah ke pengguna melalui Gmail ketika diperlukan.
5) Mengirim notifikasi dalam kasus -
* Perampok (juga mengirim foto)
* Kebakaran
* Tamu (juga mengirim foto)
Langkah-langkah yang terlibat dalam proyek:
LANGKAH 1: Memrogram Arduino dan ESP8266
Unduh Arduino IDE dari situs resmi: https://www.arduino.cc/en/Main/Software
Buka Arduino IDE dan pergi ke file-> preferences-> di additional board manager URL ketik - https://arduino.esp8266.com/stable/package_esp8266com_index.json
Pergi ke tools -> boards -> Board Manager --> dan instal paket esp8266 yang ditemukan di bagian akhir.
Untuk memrogram arduino cukup colokkan kabel USB dari arduino ke komputer dan pilih Arduino/Genuino UNO di tools-> boards. Juga pastikan Anda memilih port COM yang benar di Tools (nomor port COM dapat ditemukan di Device manager). Tulis program yang diperlukan, Kompilasi dan klik upload jika tidak ada kesalahan.
Untuk memrogram ESP8266 buat koneksi seperti yang ditunjukkan dalam diagram
colokkan usb dari arduino ke Komputer. Di tools-> board-> pilih Generic ESP8266 dan juga pilih port COM yang benar. Tulis program yang diperlukan, Kompilasi dan klik upload jika tidak ada kesalahan. Pastikan Anda menghubungkan Arduino RST ke GND (arduino bertindak sebagai pemrogram untuk ESP8266).
Dalam Proyek Ini Pertama ESP8266 diprogram dan kemudian koneksi rangkaian dihilangkan. Kemudian Rangkaian disambungkan kembali seperti yang ditunjukkan dalam Gambar bernama "Circuit Connections". Dan kemudian arduino diprogram
LANGKAH 2: Mengonfigurasi thingspeak.com
Buat akun di thingspeak.com.
kita menggunakan channel di thingspeak untuk menyimpan informasi kontrol perangkat dan mengarahkannya ke arduino/alexa. kita juga menyimpan nilai suhu dan kelembaban di channel. Ini seperti lokasi penyimpanan untuk informasi.
pergi ke channels--> my channels dan buat channel baru. Berikan nama dan deskripsi untuk channel Anda.
dalam proyek kita kita membutuhkan 8 channel (Anda dapat melakukan pekerjaan menggunakan lebih sedikit channel tetapi akan sedikit rumit saat memrogram). Juga thingspeak memiliki keterbatasan waktu saat memperbarui channel. Harus ada jeda 10-15 detik antara pembaruan berturut-turut dari channel tertentu.
Delapan channel dengan nilai dan artinya diberikan di bawah ini
nama channel(value1-artinya, value2-artinya, dll):
1) Kontrol perangkat (0 -lampuMenyala, 1- lampuMati, 2- kipas Nyala, 3- Kipas Mati)
2) status lampu (0- lampu mati, 1- lampu menyala)
3) status kipas (0- kipas mati, 1- kipas menyala)
4) kelembaban ( nilai kelembaban)
5) suhu ( nilai suhu)
6) notifikasi perampok (1- perampok alert)
7) notifikasi kebakaran ( 1- kebakaran alert)
8)notifikasi tamu ( 1- tamu alert)
saat Anda klik pada channel apa pun Anda dapat melihat channel id dan write API keys di tab API keys. channel id diperlukan untuk mendapatkan informasi/ nilai di channel. dan write key diperlukan untuk menyimpan nilai di channel.
<channel id> diganti dengan channel id tertentu dari channel yang ingin kita baca.
LANGKAH 3: Program
Program dibagi menjadi 3 bagian :
A) Program untuk Arduino : program untuk arduino sangat sederhana. Ini menerima data dari ESP8266 secara serial dan berdasarkan data yang diterima perangkat dikontrol. Informasi lebih lanjut tentang program ditemukan dalam komentar dalam program itu sendiri.
B) Program untuk ESP8266: program untuk ESP8266 melibatkan 3 hal
1) memperbarui suhu dan kelembaban menggunakan http request
the <write key> diganti dengan write key yang ditemukan di thingspeak channel untuk kelembaban dan suhu masing-masing. dan host adalah api.thingspeak.com.
di mana <your dev id> diganti dengan device id Anda di pushingbox.
LANGKAH 4: Mengonfigurasi linkit smart 7688 duo dan webcam
In proyek ini webcam dan linkit smart 7688 duo digunakan untuk menangkap foto yang diperlukan dan mengirimkannya ke pengguna. Anda juga dapat menggunakan modul kamera arduino dan mengantarmukanya dengan arduino atau dapat menggunakan kamera IP apa pun.
tekan dan tahan tombol wifi pada linkit smart 7688 selama 20 detik untuk mereset papan. Kemudian setelah pengaturan wifi di-reset Anda akan dapat melihat nama titik aksesnya di koneksi jaringan nirkabel. Sekarang hubungkan komputer ke jaringan itu.
setelah Anda terhubung buka browser dan ketik 192.168.100.1 di bilah alamat. Anda akan dapat melihat portalnya.
setel kata sandi untuk masuk ke portalnya.
Setelah Anda masuk pergi ke tab network dan pilih Station mode ( kami memerlukan(linkit smart 7688 duo) untuk mengakses internet) dan hubungkan ke jaringan Wifi Anda dan tekan Configure dan restart.
Setelah papan di-restart akan diberikan alamat IP lokal. Temukan alamat menggunakan alat IP apa pun atau portal router Anda. Dalam kasus saya itu adalah 192.168.1.4.
Sekarang ketik alamat IP lokal di bilah alamat browser. pastikan komputer terhubung ke jaringan yang sama dengan linkit smart. Anda akan diminta untuk masuk lagi.
Untuk mengaktifkan streaming dari webcam Anda harus mengaktifkan MJPG streamer(mjpg-streamer adalah aplikasi baris perintah yang menyalin frame JPEG dari satu atau lebih plugin input ke beberapa plugin output). Untuk melakukan ini di portal pergi ke lokasi OpenWrt di kanan atas. Anda perlu masuk lagi.
Setelah Anda masuk pergi ke tab service dan centang enable MJPG streamer dan tetapkan nomor port untuk layanan ini. Saya telah menetapkan 4440. Klik save dan apply.
Setelah penyiapan Anda dapat menghubungkan webcam Anda ke linkit smart 7688 duo usb host melalui kabel OTG.
Sekarang untuk melihat Stream buka browser dan ketik <local IP address>:<port> di bilah alamat. dalam kasus saya itu adalah 192.168.1.4:4400
untuk mengambil gambar ketik perintah <local IP>:<port>?action=snapshot
Sekarang gambar ini tersedia secara lokal tetapi kita perlu membuatnya tersedia untuk layanan pushing box. Untuk mencapai ini kita perlu melakukan port forwarding. Port forwarding dapat dilakukan di portal router. Prosesnya berbeda untuk setiap router. Cari di google untuk mengetahui cara port forward untuk router tertentu. Biasanya tersedia di bawah layanan NAT.
Setelah Anda port forward Anda dapat mengakses port ini (ie.. 4440) dari alamat IP eksternal Anda. alamat IP eksternal dapat ditemukan dengan mengetik "whats my ip" di google.
Anda perlu memasukkan alamat ini ie.. https://<external IP>:<port>?action=snapshot di pushingbox( yang dijelaskan di langkah berikutnya) sehingga pushingbox dapat mengakses gambar ini dan melampirkannya ke email dan mengirimkannya kepada Anda kapan pun diperlukan.
Anda juga dapat menyimpan gambar di sd card karena Linkit smart 7688 duo juga hadir dengan slot sd card untuk menyimpan informasi.
informasi lebih lanjut tentang ini dapat ditemukan di: https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/get-started/get-started-with-the-linkit-smart-7688-duo-development-board/
LANGKAH 5: Mengonfigurasi PushingBox
pushingbox digunakan untuk mengirim notifikasi tentang berbagai alert dalam proyek ini ke gmail.
signin ke pushingbox menggunakan akun google: https://www.pushingbox.com/
pergi ke my services--> add service. ada banyak layanan yang dapat dipilih seperti Gmail, twitter, push notification untuk android dll...
pilih Gmail( karena kita perlu mengirim foto sebagai lampiran) dan isi konfigurasi nama gmail yang sesuai dan gmail id pengguna yang alert harus dikirimkan.
pergi ke my scenarios dan buat skenario baru. berikan nama pada skenario( ex : ALERT) tambahkan layanan yang telah dibuat sebelumnya.
tulis subjek dan isi email yang sesuai dan masukkan url untuk mengambil tangkapan layar web cam untuk melampirkan foto. Buat skenario yang berbeda untuk alert yang berbeda.
api untuk mengeksekusi skenario pushing box adalah : https://api.pushingbox.com/pushingbox?devid=<device id>
LANGKAH 6: Membuat Keterampilan Alexa menggunakan Backendless
backendless digunakan untuk membuat keterampilan alexa. Ini adalah pemrograman drag and drop sederhana yang digunakan untuk membuat keterampilan alexa (atau program apa pun) yang dapat diakses oleh backendless API.
buat akun di backendless: https://backendless.com/
Masuk ke akun Anda di backendless account. klik Create app dan berikan nama pada app Anda/
Klik ikon Business Logic yang terletak di bilah ikon di sebelah kiri. Anda akan melihat layar API SERVICES.
Klik ikon “+” untuk membuat layanan baru. Pastikan untuk memilih CODELESS di popup “New Service”. Masukkan “AlexaService” untuk nama layanan. Klik tombol SAVE:
Backendless membuat API Service dan akan meminta Anda untuk membuat metode untuk layanan. Ini akan menjadi metode yang akan memproses permintaan dari Alexa. Masukkan “handleRequest” untuk nama metode. Pastikan untuk memilih POST untuk operasi REST, dan deklarasikan argumen dengan nama “req” dan tipe “Any Object” seperti di bawah ini:
Backendless membuat placeholder untuk logika codeless dari metode. Klik tombol EDIT untuk mulai beralih ke Codeless Logic Designer.
Di blok placeholder fungsi yang dibuat, klik area yang mengatakan “doSomething” dan ubah menjadi “sendAlexaResponse”. Fungsi ini digunakan untuk membuat alexa mengatakan sesuatu yang dapat diteruskan sebagai argumen. Klik tombol SAVE sehingga fungsi disimpan:
Klik ikon roda gigi yang terletak di blok ungu tepat di samping kata “Function”. Tambahkan dua argumen dengan menyeret blok input seperti yang ditunjukkan dalam gambar di bawah ini. Tetapkan nama argumen sebagai “whatToSay” dan “waitForResponse“. Perhatikan bahwa saat Anda menambahkan argumen, Area Blok Konteks secara otomatis diisi dengan blok yang mewakili nilai argumen:
Modifikasi logika fungsi sehingga terlihat seperti gambar di bawah ini. Untuk blok “Create Objects”, gunakan ikon roda gigi untuk mengubah nama properti objek. Jangan lupa untuk menyimpan pekerjaan Anda dengan klik tombol SAVE.
Sekarang fungsi kustom sudah dibangun, beralih kembali ke metode handleRequest dari layanan AlexaService. Klik kategori Custom Functions di bilah alat di sebelah kiri dan seret blok sendAlexaResponse untuk terhubung dengan konektor pengembalian dari metode layanan Anda:
langkah di atas juga dapat ditemukan di situs web mereka: https://backendless.com/developing-alexa-skill-without-writing-any-code-part1-codeless-in-backendless-mbaas/
Klik node “Add New” di bawah Functions di bagian BROWSER.Di dalam blok placeholder fungsi yang dibuat, klik area yang mengatakan “doSomething” dan ubah menjadi “getIntentName”
modifikasi blok sehingga fungsi terlihat seperti ini:
ini akan mendapatkan nama intent berdasarkan contoh ucapan. Kembali ke api services-><app name>-->handle request di bagian browser. Variabel dan logika dibuat dari bagian system. Buat variabel berikut:
selanjutnya kita menyimpan nama intent ke variabel request. Dan kemudian bandingkan dengan intents. misalnya jika permintaan adalah "introduction" maka variabel respond diatur menjadi "hi! I can control......." dan respons ini dibaca keras oleh alexa di akhir.
modifikasi blok seperti yang ditunjukkan di bawah ini:
jika permintaan adalah LightsOn intent maka kita memperbarui channel thingspeak ke '0' menggunakan http get request dan pada saat yang sama kita memperbarui status perangkat( 1/0 tergantung On/Off). Hal yang sama diulang untuk LightsOff, FanOn dan FanOff.
Untuk cuaca kita membaca dari channel Temperatur dan kelembaban dan menyimpan hasilnya di variabel respond. Karena channel hanya memberikan nilai kita menambahkan teks untuk membuat respons bermakna:
untuk tangkapan layar ruang tamu kita menjalankan skenario pushingbox:
untuk status perangkat kita membaca informasi dari channel status thingspeak:
untuk notifikasi dan alert kita membaca dari channel alert( kebakaran, perampok dan tamu):
berdasarkan nilai yang kita dapatkan dari kolom notifikasi pesan alert yang sesuai disimpan di variabel respond0. jika tidak ada notifikasi maka tidak ada pesan notifikasi yang disimpan.
setelah notifikasi dibaca lalu '0' diperbarui di channel notifikasi sehingga alexa tidak akan membaca notifikasi yang sama lagi. Kemudian di akhirnya berdasarkan permintaan, respond0/respond variabel dibaca keras.
PS : Setelah membuat model yang diperlukan di backendless, klik deploy model di kanan atas layar codeless untuk men-deploy model.
LANGKAH 7: Mengonfigurasi Keterampilan Alexa di Amazon Developer Console:
pergi ke amazon developer console dan masuk menggunakan akun amazon. https://developer.amazon.com/
pergi ke developer console dan klik tab ALEXA. Klik alexa skills kit get started.
buat jenis keterampilan kustom, berikan nama dan nama panggilan pada keterampilan.
intents dan contoh ucapan yang sesuai diberikan dalam kode di bawah ini.
{ "languageModel": { "intents": [ { "name": "AMAZON.CancelIntent", "samples": [] }, { "name": "AMAZON.HelpIntent", "samples": [] }, { "name": "AMAZON.StopIntent", "samples": [] }, { "name": "Camera", "samples": [ "please send a snapshot of my living room", "please send a snapshot of my home", "please send a photo of my living room", "please send a photo of my home" ], "slots": [] }, { "name": "FanOff", "samples": [ "turn off Fan", "switch off Fan", "turn off the Fan", "switch off the Fan" ], "slots": [] }, { "name": "FanOn", "samples": [ "turn on Fan", "switch on Fan", "turn on the Fan", "switch on the Fan" ], "slots": [] }, { "name": "Introduction", "samples": [ "what you can do", "what can you do", "what can you do for me" ], "slots": [] }, { "name": "LightsOff", "samples": [ "turn off lights", "switch off lights", "turn off the lights", "switch off the lights" ], "slots": [] }, { "name": "LightsOn", "samples": [ "turn on lights", "switch on lights", "turn on the lights", "switch on the lights" ], "slots": [] }, { "name": "Notification", "samples": [ "what are my notifications", "is there any notifications", "is there any updates", "read out my notifications" ], "slots": [] }, { "name": "Status", "samples": [ "what is my device status", "what is the status of my devices" ], "slots": [] }, { "name": "Weather", "samples": [ "what is the weather condition of my home", "what is the weather of my home", "what is the weather", "what is the temperature of my home", "what is the temperature" ], "slots": [] } ], "invocationName": "my home" } }
di tab konfigurasi pilih HTTPS sebagai tipe titik akhir layanan isi URL default dengan URL API dari backendless.
pilih opsi ke-2 di Certificate untuk titik akhir default di SSL certificate. Anda juga dapat menguji keterampilan menggunakan simulator pengujian.
Setelah pengujian selesai Anda dapat menerbitkan keterampilan dengan informasi penerbitan yang diperlukan.
LANGKAH 8: Penyiapan Akhir dan Selesai!
buat koneksi rangkaian seperti yang ditunjukkan di bawah ini
Kadang-kadangESP8266akanmacetkarenakekuranganarus.Jadi,meskipuntidakdisebutkandalamrangkaian,direkomendasikan untuk menyalakan ESP8266 dari sumber 3.3v terpisah.JikaAndamenggunakansebuahpower bankpastikan Anda menurunkan tegangan dari 5v ke 3.3v menggunakan regulator tegangan 3.3v.
Unggah program ke ESP8266 dan arduino. Saya telah menunjukkan koneksi ke lampu, hal yang sama dapat diperluas ke kipas atau perangkat lainnya.
Terakhir gunakan amazon echo atau echosim.io untuk menguji keterampilan Anda.
Kode untuk ESP8266 untuk mendapatkan alert tentang perampok dan tamu
/* * This sketch is implementation of smart bell and home security * */ #include <ESP8266WiFi.h> #include<String.h> //------------------------------------------ // variables //------------------------------------------ int intruder=0,guest=2; // pin 0 as intruder alert and pin2 as guest alert const char* ssid = "SSID"; //your SSID of WIFI const char* password = "password"; // password of Wifi //-------------------------------------------- const char* host = "api.thingspeak.com"; void setup() { Serial.begin(115200); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ 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()); } int value = 0; int x,y=0,z,k=0; void loop() { delay(1000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } Serial.print("Requesting URL: "); //============================================================================================================ // intruder alert //============================================================================================================ x=digitalRead(intruder); //Serial.println(x); if(x==0) { y=0; } if(x==1&&y==0) { Serial.println("Sending Alert Pls Wait....."); delay(1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid=<deviceID_intruderAlert> HTTP/1.1\r\n" + "Host: " + host1 + "\r\n" + "Connection: close\r\n\r\n"); // executing pushing box api client.print(String("GET ") + "/update?api_key=<write_key_intruderAlert>&field1=1 HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); //updating intruder notification delay(1000); y=1; } //============================================================================================================ // End of intruder alert //============================================================================================================ //============================================================================================================ // guest alert //============================================================================================================ long t1; z=digitalRead(guest); if(z==0 && (millis()>=t1+300000)) // wait for 5 min to avoid multiple alert sending due to multiple door bell press { k=0; } if(x==1&&k==0) { t1=millis(); // storing curent time stamp in t1 Serial.println("Sending Alert Pls Wait....."); delay(1000); //delay for sending alert and switch debouncing String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid=<deviceID_guestAlert> HTTP/1.1\r\n" + "Host: " + host1 + "\r\n" + "Connection: close\r\n\r\n"); // executing pushing box api client.print(String("GET ") + "/update?api_key=<write_key_guestAlert>&field1=1 HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); //updating guest notification delay(1000); k=1; } //============================================================================================================ // End of guest alert //============================================================================================================ unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } //Serial.println("closing connection"); }
Home_monitor_arduino.inoArduino
Kode untuk Arduino untuk mengontrol alat-alat
//This sketch in the implementation of home automation #include <SoftwareSerial.h>// import the serial library #include<String.h> //----------------------------------------- // pin definations //----------------------------------------- #define Light 2 // pin 2 to control light #define fan 3 // pin 3 to control fan //------------------------------------------ // variables //------------------------------------------ char e; int p=0,q=0; //these variables prevent switching ON/OFF of already turned ON/OFF devices SoftwareSerial home_monitor(10, 11); // RX, TX char control_data; // the data transmitted over Bluetooth void setup() { // put your setup code here, to run once: home_monitor.begin(115200); Serial.begin(9600); pinMode(13,OUTPUT); } void loop() { // put your main code here, to run repeatedly: if (home_monitor.available()){ control_data=home_monitor.read(); // getting control information from ESP8266 serially e=control_data; Serial.print(control_data); //============================================================================================================ // Device Control //============================================================================================================ // Performing required operations based on the value of channel //------------------------------------------------------------- // LIGHT //------------------------------------------------------------- if(e=='0'&&p==0) //Light ON { digitalWrite(Light,LOW); p=1; } if(e=='1'&&p==1) //Light off { digitalWrite(Light,HIGH); p=0; } //------------------------------------------------------------- // Heater //------------------------------------------------------------- if(e=='2'&&q==0) { digitalWrite(fan,HIGH); q=1; } if(e=='3'&&q==1) { digitalWrite(fan,LOW); q=0; } } }
Home_Monitor_ESP8266.inoArduino
Kode Untuk ESP8266 untuk memperbarui kelembaban dan suhu di thingspeak dan juga mengambil informasi kontrol dari thingspeak
/* * This sketch updates wheather information in thingspeak.com and also retrieve control information from thingspeak.com * It send the control information to arduino serially */ #include <ESP8266WiFi.h> #include<String.h> #include "DHT.h" // including the library of DHT11 temperature and humidity sensor #define DHTTYPE DHT11 // DHT 11 #define dht_dpin 2 // define GPIO2 as data input DHT dht(dht_dpin, DHTTYPE); //------------------------------------------ // variables //------------------------------------------ //dht DHT; char c,e; // stores the bytes coming from the server float temp,h; //stores float value of temp and humididty String humidity,temperature,line; //stores string value of temp and humididty int co=0; //control the sending of Alert const char* ssid = "SSID"; //your SSID of WIFI const char* password = "password"; // password of Wifi //-------------------------------------------- const char* host = "api.thingspeak.com"; void setup() { dht.begin(); Serial.begin(115200); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ 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()); } int value = 0; void loop() { delay(1000); ++value; Serial.print("connecting to "); Serial.println(host); // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } Serial.print("Requesting URL: "); //============================================================================================================ // Mini Weather Station //============================================================================================================ h = dht.readHumidity(); //reads humidity and temperature temp = dht.readTemperature(); if(temp<50.0) { co=0; } if(temp>=50.0&&co==0) // send alert if temperature is above 50 degrees and co is used to avoid multiple alert sending { Serial.println("Sending Alert please wait......."); delay(1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid=<deviceID_fireAlert> HTTP/1.1\r\n" + "Host: " + host1 + "\r\n" + "Connection: close\r\n\r\n"); //pushingbox api to send alert delay(1000); client.print(String("GET ") + "/update?key=<write_key_fireAlert>&field1=1 HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); //updating thingspeak fire alert channel co=1; } humidity=String(h); temperature=String(temp); Serial.println(h); Serial.println(temp); client.print(String("GET ") + "/update?key=<write_key_humidity>&field1="+humidity+" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); //update humidity in thingspeak channel client.print(String("GET ") + "/update?key=<write_key_temperature>&field1="+temperature+" HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); ////update temperature in thingspeak channel //============================================================================================================ // End of Weather Station //============================================================================================================ //============================================================================================================ // Sending Control info to arduino Serially //============================================================================================================ // This will send the request to the server client.print(String("GET ") + "/channels/<channelID_control>/field/field1/last.html HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); // get information about device control unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line = client.readStringUntil('\r'); } Serial.print(line); // received by arduino serially //Serial.println("closing connection"); }