Added architecture section to the README

This commit is contained in:
Filip Znachor 2022-12-09 02:46:57 +01:00
parent b5259c7333
commit 2846fa6631

View file

@ -1,6 +1,6 @@
# Odjezdová tabule MHD
Odjezdová tabule městské hromadné dopravy v Plzni postavená na protokolu LoRaWAN a mikrokontroléru M5Stack Core2.
Odjezdová tabule městské hromadné dopravy v Plzni postavená na protokolu LoRaWAN a mikrokontroléru M5Stack Core2 z dat ze stránek PMDP.
### ✅ Základní funkce
@ -50,4 +50,26 @@ Navržený protokol používá pro oddělení posílaných dat znak `|`. Protoko
- značka, že se jedná o čas
- čas ve vteřinách od 1. 1. 1970
- **vymazání dat** (`CLEAR`)
- vymazání všech uložených spojů (např. pro nahrání nových)
- vymazání všech uložených spojů (např. pro nahrání nových)
## Architektura
Celý projekt se skládá ze dvou hlavních částí - serverové a klientské. Serverovou částí je myšlen program napsaný v Pythonu, který obstarává stahování aktuálních dat o odjezdech, jejich uchovávání, průběžnou aktualizaci a jejich odesílání prostřednictvím REST API portálu [lora.plzen.eu](https://lora.plzen.eu) na mikrokontrolér (klientské zařízení). Klient má poté za úkol tato data uchovávat, třídit, řadit a vhodně zobrazovat na displeji společně s aktuálním časem a datem.
### Serverová část
Jako první jsou stažena data o odjezdech do paměti, kde jsou uchovávána. Jejich aktualizace probíhá ve výchozím nastavení každých 30 sekund. V druhé fázi je zjištěno, na jaké zařízení mají být jaká data odeslána, a zařízeno jejich převedení do navrženého formátu a odeslání. V případě zjištění změny zpoždění spoje jsou znovu odeslána data o daném spoji.
### Klientská část
Mikrokontrolér je po zapnutí připojen do sítě LoRaWAN s nastavenými údaji a poté čeká na přicházející zprávy. Po přijetí dat o spojích jsou tyto informace zapsány do paměti. Každých 6 sekund se provádí aktualizace displeje, kdy se vypíšou všechny dostupné informace. Na displej jsou vypisovány spoje seřazné podle času odjezdu od nejbližšího. Je vypsán pouze nejbližší spoj dané linky a konečné zastávky, jelikož je to pro cestující na zastávce nejdůležitější informací. Zobrazovány jsou dále pouze spoje, jejichž odjezd je za více než -0,3 minuty a za méně než 100 minut. Každou 6. vteřinu se také odečte jedna desetina minuty od odjezdu všech spojů a přičte jedna desetina k zobrazovanému času. Mikrokontrolér je schopen pracovat se všemi lokálními daty bez potřeby komunikace se serverem.
### Rozšíření pro asistenta
Získaná data je díky REST API serverové části možné využít i k jiným účelům. Na vytvořeném HTTP serveru se nachází jednoduché rozhraní zobrazující odjezdy z vybrané zastávky, čehož je možné využít například k integraci odjezdů MHD na nástěnku v [Home asistentovi](https://home-assistant.io).
- `GET` /stops
- seznam sledovaných zastávek
- `GET` /departures/:id
- odjezdy ze zadané zastávky
- `:id` nahraďte identifikátorem