Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pemantauan Rumah Pintar Berbasis Alexa

Komponen dan persediaan

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Sensor Suhu &Kelembaban DHT11 (4 pin)
× 1
ControlEverything.com 4-CHANNEL RELAY CONTROLLER UNTUK I2C
× 1
Sensor penghalang IR
× 1
kamera
× 1
Kabel jumper (generik)
× 1

Aplikasi dan layanan online

Arduino IDE
Perangkat Keterampilan Alexa Alexa Amazon
Amazon Alexa echosim.io
ThingSpeak API
Backendless
Pushingbox

Tentang proyek ini

Pendahuluan:

Di dunia saat ini orang menghabiskan lebih banyak waktu di tempat kerja daripada di rumah mereka. Oleh karena itu diperlukan suatu sistem pemantauan rumah dimana masyarakat dapat mengetahui kondisi rumah selama mereka bekerja. Akan lebih baik lagi jika seseorang bisa bertanya kepada "seseorang" tentang rumahnya selama jam kerja. Hal ini dapat dicapai dengan memanfaatkan Amazon Alexa sebagai asisten yang dapat memberikan informasi yang dibutuhkan pengguna tentang rumah mereka.

Tidak Hanya Tempat Kerja, pengguna dapat mengetahui kondisi rumah di mana saja di dunia selama memiliki koneksi internet dan perangkat Amazon Alexa.

Fungsi berikut diimplementasikan dalam proyek ini:

1) Kontrol Perangkat rumah tangga seperti kipas dan lampu

2) Memberitahu status perangkat

3) Menceritakan kondisi cuaca rumah (suhu dan kelembapan)

4) Mengirim snapshot interior rumah kepada pengguna melalui Gmail bila diperlukan.

5) Mengirim pemberitahuan jika -

* Penyusup (juga mengirim foto)

* Api

* Tamu (juga mengirim foto)

Langkah-langkah yang terlibat dalam proyek:

LANGKAH 1:Memprogram Arduino dan ESP8266

Unduh Arduino IDE Dari situs web resmi:https://www.arduino.cc/en/Main/Software

Buka Arduino IDE dan buka file-> preferensi-> di jenis URL pengelola papan tambahan - http://arduino.esp8266.com/stable/package_esp8266com_index.json

Buka alat -> papan -> Manajer Papan -> dan instal paket esp8266 yang ditemukan pada akhirnya.

Untuk memprogram arduino cukup tancapkan kabel USB dari arduino ke komputer dan pilih Arduino/Genuino UNO di alat-> papan. Pastikan juga Anda memilih hak port COM di Alat (nomor port COM dapat ditemukan di Manajer perangkat). Tulis Program yang diperlukan, Kompilasi dan klik unggah jika tidak ada kesalahan.

Untuk memprogram ESP8266 buat koneksi seperti yang ditunjukkan pada diagram

sambungkan usb dari arduino ke Komputer. Di alat-> papan-> pilih Generik ESP8266 dan juga pilih port COM kanan. Tulis Program yang diperlukan, Kompilasi dan klik unggah jika tidak ada kesalahan. Pastikan Anda menghubungkan Arduino RST ke GND (arduino bertindak seperti programmer ke ESP8266).

Dalam Proyek Ini Pertama, ESP8266 diprogram dan kemudian koneksi sirkuit dilepas. Kemudian Sirkuit disambungkan kembali seperti yang ditunjukkan pada Gambar bernama "Circuit Connections". Dan kemudian arduino adalah terprogram

LANGKAH 2:Mengonfigurasi thingspeak.com

Buat akun di thingspeak.com.

kami menggunakan saluran di thingspeak untuk menyimpan informasi kontrol perangkat dan mengarahkannya ke arduino/alexa. kami juga menyimpan nilai suhu dan kelembaban di saluran. Ini seperti lokasi penyimpanan informasi.

buka saluran--> saluran saya dan buat saluran baru. Beri nama dan deskripsi untuk saluran Anda.

dalam proyek kami, kami membutuhkan 8 saluran (Anda dapat melakukan pekerjaan dengan menggunakan lebih sedikit saluran tetapi akan sedikit rumit saat memprogram). Juga thingspeak memiliki batasan waktu saat memperbarui saluran. Harus ada jeda 10-15 detik antara pembaruan saluran tertentu secara berurutan.

