Installera home assistant så kanske du kan göra det du vill utan programmering. Jag läser och kan styra min Inverter till Solcellsanläggningen via Modbus TCP.
https://www.home-assistant.io/integrations/modbus/
Behöver du få data från seriell modbus kan du programmera upp nån ESP32 eller Rasperberry Pico med EspHome https://esphome.io/
Vilken energimätare vill du läsa från?
Finns flera färdiga configurationer för olika energimätare:
https://esphome.io/components/sensor/sdm_meter
https://esphome.io/components/sensor/selec_meter
eller en ren Modbus controller
https://esphome.io/components/output/modbus_controller
bara lite förslag.
/J
Mjukvara till PC, modbus master och slav
Re: Mjukvara till PC, modbus master och slav
Jag tror att jag gör ungefär det du vill
Använder mbpoll som hanterar både Modbus RTU och TCP
Här läser jag en lokalt, USB-RS485, ansluten elmätare , start adress 15 och totalt 4 register.
Bara en fas ansluten
Jag gjorde jag ett litet script, som cron kör åt mig,
där jag läser effekt och mätarställning och stoppar i en SQL databas.
en likadan mätare fast remote.
Formateringen kan optimeras
Bara ungefär 10 rader:
Med data i databasen är man bara några klick bort från att göra vad som helst

Använder mbpoll som hanterar både Modbus RTU och TCP
Här läser jag en lokalt, USB-RS485, ansluten elmätare , start adress 15 och totalt 4 register.
Bara en fas ansluten

Kod: Markera allt
jm@nuc11:~$ sudo mbpoll -t4:float /dev/ttyUSB0 -r 15 -c 4 -a1 -B -b 9600 -1
mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type 'mbpoll -w' for details.
Protocol configuration: Modbus RTU
Slave configuration...: address = [1]
start reference = 15, count = 4
Communication.........: /dev/ttyUSB0, 9600-8E1
t/o 1.00 s, poll rate 1000 ms
Data type.............: 32-bit float (big endian), output (holding) register table
-- Polling slave 1...
[15]: 227.1
[17]: 0
[19]: 0
[21]: 50.02
jm@nuc11:~$
Jag gjorde jag ett litet script, som cron kör åt mig,
där jag läser effekt och mätarställning och stoppar i en SQL databas.
en likadan mätare fast remote.
Formateringen kan optimeras

Bara ungefär 10 rader:
Kod: Markera allt
#!/bin/bash
ip=$(dig +short min.mätardomän.se)
power=`mbpoll -m tcp -t4:float -r 29 -c 1 -1 $ip -p 49999 -B | tail -n 2`
meter=`mbpoll -m tcp -t4:float -r 265 -c 1 -1 $ip -p 49999 -B | tail -n 2`
dt=`date +'%Y-%m-%d %H:%M:%S'`
power=${power##* }
meter=${meter##* }
mysql -u user -ppassword -h 192.168.0.99 -P3306 <<EOF
USE test
INSERT INTO tabell (dt,power,meter)
VALUES ("$dt",$power,$meter)
EOF
Med data i databasen är man bara några klick bort från att göra vad som helst

- FormerMazda
- Inlägg: 6389
- Blev medlem: 27 februari 2006, 14:59:36
- Ort: Asby (Östergötland)
Re: Mjukvara till PC, modbus master och slav
Home assistant var jag ju nära på att kolla på innan i annat ärende, och nu dyker det upp igen. 
Så snart kanske jag måste kolla på det på allvar.
Men det är ju också flera som gjort det jag tänker med vad det verkar rätt enkla script, så jag är lite villrådig..
Alternativen börjar bli många, men det finns ju några förutsättningar också, jag har förvisso inte viktat dom än.
* Framtidssäkert, inget som inte slutar funkar med nån update av operativ eller liknande
* Vill inte göra en one-off som jag måste lära om, OM jag vill ändra nåt i framtiden
* Inte för hög tröskel för att komma igång
* Nyttja befintligt för att inte bygga en julgran kanske ändrar på ovan kriterie
* De scriptade alternativen ser ju faktiskt väldigt enkla ut, det är väl bara en tröskel att få upp miljön att scripta i.
* Home assitant verkar kunna ha sin plats, men var sist jag kollade inte utan jobb att få igång
* I tänkt PLC kan jag göra detta, men modbus hanteras dåligt av den (kommunikation och läsning/skrivning bara via struct)
* Kommer sannolikt köra Citect SCADA, men det är inte säkert än. Där kan jag utan problem göra det annars.

Så snart kanske jag måste kolla på det på allvar.
Men det är ju också flera som gjort det jag tänker med vad det verkar rätt enkla script, så jag är lite villrådig..
Alternativen börjar bli många, men det finns ju några förutsättningar också, jag har förvisso inte viktat dom än.
* Framtidssäkert, inget som inte slutar funkar med nån update av operativ eller liknande
* Vill inte göra en one-off som jag måste lära om, OM jag vill ändra nåt i framtiden
* Inte för hög tröskel för att komma igång
* Nyttja befintligt för att inte bygga en julgran kanske ändrar på ovan kriterie
* De scriptade alternativen ser ju faktiskt väldigt enkla ut, det är väl bara en tröskel att få upp miljön att scripta i.
* Home assitant verkar kunna ha sin plats, men var sist jag kollade inte utan jobb att få igång
* I tänkt PLC kan jag göra detta, men modbus hanteras dåligt av den (kommunikation och läsning/skrivning bara via struct)
* Kommer sannolikt köra Citect SCADA, men det är inte säkert än. Där kan jag utan problem göra det annars.
Re: Mjukvara till PC, modbus master och slav
Du har inte funderat på att köra Modbus TCP från SCADA eller PLC och använda en konverter mot Modbus RTU då du slipper sitta där med ”lifetime support” på din konvertering?
Både Moxa och Anybus har färdiga konverters, hsr inte provat själv men Anybus brukar sitta i var och varannat styrskåp där det förekommer energimätare anslutna med MBUS
https://www.moxa.com/en/products/indust ... 480-series
https://www.anybus.com/products/gateway ... cp-gateway
Både Moxa och Anybus har färdiga konverters, hsr inte provat själv men Anybus brukar sitta i var och varannat styrskåp där det förekommer energimätare anslutna med MBUS
https://www.moxa.com/en/products/indust ... 480-series
https://www.anybus.com/products/gateway ... cp-gateway
Re: Mjukvara till PC, modbus master och slav
Kanske om någon redan nämnt det men mbusdlinux mjukvara är grym för en "diy" modbus RTU <> IP gw
Kör detta mot en Carlogavazzi elmätare (3fas) i fasadskåpet <> Homeassistant via modbus.
Körst på en RPI med konverter liknande denna:
https://www.amazon.se/WINGONEER-CH340E- ... 8337&psc=1
Kanske inte 100 relevant för denna tråden men min Homeassistant konfig för att läsa Mätaren:
Kör detta mot en Carlogavazzi elmätare (3fas) i fasadskåpet <> Homeassistant via modbus.
Körst på en RPI med konverter liknande denna:
https://www.amazon.se/WINGONEER-CH340E- ... 8337&psc=1
Kanske inte 100 relevant för denna tråden men min Homeassistant konfig för att läsa Mätaren:
Kod: Markera allt
- name: EM340
type: tcp
#timeout: 20
#message_wait_milliseconds: 30
#retries: 6
#retry_on_empty: true
host: 192.168.1.131
port: 502
sensors:
- name: EM340_v_l_n_sys
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 36
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_v_l_l_sys
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 38
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_W_syst
unit_of_measurement: W
state_class: measurement
device_class: power
slave: 1
address: 40
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 15
lazy_error_count: 999
swap: word
- name: EM340_kwh_pos_tot
unit_of_measurement: kWh
state_class: total_increasing
device_class: energy
slave: 1
address: 52
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kvarh_pos_tot
unit_of_measurement: kvarh
state_class: measurement
device_class: energy
slave: 1
address: 54
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kwh_neg_tot
unit_of_measurement: kWh
state_class: total_increasing
device_class: energy
slave: 1
address: 78
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kvarh_neg_tot
unit_of_measurement: kvarh
state_class: measurement
device_class: energy
slave: 1
address: 80
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
#L1
- name: EM340_v_l1_l2
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 6
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_v_l1_n
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 0
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_a_l1
unit_of_measurement: A
state_class: measurement
device_class: current
slave: 1
address: 12
data_type: int32
input_type: input
precision: 3
count: 2
scale: 0.001
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_w_l1
unit_of_measurement: W
state_class: measurement
device_class: power
slave: 1
address: 18
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_va_l1
unit_of_measurement: VA
state_class: measurement
device_class: APPARENT_POWER
slave: 1
address: 24
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_var_l1
unit_of_measurement: var
state_class: measurement
device_class: energy
slave: 1
address: 30
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kwh_l1
unit_of_measurement: kwh
state_class: total_increasing
device_class: energy
slave: 1
address: 64
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_pf_l1
unit_of_measurement: PF
state_class: measurement
device_class: energy
slave: 1
address: 46
data_type: int16
input_type: input
precision: 3
count: 1
scale: 0.001
scan_interval: 60
lazy_error_count: 999
swap: word
#L2
- name: EM340_v_l2_l3
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 8
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_v_l2_n
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 2
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_a_l2
unit_of_measurement: A
state_class: measurement
device_class: current
slave: 1
address: 14
data_type: int32
input_type: input
precision: 3
count: 2
scale: 0.001
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_w_l2
unit_of_measurement: W
state_class: measurement
device_class: power
slave: 1
address: 20
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_va_l2
unit_of_measurement: VA
state_class: measurement
device_class: APPARENT_POWER
slave: 1
address: 26
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_var_l2
unit_of_measurement: var
state_class: measurement
device_class: energy
slave: 1
address: 32
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kwh_l2
unit_of_measurement: kwh
state_class: total_increasing
device_class: energy
slave: 1
address: 66
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_pf_l2
unit_of_measurement: PF
state_class: measurement
device_class: energy
slave: 1
address: 47
data_type: int16
input_type: input
precision: 3
count: 1
scale: 0.001
scan_interval: 60
lazy_error_count: 999
swap: word
#L3
- name: EM340_v_l3_l1
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 10
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_v_l3_n
unit_of_measurement: V
state_class: measurement
device_class: voltage
slave: 1
address: 4
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_a_l3
unit_of_measurement: A
state_class: measurement
device_class: current
slave: 1
address: 16
data_type: int32
input_type: input
precision: 3
count: 2
scale: 0.001
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_w_l3
unit_of_measurement: W
state_class: measurement
device_class: power
slave: 1
address: 22
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 30
lazy_error_count: 999
swap: word
- name: EM340_va_l3
unit_of_measurement: VA
state_class: measurement
device_class: APPARENT_POWER
slave: 1
address: 28
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_var_l3
unit_of_measurement: var
state_class: measurement
device_class: energy
slave: 1
address: 34
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_kwh_l3
unit_of_measurement: kwh
state_class: total_increasing
device_class: energy
slave: 1
address: 68
data_type: int32
input_type: input
precision: 2
count: 2
scale: 0.1
scan_interval: 60
lazy_error_count: 999
swap: word
- name: EM340_pf_l3
unit_of_measurement: PF
state_class: measurement
device_class: energy
slave: 1
address: 48
data_type: int16
input_type: input
precision: 3
count: 1
scale: 0.001
scan_interval: 60
lazy_error_count: 999
swap: word