Accedi Registrati

Login to your account

Username *
Password *
Remember Me

Create an account

Fields marked with an asterisk (*) are required.
Name *
Username *
Password *
Verify password *
Email *
Verify email *
Captcha *

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...

 
 

DL485 - Espansione per domotica

DL485x sono delle schede di espansione per i vari sistemi domotici presenti sul mercato. Tramite semplici script è possibile interfacciare queste espansioni a qualsiasi sistema domotico esistente.

La comunicazione su RS485 avviene tramite protocollo DANBUS multimaster che gestisce una rete di nodi paritari (con stessa priorità) senza necessità di un nodo master, con la possibilità per ogni nodo di entrare e uscire dalla rete senza collisioni e senza stallo.

DL485P
DL485B
DL485M

Utilizzando questi prodotti sarà possibile comandare a distanza attraverso un semplice doppino twistato degli I/O digitali e analogici oltre che a dei sensori di temperatura, umidità e pressione come DS18B20, BME280, AM2320....., attraverso protocolli 1Wire e I2C. La possibilità di impostare la velocità di comunicazione permette di coprire distanze notevoli anche con topologia di rete mista.

La gestione dei protocolli di comunicazione 1wire e i2c è aperta in modo da poterla adattare a diversi dispositivi sul mercato che quindi non sono preinseriti nei nodi, inoltre ogni nodo può memorizzare in EEPROM e gestire delle sequenze automatiche di comandi che si attivano periodicamente e comunicano ad esempio i dati dei sensori senza necessità di interrogazione.

Su ciascuna scheda/prodotto sono presenti un pulsante e 2 LED per poter programmare alcuni parametri; inoltre i LED segnalano anche l'attività RX / TX presente sul BUS e la rilevazione di errori.

Ogni scheda dovrà inizialmente essere programmata tramite tasto e 2 LED per impostare un indirizzo univoco da 1 a 127 e una velocità per la rete RS485 uguale tra tutti i nodi, preimpostata di default a 9600bps, poi il resto della programmazione si farà utilizzando il pc.

A breve saranno disponibili 4 tipi di scheda:

  • DL485M - scheda di forma rettangolare senza contenitore completa di morsetti
  • DL485B - scheda su contenitore in ABS nero dotata di 3 relè, 4 I/O, I2C oltre che all'alimentazione 12V e uscita BUS
  • DL485P - mini scheda PCB appositamente stuadiata per poter essere inserita su breadboard e/o su PCB dedicato a specifiche funzioni
  • DL485I - interfaccia per poter comunicare tra la seriale del PC e DL485 Bus.

Le schede vanno disposte vicino ai relativi I/O e vanno collegate tramite 2 fili intrecciati ai morsetti A e B del BUS RS485. Per comodità si può usare un cavo di categoria 5E (con 4 coppie di cavi all'interno) dove una coppia va collegata al BUS, una coppia puo' portare alimentazione (8-24Vcc) e le altre 2 rimanenti si possono usare per distribuire il segnale di rete 10/100 Megabit/sec in casa.

I nodi funzionano a 5Vcc e hanno un alimentatore switching interno con tensione in ingresso massima di 24Vcc che permette di sopperire alle cadute di tensione dovute alla distanza e assorbimento dei nodi e dei carichi associati.

I vari I/O possono essere configurati come:

  • Uscita digitale
  • Uscita analogica (PWM 8bit)
  • Ingresso digitale
  • Ingresso analogico (10bit)

Tra questi I/O ce ne sono due di particolari che possono anche essere configurati rispettivamente come

  • OneWire per il collegamento di sensori di temperatura (ache più di uno in parallelo) DS18B20 ecc
  • I2C per poter collegare vari sensori tra cui AM2320B, BME280, ecc

E' disponibile un plugin open source per Domoticz che tramite file di configurazione, programma all'avvio le varie schede e genera tutti i dispositivi nell'interfaccia grafica.

Installazione e Configurazione Schede DL485

Le schede hanno bisogno di una alimentazione (8-24Vcc) su due fili e altri due fili intrecciati per il bus.

Per semplicità si consiglia di utilizzare un cavo ethernet per collegare tutte le schede presenti nell'impianto. Un doppino collegherà i morsetti A e B del BUS RS485 e un altro doppino porterà l'alimentazione (consigliato 12V) a tutte le schede. Le restanti 2 coppie possono essere usate per portare altra alimentazione o rete eterneth.

Ogni scheda dispone di un pulsante e 2 LED per impostare le configurazioni di base:

  • ID del nodo che dovrà essere univoco per ciascuna scheda (da 1 a 127)
  • Velocità del BUS
  • Velocità seriale
  • Numero massimo di nodi (board)

Di fabbrica le schede vengono fornite con la seguente configurazione:

  • Comunicazione su BUS e seriale di 9600 BAUD
  • ID Nodo non impostato
  • Max numero di board sul bus uguale a 10

Come funziona la programmazione tramite pulsante e 2 LED

  1. Premendo il pulsante a bordo scheda si ha l'accensione del LED TX che gli fa da eco
  2. quando il LED RX è acceso fisso indica lo stato di programmazione in cui si puo immettere la scelta di una voce di menu
  3. quando il LED RX trilla velocemente indica lo stato di programmazione in cui si puo immettere il valore per la voce scelta
  4. Premendo il pulsante a bordo scheda per circa 2 secondi il LED RX si accende con luce fissa indicando lo stato di programmazione in cui si puo scegliere una voce di menu.
  5. Premere e rilasciare il tasto un numero di volte corrispondente al parametro da impostare o visualizzare
  6. Seguirà un numero di lampi del LED RX pari al valore presente nel parametro selezionato (1=1,2=2,3=3... ma 10=0)
  7. Finiti i lampeggi il LED RX trillerà velocemente per indicare che è possibile impostare un nuovo valore premendo il pulsante il numero di volte corrispondente (10=0)
  8. Se impostato il nuovo valore il led RX lo replica con un corrispondente numero di lampi altrimenti si passa al punto seguente
  9. Finiti i lampeggi, il LED RX rimane a luce fissa come al punto 2 per eventualmente impostare un nuovo parametro
  10. Trascorsi circa 3 secondi con il LED RX a luce fissa senza premere il pulsante, si esce dallo stato di programmazione e i due led riprenderanno ad indicare l'attività sul BUS, RX (ricezione) e TX (trasmissione).

Tabella parametri

  • 1 unita ID nodo
  • 2 decine ID nodo
  • 3 centinaia ID nodo
  • 4 velocità bus
  • 5 velocità seriale 232
  • 9 comando reset configurazione nodo

Impostazione dell'ID della scheda

L'ID da inserire è composto da 3 cifre: le unità, le dcine e centinaia.

  • Premere il tasto per 2 secondi finchè il LED RX si accende fisso
  • Premere una volta il tasto per la programmazione delle unità (10 impulti per il numero 0); il LED RX mostrerà le unità memorizzate in memoria
  • Premere tante volte il tasto a seconda delle unità da impostare e  Il LED RX mostrerà con i lampeggi le unità inserite oppure attendere
  • attendere che il LED RX trilli, attendere
  • Premere il tasto 2 volte per inserire le decine (10 impulti per il numero 0); il LED TX mostrerà le decine memorizzate in memoria
  • Premere tante volte il tasto a seconda delle decine da impostare. Il LED mostrerà con i lampeggi le decine inserite
  • Premere il tasto 3 volte per inserire le centinaia; il LED TX mostrerà le centinaia in memoria
  • Premere tante volte il tasto a seconda delle centinaie da impostare (10 impulti per il numero 0); Il LED mostrerà con i lampeggi le centinaia inserite
  • Aspettare 5 secondi per l'uscita dalla programmazione e memorizzazione delle impostazioni.