Delapan saluran dengan nilai dan artinya diberikan di bawah

nama saluran (nilai1-arti, nilai2-arti, dll):

1) Kontrol perangkat (0 -lightON, 1- lightOff, 2- fan ON, 3- Fan Off)

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) pemberitahuan penyusup (1- peringatan penyusup)

7) pemberitahuan kebakaran (1- peringatan kebakaran)

8) pemberitahuan tamu (1- peringatan tamu)

ketika Anda mengklik saluran apa pun, Anda dapat melihat id salurannya dan menulis kunci API di tab kunci API. ID saluran diperlukan untuk mendapatkan informasi/nilai dalam saluran. dan kunci tulis diperlukan untuk menyimpan nilai di saluran.

Permintaan http untuk memperbarui saluran adalah :

https://api.thingspeak.com/update?api_key=&field1=

diganti dengan tombol tulis saluran yang sesuai dan nilainya bisa (0/1 untuk kontrol perangkat atau nilai suhu/kelembaban)

Permintaan http untuk membaca nilai dari saluran adalah:

https://api.thingspeak.com/channels//field/field1/last.html

diganti dengan id channel tertentu dari channel yang ingin kita baca.

LANGKAH 3:Program

Program ini 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 dikendalikan. Informasi lebih lanjut tentang program ini dapat ditemukan di komentar di program itu sendiri.

B) Program untuk ESP8266 : program untuk ESP8266 melibatkan 3 hal

1) memperbarui suhu dan kelembaban menggunakan permintaan http

client.print(String("GET ") + "/update?key=&field1="+humidity+" HTTP/1.1\r\n" + "Host:" + host + " \r\n" + "Koneksi:tutup\r\n\r\n"); //update kelembaban klien.print(String("GET ") + "/update?key=&field1="+temperature+" HTTP/1.1\r\n" + "Host:" + host + "\r \n" + "Koneksi:tutup\r\n\r\n"); // perbarui suhu 

diganti dengan tombol tulis yang sesuai yang ditemukan di saluran thingspeak untuk kelembaban dan suhu masing-masing. dan hostnya adalah api.thingspeak.com.

unduh perpustakaan dht dari:https://github.com/adafruit/DHT-sensor-library

2) membaca dari saluran yang sesuai dari perangkat thingspeak dan pengontrol berdasarkan nilai yang diperoleh:

client.print(String("GET ") + "/channels//field/field1/last.html HTTP/1.1\r\n" + "Host:" + host + " \r\n" + "Koneksi:tutup\r\n\r\n"); 

di mana diganti dengan id saluran yang sesuai yang ditemukan di thingspeak.

3) Mengirim peringatan jika suhu tinggi melalui kotak dorong

String host1="api.pushingbox.com";client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host :" + host1 + "\r\n" + "Koneksi:tutup\r\n\r\n"); 

di mana diganti dengan device id Anda di pushbox.

LANGKAH 4:Mengonfigurasi linkit smart 7688 duo dan webcam

Saya n webcam proyek ini dan linkit smart 7688 duo digunakan untuk mengambil foto yang diperlukan dan mengirimkannya ke pengguna. Anda juga dapat menggunakan modul kamera arduino dan menghubungkannya dengan arduino atau menggunakan kamera IP apa pun.

tekan dan tahan tombol wifi di linkit smart 7688 selama 20 detik untuk mereset board. Kemudian setelah pengaturan wifi diatur ulang, 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.

atur kata sandi untuk masuk ke portalnya.

Setelah Anda masuk, buka tab jaringan dan pilih mode Stasiun (kami membutuhkannya (linkit smart 7688 duo) untuk mengakses internet) dan hubungkan ke jaringan Wifi Anda dan tekan Konfigurasi dan mulai ulang.

Setelah papan itu restart akan diberikan alamat IP lokal. Cari tahu alamatnya menggunakan alat IP atau portal router Anda. Dalam kasus saya adalah 192.168.1.4.

Sekarang ketik alamat IP lokal di bilah alamat browser. pastikan komputer terhubung ke jaringan yang sama dengan smart linkit. Anda akan diminta untuk login kembali.

