Sisukord:
- 1. samm: varustus
- 2. samm: kaugsignaal
- Samm 3: Nooderdatud saatmise koodi kirjutamine
- 4. samm: voo loomine Noderedis
- Samm: valikuline Alexa Peata Chromecast
Video: Peatage Chromcast kaugjuhtimispuldiga: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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
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
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
#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
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:
Koroonaviirus: peatage levik Micro: bitiga: 3 sammu
Koroonaviirus: lõpetage levik Micro: bitiga: kõige raskematel aegadel särab inimese leidlikkus kõige rohkem. Jaanuarist 2020 haaras kogu maailma COVID-19 pandeemia. COVID-19 levib õhutilkade ja fomiitide kaudu. Fomiidid on lihtsalt elutud asjad, nagu mööbel, riided, ukselink
Peatage ALICE - uksebarrikaad liikumispuudega inimestele: 8 sammu
Peatage ALICE - uksebarrikaad piiratud liikumisvõimega inimestele: probleem Ratastooli kasutavatele inimestele võib olla raske end vajadusel tuppa tõkestada. Selle projekti eesmärk on kavandada seade, mis aitaks inimestel, kes kasutavad ratastoole ja/või kellel on vähenenud käetugevus, kiiresti takistada
Peatage praod purunenud telefoni ekraanil alla 5 dollari eest: 3 sammu
Peatage praod purunenud telefoniekraanil alla 5 dollari eest: Oluline märkus: see parandus on mõeldud selleks, et teid läbi viia, kuni vahetate teenusepakkujat, saate tasuta uuendada jne. Ma vihkan oma praegust mobiiltelefoniteenuse pakkujat ja plaanin vahetada 2-3 kuud, mis juhtub? Heidan telefoni maha ja pragin ekraani. See ei olnud
Peatage higistavad käed ja jalad higivõitlejaga!: 7 sammu (piltidega)
Peatage higistamisvõitlejaga higised käed ja jalad!: 01.03.2019 Värskendus: Mõned inimesed teatavad valust, mis on põhjustatud kiirest polaarsuse muutmisest. Selle probleemi vähendamiseks värskendan koodi, kuid esialgu peaksite selle ehitamisest loobuma. Hüperhidroos on seisund, mis põhjustab liigset
Juhtige oma elektriseadmeid teleri kaugjuhtimispuldiga (kaugjuhtimispuldiga), temperatuuri ja niiskuse näidikuga: 9 sammu
Juhtige oma elektriseadmeid teleri kaugjuhtimispuldiga (kaugjuhtimispuldiga) temperatuuri ja niiskuse kuvaga: Tere, ma olen Abhay ja see on minu esimene ajaveeb Instructables ja täna näitan teile, kuidas oma elektriseadmeid teleri kaugjuhtimispuldiga juhtida, luues selle lihtne projekt. tänu atl laborile toe ja materjali pakkumise eest