Përmbajtje:

Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home: 11 hapa (me fotografi)
Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home: 11 hapa (me fotografi)

Video: Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home: 11 hapa (me fotografi)

Video: Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home: 11 hapa (me fotografi)
Video: Avantazhet e perdorimit te tekneologjise - Pro Business - 12 Korrik 2021 2024, Korrik
Anonim
Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home
Qendra e Automatizimit të Raspberry Pi-Arduino-SignalR Home

Pas disa IBLE -ve të preludit tim të botuara këtu dhe këtu, ky projekt hedh hapin e parë drejt ndërtimit të një versioni bazë të një Qendre Funksionale të Automatizimit të Shtëpisë.

Kam përdorur disa teknologji të ndryshme në një përpjekje për të kuptuar se si mund të jem në gjendje të përdor të gjitha gjërat që kam mësuar në të kaluarën dhe gjërat e reja që vazhdoj të mësoj me përparimin e ditëve.

Prandaj, ky Qendër Automatizimi përbëhet nga përbërësit e mëposhtëm:

Një bazë të dhënash SQL Server 2012 që:

  • ruan një listë të kodeve të paracaktuara me rreze infra të kuqe (IR) në një tabelë së bashku me një "çelës kodik" unik
  • çelësat e kodit emërtohen në mënyrë intuitive (nga përdoruesi) në mënyrë që të identifikojnë qëllimin e kodeve të tyre IR të lidhura

Një aplikacion në internet në kohë reale ASP. NET SignalR Hub që:

  • pret dhe merr "çelësat e kodit" si komanda nga një përdorues që përballet me klientin HTML
  • kur merret, lidhet me bazën e të dhënave SQL dhe merr një kod IR duke përdorur çelësin e kodit të furnizuar
  • transmeton kodin IR të marrë në një klient Python SignalR

Një përdorues përballë klientit të pultit të HTML SignalR që:

  • komunikon një çelës kod unik në Hub përmes API -ve të jQuery SignalR Client
  • çdo buton në Panel do të përfaqësojë një çelës kod unik të regjistruar në tabelën e bazës së të dhënave SQL

Një aplikacion i shërbimit të sfondit Python SignalR që funksionon në Raspberry Pi 2.0 që:

  • merr kodet IR si komanda nga Hub
  • kërkon përcaktues në Kodin IR dhe e ndan kodin shumë të gjatë në segmente
  • komunikon mbi portin Serial me Arduino dhe shkruan secilin segment radhazi

Një skicë transmetuese IR Arduino që:

  • pret dhe merr secilin nga segmentet e kodit IR mbi portin Serial
  • grumbullon segmentet e kodit në një grup tampon IR Code
  • paketon tamponin në një komandë IR Transmit duke përdorur bibliotekën IRLib Arduino

Nëse pajisja e synuar është në afërsi të transmetuesit IR, atëherë pajisja (mund) të reagojë ndaj sinjalit IR të transmetuar nga Arduino

SHËNIM

Megjithëse, pajisja e synuar që unë përdor në këtë demonstrim reagon ndaj sinjaleve IR, ju mund të dëshironi të lexoni këtë pjesë të IBLE tim tjetër për arsyet pse them se pajisja (mund) të reagojë ndaj sinjalit IR.

Koha për tu rrokullisur.

Hapi 1: Ajo që ju nevojitet, para asaj që ju nevojitet

Ajo që ju nevojitet, para asaj që ju nevojitet
Ajo që ju nevojitet, para asaj që ju nevojitet
Ajo që ju nevojitet, para asaj që ju nevojitet
Ajo që ju nevojitet, para asaj që ju nevojitet
Ajo që ju nevojitet, para asaj që ju nevojitet
Ajo që ju nevojitet, para asaj që ju nevojitet

Ky udhëzues ngrihet me disa nga punët e bëra më parë, të cilat gjithashtu rezultuan në IBLE tim të fundit.

Pra, para se të hyjmë në atë që na nevojitet për këtë IBLE, rekomandohet që ta lexoni këtë udhëzues për disa sfond se si:

  1. Biblioteka Infrared Arduino IRLib u krijua
  2. Si u përdorën kodet IR të përdorura në këtë IBLE duke përdorur një Marrës IR
  3. Si u përdorën kodet IR të kapura për të kontrolluar pajisjen e synuar përmes një transmetuesi IR

Pas përfundimit të këtij IBLE, unë vendosa një aplikacion në internet ASP. NET IR Code Recorder që do të:

  • Pranoni kodin IR të kapur së bashku me një çelës kodik të emëruar në mënyrë intuitive si hyrje përmes një forme uebi
  • Thyejeni kodin IR shumë të gjatë në segmente më pak se 64 karaktere të gjata për të qëndruar nën kufirin serik të tamponit të Arduino Uno
  • Segmenti i fundit i kodeve do të fiksohet paraprakisht me një "E" që i tregon Arduino-s se është marrë segmenti i fundit i kodit
  • Çdo segment do të ndahej nga një ndarës tubash para se të mblidhej përsëri në një varg të gjatë
  • Së fundi, Kodi i segmentuar IR së bashku me çelësin e tij të kodit u ruajt në një bazë të dhënash SQL Server 2012

Thisshtë kjo bazë e të dhënave SQL që formon një nga përbërësit e Qendrës së Automatizimit të Shtëpisë të përpunuar në këtë IBLE.

SHËNIM

Aplikacioni në internet IR Code Recorder nuk është pjesë e diskutimit këtu për arsyet e mëposhtme:

  • Ju mund të kapni me dorë kodet duke përdorur Arduino Sketch, t'i ndani ato në seksione të përcaktuara me tuba dhe t'i ruani ato në bazën e të dhënave pa pasur nevojë të ndërtoni një Aplikacion të përpunuar në internet
  • Ndryshe nga ky IBLE, IR Recorder fokusohet në komunikimin e kundërt nga Arduino në Raspberry Pi

Prandaj detajet mbi këtë projekt do të ishin temë për një IBLE tjetër

Hapi 2: Ajo që ju nevojitet - pajisja

Ajo që ju nevojitet - hardueri
Ajo që ju nevojitet - hardueri
Ajo që ju nevojitet - hardueri
Ajo që ju nevojitet - hardueri

Një Raspberry Pi 2.0 funksionale - Unë rekomandoj instalimin e Ubuntu Mate pasi ka një grup më të pasur karakteristikash përfshirë OpenLibre Office i cili nga rruga ishte i domosdoshëm në dokumentimin e këtij udhëzimi, pikërisht atje në Raspberry Pi.

Përveç kësaj, Pi, do t'ju duhen pjesët e jashtme të mëposhtme:

  • Platforma prototipuese Arduino Uno ose një klon
  • Një LED transmetues IR - Kam përdorur një markë të quajtur Three Legs nga Amazon.com
  • 330 ose një rezistencë 220 Ohm-kam përdorur 220 (kodi i ngjyrës Kuq-Kuq-Kafe) sepse kisha disa të dobishme
  • Pllaka e zakonshme e bukës, lidhëset dhe një kompjuter me Mjedisin Arduino të instaluar
  • Një kandidat për provë - siç është Samsung LED Monitori i kudogjendur me një telekomandë

Hapi 3: Çfarë ju nevojitet - Softueri

Për të mbledhur të gjitha pjesët së bashku, konfigurimi i mëposhtëm i softuerit do të duhet të instalohet dhe funksionojë:

Në Raspberry Pi, do t'ju duhet të instaloni sa vijon:

  • Arduino IDE - përdoret për të ndërtuar Skicën dhe për ta dërguar atë në UNO
  • Moduli Python për Arduino - për komunikim serik midis UNO dhe Pi
  • Biblioteka e klientit Python SignalR - Ju mund t'i referoheni udhëzimeve të bashkangjitura këtu

Një makinë Windows me mjedisin e mëposhtëm të zhvillimit të instaluar:

  • Edicion falas i Microsoft Visual Studio Express 2013 për të ndërtuar SignalR Hub dhe aplikacionin e klientit Web
  • Botim falas i SQL Server 2012 Express për të hartuar dhe ndërtuar bazën e të dhënave të pasme

Një mjedis pritës i Windows Internet Server i Informacionit (IIS):

  • Pasi të jetë ndërtuar dhe testuar SignalR Hub dhe klienti Web, do të duhet të vendoset në një server lokal IIS
  • Në rastin tim, kam në plan të përdor një laptop të vjetër që funksionon me Windows 7 me IIS në rrjetin tim në shtëpi

SHËNIM

Të gjitha udhëzimet janë të zbatueshme për versionin Python 2.7.x. Versioni 3.0 mund të kërkojë rishkrim

Hapi 4: Baza e të dhënave SQL Server

Baza e të dhënave SQL Server
Baza e të dhënave SQL Server

Skema e bashkangjitur tregon strukturën e një baze të dhënash bazë SQL Server të përdorur në këtë aplikacion dhe përmban vetëm dy tabela.

Tabela AutoHubCode

Dy kolonat e rëndësishme në këtë tabelë janë:

AutoCodeKey - ruan emrin miqësor për përdoruesin e çelësit të Kodit

Secili nga çelësat e kodit transmetohet nga një klient automatizimi - në rastin tonë, një buton HTML nga një faqe në internet

AutoCodeVal - ruan sekuencën e papërpunuar të Kodit IR

Ky është kodi IR aktual që i transmetohet klientit në përgjigje nga Qendra SignalR

Në këtë rast, një klient Python në komunikim të vazhdueshëm me Qendrën merr sekuencën e kodit IR dhe e transmeton atë mbi Portin Serial tek Arduino UNO

Tabela AutoHubLog

  • Regjistron kodin e kërkuar nga klienti i automatizimit.
  • Kjo është një masë për të gjetur se kush dhe kur e ka përdorur sistemin, dhe çfarë kodi është kërkuar

Siç u përmend, unë kam përdorur SQL Server 2012 si platformën time të bazës së të dhënave të zgjedhur. Ju mund ta rikrijoni këtë dizajn të thjeshtë në një platformë të ndryshme të bazës së të dhënave si MySQL, Oracle, etj.

Sidoqoftë, Script Script për të krijuar këtë bazë të dhënash është bashkangjitur këtu

SHËNIM

  1. Kodi për Qendrën SignalR është krijuar për t'u lidhur me një bazë të dhënash SQL Server 2012
  2. Të punosh me një bazë të dhënash të ndryshme do të thotë të ndryshosh Qendrën për të përdorur një drejtues të ndryshëm të bazës së të dhënave

Hapi 5: Aplikacioni Web i ASP. NET SignalR Hub

Aplikacioni Web i ASP. NET SignalR Hub
Aplikacioni Web i ASP. NET SignalR Hub
Aplikacioni Web i ASP. NET SignalR Hub
Aplikacioni Web i ASP. NET SignalR Hub

Aplikacioni Web ASP. NET SignalR Hub së bashku përfshin përbërësit e mëposhtëm siç tregohet në skemën e bashkangjitur:

Seksioni 1 - Qendra SignalR që merr kërkesa dhe i përgjigjet klientit

Seksionet 2, 4 - Faqja e internetit e klientit HTML dhe fleta e stilit të saj që së bashku formojnë pjesën e përparme të sistemit të Automatizimit dhe lëshojnë komanda në Qendrën e Automatizimit

Seksioni 3 - API -të jQuery SignalR të përdorura nga klienti HTML për të komunikuar me Qendrën e Automatizimit

Seksioni 5 - Qendra SignalR nuk komunikon drejtpërdrejt me bazën e të dhënave. E bën këtë përmes klasave të ndërmjetme të krijuara duke përdorur Entity Framework

Këto klasa abstragojnë detajet e bazës së të dhënave nga aplikacioni front end

Seksioni 6 - Klasa e shërbimit të bazës së të dhënave që ndihmon në kryerjen e operacioneve Lexo -Shkruaj në bazën e të dhënave SQL (e përshkruar më parë) duke përdorur klasat Entity Framework

ASP. NET dhe SignalR janë teknologji të Microsoft -it dhe ky tutorial do t'ju tregojë sesi ndërtohet dhe vendoset një aplikacion i thjeshtë SignalR.

Ajo që kam ndërtuar këtu bazohet në bazat e marra nga ky tutorial. Kur vendoset, aplikacioni duhet të duket i ngjashëm me faqen në internet të treguar në foton e dytë

SHENIM N ON KOD

Një skedar ZIP që përmban një version të zhveshur të kodit është bashkangjitur

Struktura e dosjeve është siç tregohet në pamjen - megjithatë, të gjitha klasat kuadër dhe skriptet jQuery janë hequr për të zvogëluar madhësinë e bashkëngjitjes

Rekomandimi është që ky kod të përdoret si udhëzues sepse kur krijoni një aplikacion të ri SignalR Web duke ndjekur lidhjen mësimore më sipër, bibliotekat më të fundit të jQuery dhe klasat e kornizës ASP. NET do të shtohen automatikisht

Gjithashtu, referencat për skriptet jQuery në faqen index.html do të duhet të ndryshohen për të pasqyruar versionin më të fundit të bibliotekave të klientëve jQuery SignalR që do të shtohen automatikisht kur ndërtoni aplikacionin tuaj në internet.

Së fundi, vargu i lidhjes do të duhet të ndryshohet që të përputhet me bazën e të dhënave tuaja në skedarët e emëruar si Web.config*

Hapi 6: Klienti i Shërbimit Python SignalR

Klienti i Shërbimit Python SignalR
Klienti i Shërbimit Python SignalR

Ndërsa Klienti HTML SignalR është një Ndërfaqja e Përdoruesit me një pamje të përparme, Klienti Python është një aplikacion i shërbimit të pasmë, funksioni kryesor i të cilit është të marrë Kodin IR të transmetuar nga Qendra dhe ta përcjellë atë në Arduino UNO mbi komunikimin Serial.

Kodi i bashkangjitur është vetë-shpjegues dhe është mjaft i dokumentuar për të përshkruar funksionalitetin e tij

Siç tregohet në pamjen e përbërë të ekranit, Klienti HTML dhe klienti i Shërbimit Python komunikojnë përmes Qendrës SignalR si më poshtë:

  1. Përdoruesi i sistemit të automatizimit i jep një komandë Qendrës përmes një klikimi butoni
  2. Çdo buton shoqërohet me kodin IR Key dhe kur klikohet, ky kod transmetohet në Hub
  3. Qendra merr këtë kod, lidhet me bazën e të dhënave dhe merr kodin e papërpunuar të Sinjalit IR dhe e transmeton atë tek të gjithë klientët e lidhur

    Në të njëjtën kohë, Hub regjistron një hyrje në tabelën e bazës së të dhënave AutoHubLog duke regjistruar kodin dhe datën dhe kohën kur është kërkuar nga klientët në distancë

  4. Klienti i shërbimit Python merr Kodin IR dhe e transmeton atë në Arduino UNO për përpunim të mëtejshëm

Hapi 7: Skica dhe Kodi i Transmetimit Arduino UNO IR

Skica dhe Kodi i Transmetimit Arduino UNO IR
Skica dhe Kodi i Transmetimit Arduino UNO IR
Skica dhe Kodi i Transmetimit Arduino UNO IR
Skica dhe Kodi i Transmetimit Arduino UNO IR
Skica dhe Kodi i Transmetimit Arduino UNO IR
Skica dhe Kodi i Transmetimit Arduino UNO IR

Qarku Arduino siç tregohet në pamjet është mjaft i thjeshtë për këtë sistem dhe prandaj përshkruhet shkurtimisht:

  • IR LED pa ngjyrë duhet të lidhet me PIN -in dixhital 3 në UNO - kjo është një kërkesë e bibliotekës IRLib Arduino
  • Arsyet janë përshkruar në IBLE tim të mëparshëm për klonimin e një telekomande në pjesën që lidhet me bibliotekën IRLib
  • LED i Gjelbër i lidhur me PIN dixhital 4 është një tregues vizual që ndizet kur UNO ka marrë të gjitha pjesët e IR Code nga klienti Python që funksionon në Raspberry Pi.
  • Duke ndezur këtë LED do të konfirmojë që komunikimi serik midis Raspberry Pi dhe UNO po funksionon
  • Për të mundësuar komunikimin serik, UNO është e lidhur me Raspberry Pi përmes Portës USB
  • Skica Arduino e bashkangjitur komentohet mjaftueshëm për të përshkruar funksionin e tij
  • Komentet në krye të kodit gjithashtu përshkruajnë sesi qarku duhet të lidhet

SHËNIM

Në praktikë, Arduino dhe Pi mund të lidhen bashkërisht me një shpërndarës USB të fuqizuar mjaftueshëm për të drejtuar Pi, Arduino dhe gjithashtu të transmetojë një sinjal të fortë përmes LED LED

Hapi 8: Lidhja dhe testimi i sistemit

Lidhja dhe testimi i sistemit
Lidhja dhe testimi i sistemit
Lidhja dhe testimi i sistemit
Lidhja dhe testimi i sistemit
Lidhja dhe testimi i sistemit
Lidhja dhe testimi i sistemit
  1. Ndërtoni dhe vendosni ASP. NET SignalR Hub, klienti HTML së bashku me bazën e të dhënave SQL Server 2012 në një Server të Informacionit të Internetit (IIS) në rrjetin tuaj shtëpiak lokal
  2. Qasuni në aplikacionin në internet duke hapur klientin HTML SignalR mbi

    URL -ja në këtë faqe zakonisht do të ishte https:// yourComputer: port_number/

  3. Klikoni një buton në panelin e kontrollit dhe nëse aplikacioni është vendosur si duhet, Qendra do të përgjigjet duke kthyer Kodin IR dhe duke e shfaqur atë në panelin Gri ngjitur me panelin e kontrollit

    Mbani mend! Ju do të duhet të ngarkoni kodet në bazën tuaj të të dhënave duke krijuar bibliotekën e marrësit IR dhe duke kapur kodet siç përshkruhet në IBLE tim të mëparshëm

  4. Lidhni Arduino me Raspberry Pi përmes USB - hapni Arduino IDE në Pi dhe sigurohuni që UNO të krijojë lidhje me Pi

    këta artikuj tutorialë Arduino duhet t'ju ndihmojnë të arrini në këtë mjaft shpejt

  5. Hapni kodin Python dhe bëni ndryshimet e mëposhtme si të zbatueshme për mjedisin tuaj

    • adresa e Portit Serial të UNO -së tuaj të marrë nga Hapi 4
    • URL -ja e qendrës SignalR që të përputhet me URL -në tuaj lokale nga Hapi 2 - në këtë shembull, do të ishte https:// yourComputer: port_number/signalr
  6. Së fundi, hapni Skicën Arduino në Arduino IDE në Raspberry Pi dhe futeni në UNO
  7. Vendoseni tabelën e bukës që mban qarkun në afërsi të pajisjes që do të kontrollohet - LED IR duhet të ketë një vizion të qartë me portën e marrësit IR të pajisjes
  8. Filloni programin Python në Raspberry Pi duke shtypur butonin F5 në shiritin e veglave Python IDLE
  9. Kthehuni te Paneli i Kontrollit në programin e klientit HTML (Hapi 2) dhe klikoni një buton (të tillë si Power On ose Volume Up)

Nëse sistemi është vendosur saktë, atëherë duhet të jeni në gjendje të shfaqni faqen e klientit HTML në telefonin ose tabletin tuaj dhe të kontrolloni pajisjen tuaj me butonat në faqen tuaj të klientit HTML.

Hapi 9: Sistemi në veprim

Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim
Sistemi në Veprim

Pamjet e mësipërme tregojnë Sistemin e Automatizimit të Shtëpisë në veprim pasi të jetë konfiguruar.

Që nga publikimi i këtij IBLE, unë e kam zgjeruar ndërfaqen duke kapur disa Kode IR nga televizori im VIZIO LED

Siç tregohet krah për krah me telekomandën e fabrikës në pamjen e parë vizuale, disa funksione thelbësore të këtij telekomanda janë integruar në UI të Uebit të aksesuara përmes tabletit tim

