Orodha ya maudhui:

Sitisha Chromcast na Udhibiti wa Kijijini: Hatua 5
Sitisha Chromcast na Udhibiti wa Kijijini: Hatua 5

Video: Sitisha Chromcast na Udhibiti wa Kijijini: Hatua 5

Video: Sitisha Chromcast na Udhibiti wa Kijijini: Hatua 5
Video: Счастливая история слепой кошечки по имени Нюша 2024, Julai
Anonim
Image
Image
Vifaa
Vifaa

Nina kijijini cha maelewano ya Logitech na kukimbia msaidizi wa Nyumbani kwenye pi ya raspberry.

Nilitaka kuwa na uwezo wa kusitisha chromecast kutoka kwa kijijini changu, lakini nina televisheni ya zamani ambayo haiungi mkono hii kupitia hdmi. Wazo langu wakati huo lilikuwa kutumia NodeMcu kupata ishara ya ir na kusitisha.

Ikiwa hauwezi kuifanya iwe na kazi au una maswali tafadhali toa maoni hapa chini

Hatua ya 1: Usajili

Vifaa
Vifaa
Vifaa
Vifaa

Vifaa vinahitajika:

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

Mpokeaji wa Ir (kama vile hii:

waya za dupont

Cable ndogo ya usb (umeme nodemcu)

Ninatumia Logitech Harmony -hub

Kwa njia yangu Unahitaji pi ya Raspberry na hass.io Imewekwa na Nodered. Sitaenda kuanzisha vitu vya nyumbani hapa. Ikiwa unatumia kitu kingine isipokuwa msaidizi wa nyumbani unahitaji kurekebisha vitu mwenyewe.

Unahitaji kutumia Nodemcu kwenye Arduino IDE kwani sitaenda hapa

Hatua ya 2: Ishara ya mbali

Ishara ya mbali
Ishara ya mbali
Ishara ya mbali
Ishara ya mbali
Ishara ya mbali
Ishara ya mbali
Ishara ya mbali
Ishara ya mbali

Njia niliyofanya ni kunakili ishara kutoka kwa kijijini ambayo situmii katika kijijini cha maelewano.

Nilitumia kijijini kwa mfano wa runinga ya panasonic TXL32C3E kwani hiyo haiingilii vifaa vyangu kwenye ghorofa yangu ya kwanza. Hiyo ni tv nina ghorofani.

Ikiwa hutumii maelewano unaweza kuruka hii.

Kwa hivyo kwa kutafuta ishara nilitumia mchoro huu:

/ * * IRremoteESP8266: IRrecvDumpV2 - maelezo ya dampo ya nambari za IR na IRrecv * Kigunduzi cha IR / demodulator lazima iunganishwe na pembejeo RECV_PIN. * * Hakimiliki 2009 Ken Shirriff, https://arcfn.com * Hakimiliki 2017 David Conran * * Mfano mchoro wa mzunguko: * https://arcfn.com * * Mabadiliko: * Toleo la 0.3 Novemba, 2017 * - Msaada kwa A / C kusimba kwa itifaki zingine. * Toleo la 0.2 Aprili, 2017 * - Jitayarishe kutoka nakala ya data ili tuweze kuanza kunasa haraka zaidi * kupunguza uwezekano wa makosa. * Kulingana na toleo la Ken Shirriff IrsendDemo Toleo la 0.1 Julai, 2009, * /

#fndef UNIT_EST

#jumlisha # mwisho ikiwa ni pamoja na # pamoja na # ikiwa ni pamoja na # ikiwa DECODE_AC # pamoja na # pamoja na # pamoja na # pamoja na # pamoja na # endif // DECODE_AC

// ==================== kuanza kwa VIFUNGUZO VYA KUFANYA

// Kigunduzi cha IR / demodulator imeunganishwa na pini ya GPIO 14 // n.k. D5 kwenye ubao wa NodeMCU. #fafanua RECV_PIN 14

// Kiwango cha unganisho la baud.

// i.e. Ujumbe wa hali utatumwa kwa PC kwa kiwango hiki cha baud. // Jaribu kuzuia kasi ndogo kama 9600, kwani utakosa ujumbe na // kusababisha shida zingine. 115200 (au kwa kasi) inashauriwa. // KUMBUKA: Hakikisha umeweka Monitor yako ya serial kwa kasi sawa. #fafanua BAUD_RATE 115200

// Kama mpango huu ni kukamata / kusimba kwa kusudi maalum, wacha tutumie kubwa

// kuliko bafa ya kawaida ili tuweze kushughulikia nambari za kijijini za kiyoyozi. #fafanua KAMPILEE_BUFFER_SIZE 1024

// JINSI YA KUPITIA ni Nr. ya milli-Seconds ya data-zaidi kabla hatujafikiria a

// ujumbe ulimalizika. // Kigezo hiki ni biashara ya kuvutia. Muda umezidi, ni ujumbe ngumu zaidi // unaweza kukamata. mf. Itifaki zingine za kifaa zitatuma // pakiti za ujumbe anuwai mfululizo, kama vile viboreshaji vya kiyoyozi. // Itifaki za Coniditioner Hewa mara nyingi zina pengo kubwa (20-40 + ms) kati ya // pakiti. // Upungufu wa thamani kubwa ya muda wa kumaliza ni itifaki nyingi ngumu sana // tuma ujumbe mwingi wakati kitufe cha kijijini kinashikiliwa chini. Pengo kati ya // yao mara nyingi pia ni karibu 20 + ms. Hii inaweza kusababisha data ghafi kuwa mara 2-3 + // kubwa kuliko inahitajika kwani imenasa ujumbe wa 2-3 + kwa kukamata // moja. Kuweka thamani ya muda wa chini kunaweza kutatua hili. // Kwa hivyo, kuchagua dhamana bora ya MUDA WA KUTUMIA kwa kesi yako ya matumizi ni // kabisa. Bahati nzuri na uwindaji wa furaha. // KUMBUKA: Usizidi MAX_TIMEOUT_MS. Kawaida 130ms. #kama DECODE_AC #fasili TIMEOUT 50U // Baadhi ya vitengo vya A / C vina mapungufu katika itifaki zao za ~ 40ms. // n.k. Kelvinator // Thamani kubwa hii inaweza kumeza kurudia kwa baadhi ya itifaki #else // DECODE_AC #fasili TIMEOUT 15U // Inafaa ujumbe mwingi, wakati haumezi kurudia nyingi. #endif // DECODE_AC // Njia mbadala: // #fafanua TIMEOUT 90U // Inafaa ujumbe na mapungufu makubwa kama XMP-1 & aircon // vitengo, lakini inaweza kumeza kwa bahati mbaya ujumbe unaorudiwa // katika pato la Raw . // #fafanua TIMEOUT MAX_TIMEOUT_MS // Hii itaiweka kwa kiwango chetu kinachoruhusiwa kwa sasa // Thamani za juu ni shida // kwa sababu ni mipaka ya kawaida // ambapo ujumbe mwingi unarudia. // n.k. Itaacha kusanidi ujumbe na // kuanza kuutuma kwa serial wakati sahihi // wakati ambapo ujumbe unaofuata unaweza kusambazwa, na unaweza kuukosa.

// Weka pakiti ndogo za ujumbe "ZISIZOJULIKANA" tunayojali sana.

// Thamani hii husaidia kupunguza kiwango cha kugundua chanya cha uwongo cha nyuma ya IR // kelele kama ujumbe halisi. Uwezekano wa kelele ya nyuma ya IR kugunduliwa // kama ujumbe unaongezeka na urefu wa thamani ya TIMEOUT. (Tazama hapo juu) // // Weka juu ikiwa unapata ujumbe mfupi mfupi bila kufahamika wakati hakuna kitu // kinapaswa kutuma ujumbe. // Weka chini ikiwa una hakika usanidi wako unafanya kazi, lakini haioni ujumbe // kutoka kwa kifaa chako. (k.v. Rimoti zingine za IR hufanya kazi.) // KUMBUKA: Weka dhamana hii juu sana ili uzime utambuzi USIOJULIKANA. #fafanua MIN_UNKNOWN_SIZE 12 // ==================== mwisho wa VIFUNGU VYA KUFANYA

// Tumia kuwasha kipengele cha kuhifadhi bafa ili upate chanjo kamili zaidi.

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

namua matokeo_ya matokeo; // Mahali pengine pa kuhifadhi matokeo

// Onyesha hali inayoweza kusomeka kwa binadamu ya ujumbe wa A / C ikiwa tunaweza.

dumpACInfo (tambua matokeo_ya matokeo) {String description = ""; #kama DECODE_DAIKIN ikiwa (matokeo-> namua aina == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (matokeo-> hali); maelezo = ac.toString (); } # endif // DECODE_DAIKIN # ikiwa DECODE_FUJITSU_AC ikiwa (matokeo-> suluhisha_type == FUJITSU_AC) {IRFujitsuAC ac (0); ac.setRaw (matokeo-> serikali, matokeo-> bits / 8); maelezo = ac.toString (); } # endif // DECODE_FUJITSU_AC # ikiwa DECODE_KELVINATOR ikiwa (matokeo-> namua aina == KELVINATOR) {IRKelvinatorAC ac (0); ac.setRaw (matokeo-> hali); maelezo = ac.toString (); } # endif // DECODE_KELVINATOR # ikiwa DECODE_TOSHIBA_AC ikiwa (matokeo-> nambari ya aina == TOSHIBA_AC) {IRToshibaAC ac (0); ac.setRaw (matokeo-> hali); maelezo = ac.toString (); } # endif // DECODE_TOSHIBA_AC # ikiwa DECODE_MIDEA ikiwa (matokeo-> amua aina_ya aina = MIDEA) {IRMideaAC ac (0); ac.setRaw (matokeo-> thamani); // Midea hutumia thamani badala ya hali. maelezo = ac.toString (); } # endif // DECODE_MIDEA // Ikiwa tumepata maelezo yanayoweza kusomeka kwa binadamu kuhusu ujumbe huo, uonyeshe. ikiwa (maelezo! = "") Serial.println ("Mesg Desc.:" + maelezo); }

// Sehemu ya nambari inaendesha mara moja tu wakati wa kuanza.

kuanzisha batili () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); kuchelewesha (500); // Subiri kidogo ili unganisho la serial lianzishwe.

#kama DECODE_HASH

// Puuza ujumbe na chini au chini ya kunde. zuio lisilojulikana la Kizingiti (MIN_UNKNOWN_SIZE); # endif // DECODE_HASH irrecv.washaIRIn (); // Anzisha mpokeaji}

// Sehemu ya kurudia ya nambari

// batili kitanzi () {// Angalia ikiwa nambari ya IR imepokelewa. ikiwa (irrecv.decode (na matokeo)) {// Onyesha muhuri wa muda usiofaa. uint32_t sasa = millis (); Serial.printf ("Muhuri wa muda:% 06u.% 03u / n", sasa / 1000, sasa% 1000); ikiwa (results.overflow) Serial.printf ("ONYO: Nambari ya IR ni kubwa sana kwa bafa (> =% d)." "Matokeo haya hayapaswi kuaminiwa hadi haya yatatuliwe." "Hariri & ongeza CAPTURE_BUFFER_SIZE. / n ", CAPTURE_BUFFER_SIZE); // Onyesha pato la msingi la kile tulichopata. Serial.print (matokeoToHumanReadableBasic (& matokeo)); dumpACInfo (& matokeo); // Onyesha maelezo yoyote ya ziada ya A / C ikiwa tunayo. mavuno (); // Lisha WDT kwani pato la maandishi linaweza kuchukua muda kuchapisha.

// Onyesha toleo la maktaba ujumbe ulinaswa na.

Serial.print ("Maktaba: v"); Serial.println (_IRREMOTEESP8266_VERSION_); Serial.println ();

// Maelezo ya muda wa RAW ya matokeo.

Serial.println (matokeoToTimingInfo (& matokeo)); mavuno (); // Tunza WDT (tena)

// Pata matokeo kama msimbo wa chanzo

Serial.println (matokeoToSourceCode (& matokeo)); Serial.println (""); // Mstari tupu kati ya maingilio mavuno (); // Chakula WDT (tena)}}

Mchoro huu unapopakuliwa na kuendeshwa na ufuatiliaji wa serial wazi utatoa nambari kwa kitufe cha waandishi wa habari (angalia picha)

Andika misimbo unayotaka kutumia kwa matumizi ya baadaye. Nilikuwa bora kutazama kile nilichopata vifungo nilivyotaka kutumia (tazama picha)

Nilibadilisha vifungo katika shughuli yangu ya Netflix Kutuma ishara ya kusitisha kutoka kwa kijijini cha panasonic.. (angalia picha)

Hatua ya 3: Kuandika Nambari ya Kutuma kwa Nodered

Kuandika Nambari ya Kutuma kwa Nodered
Kuandika Nambari ya Kutuma kwa Nodered

#fndef UNIT_TEST # ni pamoja na # endif # pamoja na

# pamoja

# pamoja

# pamoja

# pamoja

# pamoja

const char * ssid = ""; // Ingiza SSID hereconst char * password = ""; // Ingiza Nenosiri hapa const char char * host = ""; // Ip addresse #fafanua USE_SERIAL Serial ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); namua matokeo_ya matokeo; kuanzisha batili () {irrecv.enableIRIn (); // Anzisha mpokeaji USE_SERIAL.anza (115200); // USE_SERIAL.setDebugOutput (kweli); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();

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

USE_SERIAL.printf ("[SETUP] Subiri% d… / n", t); USE_SERIAL.flush (); kuchelewesha (1000); } Njia ya WiFi (WIFI_STA); WiFiMulti.addAP (ssid, nywila); } kitanzi batili () {if (irrecv.decode (na matokeo)) {

// Badilisha thamani hii ya ishara kwa ile uliyonayo

ikiwa (results.value == 0x40040D00606D) {USE_SERIAL.println ("pause Signal kupokea"); wifisend (pumzika); kuchelewesha (1000);

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

USE_SERIAL.println ("uliopita");

wifisend ("prev"); kuchelewesha (1000); } ikiwa (results.value == 0x40040100F2F3) {USE_SERIAL.println ("next"); wifisend ("ijayo"); kuchelewesha (1000); }

kuendelea irrecv (); // Pokea thamani inayofuata} kuchelewa (100); } wifisend batili (data ya Kamba) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] anza… / n"); // sanidi seva ya msiba na url http.begin ("https:// [user]: [pass] @ [ip]: [port] / chromecastpause? data =" + data); USE_SERIAL.print ("[HTTP] PATA… / n"); // kuanza unganisho na tuma kichwa cha HTTP int httpCode = http. GET (); // httpCode itakuwa hasi kwa kosa ikiwa (httpCode> 0) {// kichwa cha HTTP kimetumwa na kichwa cha majibu ya Seva kimeshughulikiwa USE_SERIAL.printf ("[HTTP] PATA… nambari:% d / n", // faili iliyopatikana kwenye seva

ikiwa (httpCode == HTTP_CODE_OK) {Mshahara wa malipo ya kamba = http.getString (); USE_SERIAL.println (malipo ya malipo); }} mwingine {USE_SERIAL.printf ("[HTTP] GET… imeshindwa, kosa:% s / n", http.errorToString (httpCode).c_str ()); } http.end (); kuchelewesha (100); }}

