Am încercat să folosesc Firebase-ul de la Google, cu Firebase Admin SDK, în proiectul meu C#. Vestea bună este că Admin SDK este ușor de folosit și tot ce trebuie să faci este să apelezi două metode. Partea de autentificare este gestionată de o variabilă de mediu care indică spre un fișier .json pe care îl descarci. Vestea proastă este că SDK-ul depinde de gRPC, iar versiunea dotnet a acestuia nu funcționează bine pe Raspberry Pi.
Ce am de gând să fac este să înlocuiesc admin SDK-ul cu simple apeluri REST API, astfel încât să pot trimite date către Firebase de oriunde; deocamdată vreau doar să trimit date de pe Raspberry Pi.
Am răsfoit documentația REST API Reference ca să înțeleg cum se fac cererile și, după ceva timp de experimentare și citire a documentației, am tradus manual o cerere simplă de telemetrie de pe Raspberry Pi într-o cerere REST Firebase.
Așa arată în formatul Firebase:
PATCH https://firestore.googleapis.com/v1/projects/project_name/databases/(default)/documents/collection_name/doc_id
```json{ "name": "batman", "fields": { "source": { "stringValue": "NucuCar.Sensors" }, "timestamp": { "timestampValue": "2019-12-01T23:26:13.5537227+02:00" }, "data": { "arrayValue": { "values": [ { "mapValue": { "fields": { "sensor_state": { "integerValue": 2 }, "cpu_temperature": { "doubleValue": 48 }, "_id": { "stringValue": "CpuTemperature" } } } }, { "mapValue": { "fields": { "sensor_state": { "integerValue": 2 }, "temperature": { "doubleValue": 32 }, "humidity": { "doubleValue": 100.0 }, "pressure": { "doubleValue": 6222 }, "voc": { "doubleValue": 0.0 }, "_id": { "stringValue": "Bme690-Sensor" } } } } ] } } }}```
Tot ce mai rămâne de făcut acum este să scriu un traducător care transformă dicționarele C# brute în formatul de mai sus. Vreau să pot refolosi asta fără prea mare bătaie de cap dacă se schimbă formatul datelor mele de telemetrie.
După puțină încercare și eroare, am reușit să implementez un traducător, renunțând complet la dependența de Admin SDK-ul Firebase. Nu am implementat încă gestionarea autentificării, dar este pe lista mea de lucruri de făcut.
Mulțumesc că ai citit!