Loggade i hex istället. Ser ut att vara det norska formatet (HDLC frames)

Kod:
7E A0 E2 2B 21 13 23 9A E6 E7 00 0F 00 00 00 00 0C 07 E6 01 18 01 12 3A 32 FF 80 00 00 02 19 0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 09 06 01 01 00 00 05 FF 0A 10 35 37 30 36 35 36 37 33 32 36 35 39 30 34 30 37 09 06 01 01 60 01 01 FF 0A 12 36 38 34 31 31 33 38 42 4E 32 34 35 31 30 31 30 39 30 09 06 01 01 01 07 00 FF 06 00 00 03 3A 09 06 01 01 02 07 00 FF 06 00 00 00 00 09 06 01 01 03 07 00 FF 06 00 00 00 68 09 06 01 01 04 07 00 FF 06 00 00 00 B0 09 06 01 01 1F 07 00 FF 06 00 00 00 ED 09 06 01 01 33 07 00 FF 06 00 00 00 59 09 06 01 01 47 07 00 FF 06 00 00 00 4B 09 06 01 01 20 07 00 FF 12 00 E8 09 06 01 01 34 07 00 FF 12 00 E9 09 06 01 01 48 07 00 FF 12 00 EC 84 46 7E
 
E EPettson skrev:
Loggade i hex istället. Ser ut att vara det norska formatet (HDLC frames)

Kod:
7E A0 E2 2B 21 13 23 9A E6 E7 00 0F 00 00 00 00 0C 07 E6 01 18 01 12 3A 32 FF 80 00 00 02 19 0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 09 06 01 01 00 00 05 FF 0A 10 35 37 30 36 35 36 37 33 32 36 35 39 30 34 30 37 09 06 01 01 60 01 01 FF 0A 12 36 38 34 31 31 33 38 42 4E 32 34 35 31 30 31 30 39 30 09 06 01 01 01 07 00 FF 06 00 00 03 3A 09 06 01 01 02 07 00 FF 06 00 00 00 00 09 06 01 01 03 07 00 FF 06 00 00 00 68 09 06 01 01 04 07 00 FF 06 00 00 00 B0 09 06 01 01 1F 07 00 FF 06 00 00 00 ED 09 06 01 01 33 07 00 FF 06 00 00 00 59 09 06 01 01 47 07 00 FF 06 00 00 00 4B 09 06 01 01 20 07 00 FF 12 00 E8 09 06 01 01 34 07 00 FF 12 00 E9 09 06 01 01 48 07 00 FF 12 00 EC 84 46 7E
Hej, har du provat med denna: https://github.com/forsberg/esphome-p1reader/tree/branschrekommendation-1.2-tekniska-verken
 
S skracke skrev:
Hej, har du provat med denna: [länk]
Jag har provat, men det ser ut som om anpassningar behöver göras. Verkar inte vara riktigt samma som Tekniska verken i mitt fall.
 
E EPettson skrev:
Jag har provat, men det ser ut som om anpassningar behöver göras. Verkar inte vara riktigt samma som Tekniska verken i mitt fall.
Jeg har testet å lese hex du posted med en parser som jeg er maintainer for, og det fungerte fint fra versjon 1.1.0. Den er laget i Python, og du finner pakken her: https://pypi.org/project/amshan/
 
E EPettson skrev:
Loggade i hex istället. Ser ut att vara det norska formatet (HDLC frames)

Kod:
7E A0 E2 2B 21 13 23 9A E6 E7 00 0F 00 00 00 00 0C 07 E6 01 18 01 12 3A 32 FF 80 00 00 02 19 0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 09 06 01 01 00 00 05 FF 0A 10 35 37 30 36 35 36 37 33 32 36 35 39 30 34 30 37 09 06 01 01 60 01 01 FF 0A 12 36 38 34 31 31 33 38 42 4E 32 34 35 31 30 31 30 39 30 09 06 01 01 01 07 00 FF 06 00 00 03 3A 09 06 01 01 02 07 00 FF 06 00 00 00 00 09 06 01 01 03 07 00 FF 06 00 00 00 68 09 06 01 01 04 07 00 FF 06 00 00 00 B0 09 06 01 01 1F 07 00 FF 06 00 00 00 ED 09 06 01 01 33 07 00 FF 06 00 00 00 59 09 06 01 01 47 07 00 FF 06 00 00 00 4B 09 06 01 01 20 07 00 FF 12 00 E8 09 06 01 01 34 07 00 FF 12 00 E9 09 06 01 01 48 07 00 FF 12 00 EC 84 46 7E
Exemplet på hanporten.se för att parsa fungerade inte: https://hanporten.se/norska/protokollet/
De använder VisibleString data för att skicka över mätar-ID och jag har faktiskt inte sett någon använda den tidigare så VisibleString var inte helt implementerad. Men jag ska fixa det snart.
 
Lite mysko format på datan. Istället för att komma som vanlig norsk så kommer det som en lista av värden. I den vanliga norska är det också en lista, men av strukturer som innehåller obis, värde, skalär och enhet.

Men fördelen med detta blir kanske att man enkelt kan göra en parser om bara plockar ut värdena baserat på position.

Jag parsar ut det som:
bytearray(b'Kamstrup_V0001')
Obis(a=1, b=1, c=0, d=0, e=5, f=255)
bytearray(b'5706567326590407')
Obis(a=1, b=1, c=96, d=1, e=1, f=255)
bytearray(b'6841138BN245101090')
Obis(a=1, b=1, c=1, d=7, e=0, f=255)
826
Obis(a=1, b=1, c=2, d=7, e=0, f=255)
0
Obis(a=1, b=1, c=3, d=7, e=0, f=255)
104
Obis(a=1, b=1, c=4, d=7, e=0, f=255)
176
Obis(a=1, b=1, c=31, d=7, e=0, f=255)
237
Obis(a=1, b=1, c=51, d=7, e=0, f=255)
89
Obis(a=1, b=1, c=71, d=7, e=0, f=255)
75
Obis(a=1, b=1, c=32, d=7, e=0, f=255)
232
Obis(a=1, b=1, c=52, d=7, e=0, f=255)
233
Obis(a=1, b=1, c=72, d=7, e=0, f=255)
236
 
E EPettson skrev:
Sänkte till 2400 baud. Lite bättre.