Hii ndio nambari niliyotumia kwenye nodemcu yangu. Utahitaji kuwa na maktaba hizo.

Unaweza kujaribu kutumia mfuatiliaji wa serial na bonyeza vitufe vya mbali ulivyoongeza kwenye nambari ili uone majibu.

Katika mstari:

kuanza.

Unahitaji kubadilisha [mtumiaji] kuwa mtumiaji wako na kadhalika. BILA mabano. mabano yapo kuonyesha uwanja wa wachawi ubadilike.

Mstari huo pia hautafanya kazi mpaka tuweke mtiririko wetu kwa kichwa.

Hatua ya 4: Kuunda Mtiririko katika Nodered

Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered
Kuunda Mtiririko katika Nodered

Kama nilivyosema mwanzoni ninatumia hass.io na nodered. Ikiwa utatumia usanidi tofauti utahitaji kuifanya tofauti! Unaweza kuona kwenye picha kwamba kitufe kinapobonyezwa inaonyesha kwenye dirisha la utatuzi …

Node ya malipo ya malipo labda ingekuwa imerukwa ikiwa ningechagua kitu tofauti na data = katika hatua ya awali. Node ya kubadili ninayotumia ni kubwa zaidi kuliko tu pause lakini hiyo ni hivyo tu ningeweza kuongeza ishara zaidi za kutumia chromecast kwa vituo vya redio nk.

Kwa kucheza tu pause unaweza kutumia mtiririko kwenye picha nyingine.

[{"id": "e6440c30.4a35a", "aina": "http in", "z": "869ceb74.0275c8", "jina": "", "url": "chromecastpause", "method": "pata", "pakia": uwongo, "swaggerDoc": "", "x": 133, "y": 98, "waya":

Nimeondoa jina la mtumiaji na url kutoka kwa hii ili uweze kuhitaji kuhariri hiyo.

ongeza nodi ya kubadili ikiwa unataka kujibu zaidi ya kusitisha tu (angalia picha kwa mfano)

Katika node ya msaidizi wa nyumbani kwa matumizi ya pause:

jina: cheza pause chromecastdomain: media_playerService: media_play_pausedata: {"entity_id": "media_player. [chromecast yako hapa]"}

kwa wimbo unaofuata nakili tu nodi hiyo na ubadilishe huduma kwa: media_next_track na jina kwa: chromecast inayofuata

Hatua ya 5: Hiari ya Alexa Sitisha Chromecast

Hiari ongeza amri ya alexa ya kusitisha chromecast:

Kuna chaguzi hapa.. Unaweza kutengeneza alexa nnode moja iitwayo pause chromecast inayosimamisha chromecast, au unaweza kufanya moja iitwe pause tv ambayo huangalia shughuli za maelewano za sasa na kusitisha kulingana na hiyo.

Nitaongeza hii hapa baadaye..

Ilipendekeza: