Агуулгын хүснэгт:

Chromcast -ийг алсын удирдлагаар түр зогсоох: 5 алхам
Chromcast -ийг алсын удирдлагаар түр зогсоох: 5 алхам

Видео: Chromcast -ийг алсын удирдлагаар түр зогсоох: 5 алхам

Видео: Chromcast -ийг алсын удирдлагаар түр зогсоох: 5 алхам
Видео: Film Soundtrack from "Remote Control" Алсын Удирдлага киноны хөгжмөөс. by Sansar 2024, Долдугаар сарын
Anonim
Image
Image
Тоног төхөөрөмж
Тоног төхөөрөмж

Би Logitech -ийн зохицох алсын удирдлагатай бөгөөд бөөрөлзгөнө дээр гэрийн туслах ажиллуулдаг.

Би алсын удирдлагаасаа chromecast -ийг түр зогсоохыг хүсч байсан боловч үүнийг hdmi -ээр дэмждэггүй хуучин зурагттай. Миний санаа бол NodeMcu ашиглан цахилгааны дохиог барьж, түр зогсоох явдал байв.

Хэрэв та үүнийг ажиллуулж чадахгүй эсвэл асуух зүйл байвал доор коммент бичнэ үү

Алхам 1: Тоног төхөөрөмж

Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж
Тоног төхөөрөмж

Шаардлагатай тоног төхөөрөмж:

