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
Salvatore Imparato (Docente presso ITT Guglielmo Marconi)
Docente di elettrotecnica e sistemi automatici di istituto tecnico e tecnologico scuola superiore di secondo grado
linkedin -

The TanzoLab Project

Il TanzoLab è una iniziativa senza fini di lucro, nata da un'idea di Sergio Tanzilli socio fondatore di Acme Systems srl nel Novembre 2015, per trasferire ad appassionati di elettronica e informatica, professionisti e aziende nel settore, le conoscenze necessarie per poter creare prodotti embedded adatti per la produzione industriale.

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.