Pamjet e mëvonshme tregojnë tabletin në plan të parë me TV në pjesën e pasme duke iu përgjigjur komandave të lëshuara nga ndërfaqja në internet:

  1. Komanda Power OFF - Televizori fiket
  2. Komanda Power ON - TV ndizet dhe logoja "V" shfaqet kur ekrani ndizet
  3. Komanda Mute ON - Një shirit horizontal del me altoparlantin në heshtje

Në të gjitha testet, zona Gri së bashku me pultin në ekranin e tabletit shfaq komandën e lëshuar nga klienti dhe përgjigjen e dërguar përsëri nga Qendra e largët SignalR

Hapi 10: Përmirësimi i Sistemit të Automatizimit dhe Rregullimeve të Ndërlidhura

Ky sistem mund të zgjerohet duke shtuar më shumë kode të kapura nga sisteme të ndryshme. Ndërsa kjo pjesë është e lehtë, ka dy faktorë të tjerë që do të duhet të merrni parasysh.

Rritja 1 (e shpejtë): Puna me sinjale IR me gjatësi të ndryshme

  1. Kodet IR të sistemeve të ndryshme vijnë me gjatësi të ndryshme, madje edhe midis dy produkteve nga i njëjti prodhues.

    Për shembull, në këtë rast, gjatësia e grupit të kodit IR për TV LED është 67 ndërsa ajo e Samsung Sound Bar është rreth 87

  2. Që do të thotë, nëse do të ndizja Sound Bar së pari, grupi IR Buffer në skicën Arduino do të mbushej me një sekuencë IR Code që përmban 87 kode
  3. Pas kësaj, nëse ndizja TV LED, do të mbushte grupin IR Buffer me vetëm 67 kode, por 20 kodet e mbetura nga operacioni i mëparshëm do të ishin akoma rreth

Rezultati? TV LED nuk ndizet sepse Buffer IR Code është korruptuar nga 20 kodet shtesë të pa pastruara nga operacioni i mëparshëm!

Fiks 1 (mënyra e lehtë për të dalë, nuk rekomandohet)

Ndryshoni Skicën Arduino si më poshtë:

Ndryshoni thirrjet e funksionit të mëposhtëm në funksionin loop () {}

transmitIRCode ();

për të transmetuar Kodin IR (c);

Bëni ndryshime në nënshkrimin e funksionit të mësipërm:

