Autor | Zpráva | ||
---|---|---|---|
Martinc Profil |
#1 · Zasláno: 19. 12. 2023, 08:34:42
Představme si, že máme nějaký stroj řízeny MCU, třeba pec a té musíme na začástku zadat nějaká data, třeba teplotní profil v podobě 8 teplot a osmi časů. Po spuštění pak stroj informuje jak se mu to daří v podobě grafu s průběhem teplot.
Za tímto účelem do stroje dame nějaký jednodeskový počítač s Linuxem ala Malina (ta nejmenší nejočesanější verze) na kterém běží lighttp a z jedné strany má UART a z druhé Ethernet pro připojení k LAN a internetu, aby se obsluha mohl ke stroji přihlásit z PC nebo mobilu zadat teplotní profil a pak sledovat jak to "peče" nakonec jim to "piplo", že je dopečeno. To co ted řeším je jak pojmut tu část na "Malině". S čímž nemám praktické zkušenosti stejně jako s tvorbou webu. Včera jsem vytahl nějký jednodeskovy linux, nainstloval a rozchodil lighttpd, nakonfiguroval, aby a něm chodily cgi skripty a v C napsal jednoduchy cgi skript, který po UART přijal nějaké číslo a nasledně ho vytiskl což se při voláni z web prohližeče zobrazilo. To o co mi jde, jak to pojmout koncepčně a případně najít nějaké příklady. Ma současná fixní idea. Z webu přijde požadavek, na zobrazení index.html z te se zavola cgi skript ten přečte data z MCU a zobrazi, uživatel může vybrat přpraveny a uložený profil nebo vytvoři a připadně uloží nový a bud přes web nebo na stroji spusti "pečení", následně by měla byt třeba co 10s zobrazován aktuální stav třeba v podobě grafu a kdy by nastal problém, třeba někdo otevřel dveře nebo nastala chyba mělo by to vzbudit obsluhu. Takže html zavola cgi script ,aktulne ho mam v C, ale možná je dnes vic in Perl nebo bych se snad naučil Python nebo PHP? Cgi skript vrati stavova a konfigurační data z MCU, třeba v podobě JSON nebo jinak? Grafy atd. na strance pro změnu Java script, stejně by nějak musel volat cgi, aby vytáhl data z MCU. V jakém formátu ukladat přednastvené teplotní profily? Předstvuji si samstatný soubr pro každy profi tak, aby šli vytvářet editovat i na jiném PC. Nebo jsem úplně mimo a dnes se to celé řeší jinak? Děkuji |
||
Kajman Profil |
#2 · Zasláno: 19. 12. 2023, 09:22:21
Do prohlížeče (frontend) připravíte aplikaci z html, js, css, která bude data zobrazovat a AJAXem volat skripty na serveru a podle vrácených dat dynamicky upraví stránku.
Na serveru (backend) budete mít program, který bude umět komunikovat s požadavky z prohlížeče i se strojem. Rozhraní, jak si budou frontend a backend předávat data (API) si navrhnete tak, aby se z obou míst s tím dobře pracovalo. Pro inspiraci mrkněte na REST a RPC. JSON by měla být vhodná volba. Klidně bych v tomto formátu ukládal i profily. Pokud chcete z backendu vyvolat nějakými událostmi co nejdřívější změnu na frontendu a nečekat, až se fronend zeptá opakované sám, mrkněte na websocket. |
||
Serg Profil |
Aby to fungovalo i s historií - a nebylo to závislé na aktuální instanci webové stránky, tzn že po refreshi by se graf začal kreslit od začátku - by to chtělo ještě nějaký společný bod, kam se budou ukládat hondoty z MCU a odkud je vyčte webový server. Takže buď soubor nebo databáze. Soubor by měl asi stačit v tomhle případě. Nebo jestli si historii pamatuje MCU tak taky možnost.
|
||
Časová prodleva: 10 dní
|
|||
piiiiiiiip Profil |
#4 · Zasláno: 29. 12. 2023, 13:19:46
Já bych tohle řešil pomocí MQTT protokolu. Přes UART může váš stroj komunikovat s ESP8266 modulem, který je mnohem levnější než ten jednodeskový počítač a pro tuto aplikaci dostačující. Ten pak bude posílat a přijímat data přes MQTT protokol. Vaše webová stránka pak pomocí js (Ajax, jQuery) může fungovat jako odběratel, přečte data od toho stroje a zobrazí je v grafu a případně uloží do nějakého souboru či databáze. Z té webové stránky by také bylo možné publikovat data (příkazy) pro váš stroj, když chcete změnit jeho chování.
|
||
Časová prodleva: 1 rok
|
0