Sisukord:

Peatage Chromcast kaugjuhtimispuldiga: 5 sammu
Peatage Chromcast kaugjuhtimispuldiga: 5 sammu

Video: Peatage Chromcast kaugjuhtimispuldiga: 5 sammu

Video: Peatage Chromcast kaugjuhtimispuldiga: 5 sammu
Video: Mastering Microsoft's CLI Packet Capture: Pktmon.exe for IT Pros 2024, November
Anonim
Image
Image
Varustus
Varustus

Mul on Logitechi harmooniapult ja käivitan koduabilise vaarika pi peal.

Tahtsin chromecasti oma kaugjuhtimispuldist peatada, kuid mul on vana teler, mis seda hdmi kaudu ei toeta. Minu idee oli siis kasutada NodeMcu, et tabada ir -signaal ja teha paus.

Kui te ei saa seda tööle või teil on küsimusi, palun kommenteerige allpool

1. samm: varustus

Varustus
Varustus
Varustus
Varustus

Vajalik varustus:

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

Ir vastuvõtja (nagu näiteks see:

dupont juhtmed

Mikro -USB -kaabel (toite nodemcu)

Kasutan Logitech Harmony -hubi

Minu lähenemisviisi jaoks on teil vaja Raspberry pi -d, millel on hass.io installitud ja sõlmitud. Ma ei hakka siin koduabilisi asju seadistama. Kui kasutate midagi muud kui koduabiline, peate asju ise kohandama.

Peate saama Nodemcu kasutada Arduino IDE -s, kuna ma ei hakka seda siin käsitlema

2. samm: kaugsignaal

Kaugsignaal
Kaugsignaal
Kaugsignaal
Kaugsignaal
Kaugsignaal
Kaugsignaal
Kaugsignaal
Kaugsignaal

See, kuidas ma seda tegin, oli signaali kopeerimine kaugjuhtimispuldist, mida ma ei kasuta, harmoonilisse kaugjuhtimispulti.

Kasutasin Panasonicu televiisori mudeli TXL32C3E kaugjuhtimispulti, kuna see ei häiri minu esimesel korrusel asuvaid seadmeid. See on televiisor, mis mul üleval on.

Kui te ei kasuta harmooniat, võite selle vahele jätta.

Nii et signaali leidmiseks kasutasin seda visandit:

/ * * IRremoteESP8266: IRrecvDumpV2 - IR -koodide üksikasjade tühjendamine IRrecv -ga * Sisendiga RECV_PIN peab olema ühendatud IR -detektor/demodulaator. * * Autoriõigus 2009 Ken Shirriff, https://arcfn.com * Autoriõigus 2017 David Conran * * Lülitusskeemi näide: * https://arcfn.com * * Muudatused: * Versioon 0.3, november 2017 * - A/C tugi mõnede protokollide dekodeerimine. * Versioon 0.2, aprill * * Põhineb Ken Shirriffi IrsendDemo versioonil 0.1, juuli 2009, */

#ifndef UNIT_TEST

#include #endif #include #include #include #if DECODE_AC #include #include #include #include #include #endif // DECODE_AC

// ==================== häälestatavate parameetrite algus ====================

// Infrapunaandur/demodulaator on ühendatud GPIO tihvtiga 14 // nt. D5 NodeMCU tahvlil. #define RECV_PIN 14

// Sarjaühenduse edastuskiirus.

// st olekusõnum saadetakse arvutisse selle edastuskiirusega. // Proovige vältida aeglast kiirust, näiteks 9600, sest te jätate sõnumid vahele ja // tekitate muid probleeme. Soovitatav on 115200 (või kiirem). // MÄRKUS. Veenduge, et seadistate jadamonitor samale kiirusele. #defineeri BAUD_RATE 115200

// Kuna see programm on eriotstarbeline püüdmine/dekodeerija, siis kasutame suuremat

// kui tavaline puhver, et saaksime hakkama kliimaseadme kaugkoodidega. #define CAPTURE_BUFFER_SIZE 1024

// TIMEOUT on nr. millisekundeid enam-andmeid, enne kui arvestame a

// sõnum lõppes. // See parameeter on huvitav kompromiss. Mida pikem on aegumine, seda // keerukam on sõnum, mida see suudab jäädvustada. nt. Mõned seadmeprotokollid saadavad // mitu sõnumipaketti kiiresti, näiteks kliimaseadme kaugjuhtimispuldid. // Air Coniditioneri protokollidel on // pakettide vahel sageli märkimisväärne vahe (20-40+ms). // Suure ajalõpu väärtuse negatiivne külg on palju vähem keerukaid protokolle // saata mitu sõnumit, kui kaugjuhtimispuldi nuppu all hoitakse. Vahe // nende vahel on sageli ka umbes 20+ms. Selle tulemuseks võib olla see, et algandmed on 2-3 korda suuremad kui vaja, kuna need on hõivanud 2-3+ sõnumit ühe // püüdmisega. Madala ajalõpu väärtuse määramine võib selle lahendada. // Niisiis on teie jaoks konkreetse juhtumi jaoks parima TIMEOUT väärtuse valimine // üsna nüansirikas. Palju õnne ja jahti. // MÄRKUS. Ärge ületage MAX_TIMEOUT_MS. Tavaliselt 130 ms. #if DECODE_AC #define TIMEOUT 50U // Mõnede kliimaseadmete protokollides on lünki ~ 40 ms. // nt. Kelvinator // Nii suur väärtus võib alla neelata mõnede protokollide kordusi #else // DECODE_AC #define TIMEOUT 15U // Sobib enamikule sõnumitele, kuid ei neela palju kordusi. #endif // DECODE_AC // Alternatiivid: // #define TIMEOUT 90U // Sobib suurte tühimikega sõnumitele, nagu XMP-1 ja mõned õhukonditsioneerid //, kuid võivad kogemata neelata //DD väljundis korduvaid sõnumeid. // #define TIMEOUT MAX_TIMEOUT_MS // See määrab selle meie praegu lubatud // maksimumile. Nii kõrged väärtused on problemaatilised // kuna see on ligikaudu tüüpiline piir //, kus enamik sõnumeid kordub. // nt. See lõpetab sõnumi dekodeerimise ja // alustab selle saatmist jadale täpselt // ajal, mil järgmine sõnum tõenäoliselt // edastatakse, ja võib selle vahele jätta.

// Määrake väikseima suurusega teadmata sõnumipaketid, millest me tegelikult hoolime.

// See väärtus aitab vähendada IR-tausta valepositiivset tuvastamismäära // müra reaalsete sõnumitena. Võimalus, et infrapuna taustamüra tuvastatakse // sõnumina, suureneb koos väärtuse TIMEOUT pikkusega. (Vt ülal) // Selle sõnumi liiga suureks seadmise negatiivne külg on see, et võite vahele jätta mõned kehtivad // lühisõnumid protokollide jaoks, mida see raamatukogu ei dekodeeri. // // Seadistage kõrgemaks, kui saate palju juhuslikke lühikesi tundmatuid teateid, kui midagi // ei peaks sõnumit saatma. // Seadistage madalam, kui olete kindel, et teie seadistus töötab, kuid see ei näe teie seadme // sõnumeid. (nt muud IR -kaugjuhtimispuldid töötavad.) // MÄRKUS: Tundmatu tuvastamise tõhusaks väljalülitamiseks määrake see väärtus väga kõrgeks. #define MIN_UNKNOWN_SIZE 12 // ==================== häälestatavate parameetrite lõpp ====================

// Täielikuma jäädvustamise hõlbustamiseks kasutage puhver salvestamise funktsiooni sisselülitamist.

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

decode_results tulemused; // Kuhugi tulemuste salvestamiseks

// Kui võimalik, näidake kliimaseadme sõnumi inimestele loetavat olekut.

tühine dumpACInfo (decode_results *results) {String description = ""; #if DECODE_DAIKIN if (results-> decode_type == DAIKIN) {IRDaikinESP ac (0); ac.setRaw (tulemused-> olek); kirjeldus = ac.toString (); } #endif // DECODE_DAIKIN #if DECODE_FUJITSU_AC if (results-> decode_type == FUJITSU_AC) {IRFujitsuAC ac (0); ac.setRaw (tulemused-> olek, tulemused-> bitti / 8); kirjeldus = ac.toString (); } #endif // DECODE_FUJITSU_AC #if DECODE_KELVINATOR if (results-> decode_type == KELVINATOR) {IRKelvinatorAC ac (0); ac.setRaw (tulemused-> olek); kirjeldus = ac.toString (); } #endif // DECODE_KELVINATOR #if DECODE_TOSHIBA_AC if (results-> decode_type == TOSHIBA_AC) {IRToshibaAC ac (0); ac.setRaw (tulemused-> olek); kirjeldus = ac.toString (); } #endif // DECODE_TOSHIBA_AC #if DECODE_MIDEA if (results-> decode_type == MIDEA) {IRMideaAC ac (0); ac.setRaw (tulemused-> väärtus); // Midea kasutab oleku asemel väärtust. kirjeldus = ac.toString (); } #endif // DECODE_MIDEA // Kui saime sõnumi inimesele loetava kirjelduse, kuvage see. if (kirjeldus! = "") Serial.println ("Mesg Desc.:" + kirjeldus); }

// Koodiosa käivitatakse käivitamisel ainult üks kord.

void setup () {Serial.begin (BAUD_RATE, SERIAL_8N1, SERIAL_TX_ONLY); viivitus (500); // Oodake natuke, kuni jadaühendus luuakse.

#kui DECODE_HASH

// Ignoreeri sõnumeid, mille sisse- ja väljalülitusimpulss on väiksem kui minimaalne. irrecv.setUnknownThreshold (MIN_UNKNOWN_SIZE); #endif // DECODE_HASH irrecv.enableIRIn (); // Käivitage vastuvõtja}

// Koodi korduv osa

// void loop () {// Kontrollige, kas IR -kood on vastu võetud. if (irrecv.decode (& results)) {// Kuva töötlemata ajatempel. uint32_t nüüd = millis (); Serial.printf ("Ajatempel: %06u. %03u / n", nüüd / 1000, praegu %1000); if (results.overflow) Serial.printf ("HOIATUS: IR -kood on puhvri jaoks liiga suur (> = %d)." "Seda tulemust ei tohiks usaldada enne, kui see on lahendatud." "Muutke ja suurendage CAPTURE_BUFFER_SIZE. / n ", CAPTURE_BUFFER_SIZE); // Kuvage leitud tulemuste põhiväljund. Serial.print (resultToHumanReadableBasic (& tulemused)); dumpACInfo (& tulemused); // Näita lisakonditsioneeri teavet, kui meil see on. saagikus (); // Sööda WDT -d, kuna tekstiväljund võib printida veidi aega.

// Kuva teegiversioon, millega sõnum jäädvustati.

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

// Väljundi tulemuse RAW ajastusinfo.

Serial.println (resultToTimingInfo (& tulemused)); saagikus (); // Sööda WDT -d (uuesti)

// Väljundi tulemused lähtekoodina

Serial.println (resultToSourceCode (& results)); Serial.println (""); // Tühi rida kirjete vahel return (); // Sööda WDT -d (uuesti)}}

Kui see visand on üles laaditud ja töötab avatud seeriamonitoriga, väljastab see nupuvajutuse koodi (vt pilti)

Kirjutage üles koodid, mida soovite hiljem kasutada. Märkasin Exceli abil, mida sain nuppude jaoks, mida tahtsin kasutada (vt pilti)

Ma muutsin oma Netflixi tegevuse nuppe, et saata pausisignaal Panasonicu puldist.. (vt pilti)

Samm 3: Nooderdatud saatmise koodi kirjutamine

Noderedile saatmise koodi kirjutamine
Noderedile saatmise koodi kirjutamine

#ifndef UNIT_TEST #include #endif #include

#kaasake

#kaasake

#kaasake

#kaasake

#kaasake

const char* ssid = ""; // Sisesta SSID siiaconst char* password = ""; // Sisesta siia parool const char *host = ""; // Ip -aadress #define USE_SERIAL Serial ESP8266WiFiMulti WiFiMulti; uint16_t RECV_PIN = 14; IRrecv irrecv (RECV_PIN); decode_results tulemused; void setup () {irrecv.enableIRIn (); // Käivitage vastuvõtja USE_SERIAL.begin (115200); // USE_SERIAL.setDebugOutput (tõsi); USE_SERIAL.println (); USE_SERIAL.println (); USE_SERIAL.println ();

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

USE_SERIAL.printf ("[SETUP] OOTA %d… / n", t); USE_SERIAL.flush (); viivitus (1000); } WiFi.mood (WIFI_STA); WiFiMulti.addAP (ssid, parool); } void loop () {if (irrecv.decode (& tulemused)) {

// Muutke seda signaali väärtust selle jaoks, mis teil on

if (results.value == 0x40040D00606D) {USE_SERIAL.println ("paus Signaal saadi"); wifisend (paus); viivitus (1000);

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

USE_SERIAL.println ("eelmine");

wifisend ("eelmine"); viivitus (1000); } if (results.value == 0x40040100F2F3) {USE_SERIAL.println ("järgmine"); wifisend ("järgmine"); viivitus (1000); }

irrecv.resume (); // järgmise väärtuse vastuvõtmine} delay (100); } void wifisend (String andmed) {if ((WiFiMulti.run () == WL_CONNECTED)) {HTTPClient http; USE_SERIAL.print ("[HTTP] algab… / n"); // tragöödiaserveri ja URL -i seadistamine http.begin ("https:// [kasutaja]: [pass]@[ip]: [port]/chromecastpause? data =" + andmed); USE_SERIAL.print ("[HTTP] GET… / n"); // ühenduse loomine ja HTTP päise saatmine int httpCode = http. GET (); // httpCode on vea korral negatiivne, kui (httpCode> 0) {// HTTP päis on saadetud ja serveri vastuse päis on käsitletud USE_SERIAL.printf ("[HTTP] GET… code: %d / n", // fail leiti serverist

if (httpCode == HTTP_CODE_OK) {Stringi kasulik koormus = http.getString (); USE_SERIAL.println (kasulik koormus); }} else {USE_SERIAL.printf ("[HTTP] GET … ebaõnnestus, viga: %s / n", http.errorToString (httpCode).c_str ()); } http.end (); viivitus (100); }}

Seda koodi kasutasin oma nodemcul. Peate need teegid installima.

Saate testida jadamonitori abil ja vajutage vastuse nägemiseks koodis lisatud kaugjuhtimisnuppe.

Reas:

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

Peate muutma [kasutaja] oma kasutajaks ja nii edasi. ILMA sulgudes. sulgud on selleks, et näidata nõiavälju, mida muuta.

See liin ei tööta ka enne, kui oleme oma voo sisse seadnud.

4. samm: voo loomine Noderedis

Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis
Voo loomine Noderedis

Nagu alguses mainitud, kasutan hased.io koos noogutusega. Kui kasutate erinevat seadistust, peate selle muutma! Pildilt näete, et nupu vajutamisel kuvatakse see silumisaknas …

Kasuliku koormuse muutmise sõlme oleks ilmselt saanud vahele jätta, kui oleksin eelmises etapis valinud midagi muud, kui need andmed = Minu kasutatav lülitussõlm on palju suurem kui lihtsalt paus, kuid see on lihtsalt selleks, et saaksin lisada rohkem signaale, et kasutada raadiojaamade jaoks Chromecastit jne.

Lihtsalt esitamise pausi jaoks võite kasutada teisel pildil olevat voogu.

[{"id": "e6440c30.4a35a", "type": "http in", "z": "869ceb74.0275c8", "name": "", "url": "chromecastpause", "method": "saada", "üles laadida": vale, "swaggerDoc": "", "x": 133, "y": 98, "juhtmed":

Eemaldasin siit kasutajanime ja URL -i, nii et peate võib -olla seda muutma.

lisage lülitussõlm, kui soovite reageerida rohkem kui lihtsalt peatada (vt näiteks pilti)

Koduabisõlmes pausi kasutamiseks:

nimi: esita paus chromecastdomain: media_playerService: media_play_pausedata: {"entity_id": "media_player. [teie Chromecast siin]"}

järgmise loo jaoks kopeerige see sõlm ja muutke teenust aadressile: media_next_track ja nimi järgmisele Chromecastile

Samm: valikuline Alexa Peata Chromecast

Valikuline käsu alexa lisamine Chromecasti peatamiseks:

Siin on valikuvõimalusi.. Saate teha ühe alexa nnode nimega paus chromecast, mis peatab chromecasti, või saate teha pausi -TV, mis kontrollib praegust harmooniat ja peatab sõltuvalt sellest.

Lisan selle siia hiljem..

Soovitan: