Vou detalhar também como fazer funcionar o Modbus serial, use os seguintes comandos
$ sudo su
$ git clone GitHub - 3cky/mbusd: Open-source Modbus TCP to Modbus RTU (RS-232/485) gateway. mbusd.git
$ cd mbusd.git
$ mkdir -p build && cd build
$ apt install cmake
$ cmake -DCMAKE_INSTALL_PREFIX=/usr …
$ make
$ sudo make install
Execute os comando um a um, observando o resultado. Note que há um apt install cmake no meio da compilação do mbusd.
Use o comando
$ cd /dev/
$ ls
Para mostrar os dispositivos seriais, a porta deve ser algo como ttyAMA0, ttyUSB0 ou ttyS0. Pra facilitar digite o comando antes e depois de conectar o dongle e observe quais portas aparecem.
Habilite a serial através do comando raspi-config, escolha interfacing options e habilite a serial, reinicie o rpi. (se for usar o serial interno)
O primeiro passo é criar um arquivo de configuração com o comando:
$ nano /etc/mbusd/mbusd-< serial port >.conf
No meu caso, ficou:
$ nano /etc/mbusd/mbusd-ttyUSB0.conf
O exemplo de conf file pode ser acessado em: mbusd/conf/mbusd.conf.example at master · 3cky/mbusd · GitHub
Copie o conteúdo e cole no arquivo que você criou, altere os parâmetros da porta.
Importante: se você estiver usando a serial do próprio RPi, você precisa desabilitar o console daquela porta, para isso siga os seguintes passos
$ sudo systemctl stop serial-getty@ttyS0.service
$ sudo systemctl disable serial-getty@ttyS0.service
sudo nano /boot/cmdline.txt
remova a parte “console=serial0,115200”, o conteúdo deve ficar algo parecido com “dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes root wait”
fonte: https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3/#Disabling_the_Console , créditos da solução para 3cky
CTRL+X pra sair, confirme sim pra salvar modificações e aperte enter.
Agora vamos iniciar o serviço, como estou usando a própria serial do RPI, usei o seguinte comando:
$ systemctl enable mbusd@< serial port >.service
No meu caso
$ systemctl enable mbusd@ttyUSB0.service
Isso vai habilitar o “tradutor” do modbus serial pro modbus ip
Se precisar debugar, use o comando
$ journalctl -u mbusd@< serial port >.service -f -n 10
O resultado deve ser algo parecido com:
Agora é só ir nos datapoints e configurar pra ele apontar pro próprio rpi:
Observe o endereço 127.0.0.1
O datapoint que configurei é mostrado abaixo
O meu setup abaixo, com os dois adaptadores que usei, o medidor e o RPi
Importante: esse adaptador não é compatível com 3.3V, pra fazer ele funcionar tive que alimentar com 5V e no TX do módulo usar um divisor de tensão pra não queimar as portas do RPI.