Migrazione da ThingsBoard a Connhex: una guida completa
Questa guida fornisce un piano per la migrazione della tua soluzione IoT da ThingsBoard a Connhex.
Sebbene entrambe le piattaforme siano dedicate al mondo IoT, sono progettate con filosofie diverse. ThingsBoard è una piattaforma all-in-one con una UI configurabile, mentre Connhex è una suite di servizi specializzati, API-first, progettati per massimizzare flessibilità ed integrazione.
Filosofia generale
Per migrare con successo la tua soluzione basata su ThingsBoard a Connhex, dovrai tenere presente i diversi approcci:
- ThingsBoard: fornisce un'esperienza all-in-one con UI integrata per la configurazione e la gestione dei dispositivi.
- Connhex: enfatizza un approccio modulare e basato su API. Le applicazioni per l'utente finale vengono costruite interagendo tramite API con servizi distinti (Resources, IAM, Core, Rules Engine, OTA, ecc.)
Parità di funzionalità
Le varie funzionalità sono spesso ottenute in modo diverso in Connhex: ciò significa che una corrispondenza 1:1 delle funzionalità potrebbe non esistere sempre nella stessa forma, a causa della modularità di Connhex.
Mappatura dei concetti principali
| Concetto ThingsBoard | Equivalente/i in Connhex | Note |
|---|---|---|
| Entities (generale) | Resources (Connhex Resources, definiti da JSON Schema) | I tipi di entità di ThingsBoard (Device, Asset, Customer, Tenant, User) hanno delle controparti, ma le risorse definibili tramite Connhex Resources sono più generiche e flessibili. |
| Device | Resource (tipo: device), Connectable (Connhex Core) | Connectable è il digital twin in Connhex Core. |
| Asset | Resource (tipo: asset, o tipi personalizzati) | Utilizzato per raggruppare o rappresentare elementi fisici/logici che non siano dispositivi. |
| Customer | Tenant (all'interno di un Realm in Connhex IAM) o risorsa personalizzata in Connhex Resources | Connhex IAM utilizza i Tenants per la segregazione dei dati, che possono rappresentare i clienti. I Realms possono segregare applicazioni/business unit. |
| Tenant | Tenant (all'interno di un Realm in Connhex IAM) | L'unità organizzativa di primo livello. |
| User | User (Connhex IAM, autenticato tramite Connhex Auth) | Gestito da Connhex IAM, con ruoli e policy. |
| Entity View | Principalmente ottenuto tramite query API con permessi specifici | Connhex non ha un oggetto "Entity View" diretto. La condivisione dei dati è controllata dalle policy IAM e dallo scope delle API. |
| Attributes | Resource Attributes / Parametri di Configurazione | |
| Server-Side Attributes | Resource attributes (definiti in JSON Schema, gestiti tramite API) | Memorizzati con la risorsa. |
| Shared Attributes | Parametri di configurazione (Connhex Remote Init), attributi della risorsa. | Configurazione del dispositivo fornita da Remote Init all'avvio, o gestita come Resource attributes aggiornabili tramite API. |
| Client-Side Attributes | Attributi delle risorse (riportati dal dispositivo tramite API) | Dati riportati dal dispositivo e (potenzialmente) memorizzati assieme alla sua risorsa. |
| Telemetry Data | Messages (Connhex Core: messages, params, infos tramite CMP) | Connhex Core gestisce l'ingestion dei messaggi. La Connhex Message Policy (CMP) aiuta a separare diversi tipi di messaggi. |
| RPC (Remote Proc. Call) | Chiamate API, Comandi MQTT, Canale di Controllo Connhex Edge | Ottenuto tramite pattern di comando/risposta sul message bus di Connhex Core. |
| Client-Side RPC | Chiamate API dal dispositivo verso backend personalizzati / Rules Engine | Il dispositivo invia un messaggio (ad es., tramite MQTT a Connhex Core) che attiva il Rules Engine o un'applicazione personalizzata. |
| Server-Side RPC | Comandi tramite MQTT/HTTP, canale control di Connhex Edge | La suite invia messaggi ai dispositivi. I servizi del dispositivo possono sfruttare il Rules Engine locale di Connhex Edge. |
| Alarms | Connhex Rules Engine + Connhex Notifications | |
| Alarm Rules | Conditions in Connhex Rules Engine | La logica degli allarmi (creazione, cancellazione, severità) è definita nel Rules Engine. |
| Alarm Propagation | Ottenuta tramite la logica del Rules Engine e le relazioni tra Resources | È necessaria una logica personalizzata nel Rules Engine per propagare gli allarmi basandosi sulla gerarchia delle risorse. |
| OTA Updates | Connhex OTA Firmware Update | |
| Firmware/Software Packages | OTA Firmware Package (versioni, checksum, init_id/init_key) | Connhex utilizza Models e Releases per la gestione delle versioni. |
| Device Provisioning | Connhex Provisioning + Connhex Remote Init + Connhex Manufacturing | |
| Device Provisioning | Connhex Provisioning (crea connectable, certificati), Connhex Remote Init (fornisce configurazione) | init_id e init_key sono cruciali. |
| Claiming Devices | Connhex Device Ownership | Gestisce l'associazione utente-dispositivo. |
| Profiles | Configurazione Distribuita | Connhex non centralizza le impostazioni in "profili" allo stesso modo di ThingsBoard, per massimizzare la segregazione dei dati (ad es. per compliance). |
| Device Profile | OTA Models, configurazione Connhex Remote Init, Connhex Rules Engine, Connhex IAM Policies, configurazione Connectable | Le impostazioni sono distribuite: OTA Models per la compatibilità del firmware, Remote Init per la config. di avvio, Rules Engine per logica specifica del dispositivo, IAM per l'accesso. |
| Asset Profile | JSON Schema di Connhex Resources, Connhex Rules Engine, Connhex IAM Policies | Configurazione e comportamento definiti dallo schema delle risorse e dalle regole/policy associate. |
| Tenant Profile | Connhex IAM Policies, configurazioni a livello di suite | Limiti e capacità sono spesso gestiti tramite IAM o impostazioni generali della suite. |
| Rule Engine | Connhex Rules Engine | |
| Rule Chains / Nodes | Rules, Conditions, Actuations (Events per la storicizzazione) | Concetti simili ma implementati con la struttura specifica di Connhex Rule Engine. |
| Notifications | Connhex Notifications | |
| Notification Center | Connhex Notifications (hub per altri servizi) | Template e logica dei destinatari sono definiti come configurazioni di Connhex. |
| Data Export | Connhex Exporter | |
| - | Connhex Exporter (esportazioni e report una tantum o ricorrenti) | Fornisce capacità di esportazione asincrona dei dati. |
| Data Ingestion/Protocols | Connhex Core + (Opzionale) Connhex Mapper | |
| MQTT, HTTP, CoAP, LwM2M | Connhex Core (supporta MQTT, HTTP, CoAP, WebSockets, LoRa) | Connhex Mapper può essere utilizzato per trasformare protocolli legacy o personalizzati. |
| Security & Auth | Connhex IAM, Connhex Certs | |
| User Management, JWT | Connhex IAM (Users, Roles, Policies, Tenants, Realms), Connhex Auth. Autenticazione tramite Cookie o Bearer token. | Controllo più granulare con realms e tenants. |
| Device Credentials | init_id, init_key, credenziali MQTT, certificati mTLS. Migrazione opzionale di dispositivi esistenti tramite migration_key. | Connhex Certs può gestire PKI per i certificati dei dispositivi. |
Considerazioni dettagliate sulla migrazione
1. Data Model (Entities & Attributes)
- ThingsBoard: entità strutturate (Device, Asset, Customer, Tenant) con relazioni predefinite e scope degli attributi (Server, Shared, Client).
- Connhex: utilizza risorse generiche definibili tramite JSON Schema flessibili. Anche le relazioni tra risorse sono definite e gestite allo stesso modo.
- Migrazione:
- Definisci i vari JSON Schema in Connhex Resources per ciascuno dei tuoi tipi di entità ThingsBoard (ad es., uno Schema per un dispositivo "Termostato", uno schema per un asset "Edificio").
- Migra gli attributi di ThingsBoard:
- Gli attributi Server-side diventano parte dei dati della risorsa in Connhex.
- Gli attributi Shared possono far parte della configurazione iniziale del dispositivo fornita da Connhex Remote Init o essere gestiti come attributi aggiornabili delle risorse.
- Gli attributi Client-side sono dati riportati dal dispositivo e possono essere memorizzati come parte dei dati della sua risorsa o mantenuti come
infoin Connhex Core.
- Ricrea le gerarchie delle entità (ad es., Tenant > Customer > Asset > Device) definendo relazioni tra i tuoi Connhex Resources. Assicurati di sfruttare Connhex IAM per autorizzazioni e permessi.
- Da tenere presente: il passaggio da tipi di entità fissi a risorse definite attraverso JSON Schema flessibili richiede una fase preliminare di progettazione, specialmente nel caso di relazioni complesse.
2. Dati di telemetria
- ThingsBoard: gestisce l'ingestion della telemetria come coppie chiave-valore.
- Connhex:
Connhex Coregestisce l'ingestion dei messaggi. La Connhex Message Policy (CMP) è fortemente raccomandata per le nuove integrazioni, categorizzando i dati ininfos(informazioni statiche sul dispositivo),params(parametri configurabili) emessages(telemetria, time-series). Ciò consente uno storage ed un recupero dei dati ottimizzati. - Migrazione:
- Assicurati che il firmware attuale del dispositivo invii i dati in un formato compatibile con Connhex Core (JSON o SenML).
- Se possibile, adotta la CMP per benefici a lungo termine. Per i dispositivi esistenti, potresti inizialmente inviare tutta la telemetria come
messagese rifinire in seguito, oppure utilizzareConnhex Mapperse risulta difficile modificare il firmware.
- Da tenere presente: tra le diverse opzioni, scegli quella che meglio si adatta alle tue esigenze. Generalmente la decisione va presa in base a quanto sia difficile modificare il firmware: implementare la CMP è più complesso, ma porta a benefici sostanziali in termini di prestazioni nel medio termine. Configurare Connhex Mapper è spesso immediato, ma si perderanno tali ottimizzazioni.