Protocollo DanBus

DanBus è il protocollo di comunicazione usato nelle reti con i nodi della serie DL485x.

Con DanBus si possono collegare fino a 127 schede DL485x per distribuire gli I/O di un sistema domotico per il controllo della casa ma anche per altri usi come la gestione di serre, cantine, latterie...

A rotazione ciascun nodo, se acceso e connesso, invia il suo pacchetto dati nel BUS che sarà a disposizione degli altri nodi per poter interagire con esso oltre che al sistema di controllo generale quale Domoticz e/o altri sistemi domotici.

Ciascun nodo può abbandonare la rete anche durante la trasmissione di un suo pacchetto, in questo caso i nodi restanti rilevano un errore di pacchetto e continuano normalmente le comunicazioni

Composizione pacchetti

Ci sono 2 tipi di pacchetto: il PING (quando non ci sono informazioni da inviare) e il pacchetto INFO (con informazioni)

Pacchetto PING (lunghezza fissa):

ping

  • ID Mittente
  • CRC

Pacchetto INFO (lunghezza variabile):

trama1

  • ID Mittente
  • Tipo Pacchetto
  • ID destinatario (da 1 a 127)
  • Dati
  • CRC

Tipo pacchetti

Il secondo byte della trama indica il tipo di pacchetto trasmesso dal nodo. I comandi più utilizzati sono i seguenti:

  • 0x0E - Comunica IO, quando periodicamente (a seconda dell'impostazione) viene trasmesso in rete il valore dell'I/O e/o dei vari sensori I2C e OneWire
  • 0x07 - Comando per leggere il valore di un ingresso
  • 0x08 - Per settare il valore di un'uscita
  • 0x0B - Fa ripartire (reboot) una spedifica scheda (tutte nel caso l'ID di destinazione sia 0)
  • 0x0A - Inizializza IO con valore impostato su EEPROM, utile per rileggere la configurazione dopo averla cambiata
  • 0x03 - Leggi la configurazione dell'I/O presente su EEPROM
  • 0x04 - Comando per leggere la EEPROM (si deve dare l'indirizzo di partenza e il numero di byte leggere)
  • 0x06 - Comando per scrivere la EEPROM
  • 0x0C - Restituisce il tipo di board e la versione del firmware
  • 0x0D - Ricevuto un pacchetto con errore

Tipo di Errori

Nel caso il tipo di trama sia un errore, il byte seguente (terzo byte) indica il tipo di errore rilevato come da lista:

  • 0x00 - Errore inizializzazione / timeout I2C
  • 0x01 - Errore 3 zeri
  • 0x02 - Errore 3 uni
  • 0x03 - Pacchetto ricevuto troppo lungo
  • 0x04 - Pacchetto sentito uguale a se stesso
  • 0x05 - Indirizzo mittente fuori range
  • 0x06 - Manca indirizzo destinatario
  • 0x07 - Manca parametri
  • 0x08 - Troppi Byte pacchetto
  • 0x09 - Manca parametri
  • 0x0A - I2C occupata
  • 0x0B- Manca Byte residui
  • 0x0C - Troppi Byte dati
  • 0x0D - Errore comando a zero parametri
  • 0x0E - Errore comando a 1 parametro sconosciuto
  • 0x0F - Errore comando a 2 parametri sconosciuto
  • 0x10 - Errore comando a 3 parametri sconosciuto
  • 0x11 - Errore comando a 4 parametri sconosciuto
  • 0x12 - Errore comando n parametri non previsto
  • 0x13 - Errore CRC
  • 0x14 - I2C occupata
  • 0x15 - I2C Timeout
  • 0x16 - OneWire Occupata
  • 0x18 - OneWire Occupata
  • 0x19 - Lettura numero ingreso fuori range
  • 0x1A - Dimensione pacchetto non conforme
  • 0x1B - Lettura EE oltre limite indirizzo
  • 0x1C - Scrittura numero uscita fuori range
  • 0x1D - Numero parametro fuori range
  • 0x1E - Nodo occupato da ordine precedente

 

 

stay tuned...

 
 

Stampa   Email