Last inn enhetslisten
Hent først tenantens sensorer. Behold UUID, navn og type. Vis reléstyring bare når enhetstypen er relay. Normaliser UUID-er til små heksadesimale tegn uten skilletegn før sammenligning.
GET https://backend.solvotix.org/api/sensor
Authorization: Bearer <TOKEN>
Tenant: <TENANT_ID>
Accept: application/jsonBackendstatus for online eller offline beskriver skykommunikasjon og må aldri avgjøre om telefonen ser enheten via Bluetooth.
Søk etter og match den fysiske enheten
Søk kontinuerlig med duplikate annonser mens enhetssiden vises. Bruk én felles skanneeier fordi mobile BLE-biblioteker vanligvis bare har ett globalt søk.
- Be om Bluetooth-tillatelser for søk og tilkobling, og start et søk med lav ventetid.
- Godta navnet SVN, men ikke krev det: Android kan utelate det lokale navnet.
- Gjenkjenn produsent-ID 0x79fd. Lag den primære UUID-en på åtte byte av ID-en i little-endian fulgt av de første seks nyttelastbytene.
- Match normalisert UUID mot backendlisten, lagre native BLE-ID og RSSI, og fjern nærstatus etter 10 sekunder uten annonse.
Stopp søket før tilkobling og start det igjen etter frakobling. To sider må ikke konkurrere om native BLE-søk.
Be backend lage en enhetspakke
Når brukeren har bekreftet mål og fysisk handling, ber du om en komplett node-core-pakke for enheten. Både reléer og smartlåser kan levere pakker for direkte overføring. HTTP 200 betyr bare at pakken ble laget.
Eksempel på relépakke
POST https://backend.solvotix.org/api/relay/{relayId}/package
Authorization: Bearer <TOKEN>
Tenant: <TENANT_ID>
Content-Type: application/jsonOpen
{ "operation": "open" }Close
{ "operation": "close" }Pulse
{
"operation": "pulse",
"value": 5,
"unit": "seconds"
}Consumption
{
"operation": "consumption",
"kwh": 1.5
}Pulse krever positiv verdi og milliseconds, seconds eller minutes. Consumption krever kwh. Dekod enten packageBase64 eller packageHex, krev nøyaktig 212 byte, og aldri endre eller logg pakken.
Pakker for smartlås
For en smartlås velger du pakkeendepunktet som svarer til ønsket handling. Svarpakken bruker samme node-core-format og samme BLE-levering som beskrevet nedenfor.
GET https://backend.solvotix.org/api/smartlocks/{lockId}/packages/pulse-open
GET https://backend.solvotix.org/api/smartlocks/{lockId}/packages/open
GET https://backend.solvotix.org/api/smartlocks/{lockId}/packages/lock
Authorization: Bearer <TOKEN>
Tenant: <TENANT_ID>
Accept: application/jsonLever pakken via BLE
Bruk sist observerte native BLE-ID. Vis et blokkerende fremdriftslag, stopp søket, fjern gammel tilkobling, koble til og finn nøyaktig GATT-tjeneste og skrivekarakteristikk.
- Dekod én pakkerepresentasjon og kontroller at den er nøyaktig 212 byte.
- Les forhandlet MTU når mulig og beregn en sikker blokkstørrelse.
- Skriv blokkene sekvensielt i opprinnelig rekkefølge. Foretrekk skriving uten respons når det støttes.
- Koble alltid fra etter vellykkede blokker. Ikke gjenta en fysisk handling automatisk etter at levering har startet.
- Start kontinuerlig søk igjen etter en kort pause hvis siden fortsatt er åpen.
chunkSize = max(20, min(215, negotiatedMtu - 3))
fallbackChunkSize = 20Hold kommunikasjonslaget synlig under pakkegenerering, tilkobling, oppdagelse, alle skrivinger og frakobling. Vis tydelig suksess eller feil.
Verifiser og rapporter riktig resultat
Fullførte skrivinger beviser transport, ikke nødvendigvis fysisk utførelse. Bruk enhetsbekreftelse eller observert status når det finnes.
- Rapporter «Pakken ble overført» når BLE-transporten er fullført.
- Rapporter fysisk fullføring bare når enheten eller observert status bekrefter den.
- Logg livssyklus og blokklengder, men aldri token, pakkebyter, legitimasjon eller dekodet innhold.
Ikke send pakken automatisk på nytt ved usikkert resultat. Reléet kan allerede ha reagert, og gjentakelse kan være farlig.
