TapHome API
Prin TapHome API puteți integra dispozitivele TapHome în orice aplicație terță, de exemplu pentru controlul vocal cu Apple Siri.
Prezentare generală
TapHome API permite integrarea dispozitivelor TapHome în aplicații terțe prin cereri pe protocolul HTTP și răspunsuri JSON. Sistemul funcționează prin https://api.taphome.com/api/TapHomeApi/v1/
Caracteristici principale:
- acces la resurse prin HTTP, cu coduri de stare corespunzătoare
- documentație Swagger standard disponibilă la
https://api.taphome.com/api/doc - răspunsuri JSON codificate în UTF-8
- suport pentru API în rețeaua locală (Core 2021.3+) prin HTTP, fără interfața Swagger
Avantajul rețelei locale: accesul direct prin LAN/VPN reduce latența și elimină dependența de internet. Unitățile Core necesită o adresă IP fixă sau configurare mDNS.
Notă de securitate: API-ul din rețeaua locală și webhook-ul funcționează prin HTTP simplu și presupun că rețeaua locală este de încredere. În clădirile cu rețea partajată sau cu mai mulți utilizatori, de exemplu hoteluri sau birouri cu Wi-Fi pentru oaspeți, amplasați unitatea Core într-un segment de rețea dedicat, separat de rețeaua pentru oaspeți. Consultați Arhitectura rețelei.
Autentificare
TapHome API folosește o autentificare HTTP proprie, cu tokenuri bearer (nu cu nume de utilizator și parolă).
Formatul antetului
| |
Exemplu de cerere
| |
Exemplu cURL
| |
Gestionarea tokenurilor
Tokenurile se găsesc în aplicația TapHome: Setări → Expun dispozitive → TapHome API
Folosiți meniul contextual (cele trei puncte) pentru a genera tokenuri de acces noi. Generarea unui token nou invalidează tokenurile anterioare. Alternativa cu parametru de interogare este disponibilă doar pentru apelurile GET (avertisment de securitate: nu partajați URL-uri care conțin tokenuri).
Un token compromis trebuie regenerat imediat; la un moment dat este activ un singur token.
Referința API
Obținerea informațiilor despre locație
Returnează metadatele locației unității de control și verifică starea conexiunii.
Varianta 1
| |
Varianta 2
| |
Parametri: niciunul
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Descoperirea dispozitivelor
Returnează dispozitivele expuse și tipurile de valori acceptate de acestea, inclusiv proprietățile doar pentru citire, precum Device Status.
Varianta 1
| |
Varianta 2
| |
Parametri: niciunul
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Obținerea valorilor unui dispozitiv
Returnează toate valorile actuale ale dispozitivului indicat, inclusiv ID-urile și numele tipurilor. Valorile sunt numerice (tip double). Unele proprietăți sunt doar pentru citire.
Cererile frecvente (la intervale sub 500 ms) pot returna valori din cache; comparați marcajele de timp (timestamp) doar pentru egalitate.
Varianta 1
| |
Varianta 2
| |
Parametri: ID-ul dispozitivului în calea URL sau în corpul JSON
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 403 Forbidden (dispozitivul nu este expus)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Obținerea valorilor mai multor dispozitive
Returnează simultan toate valorile actuale ale mai multor dispozitive. Consumă mai puțină lățime de bandă decât cererile individuale. Necesită Core 2021.3 sau mai nou.
| |
Parametri:
| |
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 403 Forbidden (dispozitivul nu este expus)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Obținerea tuturor valorilor tuturor dispozitivelor
Returnează într-o singură cerere starea completă a tuturor dispozitivelor expuse. Necesită Core 2021.3 sau mai nou.
Varianta 1
| |
Varianta 2
| |
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 403 Forbidden (dispozitivul nu este expus)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Obținerea unei singure valori a dispozitivului
Returnează o singură valoare a dispozitivului, fără a fi necesară procesarea JSON. Ideal pentru implementări simple. Răspunsul numeric (double) este formatat ca șir de caractere, cu punct zecimal.
| |
Parametri: ID-ul dispozitivului în cale, ID-ul tipului de valoare și tokenul în parametrii de interogare
Răspuns:
| |
Pentru valorile necunoscute se returnează NaN. Cererile frecvente (la intervale sub 500 ms) pot returna date din cache.
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 403 Forbidden (dispozitivul nu este expus)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
Setarea valorii dispozitivului
Modifică una sau mai multe valori ale dispozitivului, după identificatorul tipului. Valorile neindicate rămân neschimbate. Tip numeric (double).
Modificările frecvente (la intervale sub 500 ms) duc la răspunsul HTTP 503.
Varianta 1
| |
Se pot seta simultan până la trei valori.
Varianta 2
| |
Parametri:
| |
Răspuns:
| |
Erori HTTP:
- 401 Unauthorized (neautorizat)
- 403 Forbidden (dispozitivul nu este expus)
- 404 Not Found (locația este deconectată de la cloud)
- 405 Method Not Allowed (metodă nepermisă)
- 500 Internal Server Error (eroare internă a serverului)
- 503 Service Unavailable (valorile se setează prea des; reîncercați mai târziu)
Webhook
Funcția webhook trimite modificările de stare ale dispozitivelor expuse prin HTTP POST la un URL configurat, în rețeaua LAN sau pe internet. Permite o sincronizare mai eficientă decât interogarea periodică.
Se trimite direct, nu prin cloud: webhook-ul este un HTTP POST de ieșire, pe care unitatea Core îl trimite direct la URL-ul configurat; datele nu trec niciodată prin serverele cloud TapHome. Dacă destinația funcționează în aceeași rețea locală, webhook-ul se livrează local prin LAN, fără să treacă prin internet. Comutatoarele Activați accesul la cloud și Activați accesul local de pe pagina Expun dispozitive controlează doar apelurile API de intrare către unitatea Core; ele nu dezactivează webhook-ul.
Limitarea frecvenței: modificările se grupează și se trimit cel mai devreme după aproximativ 350 ms. La schimbări rapide ale valorii se trimite doar ultima modificare; valorile intermediare anterioare se elimină. Trimiterile eșuate nu se repetă.
Configurare: aplicația TapHome acceptă trei antete HTTP personalizate ale cererii, în formatul „key: value”.
Structura datelor: identică cu formatul răspunsului endpointului getMultipleDevicesValues.