Нодемку (https://www.ebay.com/sch/i.html?_from=R40&_trksid=…

Ирсэн хүлээн авагч (жишээ нь:

дупон утас

Микро USB кабель (цахилгаан nodemcu)

Би Logitech Harmony -hub ашигладаг

Миний арга барилын хувьд танд hass.io суулгасан ба Nodered бүхий Raspberry pi хэрэгтэй болно. Хэрэв та гэрийн туслахаас өөр зүйл хэрэглэж байгаа бол өөрөө өөртөө тохируулах хэрэгтэй.

Та Nodemcu -г Arduino IDE дээр ашиглах боломжтой байх ёстой, учир нь би энд үүнийг оруулахгүй

Алхам 2: Алсын дохио

Алсын дохио
Алсын дохио
Алсын дохио
Алсын дохио
Алсын дохио
Алсын дохио
Алсын дохио
Алсын дохио

Миний хийсэн арга бол алсын удирдлагаас дохиог эв нэгдлийн удирдлага руу хуулах явдал байв.

Би Panasonic TXL32C3E загварын телевизийн алсын удирдлага ашигласан бөгөөд энэ нь миний нэгдүгээр давхарт байгаа тоног төхөөрөмжид минь саад болохгүй. Энэ бол миний дээд давхарт байгаа зурагт.

Хэрэв та эв найрамдлыг ашиглахгүй бол үүнийг алгасаж болно.

Тиймээс дохиог олохын тулд би энэ схемийг ашигласан.

/ * * IRremoteESP8266: IRrecvDumpV2 - IRrecv бүхий IR кодын мэдээллийг хаях * IR мэдрэгч/демодуляторыг RECV_PIN оролтод холбох ёстой. * * Зохиогчийн эрх 2009 Кен Ширрифф, https://arcfn.com * Зохиогчийн эрх 2017 Дэвид Конран * * Цахилгаан схемийн жишээ: * https://arcfn.com * * Өөрчлөлт: * Хувилбар 0.3 оны 11 -р сар, 2017 * - A/C -ийн дэмжлэг зарим протколын декодчилол. * 2017 оны 4 -р сарын 0.2 -ны хувилбар * - Өгөгдлийн хуулбарыг тайлж, ингэснээр бид илүү хурдан барьж эхлэх боломжтой болно * буруу баригдах магадлалыг бууруулна. * Кен Ширриффийн IrsendDemo хувилбар 0.1, 2009 оны 7 -р сард үндэслэсэн, */

#ifndef UNIT_TEST

#оруулах #endif #оруулах #оруулах #оруулах #хэрэв DECODE_AC #оруулах #оруулах #оруулах #оруулах #оруулах #оруулах

// ==================== TUNEABLE PARAMETERS -ийн эхлэл ===================

// IR мэдрэгч/демодулятор нь GPIO pin 14 -т холбогдсон // жишээ нь. D5 нь NodeMCU самбар дээр. #RECV_PIN 14 -ийг тодорхойлох

// Цуваа холболтын хурд.

// өөрөөр хэлбэл статусын мессежийг энэ хурдны хэмжээгээр компьютерт илгээх болно. // Та мессежийг алдаж, // бусад асуудал үүсгэж болзошгүй тул 9600 гэх мэт удаан хурднаас зайлсхийхийг хичээ. 115200 (эсвэл илүү хурдан) санал болгож байна. // ТАЙЛБАР: Цуваа монитороо ижил хурдаар тохируулсан эсэхээ шалгаарай. #тодорхойлох BAUD_RATE 115200

// Энэ програм нь тусгай зориулалтын зураг тайлах/задлах програм учраас илүү томыг нь ашиглацгаая

// ердийн буфертай харьцуулахад бид агааржуулагчийн алсын кодыг зохицуулж чаддаг. #CAPTURE_BUFFER_SIZE -ийг тодорхойлох 1024

// TIMEOUT бол Nr. милли секундын дотор илүү их мэдээлэл байхгүй болно a

// мессеж дууссан. // Энэ параметр нь сонирхолтой наймаа юм. Хугацаа дуусах тусам барьж авах боломжтой зурвас илүү төвөгтэй болно. жишээ нь Зарим төхөөрөмжийн протоколууд нь агааржуулагчийн алсын удирдлага гэх мэт // олон мессеж пакетуудыг дараалан илгээх болно. // Air Condiitioner протоколууд нь ихэвчлэн // пакетуудын хооронд нэлээд их зайтай (20-40+ms) байдаг. // Том хэмжээний завсарлагааны утгын сул тал бол маш нарийн төвөгтэй протоколууд юм // алсын удирдлагын товчлуурыг дарахад олон мессеж илгээх. // хоорондох ялгаа нь ихэвчлэн 20+ms орчим байдаг. Үүний үр дүнд түүхий өгөгдөл нь 2-3+ мессежийг нэг удаа авахад шаардагдах хэмжээнээс 2-3+ // дахин их байж болно. Завсарлагааны бага утгыг тохируулснаар үүнийг шийдвэрлэх боломжтой. // Тиймээс, тухайн тохиолдлын хувьд TIMEOUT -ийн хамгийн сайн утгыг сонгох нь маш нарийн юм. Амжилт хүсье, аз жаргалтай ан хий. // ТАЙЛБАР: MAX_TIMEOUT_MS -ээс хэтрүүлж болохгүй. Ихэвчлэн 130 м. #DECODE_AC #50OUTOUT -ийг тодорхойлох // Зарим Агааржуулагч төхөөрөмжүүдийн протокол дээр ~ 40ms зайтай байдаг. // жишээ нь Келвинатор // Ийм том утга нь зарим протоколын давталтыг залгиж болно #бусад // DECODE_AC #define TIMEOUT 15U // Ихэнх давталтуудыг залгиагүй байхад ихэнх мессежүүдэд тохирно. #endif // DECODE_AC // Альтернативууд: // #define TIMEOUT 90U // XMP-1 ба зарим aircon // нэгж гэх мэт том цоорхойтой мессежүүдэд тохирсон боловч давтан зурвасуудыг санамсаргүйгээр залгих боломжтой // rawData гаралт. // #define TIMEOUT MAX_TIMEOUT_MS // Энэ нь үүнийг одоогоор зөвшөөрөгдсөн // дээд хэмжээнд тохируулна. Энэ өндөр үнэ цэнэ нь асуудалтай байдаг // учир нь энэ нь ихэнх зурвас давтагддаг ердийн хил хязгаар юм. // жишээ нь Энэ нь мессежийн декодчилолтыг зогсоож // дараагийн мессежийг дамжуулах магадлалтай // яг тэр үед // цуврал руу илгээж эхлэх бөгөөд үүнийг алдаж магадгүй юм.

// Бидний анхаардаг хамгийн жижиг хэмжээтэй "Мэдэгдээгүй" мессеж пакетуудыг тохируулаарай.

// Энэ утга нь хэт улаан туяаны дэвсгэр эерэг хуурамч илрүүлэлтийн түвшинг бууруулахад тусалдаг // дуу чимээг бодит мессеж болгон өгдөг. TIMEOUT -ийн утгын дагуу зурвас нэмэгдэх тусам цаана нь хэт улаан туяаны дуу чимээ илрэх магадлал нэмэгддэг. (Дээрхээс үзнэ үү) // Энэ зурвасыг хэт том тохируулахын сул тал бол та энэ номын сангийн код нь тайлагдаагүй байгаа протоколуудын зарим хүчин төгөлдөр // богино мессежийг алдах явдал юм. // // Хэрэв танд юу ч хамаагүй мессеж илгээхгүй байх үед олон тооны санамсаргүй богино мэдэгдэхгүй мессеж ирвэл илүү өндөр тохируулаарай. // Хэрэв та тохиргоо ажиллаж байгаа гэдэгт итгэлтэй байгаа бол доод түвшинг тохируулаарай, гэхдээ энэ нь таны төхөөрөмжөөс ирсэн мессежийг харахгүй байна. (жишээ нь, бусад IR алсын удирдлага ажилладаг.) // ТАЙЛБАР: Энэ утгыг маш өндөр болгож, үл мэдэгдэх илрүүлэлтийг үр дүнтэй унтраана уу. #тодорхойлох MIN_UNKNOWN_SIZE 12 // ===================== ХУВААРАЙ ПАРАМЕТРЫН төгсгөл ====================

// Илүү бүрэн гүйцэд хамрах хүрээг хадгалахын тулд хадгалах буферын онцлогийг асаана уу.

IRrecv irrecv (RECV_PIN, CAPTURE_BUFFER_SIZE, TIMEOUT, үнэн);

decode_results үр дүн; // Үр дүнг хадгалах хаа нэг газар

// Боломжтой бол A/C мессежийн хүний унших боломжтой байдлыг харуул.

void dumpACInfo (decode_results *үр дүн) {String description = ""; #if DECODE_DAIKIN if (results-> decode_type == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (үр дүн-> төлөв); тодорхойлолт = ac.toString (); } #endif // DECODE_DAIKIN #if DECODE_FUJITSU_AC if (results-> 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 #if DECODE_TOSHIBA_AC if (results-> 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 // Хэрэв бидэнд мессежийн хүний унших боломжтой тайлбар байгаа бол түүнийгээ үзүүлээрэй. if (description! = "") Serial.println ("Mesg Desc.:" + description); }

// Кодын хэсгийг эхлүүлэх үед зөвхөн нэг удаа ажиллуулдаг.

хүчингүй тохиргоо () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); саатал (500); // Цуваа холболт үүсэхийг жаахан хүлээнэ үү.

#ДЕКОД_ХАШ

// Импульсийг асаах, унтраах хамгийн бага хэмжээнээс бага мессежийг үл тоомсорлох. irrecv.setUnknownThreshold (MIN_UNKNOWN_SIZE); #endif // DECODE_HASH irrecv.enableIRIn (); // Хүлээн авагчийг эхлүүлэх}

// Кодын давтагдах хэсэг

// void loop () {// IR кодыг хүлээн авсан эсэхийг шалгана уу. if (irrecv.decode (& үр дүн)) {// Болзошгүй цагийн тэмдгийг харуулна. uint32_t одоо = millis (); Serial.printf ("Цаг хугацааны тэмдэг: %06u. %03u / n", одоо / 1000, одоо %1000); if (results.overflow) Serial.printf ("АНХААРУУЛГА: IR код нь буферт хэт том байна (> = %d)." "Үүнийг шийдэх хүртэл энэ үр дүнг итгэж болохгүй." "CAPTURE_BUFFER_SIZE -ийг засаж, нэмэгдүүлэх. / n ", CAPTURE_BUFFER_SIZE); // Олсон зүйлийнхээ үндсэн гаралтыг харуулна. Serial.print (resultToHumanReadableBasic (& үр дүн)); dumpACInfo (& үр дүн); // Хэрэв бидэнд байгаа бол нэмэлт агааржуулалтын мэдээллийг харуул. гарц (); // Текстийг хэвлэхэд хэсэг хугацаа шаардагдах тул WDT -ийг оруулна уу.

// Зурвас авсан номын сангийн хувилбарыг харуулна.

Serial.print ("Номын сан: v"); Serial.println (_IRREMOTEESP8266_VERSION_); Serial.println ();

// Үр дүнгийн RAW хугацааны мэдээллийг гаргана.

Serial.println (resultToTimingInfo (& үр дүн)); гарц (); // WDT -ийг тэжээх (дахин)

// Үр дүнг эх код болгон гаргана

Serial.println (resultToSourceCode (& үр дүн)); Serial.println (""); // Бичлэгийн хоорондох хоосон гарц (); // WDT -г оруулах (дахин)}}

Энэхүү схемийг байршуулж, цуваа дэлгэцийг нээж ажиллуулахад товчлуур дарах кодыг гаргана (зургийг үзнэ үү)

Дараа ашиглахын тулд ашиглахыг хүсч буй кодоо бичээрэй. Би ашиглахыг хүссэн товчлууруудынхаа талаар тэмдэглэхийн тулд excel ашигласан (зургийг үзнэ үү)

Би Netflix үйл ажиллагааныхаа товчлууруудыг засварлаж панасоник алсаас түр зогсоох дохиог илгээсэн. (Зургийг үзнэ үү)

Алхам 3: Nodered руу илгээх кодыг бичих

Nodered руу илгээх кодыг бичих
Nodered руу илгээх кодыг бичих

#ifndef UNIT_TEST #оруулах #endif #include

#оруулах

#оруулах

#оруулах

#оруулах

#оруулах

const char* ssid = ""; // SSID -ийг оруулна уу char* password = ""; // Энд нууц үг оруулна уу const char *host = ""; // Ip addresse #define USE_SERIAL Serial ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); decode_results үр дүн; void setup () {irrecv.enableIRIn (); // Хүлээн авагчийг эхлүүлэх USE_SERIAL.begin (115200); // USE_SERIAL.setDebugOutput (үнэн); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();

for (uint8_t t = 4; t> 0; t--) {

USE_SERIAL.printf ("[SETUP] WAIT %d… / n", t); USE_SERIAL.flush (); саатал (1000); } WiFi.mode (WIFI_STA); WiFiMulti.addAP (ssid, нууц үг); } void loop () {if (irrecv.decode (& results)) {

// Энэ дохионы утгыг өөрт байгаа утгаараа өөрчил

if (results.value == 0x40040D00606D) {USE_SERIAL.println ("дохиог түр зогсоох"); эхнэр нөхөр (түр зогсоох); саатал (1000);

} if (results.value == 0x400401007273) {

USE_SERIAL.println ("өмнөх");

эхнэр нөхөр ("өмнөх"); саатал (1000); } if (results.value == 0x40040100F2F3) {USE_SERIAL.println ("дараагийн"); эхнэр нөхөр ("дараагийн"); саатал (1000); }

irrecv. resume (); // Дараагийн утгыг хүлээн авах} delay (100); } void wifisend (String data) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] эхлэх… / n"); // эмгэнэлт явдлын сервер болон URL -г тохируулах http.begin ("https:// [user]: [pass]@[ip]: [port]/chromecastpause? data =" + data); USE_SERIAL.print ("[HTTP] АВАХ… / n"); // холболтыг эхлүүлж, HTTP толгойг илгээнэ үү int httpCode = http. GET (); // (httpCode> 0) {// HTTP толгойг илгээж, Серверийн хариултын толгойг USE_SERIAL.printf ("[HTTP] GET… код: %d / n", httpCode) боловсруулсан бол httpCode нь алдаатай байх болно;

// файлыг серверээс олсон

if (httpCode == HTTP_CODE_OK) {String payload = http.getString (); USE_SERIAL.println (ачаалал); }} өөр {USE_SERIAL.printf ("[HTTP] GET… амжилтгүй боллоо, алдаа: %s / n", http.errorToString (httpCode).c_str ()); } http.end (); саатал (100); }}

