Satura rādītājs:
- 1. solis: aprīkošana
- 2. darbība: attālais signāls
- 3. solis: koda rakstīšana nosūtīšanai uz Nodered
- 4. darbība: plūsmas izveide Nodered
- 5. darbība. Pēc izvēles Alexa apturiet Chromecast darbību
Video: Pārtrauciet Chromcast darbību ar tālvadības pulti: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Man ir Logitech harmonijas tālvadības pults un palaižu mājas palīgu aveņu pi.
Es gribēju, lai varētu apturēt Chromecast darbību no tālvadības pults, bet man ir vecs televizors, kas to neatbalsta, izmantojot hdmi. Mana ideja bija tad izmantot NodeMcu, lai uztvertu ir signālu un apturētu.
Ja nevarat to izmantot vai jums ir jautājumi, lūdzu, komentējiet tālāk
1. solis: aprīkošana
Nepieciešamais aprīkojums:
Nodemcu (https://www.ebay.com/sch/i.html?_from=R40&_trksid=…
Ir uztvērējs (piemēram, šis:
dupont vadi
Mikro USB kabelis (strāvas nodemcu)
Es izmantoju Logitech Harmony -hub
Manai pieejai jums ir nepieciešams Raspberry pi ar hass.io Instalēts un Nodered. Es šeit neiedziļināšos, lai izveidotu mājas palīgu. Ja izmantojat kaut ko citu, nevis mājas palīgu, jums pašiem jāpielāgo materiāls.
Jums ir jāspēj izmantot Nodemcu Arduino IDE, jo es šeit to neiedziļināšos
2. darbība: attālais signāls
Tas, kā es to darīju, bija signāla kopēšana no tālvadības pults, kuru es neizmantoju, uz harmonijas tālvadības pulti.
Es izmantoju tālvadības pulti Panasonic televizora modelim TXL32C3E, jo tas netraucē manam pirmajā stāvā esošajam aprīkojumam. Tas ir televizors, kas man ir augšstāvā.
Ja neizmantojat harmoniju, varat to izlaist.
Tātad, lai atrastu signālu, es izmantoju šo skici:
/ * * IRremoteESP8266: IRrecvDumpV2 - informācija par IR kodiem, izmantojot IRrecv * Ieejai RECV_PIN jāpievieno IR detektors/demodulators. * * Autortiesības 2009 Ken Shirriff, https://arcfn.com * Autortiesības 2017 David Conran * * Shēmas shēmas piemērs: * https://arcfn.com * * Izmaiņas: * Versija 0.3., 2017. gada novembris * - A/C atbalsts dažu protokolu dekodēšana. * Versija 0.2, 2017. gada aprīlis * - atšifrējiet no datu kopijas, lai mēs varētu ātrāk tvert, tādējādi * samazinot kļūdu iegūšanas iespējamību. * Pamatojoties uz Kena Širifa IrsendDemo versiju, 2009. gada 0.1. Jūlijs, */
#ifndef UNIT_TEST
#include #endif #include #include #include #if DECODE_AC #include #include #include #include #include #endif // DECODE_AC
// ==================== PIELIETOJAMO PARAMETRU sākums ====================
// IR detektors/demodulators ir pievienots GPIO tapai 14 // piem. D5 uz NodeMCU plates. #define RECV_PIN 14
// Sērijas savienojuma pārraides ātrums.
// t.i., statusa ziņojums tiks nosūtīts uz datoru ar šādu pārraides ātrumu. // Centieties izvairīties no lēna ātruma, piemēram, 9600, jo jūs palaidīsit garām ziņojumus un // radīsit citas problēmas. Ieteicams izmantot 115200 (vai ātrāk). // PIEZĪME: Pārliecinieties, vai seriālais monitors ir iestatīts uz tādu pašu ātrumu. #define BAUD_RATE 115200
// Tā kā šī programma ir īpaša mērķa uztveršanas/dekodēšanas ierīce, izmantosim lielāku
// nekā parasts buferis, lai mēs varētu apstrādāt gaisa kondicionētāja tālvadības kodus. #define CAPTURE_BUFFER_SIZE 1024
// TIMEOUT ir Nr. milisekundes bez datiem, pirms mēs uzskatām a
// ziņa beigusies. // Šis parametrs ir interesants kompromiss. Jo ilgāks taimauts, jo // ir sarežģītāks ziņojums. piem. Daži ierīču protokoli, piemēram, gaisa kondicionētāja tālvadības pults, ātri nosūtīs // vairākas ziņojumu paketes. // Air Coniditioner protokoliem bieži ir ievērojama atstarpe (20-40+ms) starp // paketēm. // Lielas noildzes vērtības negatīvie aspekti ir daudz mazāk sarežģītu protokolu // nosūtīt vairākus ziņojumus, kad tālvadības pults poga ir nospiesta. Plaisa starp // bieži vien ir arī aptuveni 20+ms. Tā rezultātā neapstrādātie dati var būt 2–3 reizes lielāki nekā nepieciešams, jo vienā // tveršanā ir uzņemti 2-3+ ziņojumi. Nosakot zemu taimauta vērtību, to var atrisināt. // Tātad, izvēloties vispiemērotāko TIMEOUT vērtību savam konkrētajam gadījumam, ir // diezgan niansēti. Veiksmi un laimīgas medības. // PIEZĪME. Nepārsniedziet MAX_TIMEOUT_MS. Parasti 130 ms. #if DECODE_AC #define TIMEOUT 50U // Dažām gaisa kondicionēšanas iekārtu protokolos ir nepilnības ~ 40 ms. // piem. Kelvinātors // Tik liela vērtība var norīt dažu protokolu atkārtojumus #else // DECODE_AC #define TIMEOUT 15U // Piemērots lielākajai daļai ziņojumu, vienlaikus nerijot daudzus atkārtojumus. #endif // DECODE_AC // Alternatīvas: // #define TIMEOUT 90U // Piemērots ziņojumiem ar lielām atstarpēm, piemēram, XMP-1 un dažām gaisa kondicionēšanas // vienībām, bet var nejauši norīt atkārtotus ziņojumus // izejā rawData . // #define TIMEOUT MAX_TIMEOUT_MS // Tas iestatīs to uz mūsu pašlaik atļauto // maksimālo. Tik augstas vērtības ir problemātiskas //, jo tā ir aptuveni tipiskā robeža //, kur atkārtojas lielākā daļa ziņojumu. // piem. Tas pārtrauks ziņojuma atšifrēšanu un // sāks to nosūtīt uz seriālu precīzi // laikā, kad, visticamāk, // tiks pārsūtīts nākamais ziņojums, un var to palaist garām.
// Iestatiet mazākā izmēra "UNKNOWN" ziņojumu paketes, kas mums patiešām rūp.
// Šī vērtība palīdz samazināt viltus pozitīvo IR fona noteikšanas ātrumu // troksni kā reālus ziņojumus. Fona IR trokšņa noteikšanas iespējas // kā ziņojums palielinās līdz ar TIMEOUT vērtības garumu. (Skatīt iepriekš) // Šī ziņojuma pārāk lielas iestatīšanas trūkums ir tas, ka varat palaist garām dažus derīgus // īsziņas protokoliem, kurus šī bibliotēka vēl nav atšifrējusi. // // Iestatiet augstāku vērtību, ja saņemat daudz nejaušu, nepazīstamu ziņojumu, kad nekas // nesūta ziņojumu. // Iestatiet zemāku vērtību, ja esat pārliecināts, ka jūsu iestatīšana darbojas, bet tā neredz ziņojumus // no jūsu ierīces. (piemēram, darbojas citi IR tālvadības pults.) // PIEZĪME. Iestatiet šo vērtību ļoti augstu, lai efektīvi izslēgtu NEZINĀTO noteikšanu. #define MIN_UNKNOWN_SIZE 12 // ==================== Noskaņojamo parametru beigas ====================
// Izmantojiet ieslēgt bufera saglabāšanas funkciju, lai iegūtu pilnīgāku uztveršanas pārklājumu.
IRrecv irrecv (RECV_PIN, CAPTURE_BUFFER_SIZE, TIMEOUT, true);
decode_results rezultāti; // Kaut kur saglabāt rezultātus
// Ja varam, parādiet gaisa kondicionēšanas ziņojuma cilvēka lasāmo stāvokli.
void dumpACInfo (decode_results *results) {String description = ""; #if DECODE_DAIKIN if (results-> decode_type == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (rezultāti-> stāvoklis); apraksts = ac.toString (); } #endif // DECODE_DAIKIN #if DECODE_FUJITSU_AC if (results-> decode_type == FUJITSU_AC) {IRFujitsuAC ac (0); ac.setRaw (rezultāti-> stāvoklis, rezultāti-> biti / 8); apraksts = ac.toString (); } #endif // DECODE_FUJITSU_AC #if DECODE_KELVINATOR if (results-> decode_type == KELVINATOR) {IRKelvinatorAC ac (0); ac.setRaw (rezultāti-> stāvoklis); apraksts = ac.toString (); } #endif // DECODE_KELVINATOR #if DECODE_TOSHIBA_AC if (results-> decode_type == TOSHIBA_AC) {IRToshibaAC ac (0); ac.setRaw (rezultāti-> stāvoklis); apraksts = ac.toString (); } #endif // DECODE_TOSHIBA_AC #if DECODE_MIDEA if (results-> decode_type == MIDEA) {IRMideaAC ac (0); ac.setRaw (rezultāti-> vērtība); // Midea izmanto vērtību stāvokļa vietā. apraksts = ac.toString (); } #endif // DECODE_MIDEA // Ja mēs saņēmām cilvēka lasāmu ziņojuma aprakstu, parādiet to. if (description! = "") Serial.println ("Mesg Desc.:" + apraksts); }
// Koda sadaļa palaišanas laikā tiek palaista tikai vienu reizi.
void setup () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); kavēšanās (500); // Pagaidiet mazliet, līdz tiek izveidots seriālais savienojums.
#ja DECODE_HASH
// Ignorēt ziņojumus ar mazākiem vai mazākiem ieslēgšanas vai izslēgšanas impulsiem. irrecv.setUnknownThreshold (MIN_UNKNOWN_SIZE); #endif // DECODE_HASH irrecv.enableIRIn (); // Iedarbiniet uztvērēju}
// Atkārtota koda sadaļa
// void loop () {// Pārbaudiet, vai IR kods ir saņemts. if (irrecv.decode (& rezultāti)) {// Parādiet neapstrādātu laika zīmogu. uint32_t tagad = milis (); Serial.printf ("Laika zīmogs: %06u. %03u / n", tagad / 1000, tagad %1000); if (results.overflow) Serial.printf ("BRĪDINĀJUMS: IR kods ir pārāk liels buferim (> = %d)." "Šim rezultātam nevajadzētu uzticēties, kamēr tas nav novērsts." "Rediģēt un palielināt CAPTURE_BUFFER_SIZE. / n ", CAPTURE_BUFFER_SIZE); // Parādiet atrastā pamata izvadi. Serial.print (resultToHumanReadableBasic (& rezultāti)); dumpACInfo (& rezultāti); // Parādiet papildu informāciju par gaisa kondicionēšanu, ja tā mums ir. raža (); // Barojiet WDT, jo teksta izvadīšana var aizņemt kādu laiku.
// Parādiet bibliotēkas versiju, ar kuru tika uzņemts ziņojums.
Serial.print ("Bibliotēka: v"); Serial.println (_IRREMOTEESP8266_VERSION_); Sērijas.println ();
// Izvadiet rezultātu RAW laika informāciju.
Serial.println (resultToTimingInfo (& rezultāti)); raža (); // Barojiet WDT (vēlreiz)
// Izvadiet rezultātus kā avota kodu
Serial.println (resultToSourceCode (& rezultāti)); Serial.println (""); // Tukša līnija starp ierakstiem return (); // Barojiet WDT (vēlreiz)}}
Kad šī skice ir augšupielādēta un darbojas ar atvērtu seriālo monitoru, tā izdos pogu nospiešanas kodu (skat. Attēlu)
Pierakstiet kodus, kurus vēlaties izmantot vēlākai lietošanai. Es izmantoju Excel, lai atzīmētu, ko es saņēmu pogām, kuras es gribēju izmantot (skat. Attēlu)
Es rediģēju pogas savā Netflix darbībā, lai no Panasonic tālvadības pults sūtītu pauzes signālu. (Skat. Attēlu)
3. solis: koda rakstīšana nosūtīšanai uz Nodered
#ifndef UNIT_TEST #include #endif #include
#iekļaut
#iekļaut
#iekļaut
#iekļaut
#iekļaut
const char* ssid = ""; // Šeit ievadiet SSID char* password = ""; // Ievadiet paroli šeit const char *host = ""; // Ip adrese #define USE_SERIAL Serial ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); decode_results rezultāti; void setup () {irrecv.enableIRIn (); // Sāciet uztvērēju USE_SERIAL.begin (115200); // USE_SERIAL.setDebugOutput (true); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();
par (uint8_t t = 4; t> 0; t--) {
USE_SERIAL.printf ("[IESTATĪJUMI] Gaidīt %d… / n", t); USE_SERIAL.flush (); kavēšanās (1000); } WiFi.mode (WIFI_STA); WiFiMulti.addAP (ssid, parole); } void loop () {if (irrecv.decode (& rezultāti)) {
// Mainiet šo signāla vērtību tam, kas jums ir
if (results.value == 0x40040D00606D) {USE_SERIAL.println ("pauzes signāls saņemts"); wifisend (pauze); kavēšanās (1000);
} ja (results.value == 0x400401007273) {
USE_SERIAL.println ("iepriekšējais");
wifisend ("iepriekšējais"); kavēšanās (1000); } if (results.value == 0x40040100F2F3) {USE_SERIAL.println ("next"); wifisend ("nākamais"); kavēšanās (1000); }
irrecv.resume (); // Saņemt nākamo vērtību} delay (100); } void wifisend (String data) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] sākas… / n"); // konfigurēt traģēdijas serveri un URL http.begin ("https:// [lietotājs]: [caurlaide]@[ip]: [ports]/chromecastpause? data =" + dati); USE_SERIAL.print ("[HTTP] IEGŪT… / n"); // sākt savienojumu un nosūtīt HTTP galveni int httpCode = http. GET (); // httpCode kļūdas gadījumā būs negatīvs, ja (httpCode> 0) {// HTTP galvene ir nosūtīta un servera atbildes galvene ir apstrādāta USE_SERIAL.printf ("[HTTP] GET… kods: %d / n", // fails atrasts serverī
if (httpCode == HTTP_CODE_OK) {String payload = http.getString (); USE_SERIAL.println (lietderīgā slodze); }} else {USE_SERIAL.printf ("[HTTP] GET … neizdevās, kļūda: %s / n", http.errorToString (httpCode).c_str ()); } http.end (); kavēšanās (100); }}
Šis ir kods, ko izmantoju savā nodemcu. Jums būs jāinstalē šīs bibliotēkas.
Lai redzētu atbildi, varat pārbaudīt, izmantojot seriālo monitoru, un nospiest kodā pievienotās tālvadības pogas.
Rindā:
http.begin ("https:// [lietotājs]: [caurlaide]@[ip]: [ports]/chromecastpause? data =" + dati);
Jums ir jāmaina [lietotājs] uz savu lietotāju un tā tālāk. BEZ kronšteiniem. ir iekavas, lai parādītu maināmos raganu laukus.
Šī līnija arī nedarbosies, kamēr mēs neiestatīsim savu plūsmu mezgloti.
4. darbība: plūsmas izveide Nodered
Kā jau minēts sākumā, es izmantoju hass.io ar nodered. Ja izmantojat citu iestatījumu, tas būs jādara savādāk! Attēlā var redzēt, ka, nospiežot pogu, tas tiek parādīts atkļūdošanas logā …
Izmaiņu lietderīgās slodzes mezglu, iespējams, varēja izlaist, ja iepriekšējā solī būtu izvēlējies kaut ko citu, nevis šos datus. Slēdžu mezgls, ko izmantoju, ir daudz lielāks, tikai pauze, bet tas ir tikai tāpēc, lai es varētu pievienot vairāk signālu, lai izmantotu chromecast radiostacijām utt.
Vienkārši atskaņošanas pauzei varat izmantot plūsmu citā attēlā.
[{"id": "e6440c30.4a35a", "type": "http in", "z": "869ceb74.0275c8", "name": "", "url": "chromecastpause", "method": "get", "upload": false, "swaggerDoc": "", "x": 133, "y": 98, "wire":
Es no tā noņēmu vārdu userpass un URL, tāpēc jums, iespējams, tas būs jārediģē.
pievienojiet slēdža mezglu, ja vēlaties reaģēt ne tikai uz pauzi (skatiet, piemēram, attēlu)
Mājas palīga mezglā pauzes lietošanai:
name: play pause chromecastdomain: media_playerService: media_play_pausedata: {"entity_id": "media_player. [jūsu Chromecast šeit]"}
nākamajam ierakstam vienkārši kopējiet šo mezglu un rediģējiet pakalpojumu uz: media_next_track un nosaukumu uz: next chromecast
5. darbība. Pēc izvēles Alexa apturiet Chromecast darbību
Pēc izvēles pievienojiet alexa komandu, lai apturētu Chromecast:
Šeit ir iespējas.. Jūs varat izveidot vienu alexa nnode ar nosaukumu pause chromecast, kas aptur Chromecast, vai arī varat izveidot pauzes TV, kas pārbauda pašreizējo harmonijas darbību un atkarībā no tā pauzes.
Vēlāk to pievienošu šeit..
Ieteicams:
Televizora tālvadības pults kļūst par RF tālvadības pulti -- NRF24L01+ apmācība: 5 soļi (ar attēliem)
TV tālvadības pults kļūst par RF tālvadības pulti || NRF24L01+ apmācība: Šajā projektā es jums parādīšu, kā es izmantoju populāro nRF24L01+ RF IC, lai bezvadu režīmā pielāgotu LED sloksnes spilgtumu, izmantojot trīs bezjēdzīgas TV tālvadības pults pogas. Sāksim
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: 6 soļi
IRduino: Arduino tālvadības pults - atdariniet pazaudētu tālvadības pulti: ja kādreiz esat pazaudējis televizora vai DVD atskaņotāja tālvadības pulti, jūs zināt, cik apgrūtinoši ir staigāt, atrast un izmantot pašas ierīces pogas. Dažreiz šīs pogas pat nepiedāvā tādas pašas funkcijas kā tālvadības pults. Saņemt
Parastais tālvadības pults komplekts pārveidots par četru kanālu RC rotaļlietu tālvadības pulti: 4 soļi
Parastais tālvadības pults komplekts ir pārveidots par četru kanālu RC rotaļlietu tālvadības pulti:方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 完成 这个 电子 电子 项目 并 为 您。 玩具 这个 这个 电子 项目 并 为 为 服务。 玩具 提供 提供 远程 项目 并
Kontrolējiet savas elektriskās ierīces ar televizora tālvadības pulti (tālvadības pulti) ar temperatūras un mitruma displeju: 9 soļi
Kontrolējiet savas elektriskās ierīces ar televizora tālvadības pulti (ir tālvadības pults) ar temperatūras un mitruma displeju: Sveiki, es esmu Abhajs, un tas ir mans pirmais emuārs par instrukcijām, un šodien es jums parādīšu, kā kontrolēt savas elektriskās ierīces ar televizora tālvadības pulti, izveidojot šo vienkāršs projekts. paldies atl lab par atbalstu un materiāla nodrošināšanu
Olympus Evolt E510 tālvadības kabeļa atbrīvošana (2. versija ar automātisko fokusēšanu uz tālvadības pulti): 6 soļi (ar attēliem)
Olympus Evolt E510 tālvadības kabeļa atbrīvošana (2. versija ar automātisko fokusēšanu uz tālvadības pulti): Vakar es uzbūvēju vienkāršu vienas pogas tālvadības pulti savam Olympus E510. Lielākajai daļai kameru ir aizvara atbrīvošanas poga (tā, kuru nospiežat, lai uzņemtu attēlu), kurai ir divi režīmi. Ja poga tiek viegli nospiesta, kamera automātiski fokusējas un mēra gaismu