void transmitIRCode (int codeLen) {// RAWBUF konstante e zëvendësuar me codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Ndërsa kjo është e lehtë, grupi kurrë nuk pastrohet plotësisht dhe për këtë arsye kjo nuk është një zgjidhje shumë e pastër

Rregullimi 2 (Jo i vështirë, rekomandohet)

Shpallni një ndryshore shtesë në krye të Skicës Arduino, pas pjesës së komenteve:

pa shenjë në EMPTY_INT_VALUE;

Shtojeni këtë në krye të funksionit setup ():

// Kapni gjendjen natyrore të një variabli të plotë pa shenjë të zbrazëtEMPTY_INT_VALUE = IRCodeBuffer [0];

Shkoni poshtë dhe shtoni një funksion të ri në skicë menjëherë pas funksionit transmitIRCode ():

void clearIRCodeBuffer (int codeLen) {// Pastroni të gjithë kodet nga grupi // SHENIM: vendosja e elementeve të grupit në 0 nuk është zgjidhje! për (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Së fundi, thirrni funksionin e ri më lart në vendndodhjen e mëposhtme në funksionin loop ():

// Rivendos - Rifilloni leximin Serial PortclearIRCodeBuffer (c);…

Kjo është një qasje më e pastër pasi në të vërtetë rivendos të gjitha vendet në grupin Buffer IR që ishin të populluara nga sinjali më i fundit i Kodit IR IR pa i lënë asgjë rastësisë.

Përmirësimi 2 (Më shumë i përfshirë): Përsëritja e transmetimit të sinjalit IR për pajisje të caktuara

Disa pajisje kërkojnë që i njëjti sinjal të transmetohet shumë herë për t'u përgjigjur Shembull: Në këtë rast, Samsung Sound Bar kërkon që i njëjti kod të dërgohet dy herë me një hendek prej 1 sekonde

Rregullimi në Koncept është diskutuar këtu pasi është pak më i përfshirë dhe do të ketë nevojë për testime

Shtimi i funksionalitetit të përsëritur në Ardunio Sketch do të thotë që ju do të duhet të ndizni Skicën sa herë që shtoni një pajisje të re në Sistemin tuaj të Automatizimit të Shtëpisë

Në vend të kësaj, shtimi i këtij rregullimi në klientin HTML SignalR dhe aplikacionin Python SignalR Service e bën zgjidhjen shumë më fleksibile. Dhe kjo mund të arrihet në parim si më poshtë:

Ndryshoni klientin SignalR HTML për të transmetuar informacion të përsëritur në Hub

Hapni index.html dhe futni vlerën e përsëritjes në butonin HTML si kjo:

vlera = "SMSNG-SB-PWR-ON" do të bëhet vlerë = "SMSNG-SB-PWR-ON_2_1000"

Ku, 2 është vlera e përsëritjes dhe 1000 është vlera e vonesës në milisekonda midis dy sinjaleve të përsëritjes

Kur klikoni në këtë buton, qendra SignalR do të marrë Kodin Kryesor+Repeat_Spec

Ndryshoni metodat e serverit SignalR për të analizuar vetëm Kodin Kryesor:

  • Përdorni Kodin Kyç për të tërhequr Kodin IR nga baza e të dhënave si zakonisht
  • Transmetoni Kodin Kryesor+Repeat_Spec dhe IRCode tek klientët SingalR si zakonisht

Ndryshoni Aplikacionin e Shërbimit Python SignalR për të transmetuar sinjale duke përdorur vlerat e Përsëritjes:

Hapni klientin Python dhe modifikoni dy funksionet e mëposhtme:

def print_command_from_hub (butoniId, cmdSrc):

# analizoni kodin e përsëritjes nga vlera e butonitId

def transmitToArduino (IRSignalCode, delim, endPrefix):

# vendosni një kohë ose për lak për të transmetuar sinjalin në frekuencën e dëshiruar

  • Në këtë mënyrë, Arduino nuk duhet të ndizet në mënyrë të përsëritur
  • Çdo numër i frekuencave të përsëritura mund të ndërtohet në këtë sistem
  • Për më tepër, nëse përdorni UNO, ekziston një kufi në madhësinë e Sketch -it tuaj!

Hapi 11: Çështje të njohura dhe shqetësime për sigurinë

Siç ndodh me sistemet e krijuara herën e parë, ky ka disa çështje që dolën gjatë testimit.

Çështja 1: Gjuajtja e komandave në mënyrë të njëpasnjëshme me vonesa më pak se një sekondë midis klikimeve të butonave bëri që sistemi të mos reagojë pasi u përgjigj për dy herë të parë.

  • Rinisja e klientit Python SignalR e kthen sistemin në funksionimet normale
  • Zgjidhjet e menjëhershme mund të jenë heqja e daljeve të padëshiruara të Debug në të dy, Python SignalR Client dhe gjithashtu Arduino Sketch dhe përsëritja e këtyre testeve
  • Një vend tjetër për tu parë do të ishte vetë komunikimi Serial - a do të ishte e mundur të shtoni kod për të shpëlarë shpejt tamponin?

Thënë kështu, kam vënë re se televizori im nuk i përgjigjet mirë telekomandës së fabrikës - prandaj vetë natyra e komunikimit IR të televizorit tim mund të jetë gjithashtu një faktor kontribues.

Çështja 2: Ekrani HTML ndalon t'i përgjigjet klikimeve të butonave pas një periudhe të gjatë pasiviteti

Zakonisht rifreskimi i faqes zgjidh këtë sjellje - shkaku për këtë sjellje megjithatë është ende i paqartë

Shqetësimet për sigurinë

Ky sistem është krijuar vetëm për përdorim të rrjetit lokal (shtëpiak) dhe nuk ka masat e nevojshme të sigurisë për t'u përdorur në internet

Prandaj rekomandohet që SignalR Hub të vendoset në një makinë lokale në rrjetin tuaj lokal/shtëpiak

Faleminderit që lexuat IBLE -në time dhe shpresoj që të argëtoheni!

Recommended: