Da har jeg 'lyttet' litt på porten min også. Aidon måler.
Kjøpte disse 2:
MBUS til RS232: https://shop.marcomweb.it/en/shop-online/fieldbus/meterbus-m-bus/mbus-slave-level-converter-dettagli.html
RS232 til USB: https://www.kjell.com/no/produkter/data-og-nettverk/kabler-og-adaptere/usb/usb-adaptere/plexgear-adapter-usb-til-seriell-p38885#ProductDetailedInformation
Koblet opp mot Ubuntu sub-os på Win10 og på en 'ekte' Ubuntu maskin.
Her er kommandoene for å liste ut hva som kommer:
Win10 Ubuntu (COMx=/dev&ttySx, hos meg: COM9=ttyS9)
sudo chmod 666 /dev/ttyS9
sudo stty -F /dev/ttyS9 2400 cs8 raw parenb -parodd -cstopb
stdbuf -o0 hexdump -v -e '/1 "%02x"' </dev/ttyS9
Ubuntu: (/dev/ttyUSB0)
stty -F /dev/ttyUSB0 2400 cs8 parenb -parodd -cstopb crtscts
stdbuf -o0 hexdump -v -e '/1 "%02x"' </dev/ttyUSB0
Eksempel output: (active power (Q1+Q4 uthevet)
7ea02a410883130413e6e7000f40000000000101020309060100010700ff06000021b202020f001b0d777e
7ea10b41088313fa7ce6e7000f4000000000010c020209060101000281ff0a0b4149444f4e5f5630303031020209060000600100ff0a1037333539393932393035333032343134020209060000600107ff0a0436353235020309060100010700ff06000021c202020f001b020309060100020700ff060000000002020f001b020309060100030700ff060000000002020f001d020309060100040700ff06000000fe02020f001d0203090601001f0700ff1000ef02020fff21020309060100470700ff1000fb02020fff21020309060100200700ff1208e602020fff23020309060100340700ff12090602020fff23020309060100480700ff12091e02020fff2321157e
7ea02a410883130413e6e7000f40000000000101020309060100010700ff06000021ba02020f001be1a97e
7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000219702020f001b2de47e
7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000218202020f001b47a17e
7ea10b41088313fa7ce6e7000f4000000000010c020209060101000281ff0a0b4149444f4e5f5630303031020209060000600100ff0a1037333539393932393035333032343134020209060000600107ff0a0436353235020309060100010700ff060000219202020f001b020309060100020700ff060000000002020f001b020309060100030700ff060000000002020f001d020309060100040700ff060000011b02020f001d0203090601001f0700ff1000ed02020fff21020309060100470700ff1000fb02020fff21020309060100200700ff1208e902020fff23020309060100340700ff12090602020fff23020309060100480700ff12091f02020fff23cc647e
7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000217b02020f001b2f777e
Her har jeg trykket linjeskift manuelt etter hver 0x7e, og dette er litt av problemet med binærdata. Man får aldri linjeskift og derfor må man parse dette via et program.
Da er jeg klar til å interace til min Arduino. Må bare via en slik for den er 3.3V: 3.3V 5V level converter
På Arduino har jeg et meget enkelt Eth interface som kun bruker DhcpChatServer. (,men med static IP)
Så på Ubuntu maskinen som kjører OH2, bruker jeg bare nc (netcat):
Disse går som initd services:
ofile=/run/nc.log
while [ 1 ]; do
/bin/echo -e k | /bin/nc -q 1 192.168.1.42 23 >>$ofile
done
ofile=/run/nc.log
stat=$(/usr/bin/stat --format=%Y $ofile)
newStat=$stat
echo "newStat=" $newStat
while [ 1 ]; do
while [ $stat -eq $newStat ]; do
/bin/sleep 0.5
newStat=$(/usr/bin/stat --format=%Y $ofile)
done
echo 'File changed'
newVal=$(/usr/bin/tail -n 1 $ofile | /usr/bin/cut -d ' ' -f 2 | /usr/bin/tr -d '\r')
/usr/bin/truncate -s 0 $ofile
newStat=$(/usr/bin/stat --format=%Y $ofile)
stat=$newStat
echo $newVal
/usr/bin/curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "$newVal" "http://localhost:8080/rest/items/GTV7PowerConsumption"
done
DhcpChatServer får inn karakteren 'k' og svaret blir fanget opp av netcat (lytter i 1s -q 1) som lagrer i en fil.
Den andre servicen sjekker hvert 500ms om filen har blitt oppdatert.
Så postes resultat rett til OH2 via REST.
Eksempelet sender kun en analog verdi, men det skal utvides nå. :-)