Isi kandungan:

Projek Sekolah IoT Philips Hue: 19 Langkah
Projek Sekolah IoT Philips Hue: 19 Langkah

Video: Projek Sekolah IoT Philips Hue: 19 Langkah

Video: Projek Sekolah IoT Philips Hue: 19 Langkah
Video: drone #shorts 2024, Julai
Anonim
Projek Sekolah IoT Philips Hue
Projek Sekolah IoT Philips Hue

Ini adalah manual yang saya tulis untuk sekolah. Ia tidak lengkap dan saya tidak pasti sama ada anda boleh menggunakannya. Pengetahuan saya tentang API adalah minimum. Kami mahu membuat cermin interaktif dengan lampu di bahagian belakang yang bertindak balas terhadap cuaca, cahaya dari luar, dll.

Saya melihat bagaimana saya dapat memprogram lampu Philips Hue dengan Arduino. Dalam ini, saya menerangkan semua langkah saya dan sejauh mana saya telah sampai. Saya belum berjaya memprogram Hue dengan Arduino tetapi saya fikir ia adalah permulaan yang baik.

Saya memerlukan ini: Arduino a hue menyalakan akaun pemaju Philips Hue

Sumber: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Langkah 1: Mulakan

Sebelum anda dapat mengakses dokumentasi API, anda perlu mendaftar sebagai pembangun. Ia percuma, tetapi anda perlu menerima terma dan syarat. Anda boleh membuatnya di sini>

Langkah 2: Aplikasi Hue

Muat turun Aplikasi Philips Hue rasmi. Sambungkan telefon anda ke rangkaian yang anda mahukan di jambatan Hue.

Langkah 3: Sambungkan Jambatan

Sambungkan jambatan anda dengan rangkaian anda dan berfungsi dengan baik. Uji bahawa aplikasi telefon pintar dapat mengawal lampu pada rangkaian yang sama. Ia mesti berada di rangkaian Wi-Fi yang sama.

Langkah 4: Alamat IP

Kemudian anda perlu menemui alamat IP jambatan di rangkaian anda. Tekan pautan untuk menyambung ke jambatan di aplikasi dan cuba mengawal lampu.

Langkah 5:

Sekiranya semuanya berfungsi, pergi ke menu tetapan dalam aplikasi. Dari pergi ke "Jambatan Saya", pergi ke "Tetapan rangkaian". Matikan togol DHCP dan anda melihat alamat IP jambatan. Perhatikan alamat IP, kemudian hidupkan semula DHCP.

Langkah 6: Debugkan Warna Anda

Debugkan Warna Anda
Debugkan Warna Anda

Semasa anda menuliskannya, anda perlu menyahpepijat Hue anda. Anda memerlukan Alamat IP untuk langkah ini. Anda mesti melayari laman web seterusnya.

/debug/clip.html

Antaramuka akan kelihatan seperti ini dalam gambar. Ini adalah asas semua lalu lintas web dan antara muka RESTful rona.

Saya mendapat maklumat ini mengenai antara muka yang tenang di laman Philips Hue.

URL: ini sebenarnya adalah alamat tempatan sumber tertentu (benda) di dalam sistem rona. Ia mungkin ringan, sekumpulan lampu atau banyak lagi perkara. Ini adalah objek yang akan anda berinteraksi dalam arahan ini.

Isi: ini adalah bahagian mesej yang menerangkan apa yang anda mahu ubah dan bagaimana. Di sini anda memasukkan, dalam format JSON, nama sumber dan nilai yang ingin anda ubah / tambah.

Kaedah: di sini anda mempunyai pilihan 4 kaedah HTTP yang boleh digunakan oleh panggilan rona.

DAPATKAN: ini adalah arahan untuk mengambil semua maklumat mengenai sumber yang dialamatkan

PUT: ini adalah perintah untuk mengubah sumber yang dialamatkan

POST: ini adalah arahan untuk membuat sumber baru di dalam sumber yang dialamatkan

DELETE: ini adalah arahan untuk menghapus sumber yang dialamatkan Respons: Di kawasan ini, anda akan melihat respons terhadap arahan anda. Juga dalam format JSON.

Langkah 7: Mari Bermula

Mari kita mulakan
Mari kita mulakan

Sekarang kami memerlukan nama pengguna yang dihasilkan secara rawak yang dibuat oleh jambatan untuk anda. Anda akan mendapatkannya dengan mengisi ini.

Masukkan URL:

/ api /

Masukkan BADAN:

dan tekan GET

