Acties:
  • 0 Henk 'm!

  • H143
  • Registratie: Juli 2006
  • Laatst online: 08:49
In mijn groepenkast heb ik 2 eastron sdm 120 kwh meters hangen.
Deze meters wil ik graag uitlezen dmv modbus en heb hiervoor een usb rs485 stick gekocht.
Vervolgens heb ik deze aangesloten met een cat5 utp kabel en een 120 ohm weerstand er bij tussen geplaatst. Alleen nu kan ik geen instellingen wijzigen de baudrate wil ik op 9600 instellen en het adresnr wil ik wijzigen ik heb diverse software gebruikt maar krijg het niet voorelkaar. Is er iemand die mij kan uitleggen hoe ikndit kan wijzigen?

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
Al in het manual gekeken?
http://www.eastrongroup.c...user_manual_2016_V2_6.pdf
Keep pressing the button for 3 seconds, the meter will get into set-up
mode.
Edit: en dan vervolgens via modbus register 40029 (write) de baudrate wijzigen?
http://domoticx.com/modbus-kwh-meter-eastron-sdm120/
The user can program the meter parameters by sending correct command via RS485 port.
The protocol is Modbus RTU. For the details. Please look at the “Eastron SDM120-Modbus protocol”.
Misschien kan dat met dit programmatje?
http://www.modbus.pl/Modbus%20Tester_MODBUS.PL.html

[ Voor 84% gewijzigd door AUijtdehaag op 16-06-2019 19:24 ]

PVOutput Github - Div ESP TK: MHI - Clack - Ecodan


Acties:
  • 0 Henk 'm!

  • RvV
  • Registratie: Juli 2000
  • Laatst online: 08:41

RvV

Met sdm120c kan dat.

Zojuist voor mezelf ook even op 9600 gezet. Wel eerst even de meter in --SET-- modus zetten door de knop een paar seconden in te drukken.

pi@rpi1:~/Domoticz/scripts $ sudo sdm120c -a 1 -b 2400 -r 9600 -P N -q /dev/ttyUSB0
20190616-19:22:39.840722: sdm120c(14597) new_address = 0 > 0, count_param = 0
New value 2 for address 0x1C
pi@rpi1:~/Domoticz/scripts $ sudo sdm120c -a 1 -b 2400 -e -p -v -c -P N -q /dev/ttyUSB0
NOK
pi@rpi1:~/Domoticz/scripts $ sudo sdm120c -a 1 -b 9600 -e -p -v -c -P N -q /dev/ttyUSB0
230.90 1.74 -394.00 109209 OK


--Waarvoor is die weerstand eigenlijk?? 8)7

[ Voor 4% gewijzigd door RvV op 16-06-2019 19:31 ]

Y'24


Acties:
  • 0 Henk 'm!

  • Femme
  • Registratie: Juni 1999
  • Laatst online: 27-06 13:15

Femme

Hardwareconnaisseur

Official Jony Ive fan

RvV schreef op zondag 16 juni 2019 @ 19:24:

--Waarvoor is die weerstand eigenlijk?? 8)7
De weerstand is voor termination van de rs-485 bus. Zonder werkt het waarschijnlijk ook wel.

Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Waarom wil je de baudrate wijzigen?
Ik heb ook een SDM120c om mijn zonnepanelen uit te lezen en gebruik een RS485 stickje van Aliexpress en heb deze gewoon verbonden aan de SDM120c en kan deze uitlezen zonder weerstand of iets dergelijks. Ik gebruik de standaard baudrate van 2400.
Deze hangt weer aan een Raspberry Pi die alles upload naar PV-Output en Domoticz.
Als je interesse hebt in de scriptjes hoor ik het wel ;)

[ Voor 5% gewijzigd door Flappie op 18-06-2019 15:15 ]


Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
Hi, ik heb ook een sdm120 in m'n meterkast en wil hem graag uitlezen in domoticz. Welk script kan ik hiervoor in m'n pi zetten?

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Maartenrpi
Heb je deze al geprobeerd?
https://www.domoticz.com/...iewtopic.php?f=65&t=21297
https://github.com/DomoticX/domoticz-modbus

[ Voor 18% gewijzigd door AUijtdehaag op 18-07-2019 19:14 ]

PVOutput Github - Div ESP TK: MHI - Clack - Ecodan


Acties:
  • 0 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
Flappie schreef op dinsdag 18 juni 2019 @ 15:14:
Waarom wil je de baudrate wijzigen?
Ik gebruik de standaard baudrate van 2400.
Omdat 2400 baud wel heel langzaam is?
Inschakel-pieken van bijvoorbeeld een koelkast/diepvries duren vaak nauwelijks een seconde.

Ik heb destijds wat metingen gedaan met mijn SDM220C en kwam daar op deze tijden om uit te lezen:

2400 baud: ca 1 seconde
4800 baud: ca 0,60 seconde
9600 baud: ca 0,34 seconde

Aangezien ik 3 van die dingen in mijn meterkast heb hangen staan ze dus op 9600 baud, zodat ik ze precies 1 keer per seconde alle 3 kan uitlezen.

Als het slechts om 1 meter gaat, dan is dat misschien minder relevant, maar in mijn geval (1 meter direct achter de hoofdschakelaar, 2 meters om elk van mijn 2 omvormers apart te meten) bereken ik ook mijn echte verbruik aan de hand van deze 3 meters.
Dan moet je dus niet te lang tussen de verschillende metingen hebben, want voor je het weet klopt er niks meer van en heb je een negatief verbruik....

Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
Ja https://www.domoticz.com/...iewtopic.php?f=65&t=21297 heb ik al geprobeerd. Bij de hardware modbus-read en write toegevoegd helaas verschijnt deze niet in de devices. Hoe kan dat?

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Maartenrpi
Heb je gedaan wat er bij "installation" staat?
https://github.com/DomoticX/domoticz-modbus

Ik gebruik het zelf niet, dus ik gok maar.
Edit: misschien een domme vraag, maar heb je er wel een usb modbus stick aan hangen?

[ Voor 33% gewijzigd door AUijtdehaag op 20-07-2019 13:53 ]

PVOutput Github - Div ESP TK: MHI - Clack - Ecodan


Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
Uiteraard heb ik dat gedaan. Met deze code krijg ik:

pi@raspberrypi:~/domoticz/plugins/modbus-read $ ./plugin.py
./plugin.py: line 58: syntax error near unexpected token `('
./plugin.py: line 58: ` <param field="Address" label="Device address /ID(TCP)" width="120px" required="true"/>'

pi@raspberrypi:~/domoticz/plugins/modbus-write $ ./plugin.py
./plugin.py: line 63: syntax error near unexpected token `('
./plugin.py: line 63: ` <param field="Address" label="Device address /ID(TCP)" width="120px" required="true"/>'

What to do?

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Maartenrpi
Werkt dat wel via de command line?
Moet je geen baudrate, port settings, device adress, tcp/ip of rtu en dergelijke er achter zetten?
Hoe weet hij anders te connecten met de juiste settings?
En in domoticz geprobeerd?

Nogmaals, ik gebruik het niet. Google is je vriend.

[ Voor 23% gewijzigd door AUijtdehaag op 20-07-2019 14:20 ]

PVOutput Github - Div ESP TK: MHI - Clack - Ecodan


Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
@Flappie
Ik heb zeker interesse in de scripts. Zou je mij kunnen vertellen wat ik moet doen om de sdm120 te zien in domoticz.
Als ik dit in tik dan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pi@raspberrypi:~ $ sdm120c -a 1 -b 9600 -P N -S 2 -z 1 -j 20 /dev/ttyUSB1
Voltage: 229.80 V 
Current: 2.42 A 
Power: 479.50 W 
Active Apparent Power: 555.94 VA 
Reactive Apparent Power: 281.20 VAR 
Power Factor: 0.86 
Phase Angle: 0.00 Degree 
Frequency: 50.00 Hz 
Import Active Energy: 926828 Wh 
Export Active Energy: 82687 Wh 
Total Active Energy: 1009515 Wh 
Import Reactive Energy: 641388 VARh 
Export Reactive Energy: 114013 VARh 
Total Reactive Energy: 755401 VARh 
OK

Ik heb geen idee hoe ik deze gegevens in domoticz kan zien.

Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Okey komt ie:

1. In Domoticz een virtuele sensor aanmaken van het type P1 SMart Meter en onthoud de IDX van dit apparaat
2. Het script aanpassen met jouw IDX en IP adres
3. Middels crontab het script elke 30 seconden uitvoeren

Het script bevat een stukje if/else code. Dit heb ik ingebouwd omdat heel af toe de meter niet goed wordt uitgelezen bij mij. Als dat gebeurt telt Domoticz de totaalwaarde bij je dag waarde op en zijn je grafieken niet meer goed.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

# Read out modbus meter
echo Reading values from Eastron SDM120c Modbus Meter, please wait....
values=`sudo sdm120c -a 1 -b 2400 -e -p -P N -q -z 3 -j 20 /dev/ttyUSB0`

# Convert the values
echo ${values}
W=`echo ${values} | awk '{print $1}' | sed 's/-//' `
T=`echo ${values} | awk '{print $2}'`

#Values to upload
echo
echo Values to upload to Domoticz:
echo $T
echo $W
echo


# Only upload W and T if both W and T are not empty or "NOK"
if [[ -n $W ]] && [[ $T -gt "1" ]] && [[ NOK != $T ]]; then
echo Waardes correct uitgelezen! De waardes worden naar Domoticz verstuurd!
curl -s "http://10.0.0.10:8080/json.htm?type=command&param=udevice&idx=375&nvalue=0&svalue=$T;0;0;0;$W;0"
else
echo Waardes niet correct uitgelezen! Het script wordt beeindigd
curl -s "http://10.0.0.10:8080/json.htm?type=command&param=addlogmessage&message=Error+reading+Eastron+kWh+meter.+Values+skipped!"
fi


Wat betreft crontab, typ vanaf de shell crontab -e en voeg deze regel toe. Uiteraard even aan passen naar jouw pad en bestandsnaam van het script:

code:
1
2
* 4-22 * * * sleep 15; /home/pi/scripts/domoticz_upload_pv-panels_with_check.sh >/dev/null 2>&1
* 4-22 * * * sleep 45; /home/pi/scripts/domoticz_upload_pv-panels_with_check.sh >/dev/null 2>&1


Als je nog vragen hebt hoor ik het wel :)

Acties:
  • 0 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
@Flappie Waarom draai je sdm120c als sudo? Dat is toch nergens voor nodig?

(Dat sdm120c af en toe niet werkt herken ik wel. Meestal een CRC-fout, maar gelukkig heel zelden)

Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Bij werkte het niet zonder sudo geloof ik. Weet eigenlijk niet waarom. Probeer maar eens of het bij jouw wel werkt :)

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Flappie
Curl, awk of gawk moet wel apart worden geinstalleerd meen ik?

[ Voor 5% gewijzigd door AUijtdehaag op 20-07-2019 20:44 ]

PVOutput Github - Div ESP TK: MHI - Clack - Ecodan


Acties:
  • +1 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
AUijtdehaag schreef op zaterdag 20 juli 2019 @ 20:42:
@Flappie
awk of gawk moet wel apart worden geinstalleerd meen ik.
Op mijn Raspbian Stretch stond het standaard geïnstalleerd :)

Acties:
  • 0 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
Flappie schreef op zaterdag 20 juli 2019 @ 20:37:
Bij werkte het niet zonder sudo geloof ik. Weet eigenlijk niet waarom. Probeer maar eens of het bij jouw wel werkt :)
Mijn eigen perl-script (dat onder water sdm120c) aanroept draait gewoon onder de pi-gebruiker. Geen root voor nodig...

Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
@Flappie
Geweldig, nu zie ik hoeveel watt m'n panelen leveren. Bedankt!
Mijn aangepaste script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

# Read out modbus meter
#echo Reading values from Eastron SDM120c Modbus Meter, please wait....
values=`sudo sdm120c -a 1 -b 9600 -e -p -P N -q -z 3 -j 20 /dev/ttyUSB1`

# Convert the values
echo ${values}
W=`echo ${values} | awk '{print $1}' | sed 's/-//' `
T=`echo ${values} | awk '{print $2}'`

#Values to upload
echo
echo Values to upload to Domoticz:
echo $T
echo $W
echo


# Only upload W and T if both W and T are not empty or "NOK"
if [[ -n $W ]] && [[ $T -gt "1" ]] && [[ NOK != $T ]]; then
#echo Waardes correct uitgelezen! De waardes worden naar Domoticz verstuurd!
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=udevice&idx=12&nvalue=0&svalue=$T;0;0;0;$W;0"
else
echo Waardes niet correct uitgelezen! Het script wordt beeindigd
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=addlogmessage&message=Error+reading+Eastron+kWh+meter.+Values+skipped!"
fi


Nu geeft alleen het log rare waardes. De dag levering is 0 en de week levering is 82687. De Export Active Energy: 82687 Wh. Maand en jaar zijn ook 0.

Kan ik dit nog veranderen?

Kleine aanpassing aan deze regel:
code:
1
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=udevice&idx=10&nvalue=0&svalue=$watts;$watthours;0;0;$W;0"


Nu zie ik dat ik 0kWh, 0,000 verbruikt heb. Hoe kan ik deze info loggen?

[ Voor 9% gewijzigd door Maartenrpi op 21-07-2019 17:27 ]


Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Maartenrpi schreef op zondag 21 juli 2019 @ 09:02:
@Flappie
Geweldig, nu zie ik hoeveel watt m'n panelen leveren. Bedankt!
Mijn aangepaste script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash

# Read out modbus meter
#echo Reading values from Eastron SDM120c Modbus Meter, please wait....
values=`sudo sdm120c -a 1 -b 9600 -e -p -P N -q -z 3 -j 20 /dev/ttyUSB1`

# Convert the values
echo ${values}
W=`echo ${values} | awk '{print $1}' | sed 's/-//' `
T=`echo ${values} | awk '{print $2}'`

#Values to upload
echo
echo Values to upload to Domoticz:
echo $T
echo $W
echo


# Only upload W and T if both W and T are not empty or "NOK"
if [[ -n $W ]] && [[ $T -gt "1" ]] && [[ NOK != $T ]]; then
#echo Waardes correct uitgelezen! De waardes worden naar Domoticz verstuurd!
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=udevice&idx=12&nvalue=0&svalue=$T;0;0;0;$W;0"
else
echo Waardes niet correct uitgelezen! Het script wordt beeindigd
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=addlogmessage&message=Error+reading+Eastron+kWh+meter.+Values+skipped!"
fi


Nu geeft alleen het log rare waardes. De dag levering is 0 en de week levering is 82687. De Export Active Energy: 82687 Wh. Maand en jaar zijn ook 0.

Kan ik dit nog veranderen?

Kleine aanpassing aan deze regel:
code:
1
curl -s "http://192.168.1.100:8080/json.htm?type=command&param=udevice&idx=10&nvalue=0&svalue=$watts;$watthours;0;0;$W;0"


Nu zie ik dat ik 0kWh, 0,000 verbruikt heb. Hoe kan ik deze info loggen?
Ik heb het script destijds zo gemaakt dat ik alleen de export log omdat ik mijn SDM120 alleen gebruik om de zonnepanelen uit te lezen. Mijn verbruik lees ik uit met de slimme meter.

Dat de teller in Domoticz een beetje vreemd begint is wel normaal. Eventueel kun je die eerste waarde verwijderen in Domoticz. Ga naar "log" van het apparaat en bekijk de maand of jaar grafiek. Klik op de piek waarde en houd daarbij de shift knop ingedrukt. je kunt dan de eerste waarde verwijderen :)

Als je jouw gebruik ook wilt meten moet je het script even aanpassen zodat de import energy ook wordt uitgelezen en moet je het commando die de data naar domoticz upload ook aanpassen.
ik denk dat je hier een heel eind mee komt: https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Electricity_P1_smart_meter

Als het niet lukt, laat het dan even weten. Dan kan ik het thuis eens testen.

Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
@Flappie
Bedankt voor de wiki. Het lukt me nog niet om de juiste data te ontvangen. Wat ik graag wil zien in het log is hoeveel ze geproduceerd hebben, net als bij de P1 meter. Nu zie ik idd de Export Active Energy bij wat ik vandaag geproduceerd heb en het totaal.

Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Dan moet je de regel die de waardes van de meter uitleest ook even aanpassen.
Het script leest de "exported" energy uit in Kwh
Als je de "Imported energy" ook wilt uitlezen in Kwh moet je het zo aanpassen.


Ik heb het nog niet zelf getest, maar ik denk dat het dan dit moet worden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

# Read out modbus meter
echo Reading values from Eastron SDM120c Modbus Meter, please wait....
values=`sudo sdm120c -a 1 -b 2400 -i -e -p -P N -q -z 3 -j 20 /dev/ttyUSB0`

# Convert the values
echo ${values}
W=`echo ${values} | awk '{print $1}' | sed 's/-//' `
TI=`echo ${values} | awk '{print $2}'`
TE=`echo ${values} | awk '{print $3}'`

#Values to upload
echo
echo Values to upload to Domoticz:
echo $TI
echo $TE
echo $W
echo


# Only upload W and T if both W and T are not empty or "NOK"
if [[ -n $W ]] && [[ $T -gt "1" ]] && [[ NOK != $TE ]]; then
echo Waardes correct uitgelezen! De waardes worden naar Domoticz verstuurd!
curl -s "http://10.0.0.10:8080/json.htm?type=command&param=udevice&idx=375&nvalue=0&svalue=$TE;0;$TI;0;$W;0"
else
echo Waardes niet correct uitgelezen! Het script wordt beeindigd
curl -s "http://10.0.0.10:8080/json.htm?type=command&param=addlogmessage&message=Error+reading+Eastron+kWh+meter.+Values+skipped!"

[ Voor 21% gewijzigd door Flappie op 22-07-2019 16:32 ]


Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
Je script werkt maar dit is niet wat ik bedoel. Het log registreert nu de totale input of output. Wat ik graag wil zien in het log is hoeveel ze geproduceerd hebben per tijdseenheid, net als bij de P1 meter.
Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 27-06 11:36
Maartenrpi schreef op maandag 22 juli 2019 @ 19:29:
Je script werkt maar dit is niet wat ik bedoel. Het log registreert nu de totale input of output. Wat ik graag wil zien in het log is hoeveel ze geproduceerd hebben per tijdseenheid, net als bij de P1 meter.
Alvast bedankt.
Dat rekent Domoticz voor je uit. Die houd per dag bij hoeveel Kwh er is opgewekt en terug geleverd. Die info zit namelijk niet in de SDM120c. Gewoon een tijdje laten meelopen en je ziet hoeveel er per dag is opgewekt en/of terug geleverd :)

Acties:
  • 0 Henk 'm!

  • Maartenrpi
  • Registratie: Juli 2019
  • Laatst online: 19-06 01:08
Domoticz is idd aan het loggen maar wel op de verkeerde manier. De today en kWh geven allebei hetzelfde aan afhankelijk van wat ik na de svalue invul.
Hoe kan ik de som van vandaag zien in domoticz?

Acties:
  • 0 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
@Maartenrpi Bedoel je het actuele vermogen? Dat kun je met de -p optie van sdm120c opvragen.

Ik ken Domoticz niet, maar ik neem aan dat je regelmatig (elke x seconden/minuten) het actuele vermogen doorgeeft dat Domoticz daar een mooi grafiekje per tijdseenheid van kan maken?

  • Andrehj
  • Registratie: Juni 2002
  • Laatst online: 21:45
Even een oud topic nieuw leven inblazen: hoe kom je aan het programma of script sdm120c? Ben benieuwd of ik dat kan omsmurfen om daarmee mijn ABBmeters uit te lezen.

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


Acties:
  • +1 Henk 'm!

  • RvV
  • Registratie: Juli 2000
  • Laatst online: 08:41

RvV

Volgens mij is dit hem: https://github.com/gianfrdp/SDM120C

Y'24


Acties:
  • +1 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
Andrehj schreef op donderdag 30 september 2021 @ 22:46:
[...]

Even een oud topic nieuw leven inblazen: hoe kom je aan het programma of script sdm120c? Ben benieuwd of ik dat kan omsmurfen om daarmee mijn ABBmeters uit te lezen.
Als je toch gaat omsmurfen kun je ook een generiek modbus-tool gebruiken.
Je moet dan wel even in de juiste modbus-registers duiken.

Ik gebruik tegenwoordig mbrtu: https://github.com/gitaeuber/mbrtu
Voor mijn SDM220 (maar is gelijk aan 120) krijg je dan bijvoorbeeld:
code:
1
mbrtu -d /dev/ttyUSB_kwh -p N -a 2 -P -tF32_dcba -n 14 -r0x00 -n 2 -r0x1E -n 6 -r0x46

De output daarvan smurf ik dan naar behoefte om naar mysql/json/mqtt .

Acties:
  • 0 Henk 'm!

  • Andrehj
  • Registratie: Juni 2002
  • Laatst online: 21:45
ocaj schreef op zaterdag 16 oktober 2021 @ 10:45:
[...]


Als je toch gaat omsmurfen kun je ook een generiek modbus-tool gebruiken.
Je moet dan wel even in de juiste modbus-registers duiken.

Ik gebruik tegenwoordig mbrtu: https://github.com/gitaeuber/mbrtu
Voor mijn SDM220 (maar is gelijk aan 120) krijg je dan bijvoorbeeld:
code:
1
mbrtu -d /dev/ttyUSB_kwh -p N -a 2 -P -tF32_dcba -n 14 -r0x00 -n 2 -r0x1E -n 6 -r0x46

