Prepojenie systemu v php rubrika: Programování: PHP

2 mamatoto
položil/-a 10.5.2014

Zdravím,

momentálne riešim nasledovný problém:
Mám informačný systém v php, ktorý beží na webovom servri (verejne dostupný) a pripravujeme hardwarové zariadenie, ktoré s ním bude musieť komunikovať. Zjednodušene sa jedná o zariadenie kde sú tlačítka a LEDky, napojené na rasberry pi, ktoré ho ovláda. V prípade stlačenia tlačítka o tom musí byť upovedomený systém a naopak zo systému bude kedykoľvek možné ovládať LEDky.

Akú technológiu by ste doporučili na riešenie tohoto problému? Na rasberry pi moze bežať akákoľvek aplikácia, na webovom servri by som bol rád ak by nemuselo byť nič viac okrem php.

Ďakujem

-- UPDATE --
Predbezne to planujem riesit co najjednoduhsie s minimom zavyslosti na dalsich systemoch: Na rasberry pi bude bezat c++ aplikacia, ktora sa bude asi 2x za sekundu dotazovat na server, kde bezi system. Tento dotaz bude bez ziadneho zabezpecenia, nakolko od servra obdrzi len cislo LEDky, ktoru treba rozosvietit (nech sa to zbytocne nekomplikuje, nepotrebujem posielat robustne xml odpovede), alebo napr. "false" ak netreba nic rozsvietit. Na servri tato odpoved bude cachovana v subore, takze nebude nutne spustat aplikaciu kvoli tomuto requestu. Akonahle dostane ako odpoved cislo, tak v tej chvily posle zabezpeceny request na API systemu, ktoremu oznami, ze uspesne zapla LED a system do suboru zapise namiesto cisla "false" pre dalsie dotazy, alebo z fronty ulozenej v databaze vytiahne dalsie cislo.
Potom tam bude este stlacenie tlacitka - to je este jednoduhsie z c++ aplikacie sa len posl len API request s prislusnymi parametrami na system (pre istotu aj spolu s odpovedou od systemu).

Mate tipy ako to este vylepsit?

Komentáře

  • tuma.vojta : ad UPDATE) jestli tě neomezuje datová velikost komunikace, tak použij klasickej pooling a POST request(a-dioda rozsvícena, b-zmáčknuto tlačítko). Sockety atd. mají smysl, pokud chceš ušetřit komunikaci nebo ti jde o rychlost. Takže si myslím, že máš nejjednodušší řešení hotový. Vylepšit to lze nějakým hashem a solí, jestli ti jde o bezpečnost a nemáš https. 11.5.2014
  • v6ak : K hashi a soli: 1. Zní to jako "něco jako HMAC", ale vlastní implementace. Tady je snadné při návrhu udělat chybu a být náchylný zejména k length extension attack. 2. Je potřeba ošetřit replay attack. 4.6.2014
odkaz
6 tuma.vojta
odpověděl/-a 10.5.2014

Ahoj, raspberry pi je možné programovat pomocí NodeJS, což je většině webových vyvojařů známá platforma. Tady návod na instalaci : https://www.youtube.com/watch?v=J6g53Hm0rq4.

Na youtube je už pár videí, co se v tom dá naprogramovat. Takže bych doporočil na rapsberry udělat službu, která bude poolingem nebo pomocí WebSockets kontrolovat stav tlačítka a rozsvecet ledku.

Komentáře

  • mamatoto : Diky za odpoved, vedel by si to prosim ta viac rozviest? Hlavne tie websockets, neviem si predstavit akym sposobom by to bezalo na tom rasberry, pretoze myslim, ze primarne je to urcene na komunikaciu klient - server, s tym ze klientska cast je bezi v nejakom browsri. 10.5.2014
  • bazo : websocket client nemusi byt len browser. tu https://github.com/bazo/tembo mam spraveny aj publisher aj klient v php. v podstate ti staci vytvorit websocket klienta v c a mozes zacat komunikovat, prakticky realtime 10.5.2014
  • tuma.vojta : Jak říká bazo, stačí když ti poběží někde server a na něj se bude připojovat raspberry jako client. Klienti v NodeJS taky existují, ale osobně jsem je ještě nepoužíval. Když už ale děláš věci na úrovni c(++), tak použij sockety. Jestli teda máš možnost umístit server na veřejnou adresu. 11.5.2014
  • mamatoto : Znie to pouzitelne, zatial ale ostavam pri zjednodusenom rieseni, ktore som popisal vyssie, jedna sa o experimentalnu funkciu systemu, takze sa mi to zda dostatocne a uz mam aj funkcne demo. V tych socketoch ale vidim jeden maly hacik a to to, ze php script na strane servru musi bezat stale ako deamon, alebo sa mylim? 11.5.2014
  • tuma.vojta : Máš pravdu. Udělat démona nebo to stačí pustit z konzole ("php ./socket_server.php") ... takže nakonec se to tváří taky jako démon. Cokoliv co bude někde stále běžet musí být démon (php[apache], javascript[nodejs], c++ apklikace ...). Všechno musí naslouchat na nějakým portu na příchozí spojení. Teda alespoň co je mi známo. 11.5.2014

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.