Openhab -> Modbus -> RS485 -> SDM120 energy meter

In questo articolo sarà descritta la modalità di funzionamento dell'Energy Meter SDM120 come esempio di interfacciamento di un dispositivo RS485 tramite Modbus sotto Openhab.

Hardware

Nella CM3-Home il bus RS485 sarà interfacciato al Compute Module 3 tramite un FTDI FT4232, che permette di ottenere 4 porte seriali complete da una interfaccia USB. Due di queste porte saranno dedicate a due bus distinti RS485, con tanto di segnale di controllo TX enable, sui quali usare il protocollo Modbus e DMX512. Per questo esempio sarà usato un convertitore USB/RS485 CS-428_9AT-ISO collegato ad una delle USB di una Raspberry PI3. Il dispositivo da collegare è l'Eastron SDM120

Configurazione

Per i particolari sulle modalità di base di installazione e gestione di un servizio sotto Openhab, fare riferimento all'articolo sul KNX.

Una volta installato il binding avremo i soliti tre file da configurare

Service

La configurazione dell'SDM120 non è stata modificata, i parametri sono quindi quelli di default. Per i particolari sulla configurazione e sui registri esposti dal dispositivo fare riferimento ai link a fondo pagina.

Una volta collegato l'adattatore alla porta USB troveremo il nuovo device /dev/ttyUSB0

/etc/openhab2/services/modbus.cfg

#l'oggetto  serial è stato collegato all'adattatore USB/RS485 /dev/ttyUSB0
#l'SDM120 è a default a 2400bps
#Il colloquio con il dispositivo avviene in modalità RTU
serial.Voltage.connection=/dev/ttyUSB0:2400:8:none:1:rtu:35:1500:none:none

#il device è di tipo input
serial.Voltage.type=input

#l'ID del device è 1
serial.Voltage.id=1

#il registro di partenza del dispositivo per la variabile Voltage è lo 0 (ovviamente dipende dal device)
serial.Voltage.start=0

#La variabile è lunga due world da 16bit (4 byte)
serial.Voltage.length=2

#la variabile va interpretata come una float32
serial.Voltage.valuetype=float32

#per ogni ulteriore variabile va creato un pacchetto di configurazione simile al precedente

serial.Current.connection=/dev/ttyUSB0:2400:8:none:1:rtu:35:1500:none:none
serial.Current.type=input
serial.Current.id=1
serial.Current.start=6
serial.Current.length=2
serial.Current.valuetype=float32

serial.Power.connection=/dev/ttyUSB0:2400:8:none:1:rtu:35:1500:none:none
serial.Power.type=input
serial.Power.id=1
serial.Power.start=12
serial.Power.length=2
serial.Power.valuetype=float32

In questo esempio sono letti solamente i parametri di tensione, corrente e potenza attiva della prima fase dai registri 0, 6 e 12.

Item

A questo punto occorre associare gli item a queste configurazioni, la chiave è il nome dell'oggetto che è stato creato in modbus.cfg. Si creano quindi gli item relativi ai valori desiderati con una formattazione di printout simile alla printf.

/etc/openhab2/items/modbus.items

Number L1V "Tensione [%.1f V]" {modbus="Voltage:0"}
Number L1A "Corrente [%.1f A]" {modbus="Current:0"}
Number L1P "Potenza A [%.1f W]" {modbus="Power:0"}

Sitemap

Per mostrare i valori sulla pagina di controllo del nostro sito occorre associarli al sitemap. L'associazione avviene tramite il nome che è stato assegnato all'item

/etc/openhab2/sitempas/nome del tuo site.sitemap

sitemap knx label="GUIOTT home" 
{
      ...
    
        Frame label="Modbus"
        {  
          Text item=L1V
          Text item=L1A
          Text item=L1P
        }

}

Ora il servizio comincia a prendere i dati in polling dal device, con l'intervallo configurato su services.cfg. Si vedranno i led di TX e RX lampeggiare e i valori saranno aggiornati sulla pagina in questo modo:

Dettagli su come usare la console di Openhab, riavviare i servizi e abilitare un debug più dettagliato si trovano nell'articolo su KNX.

Links

Guido Ottaviani (Autore/Progettista elettronico-firmware-robotica)
Si occupa della progettazione elettronica e del firmware di sistemi embedded per la Robotica e applicazioni industriali e civili oltre che di divulgazione tecnica su internet.
http://www.guiott.com - https://github.com/guiott - guido@guiott.com
Massimiliano Casini (Coordinatore tecnico Service Assurance presso www.kenamobile.it)
Sono cresciuto nel modo IT di aziende ad alto contenuto tecnologico e da sempre ho acquisto esperienze nel settore della domotica e sicurezza residenziale. Negli ultimi dieci anni ho acquisito competenze specifiche nel campo delle TLC in particolare sulla rete GSM e sui protocolli ad essa collegati.
Salvatore Imparato (Docente presso ITT Guglielmo Marconi)
Docente di elettrotecnica e sistemi automatici di istituto tecnico e tecnologico scuola superiore di secondo grado
linkedin -



Le attività del TanzoLab si svolgono ogni mercoledi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.