De output daarvan smurf ik dan naar behoefte om naar mysql/json/mqtt .
Hartelijk dank voor deze suggestie. Ik zou heel graag met een command line tooltje mijn modbus devices uitlezen, maar helaas loop ik vast op de installatieinstructies. Zou je me met een paar zaken willen helpen? Er staat.
Requirements
libmodbus libmodbus >= 3.1.3
Installation
compile static libmodbus library
copy the resulting libmodbus.a to /usr/local/lib or into this directory and adapt Makefile
$ make
$ make install
Het begint met de requirements voor libmodbus. Hoe kom ik daar aan? Want het commando
sudo apt-get install libmodbus geeft
E: Unable to locate package libmodbus

Dan de regel "compile static libmodbus library". Klinkt waarschijnlijk eenvoudig voor een expert, maar hoe doe je zoiets?

En dan moet ik libmodbus.a naar "this directory" kopieren. Welke directory is dat?

En hoe "adapt" je makefile?

Ik heb al wel een commando in elkaar gepuzzeld om adres 0x5000 (uint64, dus 4 registers van 16 bits) uit te kunnen lezen: (even onder elkaar voor het overzicht)
mbrtu
-d /dev/ttyUSB-RS485
-b 9600 (mag weg, want 9600 is default)
-p E (mag weg, want even is default)
-s 1 (mag weg, want 1 is default bij even parity)
-a 2 (adres van modbus device)
-f 3 (read holding register)
-P (format output, maar even kijken wat dat oplevert)
-n 4 (vier 16 bit registers voor een uint64?)
-r 0x5000
-t uint64
Ik vraag me nog af of die laatste nodig is, omdat jij ook nergens zoiets gebruikt.

Excuses voor deze newbie-vragen. Ik ben ondertussen aardig handig met de Pi commando's, maar hier kom ik even niet uit.

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


Acties:
  • +1 Henk 'm!

  • jobr
  • Registratie: Januari 2009
  • Laatst online: 18-05 18:57
Andrehj schreef op woensdag 20 oktober 2021 @ 18:14:
Het begint met de requirements voor libmodbus. Hoe kom ik daar aan?
https://libmodbus.org/download/

Acties:
  • 0 Henk 'm!

  • Andrehj
  • Registratie: Juni 2002
  • Laatst online: 21:45
Dank, maar daar had ik nog niet zoveel aan. Na wat googlen bleek dit de eenvoudige oplossing:
code:
1
2
sudo apt update
sudo apt install libmodbus-dev

Weet je toevallig ook hoe je mbrtu installeert? Want daar loop ik nog flink vast.

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


Acties:
  • +1 Henk 'm!

  • jobr
  • Registratie: Januari 2009
  • Laatst online: 18-05 18:57
Andrehj schreef op woensdag 20 oktober 2021 @ 19:39:
Weet je toevallig ook hoe je mbrtu installeert? Want daar loop ik nog flink vast.
Je zou eens kunnen proberen:

inloggen op je pi
git clone https://github.com/gitaeuber/mbrtu.git
dan cd naar de aangemaakt dir en dan die 2 make commando's geven

Acties:
  • 0 Henk 'm!

  • Andrehj
  • Registratie: Juni 2002
  • Laatst online: 21:45
jobr schreef op woensdag 20 oktober 2021 @ 19:45:
[...]
Je zou eens kunnen proberen:
inloggen op je pi
git clone https://github.com/gitaeuber/mbrtu.git
dan cd naar de aangemaakt dir en dan die 2 make commando's geven
Dankjewel! _/-\o_ Uiteindelijk bleek de hele installatieprocedure van mbrtu:
code:
1
2
3
4
5
6
sudo apt update
sudo apt install libmodbus-dev
sudo git clone https://github.com/gitaeuber/mbrtu.git
cd /mbrtu
sudo make
sudo make install

Maar waarom iemand die al die moeite doet om zo'n programma te schrijven zo'n simpele uitleg er niet even bij kan typen is mij een raadsel. 8)7

Nu is het nog de vraag waarom mijn leespoging van 4x 16bit (UINT64) register 0x5000 (20480) niet werkt, maar iets onbegrijpelijks oplevert:
code:
1
2
3
pi@raspberrypi:/mbrtu $ mbrtu -d /dev/ttyUSB-RS485 -a 2 -f 3 -n 4 -r 0x5000
ADDR=2 REG=20480 DATA=
2▒

Edit laat maar. Het werkt:
code:
1
2
pi@raspberrypi:/mbrtu $ mbrtu -d /dev/ttyUSB-RS485 -a2 -f3 -tuint64 -n4 -r0x5000
ADDR=2 REG=20480 DATA=799421

[ Voor 23% gewijzigd door Andrehj op 20-10-2021 20:17 ]

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


Acties:
  • +1 Henk 'm!

  • ocaj
  • Registratie: Juli 2011
  • Niet online
Mooi dat het werkt.
Als je er dan nog een -P (hoofdletter) bij zet, dan krijg je je data in een iets makkelijker te lezen/parsen formaat.

Acties:
  • 0 Henk 'm!

  • jobr
  • Registratie: Januari 2009
  • Laatst online: 18-05 18:57
Andrehj schreef op woensdag 20 oktober 2021 @ 19:58:
Maar waarom iemand die al die moeite doet om zo'n programma te schrijven zo'n simpele uitleg er niet even bij kan typen is mij een raadsel. 8)7
Omdat dit de standaard werkwijze is op linux en als bekend wordt verondersteld door de betreffende ontwikkelaar.
Maar als je dat nog nooit gedaan hebt ......

Acties:
  • 0 Henk 'm!

  • henkNL
  • Registratie: September 2019
  • Niet online
Hier 2x een SDM120 draaien welke elke 5 minuten worden uitgelezen d.m.v. SDM120C, dat werkt prima.

Nu wil ik een SDM230 aanschaffen, weet iemand of dit ook hiermee werkt?

EV: Tesla M3H 2024 | PV: 3900Wp O/W + 1620Wp O/W | D-WTW: QB1-16 | AC: MHI SCM40ZS-W + SRK25 + SRK20 | Honda CBF600SA - 2005 | Thuisaccu: HW - 2,7kWh


  • ocaj
  • Registratie: Juli 2011
  • Niet online
Ik heb het jaren gebruikt met een SDM220, maar weet niet wat de verschillen zijn tussen een SDM220 en SDM230?
Als ze dezelfde modbus register-layout hebben dan zou het gewoon moeten werken.

  • henkNL
  • Registratie: September 2019
  • Niet online
Tnx
Even een quickscan gedaan, het lijkt dezelfde layout te hebben. Ik ga m bestellen, kom ik op terug...

Edit:
Uiteindelijk toch niet besteld, ben voor de homewizard oplossing gegaan (kWh meter met wifi, ook van Eastron), werkt op een enkele storing van homewizard na prima, zeker met de lokale api.

[ Voor 48% gewijzigd door henkNL op 14-11-2022 11:35 ]

EV: Tesla M3H 2024 | PV: 3900Wp O/W + 1620Wp O/W | D-WTW: QB1-16 | AC: MHI SCM40ZS-W + SRK25 + SRK20 | Honda CBF600SA - 2005 | Thuisaccu: HW - 2,7kWh


Acties:
  • 0 Henk 'm!

  • MrScratch
  • Registratie: December 2001
  • Laatst online: 27-06 14:53

MrScratch

I am rubber, you are glue

Andrehj schreef op woensdag 20 oktober 2021 @ 19:58:
[...]

Dankjewel! _/-\o_ Uiteindelijk bleek de hele installatieprocedure van mbrtu:
code:
1
2
3
4
5
6
sudo apt update
sudo apt install libmodbus-dev
sudo git clone https://github.com/gitaeuber/mbrtu.git
cd /mbrtu
sudo make
sudo make install
Dank voor deze installatie guide. Helaas gaat hij bij mij stuk op de sudo make
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
peter@raspberrypi:~/mbrtu $ sudo make
cc -std=c99 -O3 -Wall -D_BSD_SOURCE -I/usr/include/modbus/ -lmodbus mbrtu.c -o mbrtu
In file included from /usr/include/arm-linux-gnueabihf/sys/types.h:25,
                 from /usr/include/arm-linux-gnueabihf/sys/param.h:25,
                 from /usr/include/modbus/modbus.h:12,
                 from mbrtu.h:25,
                 from mbrtu.c:22:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
  187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
      |   ^~~~~~~
In file included from mbrtu.c:22:
mbrtu.c: In function ‘parse_call_parameter_options’:
mbrtu.h:53:19: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   53 | #define IF_DEBUG  if (global_flags & MBRTU_FLAGS_DEBUG)
      |                   ^~
mbrtu.c:713:1: note: in expansion of macro ‘IF_DEBUG’
  713 | IF_DEBUG fprintf (stderr, "data type = 0x%x\n", call->type);
      | ^~~~~~~~
mbrtu.c:714:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  714 |   break;
      |   ^~~~~
/usr/bin/ld: /tmp/ccYMP2r3.o: in function `parse_n_opt':
mbrtu.c:(.text+0x51c): undefined reference to `modbus_set_float_abcd'
/usr/bin/ld: /tmp/ccYMP2r3.o: in function `print_data':
mbrtu.c:(.text+0xb1c): undefined reference to `modbus_get_float_abcd'
/usr/bin/ld: /tmp/ccYMP2r3.o: in function `make_call':
mbrtu.c:(.text+0xc14): undefined reference to `modbus_set_slave'
/usr/bin/ld: mbrtu.c:(.text+0xc90): undefined reference to `modbus_connect'
/usr/bin/ld: mbrtu.c:(.text+0xd80): undefined reference to `modbus_write_registers'
/usr/bin/ld: mbrtu.c:(.text+0xdd8): undefined reference to `modbus_write_register'
/usr/bin/ld: mbrtu.c:(.text+0xe10): undefined reference to `modbus_strerror'
/usr/bin/ld: mbrtu.c:(.text+0xe48): undefined reference to `modbus_read_input_registers'
/usr/bin/ld: mbrtu.c:(.text+0xe80): undefined reference to `modbus_read_registers'
/usr/bin/ld: mbrtu.c:(.text+0xeac): undefined reference to `modbus_strerror'
/usr/bin/ld: /tmp/ccYMP2r3.o: in function `parse_call_parameter_options':
mbrtu.c:(.text+0x13c4): undefined reference to `modbus_set_debug'
/usr/bin/ld: /tmp/ccYMP2r3.o: in function `main':
mbrtu.c:(.text.startup+0x1a0): undefined reference to `modbus_new_rtu'
/usr/bin/ld: mbrtu.c:(.text.startup+0x1e8): undefined reference to `modbus_set_response_timeout'
/usr/bin/ld: mbrtu.c:(.text.startup+0x214): undefined reference to `modbus_close'
/usr/bin/ld: mbrtu.c:(.text.startup+0x220): undefined reference to `modbus_free'
/usr/bin/ld: mbrtu.c:(.text.startup+0x5d0): undefined reference to `modbus_set_debug'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0x0): undefined reference to `modbus_set_float_badc'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0x4): undefined reference to `modbus_set_float_cdab'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0x8): undefined reference to `modbus_set_float_dcba'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0xc): undefined reference to `modbus_get_float_badc'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0x10): undefined reference to `modbus_get_float_cdab'
/usr/bin/ld: /tmp/ccYMP2r3.o:(.rodata+0x14): undefined reference to `modbus_get_float_dcba'
collect2: error: ld returned 1 exit status
make: *** [Makefile:9: mbrtu] Error 1


Helaas ben ik niet in staat te begrijpen wat er nu precies mis gaat en waarom. Iemand tips hoe een dergelijke fout te debuggen?

Look behind you! A three headed monkey!


Acties:
  • 0 Henk 'm!

  • rvk
  • Registratie: Mei 2011
  • Laatst online: 01:32

rvk

MrScratch schreef op zondag 13 november 2022 @ 21:50:
[...]
Dank voor deze installatie guide. Helaas gaat hij bij mij stuk op de sudo make
[...]
Helaas ben ik niet in staat te begrijpen wat er nu precies mis gaat en waarom. Iemand tips hoe een dergelijke fout te debuggen?
Heb je ook naar de oplossing onder "issues" gekeken?
https://github.com/gitaeuber/mbrtu/issues/6

Acties:
  • 0 Henk 'm!

  • MrScratch
  • Registratie: December 2001
  • Laatst online: 27-06 14:53

MrScratch

I am rubber, you are glue

rvk schreef op zondag 13 november 2022 @ 23:18:
[...]

Heb je ook naar de oplossing onder "issues" gekeken?
https://github.com/gitaeuber/mbrtu/issues/6
Dat was inderdaad de oplossing. Dank. Ik had niet bij de issues gekeken, maar dat was wel vrij logisch om daar even te kijken.

Look behind you! A three headed monkey!

Pagina: 1