Untuk mengaktifkan streaming dari webcam, Anda harus mengaktifkan streamer MJPG (mjpg-streamer adalah aplikasi baris perintah yang menyalin bingkai JPEG dari satu atau lebih plugin input ke beberapa plugin output). Untuk melakukan ini di portal, buka lokasi OpenWrt di kanan atas. Anda harus login lagi.

Setelah Anda masuk, buka tab layanan dan centang aktifkan streamer MJPG dan tetapkan nomor port untuk layanan ini. Saya telah menetapkan 4440. Klik simpan dan terapkan.

Setelah pengaturan untuk dapat menghubungkan webcam Anda ke host usb linkit smart 7688 duo melalui kabel OTG.

Sekarang untuk melihat Stream buka browser dan ketik : di address bar. dalam kasus saya ini adalah 192.168.1.4:4400

untuk mengambil jepretan ketik perintah :?action=snapshot

Sekarang gambar ini tersedia secara lokal tetapi kita perlu membuatnya tersedia untuk mendorong layanan kotak. Untuk mencapai ini, kita perlu melakukan port forwarding. Port forwarding dapat dilakukan di portal router. Proses id berbeda untuk router yang berbeda. Hanya google untuk mengetahui cara port forward untuk router tertentu. Biasanya tersedia di bawah layanan NAT.

Setelah Anda menggunakan port forward dapat mengakses port ini (yaitu .. 4440) dari IP eksternal Anda. IP eksternal dapat ditemukan dengan mengikat "whats my ip" di google.

Anda perlu memasukkan alamat ini yaitu.. http://:?action=snapshot di kotak dorong ( yang dijelaskan di langkah berikutnya) sehingga kotak dorong dapat mengakses gambar ini dan melampirkannya ke surat dan mengirimkannya kepada Anda kapan pun diperlukan.

Anda juga dapat menyimpan gambar dalam kartu sd karena Linkit smart 7688 duo juga dilengkapi dengan slot kartu sd 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 -developer-board/

LANGKAH 5:Mengonfigurasi PushingBox

pushbox digunakan untuk mengirim pemberitahuan tentang berbagai peringatan dalam proyek ke gmail.

masuk ke pushbox menggunakan akun google:https://www.pushingbox.com/

buka layanan saya--> tambahkan layanan. ada banyak layanan untuk 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 id gmail pengguna yang harus dikirimi peringatan.

buka skenario saya dan buat skenario baru. beri nama skenario ( mis:ALERT) tambahkan layanan yang dibuat sebelumnya.

tulis subjek dan isi surat yang sesuai dan masukkan url untuk mengambil tangkapan layar web cam untuk melampirkan foto. Buat skenario yang berbeda untuk lansiran yang berbeda.

api untuk menjalankan skenario kotak dorong adalah:http://api.pushingbox.com/pushingbox?devid=

LANGKAH 6:Membuat Keterampilan Alexa menggunakan Backendless

backendless digunakan untuk membuat skill alexa. Ini adalah pemrograman seret dan lepas sederhana digunakan untuk membuat keterampilan alexa (atau program apa pun) yang dapat diakses oleh API backendless.

buat akun di backendless:https://backendless.com/

  • Masuk ke akun Anda di akun tanpa backend. klik Buat aplikasi dan beri nama untuk aplikasi Anda/
  • Klik ikon Logika Bisnis yang terletak di bilah ikon di sebelah kiri. Anda akan melihat layar LAYANAN API.
  • Klik ikon “+” untuk membuat layanan baru. Pastikan untuk memilih CODELESS di popup "Layanan Baru". Masukkan "AlexaService" untuk nama layanan. Klik tombol SIMPAN:
  • Backendless membuat Layanan API dan akan meminta Anda membuat metode untuk layanan tersebut. Ini akan menjadi metode yang akan memproses permintaan dari Alexa. Masukkan "handleRequest" untuk nama metode. Pastikan untuk memilih POST untuk operasi REST, dan mendeklarasikan argumen dengan nama "req" dan ketik "Any Object" seperti yang ditunjukkan di bawah ini:

Backendless membuat placeholder untuk logika metode tanpa kode. Klik tombol EDIT untuk mulai beralih ke Desainer Logika Tanpa Kode.

Di blok placeholder fungsi yang dibuat, klik area yang bertuliskan "doSomething" dan ubah menjadi "sendAlexaResponse". Fungsi ini digunakan untuk membuat alexa mengatakan sesuatu yang dapat diteruskan sebagai argumen. Klik tombol SIMPAN agar fungsi tersebut disimpan:

