Мазмұны:

Қашықтан басқару пультімен Chromcast кідірту: 5 қадам
Қашықтан басқару пультімен Chromcast кідірту: 5 қадам

Бейне: Қашықтан басқару пультімен Chromcast кідірту: 5 қадам

Бейне: Қашықтан басқару пультімен Chromcast кідірту: 5 қадам
Бейне: ПАУЗА ЧЕЛЛЕНДЖ🤣🤣🤣В ШКОЛЕ И ДОМА Катя и Макс веселая семейка смешные куклы Барби Даринелка ТВ 2024, Шілде
Anonim
Image
Image
Жабдықтау
Жабдықтау

Менде Logitech үйлесімді пульті бар және таңқурай пиінде Home көмекшісін іске қосамын.

Мен қашықтан басқару пультіндегі chromecast кідірткім келеді, бірақ менде оны hdmi арқылы қолдамайтын ескі теледидар бар. Менің ойым NodeMcu көмегімен сигналды ұстап, кідірту болды.

Егер сіз оны жұмысқа ала алмасаңыз немесе сұрақтарыңыз болса, төменде пікір қалдырыңыз

1 -қадам: жабдықтау

Жабдықтау
Жабдықтау
Жабдықтау
Жабдықтау

Қажетті құрал -жабдықтар:

Nodemcu (https://www.ebay.com/sch/i.html?_from=R40&_trksid=…

Қабылдағыш (мысалы:

дюпондық сымдар

Микро usb кабелі (қуат nodemcu)

Мен Logitech Harmony -хабты қолданамын

Менің көзқарасым үшін сізге hass.io Орнатылған және Нодерленген Raspberry Pi қажет. Мен мұнда үйге көмекші заттарды орнатпаймын. Егер сіз үй көмекшісінен басқа нәрсені қолдансаңыз, заттарды өзіңіз бейімдеуіңіз қажет.

Сіз Nodemcu -ны Arduino IDE -де қолдана білуіңіз керек, себебі мен бұл жерге кірмеймін

2 -қадам: қашықтағы сигнал

Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал
Қашықтағы сигнал

Мен мұны қашықтан басқару пультінен сигналды көшіру болды.

Мен панельдік TXL32C3E моделі үшін қашықтан басқару пультін қолдандым, себебі бұл менің бірінші қабаттағы жабдыққа кедергі келтірмейді. Менде жоғарыда тұрған теледидар.

Егер сіз үйлесімділікті қолданбасаңыз, оны өткізіп жіберуге болады.

Сигналды табу үшін мен осы эскизді қолдандым:

/ * * IRremoteESP8266: IRrecvDumpV2 - IRrecv қосылған инфрақызыл кодтар туралы мәліметтер * * Авторлық құқық 2009 Кен Ширриф, https://arcfn.com * Авторлық құқық 2017 Дэвид Конран * * Электр схемасының мысалы: * https://arcfn.com * * Өзгерістер: * 0.3 қараша, 2017 * - А/С қолдау кейбір протоколдар үшін декодтау. * 0,2 сәуір, 2017 ж. Нұсқасы * - Деректердің көшірмесін декодтау, осылайша біз тезірек түсіруді бастай аламыз * қате түсіру ықтималдығын азайтады. * Кен Ширриффтің IrsendDemo нұсқасының 0,1 шілде, 2009 ж. Негізінде, */

#ifndef UNIT_TEST

#қосу #endif #қосу #қосу #қосу #егер DECODE_AC #қосу #қосу #қосу #қосу #қосу #ендif // DECODE_AC

// ==================== РЕЖИМДІ ПАРАМЕТРЛЕРДІҢ басталуы ===================

// IR детекторы/демодуляторы GPIO pin 14 -ке қосылған // мысалы. D5 NodeMCU тақтасында. #анықтау RECV_PIN 14

// Сериялық қосылудың берілу жылдамдығы.

// яғни күй туралы хабарлама ДК -ге осы жылдамдықпен жіберіледі. // 9600 сияқты баяу жылдамдықтардан аулақ болуға тырысыңыз, себебі сіз хабарламаларды жібермейсіз және // басқа мәселелер туғызасыз. 115200 (немесе жылдамырақ) ұсынылады. // ЕСКЕРТПЕ: Сериялық мониторды дәл осындай жылдамдыққа орнатқаныңызға көз жеткізіңіз. #анықтау BAUD_RATE 115200

// Бұл бағдарлама арнайы түсіру/декодер болғандықтан, үлкенін қолданып көрейік

// қалыпты буферден гөрі біз кондиционердің қашықтағы кодтарын өңдей аламыз. 1024

// TIMEOUT - Nr. милли-секундтан артық деректер жоқ

// хабарлама аяқталды. // Бұл параметр қызықты коммерция болып табылады. Күту уақыты неғұрлым ұзақ болса, ол соғұрлым // күрделі хабарламаны алады. мысалы Кейбір құрылғы протоколдары кондиционер пульті сияқты бірден // бірнеше хабарлама пакетін жібереді. // Air кондиционер хаттамаларында // пакеттер арасында жиі үлкен алшақтық (20-40+мс) болады. // Үлкен күту уақытының минусы - күрделі протоколдардың көптігі // қашықтан басқару пультінің батырмасы басылғанда бірнеше хабарлама жіберу. // олардың арасындағы алшақтық 20+мс шамасында болады. Нәтижесінде шикі деректер қажет болғаннан 2-3+ // есе көп болуы мүмкін, себебі ол бір // түсіруде 2-3+ хабарды түсірді. Төмен күту уақытын орнату мұны шеше алады. // Сонымен, нақты жағдайда сіздің TIMEOUT ең жақсы мәнін таңдау - бұл өте нәзік. Сәттілік пен бақытты аңшылық. // ЕСКЕРТПЕ: MAX_TIMEOUT_MS аспауы керек. Әдетте 130 мс. #егер DECODE_AC #deutine TIMEOUT 50U // Кейбір кондиционерлік қондырғылардың хаттамаларында ~ 40ms бос орындар бар. // мысалы Келвинатор // Бұл үлкен мән кейбір протоколдардың қайталануын жұтуы мүмкін #әйтпесе // DECODE_AC #define TIMEOUT 15U // Көптеген хабарларға сәйкес келеді, бірақ қайталауды жұтып қоймайды. #endif // DECODE_AC // Альтернативалар: // #define TIMEOUT 90U // XMP-1 және кейбір кондиционер // қондырғылары сияқты үлкен бос орындары бар хабарларға сәйкес келеді, бірақ қайталанатын хабарларды кездейсоқ жұтып алады // rawData шығысында. // #define TIMEOUT MAX_TIMEOUT_MS // Бұл оны біздің рұқсат етілген // максимумға орнатады. Бұл жоғары мәндер проблемалық // себебі бұл көптеген хабарлар қайталанатын типтік шекара //. // мысалы Ол хабарды декодтауды тоқтатады және // оны серияға жіберуді дәл // келесі хабардың берілуі ықтимал // уақытта бастайды және оны жіберіп алуы мүмкін.

// Біз ойлайтын ең кіші «БЕЛГІСІЗ» хабар пакеттерін орнатыңыз.

// Бұл мән ИҚ фонының // жалған позитивті анықтау жылдамдығын төмендетуге көмектеседі. Фондық инфрақызыл шуылдың анықталу мүмкіндігі // хабарлама ретінде TIMEOUT мәнінің ұзақтығына қарай артады. (Жоғарыдан қараңыз) // Бұл хабарды тым үлкен орнатудың минусы - бұл кітапхана әлі декодталмаған протоколдар үшін жарамды // қысқа хабарларды жіберіп алу. // // Егер сіз ештеңе хабарлама жібермеуі керек кезде, кездейсоқ қысқа БЕЛГІСІЗ хабарлар көп алсаңыз, жоғары деңгейге қойыңыз. // Егер сіз орнатудың жұмыс істеп жатқанына сенімді болсаңыз, бірақ ол сіздің құрылғыңыздан // хабарламаларын көрмейді. (мысалы, басқа IR қашықтан басқару пульті жұмыс істейді.) // ЕСКЕРТПЕ: БЕЛГІСІЗ анықтауды тиімді өшіру үшін бұл мәнді өте жоғары етіп орнатыңыз. #MIN_UNKNOWN_SIZE 12 анықтаңыз // ===================== РЕЖИМДІ ПАРАМЕТРЛЕРДІҢ соңы =====================

// Түсіруді толық қамту үшін сақтау буферін қосу мүмкіндігін пайдаланыңыз.

IRrecv irrecv (RECV_PIN, CAPTURE_BUFFER_SIZE, TIMEOUT, true);

decode_results нәтижелері; // Нәтижелерді сақтау үшін бір жерде

// Мүмкіндік болса, кондиционерлік хабардың адамға оқылатын күйін көрсетіңіз.

void dumpACInfo (decode_results *нәтижелері) {Жол сипаттамасы = «»; #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.:» + сипаттамасы); }

// Код бөлімі іске қосылған кезде бір рет қана іске қосылады.

void setup () {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 қазір = миллис (); 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 қолдандым (суретті қараңыз)

Мен Panasonic пультінен кідіріс сигналын жіберу үшін Netflix қызметіндегі түймелерді өңдедім. (Суретті қараңыз)

3 -қадам: Нодерленгенге жіберу үшін код жазу

Nodered -ге жіберу кодын жазу
Nodered -ге жіберу кодын жазу

#ifndef UNIT_TEST #қамтиды #endif #include

#қосу

#қосу

#қосу

#қосу

#қосу

const char* ssid = «»; // SSID енгізіңіз hereconst char* password = «»; // Құпия сөзді осы жерге енгізіңіз const char *host = «»; // IP мекенжайы #анықтаңыз USE_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 ();

үшін (uint8_t t = 4; t> 0; t--) {

USE_SERIAL.printf («[SETUP] %D… / n» КҮТЕДІ, t); USE_SERIAL.flush (); кешіктіру (1000); } WiFi.mode (WIFI_STA); WiFiMulti.addAP (ssid, құпия сөз); } void loop () {if (irrecv.decode (& нәтижелер)) {

// Бұл сигналдың мәнін сізде бар үшін өзгертіңіз

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 қате кезінде теріс болады, егер (httpCode> 0) {// HTTP тақырыбы жіберілген болса және сервердің жауап тақырыбы USE_SERIAL.printf өңделсе («[HTTP] GET… коды: %d / n», // файл серверде табылды

if (httpCode == HTTP_CODE_OK) {Жол жүктемесі = 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 -қадам: Нодерленген ағынды құру

Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру
Нодерленген ағынды құру

Басында айтылғандай, мен hass.io -ны түйінмен бірге қолданамын. Егер сіз басқа қондырғыны іске қоссаңыз, оны басқаша жасауыңыз қажет болады! Сіз суретте түйме басылғанда ол отладтау терезесінде пайда болатынын көре аласыз …

Егер мен алдыңғы қадамда деректер = басқа нәрсені таңдаған болсам, жүктеменің өзгеру түйінін өткізіп жіберуге болар еді. Мен қолданатын коммутаторлық түйін біршама үзілістен үлкенірек, бірақ мен радиостанциялар үшін хромекастты пайдалану үшін қосымша сигналдарды қосуға болатын сияқты.

Жай ғана кідірту үшін басқа суреттегі ағынды қолдануға болады.

[{«id»: «e6440c30.4a35a», «type»: «http in», «z»: «869ceb74.0275c8», «name»: «», «url»: «chromecastpause», «method»: «алу», «жүктеу»: жалған, «swaggerDoc»: «», «x»: 133, «y»: 98, «сымдар»:

Мен пайдаланушы атауын және URL мекенжайын алып тастадым, сондықтан оны өңдеу қажет болуы мүмкін.

егер сіз кідіртуге ғана жауап бергіңіз келсе, қосқыш түйінін қосыңыз (мысалы, суретті қараңыз)

Үй көмекшісінің түйінінде кідіртуге арналған:

аты: кідіртуге chromecastdomain: media_playerService: media_play_pausedata: {«entity_id»: «media_player. [сіздің chromecast мұнда]»}

келесі жол үшін сол түйінді көшіріп, қызметті өңдеңіз: media_next_track және келесі chromecast атауын:

5 -қадам: Қосымша Alexa Pause Chromecast

Chromecast кідіртуі үшін қосымша Alexa пәрменін қосыңыз:

Мұнда опциялар бар. Сіз chromecast кідіртетін кідіртуге хромкаст деп аталатын бір alexa түйінін жасай аласыз, немесе сіз ағымдағы үйлесімділікті тексеретін кідіртуге арналған теледидар жасай аласыз және соған байланысты үзіліс жасай аласыз.

Мен мұны кейінірек осында қосамын..

Ұсынылған: