Questo articolo ha lo scopo di spiegare il principio della trasmissione dei messaggi tra la sede centrale e i dispositivi remoti (di seguito semplicemente chiamati dispositivi). Poiché i dispositivi dovrebbero essere semplici e non dovrebbero richiedere alcuna impostazione manuale, è stato progettato il seguente principio.
- Un dispositivo utilizza sempre il proprio indirizzo MAC per l'identificazione
- Un nuovo dispositivo deve accedere attivamente al centro di controllo
- Affinché un dispositivo possa scambiare dati con il centro di controllo, deve essere registrato manualmente nel centro di controllo.
Struttura di un messaggio:
struct ATMSGPACKET {
uint8_t id [6]; // ID del dispositivo remoto tipico del suo indirizzo MAC
pacchetti uint8_t; // numero di pacchetti nel messaggio
uint16_t bit del dispositivo; // bit per controllare le funzionalità del dispositivo
};
L'intestazione di un messaggio ha 9 byte. I primi sei byte contengono l'ID seguito da un byte con il numero di canali (massimo otto). Questo è seguito da un numero intero senza segno a 16 bit. Ognuno di questi 16 bit ha un significato diverso e indica le capacità del trasmettitore o le caratteristiche speciali dei pacchetti di dati. Il bit 0 determina se il dispositivo è passivo, ovvero deve essere interrogato dal centro di controllo. Il bit 1 indica se il centro di controllo può modificare l'intervallo di invio di un dispositivo attivo. Il bit 2 indica che si forma un checksum sull'intero messaggio, che viene aggiunto alla fine del messaggio. Il bit 3 indica che i pacchetti di dati sono crittografati (preparazione per le versioni successive). Nessun altro bit è attualmente definito. I pacchetti di dati per ogni singolo canale seguono l'intestazione.
struct ATDATAPACKET {
canale uint8_t; // canale come identificazione
tipo uint8_t; // tipo di pacchetto
uint8_t unità; // unità del pacchetto
valore uint8_t [4]; // quattro byte di dati per contenere un numero intero lungo o un valore a virgola mobile
};
Un pacchetto di dati inizia con un byte per il numero di canale seguito da un byte con il tipo che contiene sia la direzione di trasporto sia le informazioni sul tipo di dati. 0 = Messaggio intero dal dispositivo al centro di controllo, 1 = Messaggio mobile dal dispositivo al centro di controllo, 2 = Messaggio intero dal centro di controllo al dispositivo, 3 = Messaggio mobile dal centro di controllo al dispositivo, 4 messaggio booleano dal dispositivo al centro di controllo e 5 messaggio booleano da il centro di controllo del dispositivo. Il prossimo è un byte per l'unità assegnata. Alcune unità sono già state definite, altre seguiranno. E infine ci sono quattro byte per la registrazione del valore. A seconda del tipo, questi devono essere interpretati come float o numeri interi a 32 bit. Per i messaggi booleani viene utilizzato solo byte 0.
Processo di scambio di dati:
1. Dispositivo attivo
I dispositivi attivi vengono generalmente utilizzati per i sensori. Inviano i dati al centro di controllo a intervalli fissi o variabili. O, ad esempio, un pulsante campanello o un interruttore radio ogni volta che qualcuno preme il pulsante.
Se il dispositivo non ha ancora un centro di controllo, cerca un punto di accesso con l'SSID "ATSmartHome" nella rete WLAN. Se questo è stato trovato, rimane noto al dispositivo fino a quando l'alimentazione non è stata interrotta. I messaggi con l'ID del dispositivo vengono inviati a questo AccessPoint.
Se la sede centrale (punto di accesso) riceve tale messaggio, viene prima verificato se un dispositivo con l'ID ricevuto è già stato registrato. In caso contrario, i dati vengono ignorati e il centro di controllo mostra che è stato trovato un nuovo dispositivo. Questo dispositivo deve quindi essere registrato nel centro di controllo per ricevere i dati.
Se il dispositivo è registrato, il checksum viene verificato se specificato. Se va bene, i dati vengono salvati. Il dispositivo attivo rimane pronto per ricevere per un breve periodo dopo l'invio. Durante questo periodo, tutti i dati che possono essere disponibili possono essere inviati al dispositivo o, se il dispositivo è in grado di farlo, le modifiche alla configurazione come un nuovo intervallo di tempo possono essere inviate dal centro di controllo al dispositivo.
2. Dispositivo passivo
I dispositivi passivi sono sempre pronti a ricevere. Il dispositivo passivo invia anche messaggi al centro di controllo a intervalli. Ciò serve da un lato per la registrazione e dall'altro per informare l'unità centrale su quali canali il dispositivo può ricevere i dati.
Se il dispositivo non ha ancora un centro di controllo, cerca un punto di accesso con l'SSID "ATSmartHome" nella rete WLAN. Se questo è stato trovato, il dispositivo, come quello attivo, inizia a inviare dati al centro di controllo su base regolare.
Se un messaggio viene ricevuto nel centro di controllo da un dispositivo passivo non registrato, l'ID di questo dispositivo viene visualizzato come nuovo dispositivo e può essere registrato manualmente. Con le informazioni dal pacchetto di dati ricevuto, il centro di controllo può determinare su quali canali il dispositivo è pronto a ricevere. Un dispositivo passivo può anche trasmettere simultaneamente valori misurati al centro di controllo su altri canali. Se la centrale ha registrato un dispositivo passivo e viene premuto un interruttore su uno dei canali di questo dispositivo, invia al dispositivo la modifica sul canale corrispondente. Se il canale non ha il valore desiderato alla successiva ricezione dei dati dal dispositivo passivo, la modifica viene nuovamente inviata. Ciò impedisce che un processo di commutazione non venga eseguito nel dispositivo a causa di un messaggio perso.
Attenzione! Se qualcuno ha già caricato la libreria ATMessageBuffer, dovrebbe ottenere l'ultima versione e ricompilare gli schizzi che utilizzano questa libreria. Ciò è necessario perché ho ampliato la struttura dei dati ATMESSAGEPKT con le variabili devicebits.
Spero di aver fornito le informazioni necessarie per sviluppare nuovi dispositivi compatibili con questo centro. Il primo dispositivo passivo che può commutare un relè seguirà a breve.