Klik ikon roda gigi yang terletak di blok ungu tepat di sebelah kata "Fungsi". Tambahkan dua argumen dengan menyeret blok input seperti yang ditunjukkan pada 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:

Ubah logika fungsi sehingga terlihat seperti pada gambar di bawah ini. Untuk blok "Buat Objek", gunakan ikon roda gigi untuk mengubah nama properti objek. Jangan lupa untuk menyimpan pekerjaan Anda dengan mengklik tombol SIMPAN.

Sekarang setelah fungsi kustom dibuat, beralih kembali ke metode handleRequest dari layanan AlexaService. Klik kategori Fungsi Kustom di bilah alat di sebelah kiri dan seret blok sendAlexaResponse untuk terhubung dengan konektor kembali metode layanan Anda:

langkah-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/

https://backendless.com/developing-an-alexa-skill-without-writing-any-code-part2-slots/

Klik node “Add New” di bawah Functions di bagian BROWSER. Di blok placeholder fungsi yang dibuat, klik area yang bertuliskan “doSomething” dan ubah menjadi “getIntentName”

ubah blok sehingga fungsinya terlihat seperti ini:

ini akan mendapatkan nama maksud berdasarkan contoh ucapan. Kembali ke layanan api->-->tangani permintaan di bagian browser. Variabel dan logika dibuat dari bagian sistem. Buat variabel berikut:

selanjutnya kita simpan nama intent untuk variabel request. Dan kemudian bandingkan dengan niat. misalnya jika permintaannya adalah "perkenalan" maka variabel respons diatur ke "hai! Saya dapat mengontrol ......" dan respons ini akhirnya dibacakan oleh alexa.

ubah blok seperti yang ditunjukkan di bawah ini:

jika permintaannya adalah maksud LightsOn maka kami memperbarui saluran thingspeak ke '0' menggunakan http get request dan pada saat yang sama kami memperbarui status perangkat (1/0 tergantung On/Off). Hal yang sama diulangi LightsOff, FanOn dan FanOff.

Untuk cuaca kita membaca dari saluran Temperatur dan kelembaban dan menyimpan hasilnya dalam variabel respon. Karena saluran hanya memberikan nilai, kami menambahkan teks untuk membuat tanggapan menjadi bermakna:

untuk snapshot ruang tamu kami menjalankan skenario pushbox:

untuk status perangkat, kami membaca informasi dari saluran status thingspeak:

untuk pemberitahuan dan peringatan yang kami baca dari saluran peringatan (api, penyusup, dan tamu):

berdasarkan nilai yang kami dapatkan dari bidang notifikasi, pesan peringatan yang sesuai disimpan dalam variabel respond0. jika tidak ada notifikasi maka tidak ada pesan notifikasi yang tersimpan.

setelah notifikasi dibacakan maka '0' diperbarui di saluran notifikasi sehingga alexa tidak akan membaca notifikasi yang sama lagi. Kemudian akhirnya berdasarkan permintaan tersebut, variabel respond0/respond dibacakan.

PS :Setelah membuat model yang diperlukan di backendless, klik terapkan model di kanan atas layar tanpa kode untuk menerapkan model.

LANGKAH 7:Mengonfigurasi keterampilan Alexa di Konsol Pengembang Amazon:

buka konsol pengembang amazon dan masuk menggunakan akun amazon. https://developer.amazon.com/

pergi ke konsol pengembang dan klik pada tab ALEXA. Klik kit keterampilan alexa untuk memulai.

buat jenis keterampilan khusus, beri nama dan nama panggilan untuk keterampilan tersebut.

maksud masing-masing dan contoh ucapan diberikan dalam kode di bawah ini.