Perintah ini pada dasarnya mengatakan "tolong buat sumber baru di dalam / api" (di mana nama pengguna duduk) dengan sifat berikut. Pada mulanya, anda akan mendapat ralat, dan itu kerana ia adalah langkah keselamatan Philips Hue. Dengan menekan butang mereka membuktikan bahawa anda mempunyai akses fizikal ke jambatan.

Langkah 8:

Imej
Imej

Sekarang Tekan butang di Bridge dan klik POST sekali lagi.

Sekarang anda akan mendapat nama pengguna yang dibuat oleh jambatan untuk anda.

Langkah 9: Mari Melakukan Sesuatu Dengan Lampu

Mari Lakukan Sesuatu Dengan Lampu
Mari Lakukan Sesuatu Dengan Lampu

Salin nama pengguna anda dan masukkannya ke baris berikut.

Masukkan ini ke URL anda

/ api / / lampu

Tekan GET

Anda harus mendapat respons JSON dengan semua lampu di sistem anda dan namanya.

Langkah 10:

Imej
Imej

Saya meminjam beberapa Lampu Hue dari sekolah, yang saya gunakan adalah lampu dengan id 3. Saya mahukan maklumat khusus mengenai lampu ini.

Letakkan ini di sebelah URL yang sudah anda miliki:

/ api / / lampu / 3

Tekan GET

Sekarang anda mendapat maklumat mengenai Led 3 (jika anda mempunyai nombor lain seperti 1, anda akan melihat maklumat tentang itu).

Langkah 11: Mari Kawal Cahaya

Mari Kawal Cahaya
Mari Kawal Cahaya

Anda lihat dalam "keadaan" bahawa petunjuk saya "hidup". Kami mahu mengawal cahaya dalam "keadaan".

Letakkan ini di sebelah URL yang sudah anda miliki: https:// / api / / lights / 3 / state

Masukkan baris seterusnya dalam BADAN

Tekan PUT

Sekarang lampu anda akan mati! Tukar nilai dalam badan menjadi benar dan cahaya akan menyala semula.

Langkah 12:

Sekarang semuanya berfungsi, saya mahu melakukan ini dengan Arduino saya. Saya melihat pautan yang diberikan Philips Hue untuk mengubah warna cahaya. Tetapi anda memerlukan Python untuk ini, saya tidak pernah bekerjasama dengan Python jadi saya mencari perkara lain.

Sekiranya anda ingin melihat kod ini, saya mempunyai pautan Github di sini:

github.com/bsalinas/ArduinoHue

Langkah 13:

Saya melihat bagaimana saya boleh mendapatkan maklumat dari laman web pembangun ini ke arduino saya. Selalunya saya tidak faham bahasa. Tetapi saya menemui beberapa kod di laman web dari James Bruce.

Ini adalah pautan ke laman web.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Langkah 14:

Pertama saya melihat bahawa dia menggunakan kabel Ethernet. Saya hanya mempunyai lampu Hue dan Bridge a Arduino, dan sedikit pemahaman mengenai kod. Saya mengambil masa agak lama untuk memahami kodnya, tetapi saya masih tidak memahaminya.

Saya mula-mula menambahkan perpustakaan ini untuk internet.

#sertakan

Ini untuk rangkaian anda (mestilah sama dengan lampu Hue)

const char * ssid = ""; // letakkan di sini rangkaian WiFi anda SSIDconst char * password = ""; // letakkan di sini kata laluan rangkaian WiFi anda

Ini adalah ID Jambatan anda dan nama pengguna yang diberikan jambatan anda kepada anda. (Saya tidak tahu di mana 80 bermaksud tetapi ketika saya melakukan penyelidikan saya melihat bahawa ia digunakan untuk rangkaian).

// Hue constants const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Nama pengguna Hue const int hueHubPort = 80;

// Pemboleh ubah Hue bool hueOn; // hidup / mati int hueBri; // nilai kecerahan panjang warna; // nilai hue String hueCmd; // Perintah Hue

penyangga panjang yang tidak ditandatangani = 0; // penyangga untuk penyimpanan data yang diterima tanpa tambahan yang tidak ditandatangani;

Langkah 15:

Untuk penyediaan kekosongan, saya melakukan yang terbaik untuk sambungan internet. Dalam kod ini, Arduino mencari apakah dia dapat berhubung dengan rangkaian.

batal persediaan () {Serial.begin (9600);

Bersiri.println ();

Serial.printf ("Menyambung ke% s", ssid);

WiFi.begin (ssid, kata laluan);

sementara (WiFi.status ()! = WL_CONNECTED) {

kelewatan (500);

Cetakan bersiri ("."); }

Serial.println ("bersambung"); }

Langkah 16:

Dalam gelaran James, saya melihat bahawa dia mempunyai pernyataan If and else. Tetapi itu adalah untuk kabel ethernet, jadi saya cuba meninggalkannya. Saya juga kadang-kadang cuba menyesuaikannya, tetapi saya belum tahu dengan banyak data. Beberapa perkara dalam kod yang saya fahami, dalam rentetan adalah data yang diberikan kepada lampu Hue.

gelung kosong () {

// Serangkaian empat perintah contoh, yang warna memudar dua lampu antara merah dan merah jambu. Baca dokumentasi Hue API // untuk maklumat lebih lanjut mengenai arahan tepat yang akan digunakan, tetapi perhatikan bahawa tanda petikan mesti dilarikan.

String command = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" peralihan masa / ":" + String (rawak (15, 25)) + "}"; setHue (1, perintah);

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" peralihan masa / ":" + Rentetan (rawak (15, 25)) + "}"; setHue (2, arahan);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" transtimetime / ":" + Rentetan (rawak (15, 25)) + "}"; setHue (1, arahan);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" transtimetime / ":" + Rentetan (rawak (15, 25)) + "}"; setHue (2, arahan);

}

Langkah 17:

Kod seterusnya adalah Boolean, tetapi di Arduino anda harus menulis Bool. Pada mulanya, saya mendapat banyak kesilapan kerana kata klien. Oleh itu, saya melihatnya dan melihat bahawa beberapa kod menggunakan baris "WifiClient client;". Oleh itu, saya menggunakannya dan ia berjaya.

Dalam pernyataan if anda sering melihat client.print. Sekiranya anda melihat kodnya, anda akan melihat bahawa URL yang anda masukkan lebih awal dibahagikan kepada beberapa bahagian. Sekarang masukkan kod anda sendiri. Saya terpaksa memilih lampu LED ke-3 saya.

/ * setHue () adalah fungsi perintah utama kami, yang perlu diteruskan dengan angka ringan dan * string perintah yang diformat dengan betul dalam format JSON (pada dasarnya susunan gaya Javascript pemboleh ubah * dan nilai. Ia kemudian membuat permintaan HTTP PUT sederhana untuk Jambatan di IP yang ditentukan pada awalnya. * /

bool setHue (int lightNum, arahan String) {

Pelanggan WiFiClient;

jika (client.connect (hueHubIP, hueHubPort)) {

semasa (client.connected ()) {

client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ lampu /"); client.print (lightNum); // hueLight berasaskan sifar, tambahkan 1 client.println ("3 / state"); // di sini saya menukar nama rona dan stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Panjang Kandungan:"); client.println (command.length ()); client.println ("Jenis Kandungan: teks / dataran; charset = UTF-8"); pelanggan.println (); // garis kosong sebelum body client.println (arahan); // Perintah Hue

} pelanggan.stop (); kembali benar; // arahan dilaksanakan}

yang lain kembali palsu; // arahan gagal}

Langkah 18:

Pada Boolean kedua, saya melakukan perkara yang sama dengan menukar beberapa perkataan. Saya memuat naiknya untuk melihat sama ada ia berfungsi.

/ * Fungsi pembantu sekiranya logik anda bergantung pada keadaan cahaya semasa. * Ini menetapkan sejumlah pemboleh ubah global yang dapat anda periksa untuk mengetahui apakah lampu saat ini menyala atau tidak * dan rona dll. Tidak diperlukan hanya untuk mengirimkan perintah * /

bool getHue (int lightNum) {

Pelanggan WiFiClient;

jika (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET / api /"); client.print (hueUsername); client.print ("/ lampu /"); client.print (lightNum); client.println ("3 / negeri"); client.print ("Host:"); client.println (hueHubIP); client.println ("Jenis kandungan: aplikasi / json"); client.println ("jaga-hidup"); pelanggan.println ();

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "benar"); // jika lampu menyala, tetapkan pemboleh ubah ke true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // tetapkan pemboleh ubah kepada nilai kecerahan client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // tetapkan pemboleh ubah ke hue nilai break; // belum menangkap atribut cahaya lain}} client.stop (); kembali benar; // ditangkap pada, bri, hue} lain kembali palsu; // ralat membaca, bri, rona}

Langkah 19:

Imej
Imej

Saya rasa saya dapat membuat hubungan dengan Philips Hue. Saya menerima maklumat tetapi ia masih perlu digunakan.

Malangnya, ini melampaui apa yang saya dapat kodkan. Sekiranya anda tahu jawapannya, atau jika ada kesalahan sebenar yang perlu diperbetulkan, saya ingin mendengarnya.:-)

Disyorkan: