Sadržaj:

Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju: 11 koraka (sa slikama)
Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju: 11 koraka (sa slikama)

Video: Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju: 11 koraka (sa slikama)

Video: Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju: 11 koraka (sa slikama)
Video: How to build a robot arm with .NET 7, Raspberry Pi, Blazor, and SignalR 2024, Septembar
Anonim
Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju
Raspberry Pi-Arduino-SignalR čvorište za kućnu automatizaciju

Nakon nekoliko mojih uvodnih IBLE -ova objavljenih ovdje i ovdje, ovaj projekt čini prvi korak ka izgradnji osnovne verzije funkcionalnog čvorišta za kućnu automatizaciju.

Koristio sam nekoliko različitih tehnologija u nastojanju da shvatim kako ću moći koristiti sve stvari koje sam naučio u prošlosti i nove stvari koje nastavljam učiti kako dan napreduje.

Stoga se ovo čvorište za automatizaciju sastoji od sljedećih komponenti:

Baza podataka SQL Server 2012 koja:

  • pohranjuje popis unaprijed određenih infracrvenih (IC) kodova u tablicu zajedno s jedinstvenim "kodnim ključem"
  • kodni ključevi su intuitivno imenovani (od strane korisnika) kako bi se identifikovala svrha njihovih IR kodova

ASP. NET SignalR Hub web aplikacija u stvarnom vremenu koja:

  • čeka i prima "kodne ključeve" kao naredbe od korisnika koji se suočava s HTML klijentom
  • kada ga primi, povezuje se sa SQL bazom podataka i preuzima IR kod pomoću isporučenog ključa koda
  • prenosi dohvaćeni IR kôd Python SignalR klijentu

Korisnik suočen s HTML SignalR Dashboard klijentom koji:

  • komunicira jedinstveni kodni ključ čvorištu putem jQuery SignalR Client API -ja
  • svako dugme na nadzornoj ploči predstavljat će jedinstveni kodni ključ zabilježen u tablici SQL baze podataka

Python SignalR aplikacija u pozadini koja radi na Raspberry Pi 2.0 i koja:

  • prima IC kodove kao naredbe sa čvorišta
  • traži razdjelnike u IR kodu i razbija vrlo dugačak kod u segmente
  • komunicira preko serijskog porta s Arduinom i zapisuje svaki segment uzastopno

Skica Arduino IC odašiljača koja:

  • čeka i prima svaki segment IR koda preko serijskog porta
  • sastavlja segmente koda u niz međuspremnika IR koda
  • pakuje međuspremnik u naredbu za IR prijenos putem IRLib Arduino biblioteke

Ako se ciljni uređaj nalazi u blizini IC odašiljača, tada uređaj (može) reagirati na IC signal koji prenosi Arduino

BILJEŠKA

Iako ciljni aparat koji koristim u ovoj demonstraciji reagira na IC signale, možda ćete htjeti pročitati ovaj dio mog drugog IBLE -a iz razloga zašto kažem da uređaj (može) reagirati na IC signal.

Vreme je za rolanje.

Korak 1: Šta vam treba, prije nego što vam treba

Šta vam treba, pre nego što vam treba
Šta vam treba, pre nego što vam treba
Šta vam treba, pre nego što vam treba
Šta vam treba, pre nego što vam treba
Šta vam treba, pre nego što vam treba
Šta vam treba, pre nego što vam treba

Ova instrukcija uzima u obzir neke od prethodno obavljenih poslova koji su rezultirali i mojim posljednjim IBLE -om.

Dakle, prije nego što uđemo u ono što nam je potrebno za ovaj IBLE, preporučuje se da pročitate ovo uputstvo radi neke pozadine o tome kako:

  1. Postavljena je Arduino IRLib infracrvena biblioteka
  2. Kako su IC kodovi korišteni u ovom IBLE -u snimljeni pomoću IC prijemnika
  3. Kako su snimljeni IC kodovi korišteni za upravljanje ciljnim uređajem putem IC odašiljača

Nakon završetka ovog IBLE -a, postavio sam web aplikaciju ASP. NET IR Code Recorder koja bi:

  • Prihvatite snimljeni IR kôd zajedno s intuitivno imenovanim kodnim ključem kao unose putem web obrasca
  • Podijelite vrlo dugačak IR kod na segmente manje od 64 znaka da biste ostali ispod ograničenja serijskog međuspremnika Arduino Uno
  • Posljednji segment kodova bio bi unaprijed fiksiran s "E" koji označava Arduinu da je primio zadnji segment koda
  • Svaki segment bi bio odvojen razdjelnikom cijevi prije nego što se ponovo sastavi u dugi niz
  • Konačno, segmentirani IR kod zajedno sa ključem koda pohranjen je u bazu podataka SQL Server 2012

Ova SQL baza podataka čini jednu od komponenti čvorišta kućne automatizacije, razrađenu u ovom IBLE -u.

BILJEŠKA

Web aplikacija IR Code Recorder nije dio rasprave iz sljedećih razloga:

  • Kodove možete ručno snimiti pomoću Arduino Sketch-a, podijeliti ih na odjeljke razgraničene cijevima i pohraniti ih u bazu podataka bez potrebe za izgradnjom razrađene web aplikacije
  • Za razliku od ovog IBLE -a, IR snimač fokusira se na obrnutu komunikaciju s Arduina na Raspberry Pi

Stoga bi detalji o ovom projektu bili tema za drugi IBLE

Korak 2: Ono što vam treba - hardver

Ono što vam treba - hardver
Ono što vam treba - hardver
Ono što vam treba - hardver
Ono što vam treba - hardver

Funkcionalni Raspberry Pi 2.0 - preporučujem instaliranje Ubuntu Mate jer ima bogatiji skup funkcija, uključujući OpenLibre Office koji je usput bio neophodan u dokumentovanju ovog uputstva, upravo na Raspberry Pi -u.

Osim toga, Pi će vam trebati i sljedeći vanjski elementi:

  • Arduino Uno prototipna platforma ili klon
  • LED odašiljač za IC - koristio sam marku pod nazivom Three Legs sa Amazon.com
  • Otpornici od 330 ili 220 ohma-koristio sam 220 (oznaka boje crveno-crveno-smeđa) jer sam imao nekoliko pri ruci
  • Uobičajena ploča za hljeb, konektori i računar sa instaliranim Arduino okruženjem
  • Kandidat za testiranje - poput sveprisutnog Samsung LED monitora s daljinskim upravljačem

Korak 3: Ono što vam treba - softver

Da biste spojili sve dijelove, potrebno je instalirati i pokrenuti sljedeće postavke softvera:

Na Raspberry Pi morate instalirati sljedeće:

  • Arduino IDE - koristi se za izradu Sketcha i prosljeđivanje u UNO
  • Python modul za Arduino - za serijsku komunikaciju između UNO -a i Pi -a
  • Biblioteka klijenta Python SignalR - Možete se obratiti uputama priloženim ovdje

Windows mašina sa instaliranim sljedećim razvojnim okruženjem:

  • Besplatno izdanje Microsoft Visual Studio Express 2013 za izradu SignalR Hub i web klijentske aplikacije
  • Besplatno izdanje SQL Servera 2012 Express za dizajniranje i izgradnju pozadinske baze podataka

Okruženje hostinga za Windows Internet Information Server (IIS):

  • Nakon što se izgradi i testira SignalR Hub i Web klijent, morat će se postaviti na lokalni IIS poslužitelj
  • U mom slučaju planiram koristiti stari laptop sa operativnim sistemom Windows 7 sa IIS -om na svojoj kućnoj mreži

BILJEŠKA

Sve upute primjenjive su na Python 2.7.x verziju. Verzija 3.0 može zahtijevati prepisivanje

Korak 4: Baza podataka SQL Servera

Baza podataka SQL Servera
Baza podataka SQL Servera

Priložena shema prikazuje strukturu osnovne baze podataka SQL Servera koja se koristi u ovoj aplikaciji i sadrži samo dvije tablice.

Tabela AutoHubCode

Dvije važne kolone u ovoj tablici su:

AutoCodeKey - sprema korisnički naziv ključa koda

Svaki od ključeva koda prenosi klijent za automatizaciju - u našem slučaju HTML dugme sa web stranice

AutoCodeVal - pohranjuje sirovi niz IR koda

Ovo je stvarni IR kod koji se šalje nazad klijentu kao odgovor od SignalR čvorišta

U ovom slučaju, Python klijent u stalnoj komunikaciji sa čvorištem prima niz IR koda i prenosi ga preko serijskog porta na Arduino UNO

Tablica AutoHubLog

  • Zapisuje kôd koji je zatražio klijent za automatizaciju.
  • Ovo je mjera za praćenje ko je i kada koristio sistem i koji je kod zatražen

Kao što je spomenuto, koristio sam SQL Server 2012 kao svoju platformu baze podataka po izboru. Ovaj jednostavan dizajn možete ponovno stvoriti na drugoj platformi baze podataka kao što su MySQL, Oracle itd.

Ipak, ovdje je priložen SQL skript za kreiranje ove baze podataka

BILJEŠKA

  1. Kod za SignalR Hub dizajniran je za povezivanje sa SQL Server 2012 bazom podataka
  2. Rad s drugom bazom podataka značio bi promjenu Hub -a za upotrebu drugog upravljačkog programa baze podataka

Korak 5: Web aplikacija ASP. NET SignalR Hub

Web aplikacija ASP. NET SignalR Hub
Web aplikacija ASP. NET SignalR Hub
Web aplikacija ASP. NET SignalR Hub
Web aplikacija ASP. NET SignalR Hub

ASP. NET SignalR Hub web aplikacija zajedno se sastoji od sljedećih komponenti navedenih u priloženoj shemi:

Odeljak 1 - SignalR čvorište koje prima zahteve od klijenta i odgovara na njega

Odjeljci 2, 4 - Web stranica HTML klijenta i njegov stilski list koji zajedno čine prednji dio sistema za automatizaciju i izdaju naredbe za središte za automatizaciju

Odjeljak 3 - jQuery SignalR API -ji koje HTML klijent koristi za komunikaciju s automatizacijskim čvorištem

Odeljak 5 - SignalR čvorište ne komunicira direktno sa bazom podataka. To čini putem posrednih klasa generiranih pomoću Entity Framework -a

Ove klase apstrahiraju detalje baze podataka iz prednje aplikacije

Odjeljak 6 - Klasa usluge Database koja pomaže u izvođenju operacija čitanja i pisanja na SQL bazi podataka (prethodno opisana) upotrebom klasa Entity Framework

ASP. NET i SignalR su Microsoftove tehnologije i ovaj vodič će vas provesti kroz to kako se jednostavna aplikacija SignalR gradi i primjenjuje.

Ono što sam ovdje izgradio temelji se na osnovama stečenim u ovom vodiču. Kada se primijeni, aplikacija bi trebala izgledati slično web stranici prikazanoj na drugoj slici

NAPOMENA O KODU

Priložena je ZIP datoteka koja sadrži skinutu verziju koda

Struktura mape je prikazana na slici - međutim, sve klase okvira i jQuery skripte su uklonjene kako bi se smanjila veličina privitka

Preporuka je da se ovaj kôd koristi kao vodič, jer kada kreirate novu SignalR web aplikaciju slijedeći gornju vezu s vodičem, najnovije biblioteke jQuery i klase okvira ASP. NET bit će automatski dodane

Također, reference na jQuery skripte na stranici index.html morat će se promijeniti tako da odražavaju najnoviju verziju jQuery SignalR klijentske biblioteke koja će se automatski dodati kada sastavite svoju web aplikaciju.

Konačno, niz veze morat će se promijeniti kako bi odgovarao vašoj bazi podataka u datotekama pod nazivom Web.config*

Korak 6: Python SignalR servisni klijent

Python SignalR servisni klijent
Python SignalR servisni klijent

Dok je HTML SignalR Client prednje korisničko sučelje, Python Client je pozadinska servisna aplikacija čija je glavna funkcija primiti IC kod koji prenosi Hub i usmjeriti ga na Arduino UNO putem serijske komunikacije.

Priloženi kôd sam po sebi objašnjava i dovoljno je dokumentiran da opiše njegovu funkcionalnost

Kao što je prikazano na složenom snimku ekrana, HTML klijent i klijent usluge Python komuniciraju putem SignalR čvorišta na sljedeći način:

  1. Korisnik sistema za automatizaciju izdaje naredbu čvorištu pritiskom na dugme
  2. Svako dugme je pridruženo kodu IC ključa, a kada se klikne, ovaj kod se prenosi na čvorište
  3. Središte prima ovaj kôd, povezuje se s bazom podataka i preuzima neobrađeni kôd IR signala i prenosi ga natrag svim povezanim klijentima

    Istovremeno, čvorište zapisuje unos u tablicu baze podataka AutoHubLog bilježeći kod i datum i vrijeme koje su zatražili udaljeni klijenti

  4. Klijent usluge Python prima IR kod i prosljeđuje ga Arduino UNO -u na daljnju obradu

