UDP komunikace: Raspberry <-> Arduino

rpi_ard

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #45 kdy: 21. 06. 2018, 21:07:24 »
Citace
Mně přijde, že se hlavně (pokud ti teda nejde vyloženě o vyzkoušení si konstrukce komunikačních protokolů) zbytečně trápíš s věcma, který už jsou dobře vyřešený, řešíš je zbytečně krkolomně, a zbude ti pak míň času na ty zajímavější věci.

souhlasím, na ethernetu netrvám, ale přišlo mi to jako nejjednodušší s tím, co jsem věděl a měl
- nechci se utopit ve zbytečnostech, naopak, chci vzít co nejvíce funkčních dílčích celků a ty si spojit a dojít k něčemu funkčnímu
- na MQTT se podívám, díky
- aktuálně řeším funkčnost, za 14 dní provozu jsem měl 1x problém, ale když teče voda na zahradě celý den, tak to problém je
- chybí mi znalost/rada/vedení v koncepčních bodech .. tak to bastlím



Technik_Tom

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #46 kdy: 21. 06. 2018, 22:24:16 »
No a teď si představte, že třeba soudruzi v automobilovém průmyslu používají jednoduchý princip, že ten, kdo chce něco říct, plácne to na sběrnici a ti, co je to zajímá, si to přečtou a ostatní na to kašlou.
A kupodivu to brzdí a akceleruje i bez potvrzování na sw úrovni, jen s vědomím, že zpráva byla ne sběrnici pro všechny čitelná.
Pokud totiž za těchto podmínek adresát nereaguje, není s ním patrně něco v pořádku a čekat na potvrzení je zbytečné.
U MQTT musí naopak broker postupně obesílat všechny přihlášené a zbytečně narůstá provoz na sběrnici.

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #47 kdy: 22. 06. 2018, 07:52:59 »
jen s vědomím, že zpráva byla ne sběrnici pro všechny čitelná.
Což je u bezdrátu dost nerealizovatelná podmínka :)

václav

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #48 kdy: 22. 06. 2018, 08:53:06 »
No a teď si představte, že třeba soudruzi v automobilovém průmyslu používají jednoduchý princip, že ten, kdo chce něco říct, plácne to na sběrnici a ti, co je to zajímá, si to přečtou a ostatní na to kašlou.
CAN není ethernet a už vůbec ne wifi...

Pokud totiž za těchto podmínek adresát nereaguje, není s ním patrně něco v pořádku a čekat na potvrzení je zbytečné.
Tak tohle je hodně odfláknutá analýza...

Pokud si SW jednotky poskytující data "myslí", že je odeslal, nemusí to ještě znamenat, že na sběrnici opravdu jsou (chyba v nižších SW vrstvách, chyba v HW, chyba na sběrnici, ...). Ne je to, že konzument má problém...

A navíc rozdíl je také v tom, že auto má obsluhu (řidič), která dokáže okamžitě reagovat na případný problém.

A aby ta auta nevypadala tak skvěle - měl jsem jedno a tam když jsem z volantu chtěl přidat hlasitost rádia, tak to na první 3 stisky VOLUME UP reagovalo poklesem hlasitosti. Až teprve potom se hlasitost začala zvedat. Zatímco když jsem neprve 1x stisknul VOLUME DOWN a potom VOLUME UP, chovalo se vše podle předpokladu. Jen dodám - nebylo to tak úplně po každém nastartování, ale jen cca v 1/3 případů.

MarSik

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #49 kdy: 22. 06. 2018, 11:33:46 »
No a teď si představte, že třeba soudruzi v automobilovém průmyslu používají jednoduchý princip, že ten, kdo chce něco říct, plácne to na sběrnici a ti, co je to zajímá, si to přečtou a ostatní na to kašlou.

Už to napsali jiní, ale odladěný CAN přes diferenciální drátovou linku, s jeho detekcí kolizí a prioritním systémem, je trošku něco jiného než snadno zarušitelný bezdrát ve volném ISM (SRD) pásmu.

Mimochodem, víte že CAN má ACK bit? Viz frame struktura v části 3.1.1. třeba tady http://www.ti.com/lit/an/sloa101b/sloa101b.pdf Příjemci modifikují frame už během vysílání a odesílatel si to hlídá.

U MQTT musí naopak broker postupně obesílat všechny přihlášené a zbytečně narůstá provoz na sběrnici.

Ano, ACKy na simplex médiu "žerou" pásmo i baterku. Ale jinak to občas nejde.


JirSoft

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #50 kdy: 22. 06. 2018, 14:58:24 »
Celkem jsem si oblíbil UDP multicast, rPI, ESP8266, nějaké počítače s macOS... Každý, kdo se připojí do UDP skupiny, má možnost poslouchat, případně reagovat. Sensory posílají vše každých 15s tím multicastem, jednou za 5m pošlou přes HTTP data do DB (Synology NAS). Posluchači jsou většinou LCD nebo OLEDy na zobrazení, ale i SW. Proti MQTT nevýhoda v nutnosti psát si to sám, ale zase pohodová škálovatelnost. Navíc přes další UDP port (opět multicast) mám DEBUG vzdálených ESP8266 i rPI...

technik_Tom

Re:UDP komunikace: Raspberry <-> Arduino
« Odpověď #51 kdy: 22. 06. 2018, 21:23:35 »
Tak o bezdrátu se tu vcelku nehovořilo, pořád to bylo UDP, TCP atp.
Proto jsem nastínil i jinou možnost v podobě filozofie CAN.
A tam opravdu platí, že pokud je zpráva na sběrnici regulérně čitelná, není problém vysílače, že přijímač zprávu nezpracuje, když měl možnost ji přijmout.
Proto taky nikdy neodešlete na sběrnici regulérní CAN zprávu, pokud na ní není alespoň jeden přijímač, který právě tím ACK bitem potvrdí, že zpráva byla čitelná.
Příjemce by měl detekovat, že určitou dobu nedostává data a reagovat nějakým bezpečným způsobem do doby, než dojde k nápravě.
Jen jsem chtěl upozornit, že může být daleko efektivnější publikovat zprávy pro všechny přímo na sběrnici než  do nějaké nadřízené databáze, která to pak zpětně rozesílá přihlášeným odběratelům.