{ "languageModel":{ "intents":[ { "name":"AMAZON.CancelIntent", "samples":[] }, { "name":"AMAZON.HelpIntent", "samples" :[] }, { "name":"AMAZON.StopIntent", "samples":[] }, { "name":"Camera", "samples":[ "tolong kirim foto ruang tamu saya", " tolong kirim foto rumah saya", "kirim foto ruang tamu saya", "kirim foto rumah saya" ], "slot":[] }, { "name":"FanOff", "sampel ":[ "matikan Kipas", "matikan Kipas", "matikan Kipas", "matikan Kipas" ], "slot":[] }, { "nama":"FanOn", "sampel" :[ "nyalakan Kipas", "nyalakan Kipas", "nyalakan Kipas", "nyalakan Kipas" ], "slot":[] }, { "nama":"Pengantar", "contoh":[ "apa yang dapat Anda lakukan", "apa yang dapat Anda lakukan", "apa yang dapat Anda lakukan untuk saya" ], "slot":[] }, { "name":"LightsOff", "sampel":[ "matikan lampu", "matikan lampu", "matikan lampu", "matikan lampu" ], "slot":[] }, { "name":"LightsOn", "sampel":[ "nyalakan lampu ", "nyalakan lampu", "nyalakan lampu", "nyalakan lampu" ], "slot":[] }, { "name":"Notification", "samples":[ "what are my notifications", "apakah ada notifikasi", "apakah ada pembaruan" , "bacakan notifikasi saya" ], "slot":[] }, { "name":"Status", "samples":[ "apa status perangkat saya", "apa status perangkat saya" ], "slot":[] }, { "name":"Cuaca", "sampel":[ "bagaimana kondisi cuaca di rumah saya", "bagaimana cuaca di rumah saya", "bagaimana cuacanya", "berapa suhu rumah saya", "berapa suhunya" ], "slot":[] } ], "invocationName":"rumah saya" }} 

pada tab konfigurasi pilih HTTPS as service end point type isikan default URL dengan API URL from backendless.

pilih opsi ke-2 di Sertifikat untuk titik akhir default dalam sertifikat SSL. Anda juga dapat menguji keterampilan menggunakan simulator uji.

Setelah tes selesai, Anda dapat mempublikasikan keterampilan dengan informasi publikasi yang diperlukan.

LANGKAH 8:Penyiapan akhir dan Selesai!

buat koneksi sirkuit seperti gambar di bawah ini

Terkadang ESP8266 akan kerusakan karena dari tidak cukup saat ini. Jadi, meskipun tidak disebutkan di yang sirkuit, itu adalah disarankan untuk menyalakan ESP8266 dari 3.3v terpisah sumber. Jika Anda adalah menggunakan a kekuatan bank pastikan Anda mengurangi tegangan dari 5v menjadi 3,3v menggunakan pengatur tegangan 3,3v.

Unggah program ke ESP8266 dan arduino. Saya telah menunjukkan koneksi ke bohlam, hal yang sama dapat diperluas ke kipas atau perangkat apa pun.

Terakhir gunakan amazon echo atau echosim.io untuk menguji keterampilan Anda.

Anda harus aktifkan yang keterampilan menggunakan yang doa nama ( sebagai adalah saya kasus - "saya rumah"). Terkadang itu tidak akan kerja jika itu adalah bekas tanpa doa nama sebagai Saya memiliki ditampilkan pasangan dari kali di saya video.

Semoga Anda menikmati tutorialnya!

Terima kasih!

Kode

  • Smart_bell_ESP8266.ino
  • Home_monitor_arduino.ino
  • Home_Monitor_ESP8266.ino
Smart_bell_ESP8266.inoArduino
Kode ESP8266 untuk mendapatkan peringatan tentang penyusup dan tamu
/* * Sketsa ini adalah implementasi bel pintar dan keamanan rumah * */#include #include//----- -------------------------------------// variabel//------- ----------------------------------int penyusup=0,guest=2; // pin 0 sebagai peringatan penyusup dan pin2 sebagai peringatan tamuconst char* ssid ="SSID"; //SSID Anda dari WIFIconst char* password ="password"; // kata sandi Wifi//-------------------------------------------- -const char* host ="api.thingspeak.com";void setup() { Serial.begin(115200); penundaan (10); // Kita mulai dengan menghubungkan ke jaringan WiFi Serial.println(); Serial.println(); Serial.print("Menghubungkan ke "); Serial.println(ssid); /* Secara eksplisit mengatur ESP8266 menjadi klien WiFi, jika tidak, secara default, akan mencoba bertindak sebagai klien dan titik akses dan dapat menyebabkan masalah jaringan dengan perangkat WiFi Anda yang lain di jaringan WiFi Anda. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, kata sandi); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi terhubung"); Serial.println("Alamat IP:"); Serial.println(WiFi.localIP());}nilai int =0;int x,y=0,z,k=0;void loop() { delay(1000); ++ nilai; Serial.print("menghubungkan ke "); Serial.println(host); // Gunakan kelas WiFiClient untuk membuat koneksi TCP klien WiFiClient; const int httpPort =80; if (!client.connect(host, httpPort)) { Serial.println("koneksi gagal"); kembali; } Serial.print("Meminta URL:"); //============================================================================================================// peringatan penyusup //===========================================================================================================x=digitalRead(penyusup);//Serial.println(x); jika(x==0) { y=0; } if(x==1&&y==0) { Serial.println("Mengirim Peringatan Mohon Tunggu....."); penundaan (1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Koneksi:tutup\r\ n\r\n"); // mengeksekusi push box api client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Koneksi:tutup\r\n\r\n"); //memperbarui penundaan pemberitahuan penyusup(1000); y=1; } //=============================================================================================================// Peringatan penyusup berakhir//==========================================================================================================//=============================================================================================================// peringatan tamu //=============================================================================================================panjang t1; z=digitalRead(tamu); if(z==0 &&(millis()>=t1+300000)) // tunggu selama 5 menit untuk menghindari pengiriman beberapa peringatan karena beberapa bel pintu tekan { k=0; } if(x==1&&k==0) { t1=milis(); // menyimpan cap waktu saat ini di t1 Serial.println("Mengirim Peringatan Mohon Tunggu....."); penundaan (1000); //delay untuk mengirim alert dan switch debouncing String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= HTTP/1.1\r\n" + "Host:" + host1 + "\r\n" + "Koneksi:tutup\r\ n\r\n"); // mengeksekusi push box api client.print(String("GET") + "/update?api_key=&field1=1 HTTP/1.1\r\n" + "Host:" + host + "\r\n " + "Koneksi:tutup\r\n\r\n"); //memperbarui penundaan pemberitahuan tamu(1000); k=1; } //=============================================================================================================// Akhir peringatan tamu//=============================================================================================================unsigned long timeout =millis(); while (client.available() ==0) { if (millis() - timeout> 5000) { Serial.println(">>> Client Timeout !"); klien.berhenti(); kembali; } } //Serial.println("menutup koneksi");}
Home_monitor_arduino.inoArduino
Kode Arduino untuk mengontrol peralatan
//Sketsa ini dalam implementasi otomatisasi rumah #include // import library serial#include//--------- --------------------------------// definisi pin//------------ -----------------------------#define Light 2 // pin 2 untuk mengontrol cahaya#define fan 3 // pin 3 untuk mengontrol fan//------------------------------------------// variables// ------------------------------------------char e;int p=0, q=0; //these variables prevent switching ON/OFF of already turned ON/OFF devicesSoftwareSerial home_monitor(10, 11); // RX, TXchar control_data; // the data transmitted over Bluetoothvoid 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
Code For ESP8266 to update humidity and temperature in thingspeak and also retrieve control information from 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 #include#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 serverfloat temp,h; //stores float value of temp and humididtyString humidity,temperature,line; //stores string value of temp and humididtyint co=0; //control the sending of Alertconst char* ssid ="SSID"; //your SSID of WIFIconst char* password ="password"; // password of Wifi//--------------------------------------------const char* host ="api.thingspeak.com";void setup() { dht.begin(); Serial.begin(115200); penundaan (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"); kembali; } 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......."); penundaan (1000); String host1="api.pushingbox.com"; client.print(String("GET ") + "/pushingbox?devid= 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=&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=&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=&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//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(); kembali; } } // 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");}

Skema


Proses manufaktur

  1. Aplikasi Otomasi Rumah
  2. Menggunakan tag RFID untuk pemantauan keamanan rumah
  3. Pemantauan Kualitas Udara Kota Cerdas Berbasis LoRa
  4. Sensor Multi Suhu
  5. Pemantauan CO2 dengan Sensor K30
  6. Alexa, Nyalakan Lampu INI:Sensor 3D Cerdas untuk Amazon Echo
  7. Sistem Penyiraman Tanaman Rumah
  8. Arduino Home Controller Diaktifkan oleh Alexa
  9. Pemantauan Suhu CERDAS untuk Sekolah
  10. Stasiun Cuaca Lokal