Korak 7: Skica i kod za prijenos Arduino UNO IC prijenosa

Skica i kod za prijenos Arduino UNO IC prijenosa
Skica i kod za prijenos Arduino UNO IC prijenosa
Skica i kod za prijenos Arduino UNO IC prijenosa
Skica i kod za prijenos Arduino UNO IC prijenosa
Skica i kod za prijenos Arduino UNO IC prijenosa
Skica i kod za prijenos Arduino UNO IC prijenosa

Arduino kolo kako je prikazano u slikama prilično je jednostavno za ovaj sistem i stoga je ukratko opisano:

  • Bezbojna IC LED dioda mora biti spojena na digitalni PIN 3 na UNO - to je zahtjev biblioteke IRLib Arduino
  • Razlozi su opisani u mom ranijem IBLE -u o kloniranju daljinskog upravljača u odjeljku koji se odnosi na biblioteku IRLib
  • Zelena LED dioda povezana s digitalnim PIN -om 4 vizualni je indikator koji svijetli kada UNO primi sve odjeljke IC koda od Python klijenta koji radi na Raspberry Pi -u.
  • Uključivanje ove LED lampice potvrdit će da serijska komunikacija između Raspberry Pi -a i UNO -a radi
  • Da bi se omogućila serijska komunikacija, UNO je povezan s Raspberry Pi putem USB priključka
  • Priložena Arduino skica je dovoljno komentirana da opiše njezinu funkciju
  • Komentari na vrhu koda također opisuju kako treba ožičiti krug

BILJEŠKA

U praksi bi se Arduino i Pi mogli zajedno spojiti na napajano USB čvorište dovoljno snažno da pokreće Pi, Arduino i također prenosi snažan signal putem IC LED diode

Korak 8: Povezivanje i testiranje sistema

Povezivanje i testiranje sistema
Povezivanje i testiranje sistema
Povezivanje i testiranje sistema
Povezivanje i testiranje sistema
Povezivanje i testiranje sistema
Povezivanje i testiranje sistema
  1. Izgradite i postavite ASP. NET SignalR Hub, HTML klijent zajedno sa bazom podataka SQL Server 2012 na internetski informacijski poslužitelj (IIS) na vašoj lokalnoj kućnoj mreži
  2. Pristupite web aplikaciji otvaranjem HTML SignalR klijenta preko HTTP -a

    URL ove stranice obično bi bio https:// yourComputer: port_number/

  3. Pritisnite dugme na kontrolnoj tabli, a ako je aplikacija pravilno postavljena, koncentrator će odgovoriti vraćanjem IC koda i prikazom na sivoj ploči koja se nalazi pored kontrolne table

    Zapamtite! Kodove ćete morati učitati u bazu podataka postavljanjem biblioteke IC prijemnika i hvatanjem kodova kako je opisano u mom prethodnom IBLE -u

  4. Spojite Arduino na Raspberry Pi putem USB -a - otvorite Arduino IDE na Pi i provjerite može li UNO uspostaviti vezu s Pi

    ovi članci o vodiču Arduino trebali bi vam pomoći da to postignete prilično brzo

  5. Otvorite Python kôd i unesite sljedeće promjene prema vašem okruženju

    • adresu serijskog porta vašeg UNO -a stečenu u koraku 4
    • URL SignalR čvorišta koji odgovara vašem lokalnom URL -u iz 2. koraka - u ovom primjeru to bi bilo https:// yourComputer: port_number/signalr
  6. Na kraju, otvorite Arduino Sketch u Arduino IDE -u na Raspberry Pi i prenesite ga u UNO
  7. Postavite ploču za kruh koja drži krug u neposrednoj blizini uređaja koji se kontrolira - IR LED mora imati jasnu liniju vidljivosti s priključkom za IC prijemnik uređaja
  8. Pokrenite Python program na Raspberry Pi pritiskom na tipku F5 na alatnoj traci Python IDLE
  9. Vratite se na kontrolnu ploču u HTML klijentskom programu (korak 2) i kliknite na dugme (kao što je uključivanje ili pojačavanje zvuka)

Ako je sistem pravilno postavljen, trebali biste moći otvoriti stranicu HTML klijenta na svom telefonu ili tabletu i upravljati uređajem pomoću dugmadi na stranici HTML klijenta.

Korak 9: Sistem na djelu

Sistem na delu
Sistem na delu
Sistem na delu
Sistem na delu
Sistem na delu
Sistem na delu
Sistem na delu
Sistem na delu

Gornji prikazi prikazuju sistem kućne automatizacije na djelu nakon postavljanja.

Od objavljivanja ovog IBLE -a, proširio sam sučelje snimanjem nekoliko IC kodova sa svog VIZIO LED televizora

Kao što je prikazano uporedo sa tvorničkim TV daljinskim upravljačem u prvom vizualu, nekoliko osnovnih funkcija ovog daljinskog upravljača ugrađeno je u web sučelje kojem se pristupa putem mog tableta

Naredni vizuali prikazuju tablet u prvom planu s TV -om pozadi koji reagira na naredbe izdane s web sučelja:

  1. Naredba za isključivanje napajanja - TV se isključuje
  2. Naredba za uključivanje i isključivanje - TV se uključuje i logotip "V" se pojavljuje dok se zaslon uključuje
  3. Komanda Mute ON - Horizontalna traka pojavljuje se sa isključenim zvučnikom

U svim testovima, sivo područje uz nadzornu ploču na ekranu tableta prikazuje naredbu koju je izdao klijent i odgovor koji je poslao udaljeni SignalR Hub

Korak 10: Poboljšanje sistema automatizacije i srodni popravci

Ovaj sistem se može proširiti dodavanjem više kodova snimljenih iz različitih sistema. Iako je ovaj dio lagan, morate uzeti u obzir još dva faktora.

Poboljšanje 1 (brzo): Rad sa IC signalima različite dužine

  1. IR kodovi različitih sistema dolaze s različitim duljinama, čak i između dva proizvoda istog proizvođača.

    Na primjer, u ovom slučaju, dužina niza IC kodova za LED televizor je 67, dok je dužina Samsung Sound Bar -a oko 87

  2. Što znači, ako bih prvo uključio Sound Bar, niz IR bafera u Arduino skici bio bi ispunjen nizom IR kodova koji sadrži 87 kodova
  3. Nakon toga, kad bih uključio LED televizor, ispunio bi niz IR Buffer sa samo 67 kodova, ali bi preostalih 20 kodova iz prethodne operacije i dalje bilo prisutno

Rezultat? LED televizor se ne uključuje jer je međuspremnik IR koda oštećen zbog dodatnih 20 kodova koji nisu očišćeni iz prethodne operacije!

Popravi 1 (jednostavan izlaz, ne preporučuje se)

Promijenite Arduino skicu na sljedeći način:

Promijenite sljedeće pozive funkcije u funkciji loop () {}

transmitIRCode ();

za prijenosIRCode (c);

Izmijenite potpis gore navedene funkcije:

void transmitIRCode (int codeLen) {// RAWBUF konstanta zamijenjena codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Iako je to jednostavno, niz se nikada ne razjašnjava u potpunosti i stoga ovo nije baš čisto rješenje

Fix 2 (Nije teško, preporučuje se)

Proglasite dodatnu varijablu na samom vrhu Arduino skice, nakon odjeljka komentara:

nepotpisani int EMPTY_INT_VALUE;

Dodajte ovo na vrh funkcije setup ():

// Snimanje prirodnog stanja prazne bezznačne cjelobrojne varijableEMPTY_INT_VALUE = IRCodeBuffer [0];

Pomaknite se prema dolje i dodajte novu funkciju u skicu odmah nakon funkcije transmitIRCode ():

void clearIRCodeBuffer (int codeLen) {// Brisanje svih kodova iz niza // NAPOMENA: postavljanje elemenata niza na 0 nije rješenje! za (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Konačno, pozovite novu funkciju gore na sljedećoj lokaciji u funkciji loop ():

// Resetiranje - Nastavak čitanja Serial PortclearIRCodeBuffer (c);…

Ovo je čistiji pristup jer zapravo resetira sve lokacije u nizu IR međuspremnika koje su popunjene najnovijim signalom IR koda, ne ostavljajući ništa slučaju.

Poboljšanje 2 (više uključeno): Ponavljanje prijenosa IC signala za određene uređaje

Neki uređaji zahtijevaju da se isti signal prenosi više puta kako bi odgovorili Primjer: U ovom slučaju, Samsung Sound Bar zahtijeva da se isti kod pošalje dva puta s razmakom od 1 sekunde

Ovdje se raspravljalo o Popravku u konceptu jer je malo više uključen i bit će potrebno testiranje

Dodavanje funkcije ponavljanja u Ardunio Sketch značiće da ćete morati bljeskati Sketch svaki put kada dodate novi uređaj u sistem kućne automatizacije

Umjesto toga, dodavanjem ovog popravka u HTML SignalR klijent i aplikaciju Python SignalR Service rješenje je mnogo fleksibilnije. A to se načelno može postići na sljedeći način:

Izmijenite SignalR HTML klijent za prijenos ponavljajućih informacija do čvorišta

Otvorite index.html i umetnite ponovljenu vrijednost u HTML dugme ovako:

value = "SMSNG-SB-PWR-ON" bi postalo value = "SMSNG-SB-PWR-ON_2_1000"

Gdje je 2 vrijednost ponavljanja, a 1000 vrijednost kašnjenja u milisekundama između dva signala ponavljanja

Kada kliknete na ovo dugme, SignalR čvorište će primiti kôd ključa+Repeat_Spec

Izmijenite metode na strani SignalR servera da biste analizirali samo kôd ključa:

  • Koristite kôd ključa za preuzimanje IR koda iz baze podataka kao i obično
  • Prenesite kôd ključa+Repeat_Spec i IRCode klijentima SingalR -a kao i obično

Izmijenite aplikaciju Python SignalR Service za prijenos signala koristeći vrijednosti ponavljanja:

Otvorite Python klijenta i izmijenite sljedeće dvije funkcije:

def print_command_from_hub (buttonId, cmdSrc):

# raščlanite kôd za ponavljanje iz vrijednosti buttonId

def transmitToArduino (IRSignalCode, delim, endPrefix):

# podesite petlju for ili for za prijenos signala na željenoj frekvenciji

  • Na ovaj način, Arduino se ne mora ponavljati
  • U ovaj sistem može biti ugrađen bilo koji broj ponavljajućih frekvencija
  • Osim toga, ako koristite UNO, postoji ograničenje veličine na koju vaša Sketch može narasti!

Korak 11: Poznati problemi i sigurnosni problemi

Kao što je slučaj sa sistemima izgrađenim po prvi put, i ovaj ima nekoliko problema koji su se pojavili tokom testiranja.

Pitanje 1: Brzo uzastopno aktiviranje naredbi sa kašnjenjima manjim od sekunde između klikova na gumb uzrokovalo je da sistem prestane reagirati nakon što je reagirao prvih nekoliko puta.

  • Ponovnim pokretanjem Python SignalR klijenta sistem se vraća u normalne operacije
  • Neposredne rezolucije mogu biti uklanjanje neželjenih izlaza za otklanjanje grešaka u oba, Python SignalR Client i Arduino Sketch i ponoviti ove testove
  • Drugo mjesto za razmatranje bila bi sama serijska komunikacija - bi li bilo moguće dodati kôd za brzo ispiranje bafera?

Uprkos tome, primijetio sam da moj televizor ne reagira dobro na tvornički daljinski upravljač - stoga sama priroda IC komunikacije moga televizora također može biti faktor koji doprinosi.

Pitanje 2: HTML ekran prestaje reagirati na klikove na gumb nakon dugog perioda neaktivnosti

Obično osvježavanje stranice rješava ovo ponašanje - međutim uzrok ovog ponašanja još uvijek je nejasan

ZAŠTITA SIGURNOSTI

Ovaj sistem je dizajniran samo za upotrebu u lokalnoj (kućnoj) mreži i nema potrebne sigurnosne mjere za korištenje preko interneta

Stoga se preporučuje da se SignalR Hub postavi na lokalnu mašinu na vašoj lokalnoj/kućnoj mreži

Hvala vam što ste pročitali moj IBLE i nadam se da ćete se zabaviti!

Preporučuje se: