Více zařízení v síti a komunikace

Alda
Příspěvky: 12
Registrován: 16 kvě 2020, 07:23
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od Alda » 20 kvě 2020, 10:53

TomTP : Přesně jak bych to chtěl. Jenom se zeptám, server ti dělá to synology ? Taky mám NAS os sinology, ale vůbec mě nenapadlo že bych to jel přes něj. Asi abych nezatěžoval HDD, protože jestli tam bude několik zařízení posílat data, tak pojede bez odpočinku.
Tobě tedy jednotlivá zařízení posílají data automaticky na ten php server ? Jak máš řešenou identifikaci ? Načítáš jenom data nebo i ovládáš ?
Vím.. mnoho otázek, přesto předem děkuji když nějaká moudra předáš. Rád se poučím

TomTP
Příspěvky: 37
Registrován: 19 lis 2017, 22:28
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od TomTP » 20 kvě 2020, 12:34

Od toho úložiště je aby makalo :-) Navíc zápis do SQL tabulky z klienta je otázka milisekund. Spíš si ukousneš trochu drahocenné RAM. Běží mi na něm webový server, PHP a phpMyAdmin odkud SQL spravuju. Mám pouze klienty, zatím nemám potřebu z PC nic ovládat. Co potřebuju ovládám přes mobil (ve svý podstatě nějaký zásuvky Sonooff) a pomocí Webhooks si do SQL zapisuju stavy, které si pak zobrazuju. Mrkni se dole na jeden výborný tutoriál, mě kdysi hodně pomohl. Až dostaneš hodnoty na web, pak už jenom vytvořit webovou stránku. A klidně se ptej, nejsem sice žádný Arduino přeborník ani vyučený programátor, ale když budu vědět, rád pomůžu. Jen to nemusí být hned.
https://arduino.cz/programovani-webovyc ... o-arduino/

Alda
Příspěvky: 12
Registrován: 16 kvě 2020, 07:23
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od Alda » 20 kvě 2020, 14:05

jj článek mám nastudovaný. Teď přemýšlím, jak vyřešit základní otázky: jak identifikovat jednotlivá zařízení a jejich data. Pak jak je automaticky přidávat. Zda data posílat nebo si o ně žádat... Možná na to jdu komplikovaně, ale podle počtu čidel můžu dát : Název zařízení/umístění/název měřené hodnoty/data1/název měřené hodnoty/data2 … atd. Ale jak výstupy - a jak php pozná jestli to je vstup nebo výstup nebo měnitelná hodnota....

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Více zařízení v síti a komunikace

Příspěvek od kiRRow » 20 kvě 2020, 18:31

Musíš si vymyslet svůj vlastní komunikační protokol. Věci jako názvy není třeba přenášet, budou uloženy přímo na serveru. Třeba takhle
ID_Zařízení#Data1#Data2#Data3 ... odesílaný řetězec pak bude vypadat nějak takto 1#12#0#Text.

V PHP scriptu pak použiješ tzv split ... dáš mu celý ten řetězec a rozlámeš to pak na jednotlivé kousky pomocí znaku # ... výsledkem bude něco jako
data[0] budou obsahovat ID zařízení .. čili 1
data[1] budou obsahovat Data1 .. čili 12

Co je co za zařízení taky může rozhodnout PHP script ... prostě si pamatuje, že ID < 10 jsou nějaký věcičky co posílaj jen Data1 ... a ještě k tomu hodnotu int .... ID > 10 a ID < 20 bude např rozeznávat jako jiné zařízení ... např nějaký expandér vstupu a očekáváš osm nul/jedniček

TomTP
Příspěvky: 37
Registrován: 19 lis 2017, 22:28
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od TomTP » 20 kvě 2020, 22:49

Co přesně myslíš tím vstupem a výstupem?

Alda
Příspěvky: 12
Registrován: 16 kvě 2020, 07:23
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od Alda » 21 kvě 2020, 09:09

Vstupy a výstupy myslím, že vstupy jsou třeba čidla teploty a výstupy jsou akční členy, třeba relé. Napadlo mě, že by arduino client posílal infomace o vstupech do php, které by se jmenovalo vstupy.php o výstupech do vystupy.php a o měnitelných parametrech do nastaveni.php. Ty by to dávaly do tří SQL databází a pak už by se to zpracovávalo dle potřeby.

TomTP
Příspěvky: 37
Registrován: 19 lis 2017, 22:28
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od TomTP » 21 kvě 2020, 13:22

Zkusím to napsat úplně jednoduše. Protokol co přenést a kam si tvoříš na straně arduina. Vezmeš hodnotu a pošleš ji do php scriptu který to přiřadí do příslušné SQL tabulky a do jejího příslušného pole. Akci poslání do SQL si vytvoříš taky v arduinu na základě tvých potřeb (např. pravidelné vyčítání a zaslání nějakého stavu, zaslání na základě nějaké změny apod.) Webová stránka ti pak do té databáze šáhne a zobrazí v prohlížeči. Samozřejmě všechny tři věci musíš naprogramovat.

Kód pro arduino dole pošle tento řetězec (tady i v kódu je vynecháno počáteční "http://" aby to nezobrazilo zkrácený funkční odkaz)
GET moje.synology.me/Arduino/Technicke/Garaz/logger_teplota.php?&teplota=t&vlhkost=h&vstup=vstup&vystup=vystup

Poté ho logger_teplota.php zpracuje, oddělí jednotlivé hodnoty, otevře požadovanou tabulku a tam hodnoty vloží

Ten "logger" můžeš mít každý pro každou tabulku zvlášť nebo si uděláš jeden a do řetězce přidáš nějakou identifikaci (např. &ID=1) a následně v "loggeru" nadefinuješ jaká tabulka se má otevřít, když řetězec obsahuje "ID=1" (nebo další různé podmínky).

Musíš trochu proniknout do problematiky PHP. Alespoň co se týká pár základních věcí. Není to zase tak těžké ;)
--------------------------------------------------------------------------------------------------------------------------------------

if (client.connect("moje.synology.me", 80))
//if (client.connect("192.168.0.103", 80))
{
Serial.println (WiFi.SSID());
Serial.println("Pripojeno k NASu") ;
String printSQL = "GET moje.synology.me/Arduino/Technicke/Garaz/logger_teplota.php?";
printSQL += "&teplota=";
printSQL += t;
printSQL += "&vlhkost=";
printSQL += h;
printSQL += "&vstup=";
printSQL += vstup;
printSQL += "&vystup=";
printSQL += vystup;
Serial.println("Zapisuji do SQL") ;
client.print(printSQL);
client.println(" HTTP/1.1");
client.println ("Host: moje.synology.me");
//client.println("Host: 192.168.0.103");
client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.println("Connection: close");
client.println();
client.stop();
Serial.println("OK") ;
Serial.println("koncim spojeni");
}

Alda
Příspěvky: 12
Registrován: 16 kvě 2020, 07:23
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od Alda » 21 kvě 2020, 13:53

Díky za kód. SW řešení asi není takový problém. Vlastně od začátku řeším dvě otázky - a to vzhled toho protokolu co budu posílat, aby tam bylo vše o arduino zařízení a pak také, jestli ten protokol má arduino zařízení posílat automaticky nebo na vyžádání. Proto jsem se ptal jak to má kdo řešené, abych se inspiroval. Protokol níže popisuje zařízení a posílá informace o čidlech, ale teď si říkám jak bych tam přidal třeba dvě relé a další dvě nastavení třeba limit pro sepnutí relé, které bych chtěl mít možnost uživatelsky měnit. Jedine :
GET moje.synology.me/Arduino/Technicke/Garaz/logger_teplota.php?&vstup_teplota=t&vstup_vlhkost=h&vystup_rele1=0&vystup_rele2=1&nastaveni_limita1=100&nastaveni_limita2=250
Ale proč bych při každém poslání protokolu měl posílat informace o limitách či výstupech co se nemění

TomTP
Příspěvky: 37
Registrován: 19 lis 2017, 22:28
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od TomTP » 21 kvě 2020, 16:08

Nemusíš posílat všechno

Alda
Příspěvky: 12
Registrován: 16 kvě 2020, 07:23
Reputation: 0

Re: Více zařízení v síti a komunikace

Příspěvek od Alda » 21 kvě 2020, 16:16

No minimálně aspoň při první komunikaci musím, aby webserver věděl co všechno to arduino zařízení umí a na webových stránkách to vypsal
Nebo jak jinak to udělat ?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů