Added architecture section to the README
This commit is contained in:
parent
b5259c7333
commit
2846fa6631
26
README.md
26
README.md
|
@ -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
|
Loading…
Reference in a new issue