Mündəricat:
- Addım 1: təchizat
- Addım 2: Uzaqdan Siqnal
- Addım 3: Noderedə göndərmək üçün Kod yazmaq
- Addım 4: Nodered bir axın yaratmaq
- Addım 5: İsteğe bağlı Alexa Pause Chromecast
Video: Uzaqdan idarəetmə ilə Chromcast -ı dayandırın: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Məndə Logitech harmoniya pultu var və moruq pi üzərində Home köməkçisini işə salıram.
Pultumdan chromecast -ı durdurmaq istəyirdim, amma bunu hdmi vasitəsilə dəstəkləməyən köhnə bir televizorum var. Fikrim o zaman ir siqnalını tutmaq və fasilə vermək üçün NodeMcu istifadə etmək idi.
İşə götürə bilmirsinizsə və ya suallarınız varsa, aşağıda şərh yazın
Addım 1: təchizat
Lazım olan avadanlıqlar:
Nodemcu (https://www.ebay.com/sch/i.html?_from=R40&_trksid=…
İr qəbuledicisi (məsələn:
dupont telləri
Mikro usb kabeli (güc nodemcu)
Logitech Harmony -hub istifadə edirəm
Mənim yanaşmam üçün hass.io quraşdırılmış və nömrələnmiş bir moruq pi ehtiyacınız var. Ev köməkçisindən başqa bir şey istifadə edirsinizsə, əşyaları özünüz uyğunlaşdırmalısınız.
Bura girməyəcəyim üçün Arduino IDE -də Nodemcu istifadə etməyi bacarmalısan
Addım 2: Uzaqdan Siqnal
Etdiyim yol, istifadə etmədiyim uzaqdan bir siqnalın harmoniya pultuna kopyalanması idi.
Panasonic TV modeli TXL32C3E üçün pultdan istifadə etdim, çünki birinci mərtəbədəki avadanlıqlarıma mane olmur. Yuxarıda olduğum bir televizor.
Uyğunluqdan istifadə etmirsinizsə, bunu atlaya bilərsiniz.
Siqnal tapmaq üçün bu eskizdən istifadə etdim:
/ * * IRremoteESP8266: IRrecvDumpV2 - IRrecv ilə IR kodlarının tullantı detalları * IR detektoru/demodulyatoru RECV_PIN girişinə qoşulmalıdır. * * Müəlliflik hüququ 2009 Ken Shirriff, https://arcfn.com * Müəlliflik hüququ 2017 David Conran * * Nümunə dövrə diaqramı: * https://arcfn.com * * Dəyişikliklər: * Versiya 0.3 Noyabr 2017 * - A/C dəstəyi bəzi protokollar üçün deşifr. * Versiya 0.2 Aprel, 2017 * - Məlumatların bir nüsxəsini deşifrə edin, beləliklə daha sürətli çəkməyə başlaya bilərik * səhv tutma ehtimalını azaldır. * Ken Shirriff'in IrsendDemo Versiyası 0.1 İyul 2009, */ əsasında
#ifndef UNIT_TEST
#Daxil edin #endif #daxil edin #daxil edin #daxil edin #DECODE_AC #include #include #include #include #include #endif // DECODE_AC
// ==================== TUNEABLE PARAMETRALARININ başlaması ===================
// IR detektoru/demodulyatoru GPIO pin 14 -ə qoşulur // məs. D5 NodeMCU lövhəsində. #RECV_PIN 14 təyin edin
// Serial əlaqə baud dərəcəsi.
// yəni Status mesajı bu baud sürətində PC -yə göndəriləcək. // Mesajları qaçıracağınız və // digər problemlərə səbəb olacağınız üçün 9600 kimi yavaş sürətlərdən qaçmağa çalışın. 115200 (və ya daha sürətli) tövsiyə olunur. // QEYD: Serial Monitorunuzu eyni sürətə qoyduğunuzdan əmin olun. #BAUD_RATE 115200 təyin edin
// Bu proqram xüsusi məqsədli bir ələ keçirmə/dekoder olduğundan daha böyük birindən istifadə edək
// normal tampondan daha çox Kondisionerin uzaq kodlarını idarə edə bilərik. #CAPTURE_BUFFER_SIZE 1024 təyin edin
// TIMEOUT Nr. milli-Saniyədən artıq olmayan məlumatların nəzərdən keçirilməsi a
// mesaj bitdi. // Bu parametr maraqlı bir alverdir. Zaman aşımı nə qədər uzun olarsa, ələ ala biləcəyi bir mesaj daha mürəkkəbdir. məs. Bəzi cihaz protokolları Kondisionerin pultları kimi bir -birinin ardınca // birdən çox mesaj paketi göndərəcək. // Kondisioner protokollarında // paketlər arasında çox vaxt xeyli boşluq (20-40+ms) olur. // Böyük bir zaman aşımı dəyərinin mənfi tərəfi daha az mürəkkəb protokollardır // uzaqdan idarəetmə düyməsini basıldıqda birdən çox mesaj göndərin. // aralarındakı boşluq çox vaxt 20+ms civarındadır. Bu, xam məlumatların 2-3+ // birdən çox tutulduğu üçün lazım olduğundan 2-3 dəfə çox olması ilə nəticələnə bilər. Aşağı bir zaman aşımı dəyərinin təyin edilməsi bunu həll edə bilər. // Beləliklə, istifadə etdiyiniz vəziyyət üçün ən yaxşı TIMEOUT dəyərini seçmək // olduqca nüanslıdır. Uğurlar və xoşbəxt ov. // QEYD: MAX_TIMEOUT_MS -dən çox olmamalıdır. Tipik olaraq 130 ms. #DECODE_AC #deutine TIMEOUT 50U // Bəzi A/C cihazlarının protokollarında ~ 40ms boşluqlar var. // məs. Kelvinator // Bu böyük dəyər bəzi protokolların təkrarlarını uda bilər #başqa // DECODE_AC #define TIMEOUT 15U // Bir çox təkrarları udmaqla yanaşı əksər mesajlara uyğundur. #endif // DECODE_AC // Alternativlər: // #define TIMEOUT 90U // XMP-1 və bəzi aircon // vahidləri kimi böyük boşluqları olan mesajlara uyğundur, lakin səhvən təkrarlanan mesajları // rawData çıxışında uda bilər. // #define TIMEOUT MAX_TIMEOUT_MS // Bu, hal -hazırda icazə verilən // maksimumu təyin edəcək. Bu yüksək dəyərlər problemlidir // çünki əksər mesajların təkrarlandığı tipik sərhəddir //. // məs. Bir mesajın deşifrini dayandıracaq və // onu dəqiq olaraq // növbəti mesajın ötürülmə ehtimalının // vaxtında seriala göndərməyə başlayacaq və əldən verə bilər.
// Əslində maraqlandığımız ən kiçik ölçülü "BİLİNMƏZ" mesaj paketlərini təyin edin.
// Bu dəyər, IR mesajı // səs-küyünün əsl mesaj olaraq yanlış pozitiv aşkarlanma nisbətini azaltmağa kömək edir. Zaman aşımı dəyərinin artması ilə bir mesaj olaraq arxa planda İR səs -küyünün aşkarlanma şansı // artır. (Yuxarıya baxın) // Bu mesajı çox böyük qoymağın dezavantajı, bu kitabxananın hələ də deşifr etmədiyi protokollar üçün bəzi etibarlı // qısa mesajları əldən verməyinizdir. // // Heç bir şey göndərməməli olduğunda təsadüfi qısa BİLİNMƏZ mesajlar çox alsanız daha yüksək təyin edin //. // Quruluşunuzun işlədiyinə əmin olsanız aşağı salın, ancaq cihazınızdan mesajlar görünmür //. (məsələn, digər IR uzaqdan idarəetmə cihazları işləyir.) // DİQQƏT: BİLİNMƏYƏN aşkarlanmanı effektiv şəkildə söndürmək üçün bu dəyəri çox yüksək olaraq təyin edin. #define MIN_UNKNOWN_SIZE 12 // ===================== TUNEABLE PARAMETRELERİN sonu ====================
// Daha tam tutma əhatə dairəsi üçün qənaət bufer xüsusiyyətini yandırın.
IRrecv irrecv (RECV_PIN, CAPTURE_BUFFER_SIZE, TIMEOUT, true);
decode_results nəticələri; // Nəticələri saxlamaq üçün bir yerdə
// Mümkünsə A/C mesajının insan tərəfindən oxunan vəziyyətini göstərin.
void dumpACInfo (decode_results *results) {String description = ""; #if DECODE_DAIKIN if (results-> decode_type == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (nəticələr-> vəziyyət); təsvir = ac.toString (); } #endif // DECODE_DAIKIN #if DECODE_FUJITSU_AC if (results-> decode_type == FUJITSU_AC) {IRFujitsuAC ac (0); ac.setRaw (nəticələr-> vəziyyət, nəticələr-> bitlər / 8); təsvir = ac.toString (); } #endif // DECODE_FUJITSU_AC #if DECODE_KELVINATOR if (results-> decode_type == KELVINATOR) {IRKelvinatorAC ac (0); ac.setRaw (nəticələr-> vəziyyət); təsvir = ac.toString (); } #endif // DECODE_KELVINATOR #if DECODE_TOSHIBA_AC if (results-> decode_type == TOSHIBA_AC) {IRToshibaAC ac (0); ac.setRaw (nəticələr-> vəziyyət); təsvir = ac.toString (); } #endif // DECODE_TOSHIBA_AC #if DECODE_MIDEA if (results-> decode_type == MIDEA) {IRMideaAC ac (0); ac.setRaw (nəticələr-> dəyər); // Midea dövlət əvəzinə dəyərdən istifadə edir. təsvir = ac.toString (); } #endif // DECODE_MIDEA // Mesajın insan tərəfindən oxunan bir təsviri varsa, göstərin. if (description! = "") Serial.println ("Mesg Desc.:" + description); }
// Kod bölməsi işə salındıqda yalnız bir dəfə işləyir.
boş quraşdırma () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); gecikmə (500); // Serial bağlantının qurulmasını bir az gözləyin.
#DECODE_HASH
// Minimumdan az olan açma və ya söndürmə mesajlarına məhəl qoymayın. irrecv.setUnknownThreshold (MIN_UNKNOWN_SIZE); #endif // DECODE_HASH irrecv.enableIRIn (); // Alıcını işə salın}
// Kodun təkrarlanan bölməsi
// void loop () {// IR kodunun alındığını yoxlayın. if (irrecv.decode (& nəticələr)) {// Xam bir zaman damgası göstərin. uint32_t indi = milis (); Serial.printf ("Zaman damgası: %06u. %03u / n", indi / 1000, indi %1000); if (results.overflow) Serial.printf ("XƏBƏRDARLIQ: IR kodu tampon üçün çox böyükdür (> = %d)" ", CAPTURE_BUFFER_SIZE); // Tapdıqlarımızın əsas çıxışını göstərin. Serial.print (resultToHumanReadableBasic (& nəticələr)); dumpACInfo (və nəticələr); // Əlavə Kondisioner məlumatımız varsa göstərin. gəlir (); // WDT -ni göndərin, çünki mətn çıxışı bir müddət çəkə bilər.
// Mesajın çəkildiyi kitabxana versiyasını göstərin.
Serial.print ("Kitabxana: v"); Serial.println (_IRREMOTEESP8266_VERSION_); Serial.println ();
// Nəticənin RAW vaxtı məlumatını çıxarın.
Serial.println (resultToTimingInfo (& nəticələr)); gəlir (); // WDT -ni qidalandırın (yenidən)
// Nəticələri mənbə kodu kimi çıxarın
Serial.println (resultToSourceCode (& nəticələr)); Serial.println (""); // Girişlər arasındakı boş xətt (); // WDT -ni yayımlayın (yenidən)}}
Bu eskiz yükləndikdə və serial monitor açılarkən işlədildikdə düyməni basmaq üçün kod çıxacaq (şəkilə bax)
Daha sonra istifadə etmək üçün istifadə etmək istədiyiniz kodları yazın. İstifadə etmək istədiyim düymələr üçün əldə etdiyimi qeyd etmək üçün excel istifadə etdim (şəklə bax)
Panasonic pultundan fasilə siqnalı göndərmək üçün Netflix fəaliyyətimdəki düymələri düzəltdim.. (şəklə bax)
Addım 3: Noderedə göndərmək üçün Kod yazmaq
#ifndef UNIT_TEST #daxildir #endif #include
#daxil edin
#daxil edin
#daxil edin
#daxil edin
#daxil edin
const char* ssid = ""; // SSID -ni daxil edin char* password = ""; // Şifrəni bura daxil edin const char *host = ""; // IP ünvanı #define USE_SERIAL Serial ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); decode_results nəticələri; void setup () {irrecv.enableIRIn (); // Alıcını işə salın USE_SERIAL.begin (115200); // USE_SERIAL.setDebugOutput (doğru); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();
üçün (uint8_t t = 4; t> 0; t--) {
USE_SERIAL.printf ("[SETUP] %D… / n", t) gözləyin; USE_SERIAL.flush (); gecikmə (1000); } WiFi rejimi (WIFI_STA); WiFiMulti.addAP (ssid, parol); } void loop () {if (irrecv.decode (& results)) {
// Bu siqnal dəyərini aldığınız üçün dəyişdirin
əgər (results.value == 0x40040D00606D) {USE_SERIAL.println ("fasilə siqnalı alındı"); arvad (fasilə); gecikmə (1000);
} if (results.value == 0x400401007273) {
USE_SERIAL.println ("əvvəlki");
həyat yoldaşı ("əvvəlki"); gecikmə (1000); } if (results.value == 0x40040100F2F3) {USE_SERIAL.println ("next"); həyat yoldaşı ("sonrakı"); gecikmə (1000); }
irrecv. resume (); // Növbəti dəyəri qəbul edin} gecikmə (100); } void wifisend (String data) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] başlayır… / n"); // faciə serverini və urlini konfiqurasiya edin http.begin ("https:// [user]: [pass]@[ip]: [port]/chromecastpause? data =" + data); USE_SERIAL.print ("[HTTP] GET… / n"); // əlaqəyə başlayın və HTTP başlığını göndərin int httpCode = http. GET (); // (httpCode> 0) {// HTTP başlığı göndərildikdə və Server cavab başlığı USE_SERIAL.printf ("[HTTP] GET… kodu: %d / n", httpCode) işlədildikdə // httpCode səhv olarsa mənfi olar;
// fayl serverdə tapıldı
if (httpCode == HTTP_CODE_OK) {String yükü = http.getString (); USE_SERIAL.println (faydalı yük); }} başqa {USE_SERIAL.printf ("[HTTP] GET… alınmadı, səhv: %s / n", http.errorToString (httpCode).c_str ()); } http.end (); gecikmə (100); }}
Bu mənim nodemcu -da istifadə etdiyim koddur. Bu kitabxanaları quraşdırmalısınız.
Serial monitordan istifadə edərək test edə bilərsiniz və cavabı görmək üçün koda əlavə etdiyiniz uzaqdan düymələri basa bilərsiniz.
Satırda:
http.begin ("https:// [user]: [pass]@[ip]: [port]/chromecastpause? data =" + data);
[İstifadəçini] istifadəçinizə dəyişdirməlisiniz və s. Mötərizəsiz. Mötərizədə cadı sahələrini dəyişdirmək göstərilir.
Hərəkətimizi düyməli şəkildə qurana qədər bu xətt də işləməyəcək.
Addım 4: Nodered bir axın yaratmaq
Başlanğıcda qeyd edildiyi kimi, hass.io nodered ilə istifadə edirəm. Fərqli bir quraşdırma qurarsanız, bunu fərqli etməlisiniz! Şəkildə görə bilərsiniz ki, bir düyməyə basıldıqda onun ayıklama pəncərəsində göstərilir …
Dəyişiklik yükü qovşağı, ehtimal ki, əvvəlki addımdakı məlumatlardan fərqli bir şey seçsəydim, atlana bilərdi. İstifadə etdiyim keçid qovşağı fasilədə daha böyükdür, ancaq radio stansiyaları üçün chromecast istifadə etmək üçün daha çox ir siqnalı əlavə edə bilərəm.
Yalnız fasilə vermək üçün digər şəkildəki axını istifadə edə bilərsiniz.
[{"id": "e6440c30.4a35a", "type": "http in", "z": "869ceb74.0275c8", "name": "", "url": "chromecastpause", "method": "get", "yüklə": false, "swaggerDoc": "", "x": 133, "y": 98, "teller":
İstifadəçi adı və url -i buradan sildim, buna görə onu redaktə etməyiniz lazım ola bilər.
fasilə verməkdən daha çox şeyə reaksiya vermək istəyirsinizsə, keçid düyünü əlavə edin (məsələn, şəkilə baxın)
Fasilə üçün ev köməkçisi qovşağında:
ad: pauza chromecastdomain: media_playerService: media_play_pausedata: {"entity_id": "media_player. [chromecast'ınızı burda]"}
Növbəti mahnı üçün bu qovluğu kopyalayın və xidməti redaktə edin: media_next_track və adını: next chromecast
Addım 5: İsteğe bağlı Alexa Pause Chromecast
Chromecast -ı dayandırmaq üçün isteğe bağlı alexa əmri əlavə edin:
Burada seçimlər var.. Chromecast -ı durduran pause chromecast adlı bir alexa nodu edə bilərsiniz.
ya da cari harmoniya fəaliyyətini yoxlayan və buna bağlı olaraq fasilə verən bir duraklama tv edə bilərsiniz.
Bunu bura daha sonra əlavə edəcəm..
Tövsiyə:
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: 7 Addım (Şəkillərlə)
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: ESP8266 - Suvarma uzaqdan idarə və tərəvəz bağları, çiçək bağları və çəmənlər üçün vaxtı ilə. ESP-8266 sxemindən və suvarma qurğusu üçün hidravlik / elektrikli klapandan istifadə edir
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə - 433mhz ilə HT12E və HT12D istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: 5 addım
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə | HT12E və HT12D -dən 433mhz istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: Bu təlimatda sizə HT12E kodlu 433mhz ötürücü qəbuledici modulu istifadə edərək RADIO uzaqdan idarə etməyi göstərəcəyəm. HT12D kod deşifratoru IC. Bu təlimatda çox ucuz komponentləri istifadə edərək məlumat göndərə və ala bilərsiniz: HT
Amazon Fire Uzaqdan Uzaqdan TV Uzaqdan sürüşdürün: 3 Addım (Şəkillərlə birlikdə)
Amazon Fire Uzaqdan Uzaqdan TV Uzaqdan Sürüşdürün: Oh Amazon, Fire TV'niz çox gözəldir, niyə bizə pultunuzda səs idarəetməsini vermədiniz? Yaxşı ki, Amazon -da 5 dollardan aşağı qiymətə bu sevimli kiçik uzaqdan, güc, səssiz satın ala bilərsiniz. , həcmi və hamısı kiçik bir paketdə. 3d printerə daxil edin
Adi Uzaqdan İdarəetmə Dəsti Dörd Kanallı RC Oyuncaq Uzaqdan İdarəetmə Sisteminə Çevrildi: 4 Addım
Adi Uzaqdan İdarəetmə Dəsti Dörd Kanallı RC Oyuncaq Uzaqdan İdarəetmə Sisteminə Çevrildi: 如何 通用 遥控 器 套件 转换 为 玩具 中 中 遥控 采用 采用 6 6 6 6 6 6 6 6 2262 和 2272 和 433 模块 构建 构建改造 方法 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照
IR Uzaqdan Uzaqdan Uzaqdan Çevirin: 9 Addım (Şəkillərlə birlikdə)
IR Uzaqdan Uzaqdan Uzaqdan RF -yə çevirin: Bugünkü Təlimat kitabında, ümumi bir RF modulunu mikro nəzarətçi olmadan necə istifadə edə biləcəyinizi sizə göstərəcəyəm ki, nəticədə hər hansı bir cihazın IR uzaqdan idarəetmə cihazını RF -yə çevirə biləcəyiniz bir layihə hazırlayaq. Uzaqdan. Çevirmənin əsas üstünlüyü