Projekt ESP32 online

Odpovědět
Pablo74
Příspěvky: 87
Registrován: 03 lis 2019, 17:00

Projekt ESP32 online

Příspěvek od Pablo74 » 05 lis 2024, 18:53

Projekt je v počáteční fázi a vše se ještě stokrát změní.

Začínám pracovat na menším projektu s pracovním názvem ESP32 online. Cílem je obousměrná komunikace s vývojovou deskou s jednočipem ESP32 přes internet.

Data se budou ukládat do Firebase Realtime Database, každá deska bude mít svůj objekt JSON v databázi se šesti klíči (položky), s pevně danými názvy A až F; tedy deska s názvem devA bude mít objekt v /devboards/devA a klíč F bude dostupný přes referenci /devboards/devA/values/F. Klíčů (položek) je pro každou desku šest, A až F. Pevné názvy jsou zvoleny záměrně, kvůli snadnější implementaci.

Každá deska může mít naprosto odlišný kód a používat klíče A až F různým způsobem, libovolně pro čtení hodnot i pro jejich zápis. Přes wifi bude připojena do internetu a k databázi Firebase.

Mobilní/webová aplikace bude mít dashboard, kde bude možnost data nejen zobrazit, ale i měnit; a to nejen pro jednu konkrétní desku, ale i pro více různých desek.

Řekněme, že desky devA až devC budou obsahovat čidlo teploty, tlaku a relativní vlhkosti a každá z nich tyto hodnoty publikuje v klíčích A až C do databáze.

Na PC/tabletu/mobilu půjde zobrazit na Dashboard tyto informace různým způsobem. Dashboardy totiž půjde vytvářet a uloženy budou také v databázi a dostupné přes referenci /dashboards/dashboardA atd.

Na dashboard budou různé komponenty, některé jen hodnotu zobrazí (to dává smysl třeba pro teplotu, tlak, relativní vlhkost), některé komponenty umožní data i měnit a deska tyto data použije v programu (třeba hodnotu intenzity osvětlení, dobu sepnutí světla, …).

Projekt je v počáteční fázi a vše se ještě stokrát změní.

Zatím mám strukturu dat v realtime databázi pro /devboards a /dashboards a několik komponent pro vizualizaci a příp. nastavení dat, konkrétně TextComponent, SliderComponent, InputComponent a ButtonsComponent. Používám VueJS verze 3 (option api), Quasar Framework a taky pomoc od AI.

JSON objekt pro desku vypadá takhle:

Kód: Vybrat vše

{
"devA": 
  {
    "values": {
      "A": "246",
      "B": 82,
      "C": 10,
      "D": "20",
      "E": "Yes",
      "F": "No"
  }
}
Dashboard je založen na umístění komponent do layoutu, malý příklad dvou komponent vedle sebe, JSON objekt:

Kód: Vybrat vše

[
  {
    "component": "slider",
    "devboard": "devA",
    "key": "B"
  },
  {
    "class": "text-white",
    "component": "text",
    "conditions": [
      {
        "class": "bg-red",
        "expression": "value < 50"
      },
      {
        "class": "bg-green",
        "expression": "value >= 50"
      }
    ],
    "devboard": "devA",
    "key": "B",
    "props": {
      "next": "%",
      "prev": "rel. vlhkost"
    }
  }
]
První JSON objekt je komponenta slider, má jen tři klíče, druhý z nich se odkazuje na název desky (devA) a třetí na její klíč (B). Jde o slider, tj. tato hodnota se dá měnit a změna se rovnou bez prodlevy zapíše do databáze.

Druhý JSON objekt reprezentuje text, zdánlivě jednoduchou komponentu, ale je v ní implementováno i něco logiky. Odkazuje se na stejnou desku (devA) a stejný klíč (B), tím se dá snadno ověřit, že změna hodnoty na slideru se opravdu propíše do databáze a v této komponentě text se správně zobrazí.
Komponenta toho umí ale daleko víc, než jen prosté zobrazení číselné hodnoty. Klíče prev a next umožní zobrazit text před a za hodnotou z databáze (klíč B z desky devA). Dokonce je možnost dynamicky měnit vizuální reprezentaci hodnoty, to zajišťují klíče class (CSS třída, která se aplikuje) a expression (podmínka, za které se CSS třída aplikuje). V tomto konkrétním případě se hodnoty menší než 50 zobrazí jako bílý text na červeném pozadí (CSS třída bg-red znamená červené pozadí) a hodnoty větší než 50 se zobrazí s pozadím zeleným (CSS třída bg-green).

Dashboard jako JSON objekt píšu ručně a vložím ho do databáze.

To je současná fáze projektu, občas si sem uložím myšlenku nebo pokrok.

Pablo74
Příspěvky: 87
Registrován: 03 lis 2019, 17:00

Re: Projekt ESP32 online

Příspěvek od Pablo74 » 12 lis 2024, 08:19

Pro představu: co mám hotovo a jak to vypadá - přidávám dva náhledy z mobilu (ořezáno). Můžete se všimnout, že zobrazení umí reagovat na hodnotu, např. u relativní vlhkosti mám mezní hodnotu 50, co je pod je podbarveno červeně, co je nad je zeleně. Jak jsem toho docílil je v předchozím příspěvku.
ESP32_online_01_A.png
ESP32_online_02_A.png

Pablo74
Příspěvky: 87
Registrován: 03 lis 2019, 17:00

Re: Projekt ESP32 online

Příspěvek od Pablo74 » 17 lis 2024, 22:19

Malý povzdech...

Pracuju teď na kódu v ESP32, který má komunikovat s databází Firebase realtime database. S vydatnou pomocí AI, konkrétně Claude Sonnet 3.5, se snažím o komunikaci. Do hry vstupují pravidla (Firebase rules), autentifikace, token atd.

Nu a musím říct, že se nedaří. Nic mi nefunguje, a to kolem toho skáčeme s AI dva dny a zkouším kde co. Snažím se o naslouchání změn v datech v databázi, ne o permanentní dotazování se každých pár sekund.

Budu muset změnit způsob autentifikace, zřejmě na email a heslo. Snad se mi zadaří.

Odpovědět

Kdo je online

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