Perlscript som dekodar (ursäkta variabelnamnen):
Kod: Markera allt
#!/usr/bin/perl -w
use strict;
my @data;
my ($shit,$ch,$max,$curr,$acc);;
while(<>){
s/[^0-9a-fA-F\s]//g; # filter the message to contain only hex numbers
next if(length()!=54); # wait for the correct length row
if(/^A0 (00|30|60|90|C0|F0)/){ # look for a write to the right address
@data=split(" ");
$shit=join("",reverse(@data[2..10])); # cut out the interesting part
print "Raw: ".$_;
$ch = hex($data[1])/48 +1; # calculate the channel number
$max=hex(substr($shit,13,4))/10;
$curr=hex(substr($shit,9,4))/10;
$acc=int(hex(substr($shit,1,8))/3600);
print "CH".$ch." Max: ".$max." W Curr: ".$curr." W Acc: ".$acc." Wh\n\n";
}
}
Kod: Markera allt
A2 C0 A3 E2 42 A2 38 55 27 38 26 FF FF F3 FF FF FF FF F3 FF FF
A0 44 A1 00 01
A0 30 00 00 00 00 40 17 09 4D 00 00 00 B0 DD 0C 00 B0
A0 40 2A 22 8A 93
A0 44 00 01
A4 40 A6 80 00 00 00 00 F5 00
A0 74 A1 80 01
A0 60 A4 A4 90 0C 10 3E 4C 8E 00 00 00 80 87 00 00 F0
A0 70 C7 53 75 92
A0 74 80 01
A4 70 3C 00 00 00 00 00 45 70
A0 A4 A1 80 01
A0 90 47 20 03 0C 10 4D 4C 85 00 00 00 20 40 0D 00 20
A0 A0 40 8D 63 92
A0 A4 80 01
A4 A0 C6 20 00 00 00 00 C6 C0
A0 14 A1 80 08
A0 00 54 2C E0 01 90 A9 58 03 00 00 00 90 F2 0D 00 60
A0 10 36 25 2E 94
A0 14 80 08
A4 10 01 00 00 00 00 00 0F 00
A0 60 A1 A4 A4 90 0C 10 3E 4C 8E 00 00 00 80 87 00 00 F0 C7 53 75 92
A0 74 A1 80 01
A4 70 A5 3C 00 00 00 00 00 45 70
A0 76 A1 21 3B 45 00 00 00 00 1A 07 3C 00 00 00 00 00 20 83 4A 8E 00 00
Kod: Markera allt
# ./decode.pl example.log
Raw: A0 30 00 00 00 00 40 17 09 4D 00 00 00 B0 DD 0C 00 B0
CH2 Max: 0 W Curr: 0 W Acc: 22438 Wh
Raw: A0 60 A4 A4 90 0C 10 3E 4C 8E 00 00 00 80 87 00 00 F0
CH3 Max: 263.4 W Curr: 20.1 W Acc: 41447 Wh
Raw: A0 90 47 20 03 0C 10 4D 4C 85 00 00 00 20 40 0D 00 20
CH4 Max: 1280.4 W Curr: 19.2 W Acc: 38825 Wh
Raw: A0 00 54 2C E0 01 90 A9 58 03 00 00 00 90 F2 0D 00 60
CH1 Max: 70.9 W Curr: 3 W Acc: 974 Wh
Den enda som inte stämmer är CH4 där ackumulerad effekt inte är 38,8kWh utan närmare 187,9kWh... 41,4kWh på CH3 stämmer däremot bra.. lite skumt.
Om man tar 0x0854C4D1 och lägger till en tvåa i början, 0x2854C4D1 så blir det 187,956kWh... vart man ska få tvåan ifrån är dock fortfarande en gåta.