Բովանդակություն:
- Քայլ 1: Սարքավորում
- Քայլ 2: Հեռակառավարման ազդանշան
- Քայլ 3. Nodered- ին ուղարկելու կոդը գրելը
- Քայլ 4: Ստեղծեք հոսք Nodered- ում
- Քայլ 5. Ընտրովի Alexa- ն դադարեցրեք Chromecast- ը
Video: Դադարեցնել Chromcast- ը հեռակառավարմամբ `5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ես ունեմ Logitech ներդաշնակության հեռակառավարիչ և գործարկում եմ Home օգնականը ազնվամորու pi- ով:
Ես ուզում էի կարողանալ դադարեցնել chromecast- ը իմ հեռակառավարման վահանակից, բայց ես ունեմ հին հեռուստացույց, որը դա չի աջակցում hdmi- ի միջոցով: Իմ Գաղափարն այն էր `օգտագործել NodeMcu- ն` ir ազդանշանը բռնելու և դադար տալու համար:
Եթե չեք կարողանում այն գործի դնել կամ հարցեր ունեք, մեկնաբանեք ստորև
Քայլ 1: Սարքավորում
Անհրաժեշտ սարքավորումներ.
Նոդեմկու (https://www.ebay.com/sch/i.html?_from=R40&_trksid=…
Առանց ընդունիչ (օրինակ ՝ սա ՝
dupont լարերը
Միկրո USB մալուխ (հոսանքի նոդեմկու)
Ես օգտագործում եմ Logitech Harmony -հանգույց
Իմ մոտեցման համար ձեզ պետք է ազնվամորի պի hass.io- ով տեղադրված և Nodered: Ես չեմ գնա այստեղ homeassistant իրեր ստեղծելու: Եթե դուք օգտագործում եք այլ բան, քան տնային օգնականը, ինքներդ պետք է հարմարեցնեք իրերը:
Դուք պետք է կարողանաք օգտագործել Nodemcu- ն Arduino IDE- ում, քանի որ ես դրան չեմ անդրադառնա այստեղ
Քայլ 2: Հեռակառավարման ազդանշան
Ինչպես ես դա արեցի, դա հեռակառավարման ազդանշանի պատճենումն էր, որը ես չեմ օգտագործում ներդաշնակության մեջ:
Ես օգտագործել եմ Panasonic հեռուստատեսության TXL32C3E մոդելի հեռակառավարման վահանակը, քանի որ դա չի խանգարում իմ առաջին հարկի իմ սարքավորումներին: Դա այն հեռուստացույցն է, որը ես ունեմ վերևում:
Եթե ներդաշնակություն չեք օգտագործում, կարող եք բաց թողնել սա:
Այսպիսով, ազդանշանը գտնելու համար ես օգտագործեցի այս ուրվագիծը.
/ * * IRremoteESP8266: IRrecvDumpV2 - IR կոդերի հետ IR կոդերի մանրամասների * IR IR դետեկտոր/դեմոդուլատոր պետք է միացված լինի մուտքային RECV_PIN- ին: * * Հեղինակային իրավունք 2009 Քեն Շիրիֆ, https://arcfn.com * Հեղինակային իրավունք 2017 Դեյվիդ Կոնրան * * Շրջանային սխեմայի օրինակ ՝ * https://arcfn.com * * Փոփոխություններ. * Տարբերակ 0.3 Նոյեմբեր, 2017 * - Աջակցություն օդորակման համար որոշ պրոտոկոլների վերծանում: * Տարբերակ 0.2, 2017 թ. Ապրիլ * - Վերծանեք տվյալների պատճենից, որպեսզի մենք կարողանանք ավելի արագ գրավել ՝ դրանով իսկ նվազեցնելով սխալների հավանականությունը: * Հիմնված է Քեն Շիրիֆի IrsendDemo տարբերակի վրա, 0.1 հուլիսի, 2009 թ., */
#ifndef UNIT_TEST
#ներառել #ավարտել #ներառել #ներառել #ներառել #եթե ՏԵECԵԿԱԴՐԵԼ_ԱՀ #ներառել #ներառել #ներառել #ներառել #ներառել #ավարտել // ՏԵԽԱՆԱԴՐԵԼ_ՀԱԿ
// ==================== սկիզբը TUNEABLE PARAMETERS =====================
// IR դետեկտոր/դեմոդուլատոր միացված է GPIO կապին 14 // օրինակ. D5 NodeMCU տախտակի վրա: #սահմանեք RECV_PIN 14
// Սերիական կապի բաուդ փոխարժեքը:
// այսինքն, կարգավիճակի հաղորդագրությունը կուղարկվի համակարգչին այս արագությամբ: // Փորձեք խուսափել 9600 -ի նման դանդաղ արագություններից, քանի որ բաց կթողնեք հաղորդագրությունները և // այլ խնդիրներ կառաջացնեք: Խորհուրդ է տրվում 115200 (կամ ավելի արագ): // EԱՆՈԹՈԹՅՈՆ. Համոզվեք, որ ձեր սերիական մոնիտորը նույն արագության վրա եք դրել: #սահմանեք BAUD_RATE 115200
// Քանի որ այս ծրագիրը հատուկ նշանակության գրավում/ապակոդավորում է, եկեք օգտագործենք ավելի մեծ
// քան սովորական բուֆերը, որպեսզի մենք կարողանանք կարգավորել օդորակիչի հեռակառավարման կոդերը: #սահմանել CAPTURE_BUFFER_SIZE 1024
// TIMEOUT- ը թիվն է միլիարդ վայրկյան ոչ ավել տվյալների նախքան հաշվի առնենք ա
// հաղորդագրությունն ավարտվեց: // Այս պարամետրը հետաքրքիր փոխզիջում է: Որքան երկար է ընդմիջումը, այնքան // բարդ հաղորդագրություն կարող է այն գրավել: օրինակ Սարքի որոշ արձանագրություններ արագորեն հաջորդաբար կուղարկեն // բազմաթիվ հաղորդագրությունների փաթեթներ, օրինակ ՝ օդորակիչի հեռակառավարման վահանակը: // Air Coniditioner արձանագրությունները հաճախ ունենում են զգալի բաց (20-40+ms) // փաթեթների միջև: // Մեծ ընդմիջման արժեքի բացասական կողմը շատ ավելի քիչ բարդ արձանագրություններ են // ուղարկել բազմաթիվ հաղորդագրություններ, երբ հեռակառավարման կոճակը պահված է: // դրանց միջև եղած բացը հաճախ նաև 20+ms է: Սա կարող է հանգեցնել նրան, որ հում տվյալները 2-3+ // անգամ ավելի մեծ լինեն, քան անհրաժեշտ է, քանի որ այն գրավել է 2-3+ հաղորդագրություն մեկ // գրավման մեջ: Timeամկետի ցածր արժեք սահմանելը կարող է լուծել դա: // Այսպիսով, ձեր օգտագործման կոնկրետ գործի համար TIMEOUT- ի լավագույն արժեքը // բավականին նրբերանգ է: Հաջողություն և երջանիկ որս: // ՆՇՈՄ. Մի գերազանցեք MAX_TIMEOUT_MS- ը: Սովորաբար 130 մմ #if DECODE_AC #սահմանել IMEԱՄԱՆԱԿԸ 50U // Որոշ օդորակման համակարգեր ունեն 40 մլն ֆունտ ստեռլինգ իրենց արձանագրությունների բացեր: // օրինակ Kelvinator // Այս մեծ արժեքը կարող է կուլ տալ որոշ արձանագրությունների կրկնություններ #endif // DECODE_AC // այլընտրանքներ. // #սահմանել TIMEOUT MAX_TIMEOUT_MS // Սա այն կդարձնի մեր ներկայումս թույլատրված // առավելագույնը: Այս բարձր արժեքները խնդրահարույց են // որովհետև դա մոտավորապես բնորոշ սահման է // որտեղ կրկնվում են հաղորդագրությունների մեծ մասը: // օրինակ Այն կդադարեցնի հաղորդագրության վերծանումը և // կսկսի այն ուղարկել սերիալ ճշգրիտ // այն ժամանակ, երբ հավանական է, որ հաջորդ հաղորդագրությունը // կփոխանցվի և կարող է բաց թողնել այն:
// Սահմանեք ամենափոքր չափի «ԱՆKԱՆՈԹ» հաղորդագրությունների փաթեթները, որոնք մենք իրականում մտածում ենք:
// Այս արժեքը օգնում է նվազեցնել IR ֆոնի կեղծ-դրական հայտնաբերման արագությունը // աղմուկը որպես իրական հաղորդագրություններ: Ֆոնային IR աղմուկի հայտնաբերման հավանականությունը // որպես հաղորդագրություն մեծանում է TIMEOUT արժեքի երկարությամբ: (Տես վերը) // Այս հաղորդագրությունը չափազանց մեծ դնելու բացասական կողմն այն է, որ կարող եք բաց թողնել որոշ վավեր // կարճ հաղորդագրություններ այն արձանագրությունների համար, որոնք այս գրադարանը դեռ չի վերծանում: // // Ավելի բարձր դարձրեք, եթե ստանաք բազմաթիվ պատահական կարճ ԱՆՀԱՅՏ հաղորդագրություններ, երբ ոչինչ // չպետք է ուղարկի հաղորդագրություն: // Տեղադրեք ավելի ցածր, եթե վստահ եք, որ ձեր կարգավորումը աշխատում է, բայց այն չի տեսնում հաղորդագրություններ // ձեր սարքից: (օրինակ ՝ IR այլ հեռակառավարման վահանակներ են աշխատում): // EԱՆՈԹՈ:ԹՅՈՆ. Նշեք այս արժեքը շատ բարձր `արդյունավետորեն ԱՆՀԱՅՏ հայտնաբերումը անջատելու համար: #սահմանել MIN_UNKNOWN_SIZE 12 // =========================
// Օգտագործեք միացրեք պահելու բուֆերային հնարավորությունը ՝ գրավման ավելի ամբողջական ծածկույթի համար:
IRrecv irrecv (RECV_PIN, CAPTURE_BUFFER_SIZE, TIMEOUT, true);
decode_results results; // Արդյունքները պահելու տեղ
// Displayույց տվեք օդորակման հաղորդագրության մարդկային ընթերցվող վիճակը, եթե կարող ենք:
void dumpACInfo (decode_results *results) {String description = ""; #if DECODE_DAIKIN if (results-> decode_type == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (արդյունքներ-> վիճակ); նկարագրություն = ac.toString (); } #endif // DECODE_DAIKIN #եթե DECODE_FUJITSU_AC եթե (արդյունքներ-> decode_type == FUJITSU_AC) {IRFujitsuAC ac (0); ac.setRaw (արդյունքներ-> վիճակ, արդյունքներ-> բիթեր / 8); նկարագրություն = ac.toString (); } #endif // DECODE_FUJITSU_AC #if DECODE_KELVINATOR if (results-> decode_type == KELVINATOR) {IRKelvinatorAC ac (0); ac.setRaw (արդյունքներ-> վիճակ); նկարագրություն = ac.toString (); } #endif // DECODE_KELVINATOR #եթե DECODE_TOSHIBA_AC եթե (արդյունքներ-> decode_type == TOSHIBA_AC) {IRToshibaAC ac (0); ac.setRaw (արդյունքներ-> վիճակ); նկարագրություն = ac.toString (); } #endif // DECODE_TOSHIBA_AC #if DECODE_MIDEA if (results-> decode_type == MIDEA) {IRMideaAC ac (0); ac.setRaw (արդյունքներ-> արժեք); // Midea- ն պետության փոխարեն օգտագործում է արժեք: նկարագրություն = ac.toString (); } #endif // DECODE_MIDEA // Եթե մենք ստացել ենք մարդու համար ընթերցվող հաղորդագրության նկարագրություն, ցուցադրեք այն: եթե (նկարագրություն! = "") Serial.println ("Mesg Desc.:" + նկարագրություն); }
// Կոդի հատվածը գործարկվում է միայն մեկ անգամ գործարկման ժամանակ:
void setup () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); ուշացում (500); // Մի փոքր սպասեք, մինչև սերիական կապը հաստատվի:
#եթե ՏԵ DԱԴՐԵԼ_ՀԱՇ
// Անտեսել հաղորդագրությունները նվազագույնից ցածր կամ միացված իմպուլսներով: irrecv.setUnknownThreshold (MIN_UNKNOWN_SIZE); #ավարտի // Սկսեք ընդունիչը}
// Կոդի կրկնվող բաժինը
// void loop () {// Ստուգեք, արդյոք IR կոդը ստացվել է: if (irrecv.decode (& results))) {// Displayուցադրել կոպիտ ժամանակային նշան: uint32_t այժմ = millis (); Serial.printf ("estամկետային նշան ՝ %06u. %03u / n", այժմ / 1000, այժմ %1000); if (results.overflow) Serial.printf ("ARԳՈՇԱՈՄ. IR կոդը չափազանց մեծ է բուֆերի համար (> = %d)." "Այս արդյունքին չպետք է վստահել, մինչև այն չլուծվի:" "Խմբագրել և մեծացնել CAPTURE_BUFFER_SIZE- ը: / n ", CAPTURE_BUFFER_SIZE); // Displayուցադրել մեր գտածի հիմնական ելքը: Serial.print (resultToHumanReadableBasic (& արդյունքներ)); dumpACInfo (& արդյունքներ); // Displayուցադրել ցանկացած լրացուցիչ օդորակման տեղեկատվություն, եթե այն ունենք: եկամտաբերություն (); // Կերակրեք WDT- ն, քանի որ տեքստի ելքը կարող է տևել որոշ ժամանակ:
// Displayուցադրել գրադարանի տարբերակը, որի հետ հաղորդագրությունը գրված է:
Serial.print («Գրադարան. V»); Serial.println (_IRREMOTEESP8266_VERSION_); Serial.println ();
// Արդյունքի RAW ժամանակային տեղեկատվության ելք:
Serial.println (resultToTimingInfo (& արդյունքներ)); եկամտաբերություն (); // Կերակրեք WDT (կրկին)
// Արդյունքները թողնել որպես սկզբնական կոդ
Serial.println (resultToSourceCode (& արդյունքներ)); Serial.println (""); // Գրառումների եկամտաբերության միջև դատարկ գիծ (); // Կերակրեք WDT (կրկին)}}
Երբ այս էսքիզը վերբեռնվի և աշխատի սերիական մոնիտորով, այն դուրս կբերի կոճակի սեղմման ծածկագիրը (տես նկարը)
Գրեք այն ծածկագրերը, որոնք ցանկանում եք օգտագործել հետագայում օգտագործելու համար: Excel- ի միջոցով նշեցի, թե ինչ եմ ստացել կոճակների համար, որոնք ցանկանում էի օգտագործել (տես նկարը)
Ես խմբագրեցի իմ Netflix գործունեության կոճակները ՝ Panasonic հեռակառավարման վահանակից դադար ուղարկելու համար: (տես նկարը)
Քայլ 3. Nodered- ին ուղարկելու կոդը գրելը
#ifndef UNIT_TEST #include #endif #include
#ներառում
#ներառում
#ներառում
#ներառում
#ներառում
const char* ssid = ""; // Մուտքագրեք SSID այստեղ char* գաղտնաբառ = ""; // Մուտքագրեք գաղտնաբառ այստեղ const char *host = ""; // IP հասցե #սահմանել ՕԳՏԱԳՈՐՄԱՆ ՍԵՐԻԱ ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); decode_results results; void setup () {irrecv.enableIRIn (); // Գործարկեք ընդունիչը USE_SERIAL.begin (115200); // USE_SERIAL.setDebugOutput (ճշմարիտ); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();
համար (uint8_t t = 4; t> 0; t--) {
USE_SERIAL.printf ("[SETUP] ՍՊԱՍԵԼ %d… / n", t); USE_SERIAL.fush (); ուշացում (1000); } WiFi.mode (WIFI_STA); WiFiMulti.addAP (ssid, գաղտնաբառ); } void loop () {if (irrecv.decode (& results))) {
// Փոխեք այս ազդանշանի արժեքը ձեր ստացածի համար
if (results.value == 0x40040D00606D) {USE_SERIAL.println («դադար ազդանշանը ստացվել է»); wifisend (դադար); ուշացում (1000);
} if (results.value == 0x400401007273) {
USE_SERIAL.println («նախորդ»);
wifisend («նախորդ»); ուշացում (1000); } if (results.value == 0x40040100F2F3) {USE_SERIAL.println («հաջորդ»); wifisend («հաջորդ»); ուշացում (1000); }
irrecv.resume (); // Ստացեք հաջորդ արժեքի} ուշացում (100); } void wifisend (Լարային տվյալներ) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] սկիզբը … / n"); // կարգավորել ողբերգության սերվերը և URL- ը http.begin ("https:// [օգտվող]: [pass]@[ip]: [port]/chromecastpause? data =" + տվյալներ); USE_SERIAL.print ("[HTTP] GET… / n"); // սկսել կապը և ուղարկել HTTP վերնագիր int httpCode = http. GET (); // httpCode- ը բացասական կլինի սխալի դեպքում, եթե (httpCode> 0) {// HTTP վերնագիրն ուղարկվել է, իսկ Server- ի պատասխանի վերնագիրը մշակվել է USE_SERIAL.printf ("[HTTP] GET… code: %d / n", // ֆայլը գտնվել է սերվերում
եթե (httpCode == HTTP_CODE_OK) {String payload = http.getString (); USE_SERIAL.println (բեռնվածություն); }} else {USE_SERIAL.printf ("[HTTP] GET… ձախողվեց, սխալ ՝ %s / n", http.errorToString (httpCode).c_str ()); } http.end (); ուշացում (100); }}
Սա այն կոդն է, որն օգտագործել եմ իմ nodemcu- ում: Ձեզ հարկավոր է տեղադրել այդ գրադարանները:
Դուք կարող եք փորձարկել սերիական մոնիտորի միջոցով և սեղմել կոդի մեջ ավելացված հեռակա կոճակները ՝ պատասխանը տեսնելու համար:
Տողում `
http.begin ("https:// [օգտվող]: [pass]@[ip]: [port]/chromecastpause? data =" + տվյալներ);
Դուք պետք է փոխեք [օգտվողին] ձեր օգտվողին և այլն: ԱՌԱՆ փակագծերի: փակագծերն այնտեղ են `ցույց տալու, թե ինչպես կարելի է փոխել կախարդի դաշտերը:
Այդ գիծը նույնպես չի աշխատի, քանի դեռ մենք մեր հոսքը կարգաբերել ենք nodered- ով:
Քայլ 4: Ստեղծեք հոսք Nodered- ում
Ինչպես նշվեց սկզբում, ես օգտագործում եմ hass.io նոդերով: Եթե այլ կարգավորում եք գործարկում, ապա ձեզ հարկավոր է այն տարբերել: Պատկերում կարող եք տեսնել, որ կոճակը սեղմելիս այն ցուցադրվում է վրիպազերծման պատուհանում…
Փոփոխության բեռնվածքի հանգույցը, հավանաբար, կարող էր բաց թողնվել, եթե ես այլ տվյալներ ընտրեի = նախորդ քայլին: Անջատիչ հանգույցը, որն ես օգտագործում եմ, շատ ավելի մեծ է, քան ընդմիջումը, բայց դա հենց այնպես է, որ ես կարողանամ ավելի շատ ազդանշաններ ավելացնել ՝ ռադիոկայանների համար chromecast օգտագործելու համար և այլն:
Պարզապես խաղալու դադար տալու համար կարող եք օգտագործել մյուս նկարի հոսքը:
[{"id": "e6440c30.4a35a", "type": "http in", "z": "869ceb74.0275c8", "name": "", "url": "chromecastpause", "method": «ստանալ», «վերբեռնել» ՝ կեղծ, «swaggerDoc» ՝ «», «x» ՝ 133, «y» ՝ 98, «լարեր» ՝
Ես հեռացրի անունից userpass և url հասցեից, որպեսզի կարողանաք դրանք խմբագրել:
ավելացնել անջատիչ հանգույց, եթե ցանկանում եք արձագանքել ոչ միայն դադարին (տե՛ս նկարը, օրինակ)
Դադարի օգտագործման տնային օգնականի հանգույցում.
անուն: խաղալ դադար chromecastdomain: media_player erառայություն: media_play_pausedata: {"unit_id": "media_player. [Ձեր chromecast այստեղ]"}
հաջորդ ուղու համար պարզապես պատճենեք այդ հանգույցը և խմբագրեք ծառայությունը ՝ media_next_track և անունը ՝ next chromecast
Քայլ 5. Ընտրովի Alexa- ն դադարեցրեք Chromecast- ը
Լրացուցիչ ավելացնել alexa հրաման chromecast- ի դադարեցման համար.
Այստեղ կան տարբերակներ: Դուք կարող եք կատարել մեկ Alexa հանգույց, որը կոչվում է դադար chromecast, որը դադարեցնում է chromecast- ը, կամ կարող եք սարքել մեկը, որը կոչվում է pause tv, որը ստուգում է ներդաշնակության ընթացիկ գործունեությունը և դադար `կախված դրանից:
Սա ավելի ուշ կավելացնեմ այստեղ..
Խորհուրդ ենք տալիս:
Arduino մեքենա L293D- ով և հեռակառավարմամբ ՝ 5 քայլ
Arduino մեքենա L293D- ով և հեռակառավարմամբ. Ես պատահաբար ունենում եմ L293D չիպ և IR հեռակառավարիչ և ընդունիչ: Ես ուզում եմ Arduino մեքենա կառուցել ՝ առանց շատ բաներ գնելու, ուստի ես բերեցի միայն Arduino- ի չորս անիվի մեքենայի շասսի: Քանի որ Tinkercad- ն ունի L293D և IR ընդունիչ և Arduino, այնպես որ ես ստեղծեցի ուրվագիծ
Ինչպես պատրաստել DIY Arduino- ի 30 վայրկյան լվացքի ժամաչափ, Դադարեցնել COVID- ի տարածումը `8 քայլ
Ինչպես պատրաստել DIY Arduino 30 վայրկյան լվացքի ժմչփ, Դադարեցնել COVID- ի տարածումը. Բարև
Ինչպես դադարեցնել Messenger- ի թռուցիկները ՝ 4 քայլ
Ինչպե՞ս դադարեցնել Messenger- ի բացվող թռուցիկները: Երբևէ տեսե՞լ եք գովազդ կամ թռուցիկ պատուհաններ համացանցը դիտելիս: Եթե դուք ասել եք ոչ, դուք կամ ստում եք, կամ արդեն արել եք նման հրահանգի նման մի բան: Սա կներառի, թե ինչպես տեղադրել Mozilla Firefox- ը, տեղադրել Adblock Plus ընդլայնումը և ստանալ որոշ
Ինչպես դադարեցնել Windows Live Messenger- ի հայտնվելը գործարկման ժամանակ: 6 քայլ
Ինչպես կանգնեցնել Windows Live Messenger- ի սկիզբը. Ես վերջերս զայրացել եմ, երբ Windows Live Messenger- ը հայտնվում է գործարկման ժամանակ, քանի որ ես չեմ ուզում մուտք գործել ամեն անգամ, երբ նոութբուքումս հայտնվեմ … Այսպիսով, ես գտա մի եղանակ, թե ինչպես անջատել/միացնել այս գործողությունը, և ես մտածեցի, որ այն կկիսեմ Instruc- ի հետ
Ինչպես դադարեցնել շարժումը `4 քայլ
Ինչպե՞ս դադարեցնել շարժումը. Երբևէ մտածե՞լ եք, թե ինչպես են պատրաստվում շարժման անիմացիաները կամ երբևէ ցանկացե՞լ եք դրանք ստեղծել: Ես ձեզ ցույց կտամ այս ուսանելի