Kod:
[17:33:31][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7
[17:33:31][D][data:265]: Kamstrup_V0001 
[17:33:31][D][data:265]: 5706567326590407   `\xff
[17:33:31][D][data:265]: 6841138BN245101090 
[17:33:31][D][data:265]:
[17:33:32][D][data:265]: \xe7   4
Sänkte också till 2400 och då får jag följande:

[12:18:03][D][data:265]: \xb6V\xb66\xf6v\x96\xd6\xf3\xfd\xfd?\xfd\xfd\xbd\xbb\xb2\xec\xd6֖\xf6}c\x9b\x97\x95\x9d\x9f\x9d\x9f\x8d\x9b\xed\xf3\xfd\xfd\xfd\xf1\xff\xbe\xff\xf7M\xed\xf3\xfd\xfd\xfb\xf1\xff\xbe\xff\xff\xff\xed \xed\xf3\xfd\xfdq\xf1\xff\xbe\xff\xff{\xbe

[12:18:03][D][data:265]: \xfd\xbf\xf1\xff\xbb-{\xbe\xfd\x97\xf1\xff\xbb-{\xbe\xfdo\xf1\xff\xbb1a
(Det var när jag hade testat att ändra till
uart:
id: uart_bus
rx_pin:
number: 3
inverted: true
baud_rate: 2400
)

Kör jag med
uart:
id: uart_bus
tx_pin: TX
rx_pin: RX
baud_rate: 2400

får jag:

[12:25:18][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7 [12:25:18][D][data:265]: Kamstrup_V0001 [12:25:18][D][data:265]: 5706567325276043 `\xff [12:25:18][D][data:265]: 6841138AN245101092 [12:25:18][D][data:265]: [12:25:19][D][data:265]: \xe9 4
 
Redigerat:
Är det någon som fåttTibber pulse att funka med Kamstrup Onmipower elmätare
 
Nu har jag försökt allt för många timmar att ens få ut något som liknar @EPettsons utdata nedan

Kod:
[17:33:31][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7
[17:33:31][D][data:265]: Kamstrup_V0001 
[17:33:31][D][data:265]: 5706567326590407   `\xff
[17:33:31][D][data:265]: 6841138BN245101090 
[17:33:31][D][data:265]:
[17:33:32][D][data:265]: \xe7   4

I bästa fall får jag typ
Kod:
15:57:46.880 -> 126
15:57:46.880 -> 162
15:57:46.880 -> 67
15:57:46.880 -> 65
15:57:46.880 -> 8
15:57:46.880 -> 131
15:57:46.880 -> 19
15:57:46.880 -> 133
15:57:46.880 -> 235
15:57:46.880 -> 230
15:57:46.880 -> 231
15:57:46.880 -> 0
15:57:46.880 -> 15
15:57:46.880 -> 64
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 27
15:57:46.880 -> 2
15:57:46.880 -> 2
15:57:46.880 -> 9
15:57:46.880 -> 6
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 255
15:57:46.880 -> 9
15:57:46.880 -> 12
15:57:46.880 -> 7
15:57:46.880 -> 230
15:57:46.880 -> 1

Försöker läsa direkt på elmätarens serieport med kretsen som bla Svanström har här
https://github.com/psvanstrom/esphome-p1reader
Använder en Wemos D1 mini. Har provat olika varianter på kod och baud, men i princip ser koden ut så här:
Kod:
byte incomingByte;
void setup() {
  Serial.begin(115200);
}
void loop() {
  if (Serial.available()) {
  incomingByte = Serial.read(); // read the incoming byte:
  Serial.print(incomingByte);
  }
}

Kan någon sparka mig i rätt riktning?
 
H Hawkai skrev:
Nu har jag försökt allt för många timmar att ens få ut något som liknar @EPettsons utdata nedan

Kod:
[17:33:31][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7
[17:33:31][D][data:265]: Kamstrup_V0001
[17:33:31][D][data:265]: 5706567326590407   `\xff
[17:33:31][D][data:265]: 6841138BN245101090
[17:33:31][D][data:265]:
[17:33:32][D][data:265]: \xe7   4

I bästa fall får jag typ
Kod:
15:57:46.880 -> 126
15:57:46.880 -> 162
15:57:46.880 -> 67
15:57:46.880 -> 65
15:57:46.880 -> 8
15:57:46.880 -> 131
15:57:46.880 -> 19
15:57:46.880 -> 133
15:57:46.880 -> 235
15:57:46.880 -> 230
15:57:46.880 -> 231
15:57:46.880 -> 0
15:57:46.880 -> 15
15:57:46.880 -> 64
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 27
15:57:46.880 -> 2
15:57:46.880 -> 2
15:57:46.880 -> 9
15:57:46.880 -> 6
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 255
15:57:46.880 -> 9
15:57:46.880 -> 12
15:57:46.880 -> 7
15:57:46.880 -> 230
15:57:46.880 -> 1

Försöker läsa direkt på elmätarens serieport med kretsen som bla Svanström har här
[länk]
Använder en Wemos D1 mini. Har provat olika varianter på kod och baud, men i princip ser koden ut så här:
Kod:
byte incomingByte;
void setup() {
  Serial.begin(115200);
}
void loop() {
  if (Serial.available()) {
  incomingByte = Serial.read(); // read the incoming byte:
  Serial.print(incomingByte);
  }
}

Kan någon sparka mig i rätt riktning?
Du gör rätt. Men det skrivs ut som decimaler. 126 = 0x7e = ~ .
Det är första tecknet i datan för den norska standarden. Det slutar vid nästa 126 eller ~

Lite rostig på arduino men om du deklarerar incomingByte som char eller castar den till char när du printar så borde du få ut det som den andra.
 
K Krolken skrev:
Du gör rätt. Men det skrivs ut som decimaler. 126 = 0x7e = ~ .
Det är första tecknet i datan för den norska standarden. Det slutar vid nästa 126 eller ~

Lite rostig på arduino men om du deklarerar incomingByte som char eller castar den till char när du printar så borde du få ut det som den andra.
Skönt, men då är jag inte helt fel ute... men tycker jag provat det mesta jag hittat därute...

Menar du typ så här?
Kod:
byte incomingByte;
void setup() {
  Serial.begin(115200);
}

void loop() {
if (Serial.available()) {
  incomingByte = Serial.read(); // read the incoming byte:
  char inChar = (char)incomingByte;
  Serial.print(inChar);
  }
}
[edit]
provat lite olika baud, men får bara skräp. Det nedan fick jag vid 2400
[/edit]
Ger tyvärr bara skräp:
16:47:46.803 -> SBc⸮C⸮⸮SB⸮c
16:47:56.797 -> SBc⸮C⸮
 
Redigerat:
H Hawkai skrev:
Nu har jag försökt allt för många timmar att ens få ut något som liknar @EPettsons utdata nedan

Kod:
[17:33:31][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7
[17:33:31][D][data:265]: Kamstrup_V0001
[17:33:31][D][data:265]: 5706567326590407   `\xff
[17:33:31][D][data:265]: 6841138BN245101090
[17:33:31][D][data:265]:
[17:33:32][D][data:265]: \xe7   4

I bästa fall får jag typ
Kod:
15:57:46.880 -> 126
15:57:46.880 -> 162
15:57:46.880 -> 67
15:57:46.880 -> 65
15:57:46.880 -> 8
15:57:46.880 -> 131
15:57:46.880 -> 19
15:57:46.880 -> 133
15:57:46.880 -> 235
15:57:46.880 -> 230
15:57:46.880 -> 231
15:57:46.880 -> 0
15:57:46.880 -> 15
15:57:46.880 -> 64
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 27
15:57:46.880 -> 2
15:57:46.880 -> 2
15:57:46.880 -> 9
15:57:46.880 -> 6
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 255
15:57:46.880 -> 9
15:57:46.880 -> 12
15:57:46.880 -> 7
15:57:46.880 -> 230
15:57:46.880 -> 1

Försöker läsa direkt på elmätarens serieport med kretsen som bla Svanström har här
[länk]
Använder en Wemos D1 mini. Har provat olika varianter på kod och baud, men i princip ser koden ut så här:
Kod:
byte incomingByte;
void setup() {
  Serial.begin(115200);
}
void loop() {
  if (Serial.available()) {
  incomingByte = Serial.read(); // read the incoming byte:
  Serial.print(incomingByte);
  }
}

Kan någon sparka mig i rätt riktning?
Här försöker jag förklara protokollet:
https://github.com/aviborg/swedishP1/blob/main/data/aidon20201108_112447.txt
 
H Hawkai skrev:
Nu har jag försökt allt för många timmar att ens få ut något som liknar @EPettsons utdata nedan

Kod:
[17:33:31][D][data:265]: ~\xa0\xe2+!#\x9a\xe6\xe7
[17:33:31][D][data:265]: Kamstrup_V0001
[17:33:31][D][data:265]: 5706567326590407   `\xff
[17:33:31][D][data:265]: 6841138BN245101090
[17:33:31][D][data:265]:
[17:33:32][D][data:265]: \xe7   4

I bästa fall får jag typ
Kod:
15:57:46.880 -> 126
15:57:46.880 -> 162
15:57:46.880 -> 67
15:57:46.880 -> 65
15:57:46.880 -> 8
15:57:46.880 -> 131
15:57:46.880 -> 19
15:57:46.880 -> 133
15:57:46.880 -> 235
15:57:46.880 -> 230
15:57:46.880 -> 231
15:57:46.880 -> 0
15:57:46.880 -> 15
15:57:46.880 -> 64
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 27
15:57:46.880 -> 2
15:57:46.880 -> 2
15:57:46.880 -> 9
15:57:46.880 -> 6
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 1
15:57:46.880 -> 0
15:57:46.880 -> 0
15:57:46.880 -> 255
15:57:46.880 -> 9
15:57:46.880 -> 12
15:57:46.880 -> 7
15:57:46.880 -> 230
15:57:46.880 -> 1

Försöker läsa direkt på elmätarens serieport med kretsen som bla Svanström har här
[länk]
Använder en Wemos D1 mini. Har provat olika varianter på kod och baud, men i princip ser koden ut så här:
Kod:
byte incomingByte;
void setup() {
  Serial.begin(115200);
}
void loop() {
  if (Serial.available()) {
  incomingByte = Serial.read(); // read the incoming byte:
  Serial.print(incomingByte);
  }
}

Kan någon sparka mig i rätt riktning?
Du kan ju prova den här?
https://github.com/aviborg/esp-smart-meter
 
A aviborg skrev:
Här försöker jag förklara protokollet:
[länk]
Tack, ska kolla på det senn

Det jag trodde jag skulle se med mina försök att läsa serieporten är det här exemplet som du har på din GitHub. Är det så det borde se ut direkt på porten eller är den datan behandlad på något sätt?
Kod:
/XMX5LGBBFFB231314239
1-3:0.2.8(42)
0-0:1.0.0(180924132132S)
0-0:96.1.1(4532323036303137363437393334353135)
1-0:1.8.1(011522.839*kWh)
1-0:1.8.2(010310.991*kWh)
1-0:2.8.1(000000.000*kWh)
1-0:2.8.2(000000.000*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.503*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(00015)
0-0:96.7.9(00005)
1-0:99.97.0(5)(0-0:96.7.19)(170520130938S)(0000005627*s)(170325044014W)(0043178677*s)
1-0:32.32.0(00002)
1-0:52.32.0(00002)
1-0:72.32.0(00002)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.1()
0-0:96.13.0()
1-0:31.7.0(001*A)
1-0:51.7.0(001*A)
1-0:71.7.0(001*A)
1-0:21.7.0(00.086*kW)
1-0:41.7.0(00.250*kW)
1-0:61.7.0(00.166*kW)
1-0:22.7.0(00.000*kW)
1-0:42.7.0(00.000*kW)
1-0:62.7.0(00.000*kW)
0-1:24.1.0(003)
0-1:96.1.0(4731303138333430313538383732343334)
0-1:24.2.1(180924130000S)(04890.857*m3)
!FCA6
 
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.