Энэ бол миний nodemcu дээр ашигласан код юм. Эдгээр номын санг суулгах шаардлагатай болно.

Та цуваа дэлгэц ашиглан тест хийж, кодонд оруулсан алсын товчлууруудыг дарж хариултыг харах боломжтой.

Мөрөнд:

http.begin ("https:// [user]: [pass]@[ip]: [port]/chromecastpause? data =" + data);

Та [хэрэглэгч] -ийг хэрэглэгч рүүгээ өөрчлөх хэрэгтэй гэх мэт. Хаалтгүйгээр. Шулмын талбаруудыг өөрчлөх хаалтууд байдаг.

Бид урсгалаа зангилаагүй байдлаар тохируулах хүртэл энэ шугам ажиллахгүй болно.

Алхам 4: Nodered -д урсгал үүсгэх

Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх
Nodered -д урсгал үүсгэх

Эхэндээ дурьдсанчлан би hass.io -ийг толгойтой болгон ашигладаг. Хэрэв та өөр тохиргоо ажиллуулж байгаа бол үүнийг өөр болгох хэрэгтэй болно! Та зурган дээр товчлуур дарахад дибаг хийх цонхонд гарч байгааг харж болно …

Хэрэв би өмнөх алхамд өгөгдөл = өөр өөр зүйлийг сонгосон бол ачааллын цэгийн өөрчлөлтийг алгасаж магадгүй байсан. Миний ашигладаг унтраалга зангилаа нь түр зогсоход хамаагүй том боловч энэ нь радио станц гэх мэт chromecast -ийг ашиглахын тулд би илүү их ир дохио нэмж өгөх болно.

Түр зогсоохын тулд та бусад зурган дээрх урсгалыг ашиглаж болно.

[{"id": "e6440c30.4a35a", "type": "http in", "z": "869ceb74.0275c8", "name": "", "url": "chromecastpause", "method": "авах", "байршуулах": худал, "swaggerDoc": "", "x": 133, "y": 98, "утаснууд":

Би хэрэглэгчийн нэр болон url -г үүнээс хассан тул та үүнийг засах хэрэгтэй болж магадгүй юм.

Хэрэв та түр зогсохоос илүү хариу үйлдэл үзүүлэхийг хүсч байвал шилжүүлэгч зангилааг нэмнэ үү (жишээлбэл зургийг үзнэ үү)

Түр зогсоохын тулд гэрийн туслах зангилаанд:

нэр: chromecast домэйныг тоглуулах: media_playerService: media_play_pausedata: {"entity_id": "media_player. [таны chromecast энд]"}

Дараагийн дууны хувьд энэ зангилааг хуулж, үйлчилгээг засварлах: media_next_track, нэр: дараагийн chromecast

Алхам 5: Alexa -г түр зогсоох Chromecast

Chromecast -ийг түр зогсоохын тулд alexa командыг нэмж оруулах боломжтой.

Энд сонголтууд байна. Та chromecast -ийг түр зогсоодог chromecast -ийг түр зогсоох гэж нэрлэдэг нэг alexa зангилааг хийж болно.

эсвэл та одоогийн эв найрамдлын үйл ажиллагааг шалгадаг pause TV гэж нэрлэж болно.

Би үүнийг дараа нь энд оруулах болно..

Зөвлөмж болгож буй: