Portál AbcLinuxu, 14. července 2025 08:37


Dotaz: perzistentné spojenie medzi servrom a zariadením

5.4.2017 12:59 adrinko | skóre: 22
perzistentné spojenie medzi servrom a zariadením
Přečteno: 471×
Odpovědět | Admin
Dobrý deň prajem,

prosím Vás, potreboval by som poradiť v oblasti IFTTT. Totiž, urobil som si zariadenie (založené na linuxe), ktoré zazvoní, keď príde email (toto je len príklad využitia, má gpio piny, takže možností je veľa). Chcel by som ho napojiť na IFTTT.com. Avšak nechcem povolovať priamy prístup cez www adresu na dané zariadenie (je za routrom v LAN, užívateľ by musel vedieť menežovať router).

Napadlo mi, spraviť to cez môj sprostrednúvateľský server, teda, že medzi servrom a zariadením bude "perzistentné" spojenie a zariadenie dostane impulz zo servra vtedy, keď to bude aktuálne potrebné. Následne IFTTT pošle POST/GET request na sprostredkovateľa a on to predá cieľovému zariadeniu.

Mám však dve základné otázky:

1. Ako výkonný server by to musel byť, ak by mal takto obslúžiť tisíce zariadení? Táto otázka je skôr všeobecná - stačí mi, aby bol schopný na dané zariadenie podľa unique ID pushnúť správu, takže asi veľký výkon nebude potrebný.

2. Ako je to najlepšie softvérovo riešiť? (napr. je to vhodné cez python perzistentne na TCP, websocket, ...)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.4.2017 13:55 NN
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proc vubec neco co se jmenuje ifttt.com pouzivat?
5.4.2017 15:53 DW
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Odpovědět | | Sbalit | Link | Blokovat | Admin
Potrebujes v pripade mailu okamzite oznamnie? Mal by si to jednoduchsie ak by sa zariadenie v kratkom intervale dotazovalu serveru co je nove. Oproti persistentnemu pripojeniu by sa ti naviac znizila aj spotreba energie.
5.4.2017 17:07 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
ten email bol len priklad. Ma to gpio, takze si tam viem napojit hocico. Ono je idealne, aby sa to skoro "real-time" vracalo. Teoreticky ak by sa to len kazdych par sekund dotazovalo, tak by tam pravdepodobne stupla zataz na server (napr. kazdych 5 sekund je v preklade 17280 dotazov za den, ak by sa dotazovalo 1000 takych zariadeni, bolo by to cez 17milionov dotazov - a to uz je nezanedbatelne) V podstate mi ide o to, vybrat vhodne riesenie pre velky pocet zariadeni.
6.4.2017 16:54 DW
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Beztak aby si tie spojenia udržal živé tak budeš musieť posielať v určitých intervaloch nejaké pakety.

Naviac ak chceš realtime notifikovať súčastne 1000 zariadení, tak budeš potrebovať 1000 vlákien. Alebo ich notifikovať jeden po druhom. Tj čas kedy sa ti notifikuje posledný klient bude približne <pocet klientov> * <cas potrebny pre notifikaciu jedneho klienta> / <pocet vlakien procesoru> (minimalne)
5.4.2017 21:44 jekub
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Odpovědět | | Sbalit | Link | Blokovat | Admin
Adrinko, ty vaše drobné dotazy, vrtá mi to hlavou. Že vy plánujete spustit znovu Jaslovské Bohunice. Len ten softwér vám tam chýba.
5.4.2017 23:07 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
hej, hej, presne :D No ucim sa stale a zamyslam sa aj nad moznostou skalovania na viac reaktorov. :)
7.4.2017 17:53 Dušan Kreheľ | skóre: 9 | blog: krehel_sk___informovat_o_novych_verziach_softveru | Prešov
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Odpovědět | | Sbalit | Link | Blokovat | Admin
Inšpiruj sa protokolom/sieťou IRC (alebo ho rovno použi). ... Ma aj v protokole ping-pong správy. Tj. ak napríklad za x minút sa nič v TCP nepošle, spojenie sa zahodí.

Ak použiješ sprostrednúvateľský server tak prípadne pri odpojení klienta, možeš archivať a poslať pri následnom prípojení.

HTTP(S), C (prípadne C++), poll(). Spustené v docker. Rob na čístom TCP (čo je v prehľadaváči zrejme websocket z web prostredia) - minimalizuješ réžiu, (UDP?). Prípadne ľahká nastavba na iné. Ak treba poslať, html, xml.

A výkon nerieš. Ak Ti najlacnejšie VPS na to nebude stačíť, ľahko dokupíš vykonejší.
10.4.2017 13:05 kafcha
Rozbalit Rozbalit vše Re: perzistentné spojenie medzi servrom a zariadením
Odpovědět | | Sbalit | Link | Blokovat | Admin
rozbehal bych nejaky vps s verejnou adresou (ja pouzivam na forpsi za cca 25kc mesicne) na tom spustit mqtt broker (https://www.root.cz/clanky/protokol-mqtt-komunikacni-standard-pro-iot/) na cilovem zarizeni se 'prihlasit k odberu' (staci ti cesta ven, o perzistentni pripojeni se ti postara mqtt) a na tom vps mit nejaky jednoduchy programek ktery bude zpracovavat pozadvaky od ifttt (nevim jak to funguje, ale pokud posila nejake pos/get, tak jejich zpracovani ma clovek na par radku pomoci python+flask) a posle zpravu do mqtt

pokud nevis jak pracuje mqtt, tak jsednodusene mas hromadu 'schranek' a muzes se prihlasit k jejich odberu, kdyz ti prijde zprava do schranky, tak ji obdrzi vsechni klienti, kteru jsou prihlaseni k odberu

nevim co pouzivas jako koncove zarizeni, ale pokud je to neco jako raspbery a spol a muzes na tom rozbehat python, tak bez nejakeho overovani uzivatelu je to problem tak na dve hodky i se studiem .p

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.