Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Lesing av AMS data (AMS/HAN -> IoT)


Anbefalte innlegg

Nå begynner det å bli spennende her...

 

Har laget to test-prosjekter, ett for Kaifa og et for Kamstrup. Legger så inn en sample av hver pakke-type i en konstant, for å simulere mottatte data.

Finner ut:

1) Kamstrup sin List#2 klarer ikke å bli lest. Her må jeg debugge litt mer

2) Stømmen fra min måler kommer ut i A/1000 mens Kamstrup gir den i A/100

 

Festlig :) Aner at her kommer firmware update...

Lenke til kommentar
Del på andre sider

1 hour ago, roarfred said:

Nå begynner det å bli spennende her...

 

Har laget to test-prosjekter, ett for Kaifa og et for Kamstrup. Legger så inn en sample av hver pakke-type i en konstant, for å simulere mottatte data.

Finner ut:

1) Kamstrup sin List#2 klarer ikke å bli lest. Her må jeg debugge litt mer

2) Stømmen fra min måler kommer ut i A/1000 mens Kamstrup gir den i A/100

 

Festlig :) Aner at her kommer firmware update...

1) viste seg å være jeg som hadde vært sparsommelig med størrelsen på et buffer. Var ikke plass til kjempe-pakkene fra Kamstrup :) Økt fra 256 til 512 bytes, og da kunne både list 1 og list 2 leses fint

 

Var det noen som forstod begrepet OBIS? Er det slik at en gitt OBIS kode også burde angi størrelse (desimalplass) på verdiene?

 

Kaifa sier strøm (L1) kommer på OBIS 1.0.31.7.0.255, at denne er i A(mpere) og at det er en long-signed

Kamstrup sier strøm (L1) kommer på OBIS 1.1.31.7.0.255, at denne er i A(mpere) og at det er en unsigned

 

Likevel ser det altså ut som verdien fra Kaifa skal deles på 1000 og den fra Kamstrup skal deles på 100

 

Jeg har funnet følgende koder for selve dataene:

09: byte array/string, brukt for dato, tekst og OBIS

06: 32 bit integer, brukt for støm, effekt

12: 16 bit integer, brukt for spenning hos Kamstrup

02: 8 bit integer (byte), brukt for antall elementer i listen

0A: String (bare hos Kamstrup, Kaifa nytter 09 for tekst)

(Dette er ren reverse-engineering, veldig interessert i om det finnes dokumentasjon på dette) 

 

Edit: Står forresten noe som kan stemme med dette på side 34 i Blue Book:

https://github.com/roarfred/AmsToMqttBridge/blob/master/Documentation/Excerpt_GB8.pdf

 

Endret av roarfred
Lenke til kommentar
Del på andre sider

8 timer siden, roarfred skrev:

1) viste seg å være jeg som hadde vært sparsommelig med størrelsen på et buffer. Var ikke plass til kjempe-pakkene fra Kamstrup :) Økt fra 256 til 512 bytes, og da kunne både list 1 og list 2 leses fint

 

Var det noen som forstod begrepet OBIS? Er det slik at en gitt OBIS kode også burde angi størrelse (desimalplass) på verdiene?

 

Kaifa sier strøm (L1) kommer på OBIS 1.0.31.7.0.255, at denne er i A(mpere) og at det er en long-signed

Kamstrup sier strøm (L1) kommer på OBIS 1.1.31.7.0.255, at denne er i A(mpere) og at det er en unsigned

 

Likevel ser det altså ut som verdien fra Kaifa skal deles på 1000 og den fra Kamstrup skal deles på 100

 

Jeg har funnet følgende koder for selve dataene:

09: byte array/string, brukt for dato, tekst og OBIS

06: 32 bit integer, brukt for støm, effekt

12: 16 bit integer, brukt for spenning hos Kamstrup

02: 8 bit integer (byte), brukt for antall elementer i listen

0A: String (bare hos Kamstrup, Kaifa nytter 09 for tekst)

(Dette er ren reverse-engineering, veldig interessert i om det finnes dokumentasjon på dette) 

 

Edit: Står forresten noe som kan stemme med dette på side 34 i Blue Book:

https://github.com/roarfred/AmsToMqttBridge/blob/master/Documentation/Excerpt_GB8.pdf

 

 

Holdt på med dette litt i går kveld. Vet ikke om det var jeg som gjorde noe feil eller om det er relatert, men jeg fikk bare ut en serie med spørsmålstegn.

 

 

Måtte avbryte før jeg fant ut av hva som var problemet.

 

Lenke til kommentar
Del på andre sider

Jeg holdt på med dette noen timer i går men klarte ikke å lese inn noe data på ESPen.

 

Jeg har ett NodeMCU dev board som jeg testet med, og etter hva jeg har lest er RX-pinnen opptatt med kommunikasjon via USB til PCen. Så man kan ikke bruke den til dette formålet.

 

Jeg har noen løse ESP8266-chipper som jeg får prøve med istedet.

Lenke til kommentar
Del på andre sider

1 hour ago, xibriz said:

Jeg holdt på med dette noen timer i går men klarte ikke å lese inn noe data på ESPen.

 

Jeg har ett NodeMCU dev board som jeg testet med, og etter hva jeg har lest er RX-pinnen opptatt med kommunikasjon via USB til PCen. Så man kan ikke bruke den til dette formålet.

 

Jeg har noen løse ESP8266-chipper som jeg får prøve med istedet.

Det stemmer at det er samme serieporten som nyttes. Et alternativ kan være å bruke en SoftwareSerial, da kan du selv angi pinnene. En utfordring med dette er at denne ikke takler Even parity, men på Kamstrup måleren blir ikke det noe problem.

Lenke til kommentar
Del på andre sider

Da har jeg fått målt på min utgang. Kamstrup 3 fas måler. Min ligger på ca 24v på høy og ca 16-18 på low. Det er ikke 2 sek pr på min. Men kanskje 4? Skal sette opp Arduino i kveld dersom jeg finner en npn transistor i boksen med mye rart i. Foreløpig har jeg bare kontroll på 520 mosfet forsterkerne på kjøkkenbenken.. 

Lenke til kommentar
Del på andre sider

10 minutes ago, Marius-H said:

Da har jeg fått målt på min utgang. Kamstrup 3 fas måler. Min ligger på ca 24v på høy og ca 16-18 på low. Det er ikke 2 sek pr på min. Men kanskje 4? Skal sette opp Arduino i kveld dersom jeg finner en npn transistor i boksen med mye rart i. Foreløpig har jeg bare kontroll på 520 mosfet forsterkerne på kjøkkenbenken.. 

Det er riktig at det ikke er 2 sek intervall på Kamstrup sin måler. De kjører med kun 2 ulike lister (data pakker), mens Kaifa og Aidon har 3. Hos Kamstrup kommer det data fra List1 hvert 10. sekund og fra List2 hver time. Se eksempel her: https://github.com/roarfred/AmsToMqttBridge/blob/master/Samples/Kamstrup/HAN 20171019 xibriz4.txt

 

Hvor lenge du måler lavt nivå med måleapparatet avhenger av mange faktorer. I teorien 229 bytes * 10 bit/byte / 2400baud = ca. 1 sek. Så kommer forsinkelse i måleapparatet og slikt inn. Med verdiene du skriver du får er jeg ganske sikker på at din HAN port er aktiv.

 

Hadde for øvrig vært interessant å målt på en måler der vi vet at HAN porten ikke er aktivert. Noen som har lett tilgang til en? Fint om vi evt. også får med fabrikat...

Lenke til kommentar
Del på andre sider

10 minutter siden, roarfred skrev:

Det er riktig at det ikke er 2 sek intervall på Kamstrup sin måler. De kjører med kun 2 ulike lister (data pakker), mens Kaifa og Aidon har 3. Hos Kamstrup kommer det data fra List1 hvert 10. sekund og fra List2 hver time. Se eksempel her: https://github.com/roarfred/AmsToMqttBridge/blob/master/Samples/Kamstrup/HAN 20171019 xibriz4.txt

 

Hvor lenge du måler lavt nivå med måleapparatet avhenger av mange faktorer. I teorien 229 bytes * 10 bit/byte / 2400baud = ca. 1 sek. Så kommer forsinkelse i måleapparatet og slikt inn. Med verdiene du skriver du får er jeg ganske sikker på at din HAN port er aktiv.

 

Hadde for øvrig vært interessant å målt på en måler der vi vet at HAN porten ikke er aktivert. Noen som har lett tilgang til en? Fint om vi evt. også får med fabrikat...

 

Jeg målte jo på min før porten ble aktivert. Konstant 24v.

Lenke til kommentar
Del på andre sider

Fikk installert ny måler på onsdag, en Aidon, men fikk svar fra Skagerak at HAN porten ikke var klar til å aktiveres ennå :(

 



HAN grensesnittet ikke er ferdig avklart fra NVE enda. Hva som kunden vil få av data her er ikke endelig ferdig klarlagt. Derfor er den så langt ikke aktivert. 

Som grensesnitt er det MBUS (EN 13757-2) over en RJ-45 (ISO/IEC 8877) kontakt. Datastrøm fastsettes ved valg av OBIS koder som skal strømme ut på grensesnittet i predefinerte

intervall.

Lenke til kommentar
Del på andre sider

1 hour ago, Actibus said:

Fikk installert ny måler på onsdag, en Aidon, men fikk svar fra Skagerak at HAN porten ikke var klar til å aktiveres ennå :(

 

 

 

Det er for så vidt riktig at NVE har gitt e-lagene frist fram til 1. jan 2019 med å tilby kundene tilgang til HAN porten. At ikke Aidon er like klar som de to andre målerne finner jeg vanskelig å tro, men kanskje har de gode grunner til å holde tilbake... Jeg vil nok anta (håper!) at vi kommer å se endringer etter hvert, hos Kamstrup og Kaifa, og at kommunikasjon og innhold blir mer samstemt. Når dette skjer vil kretsen vi har laget her helt enkelt slutte å sende ut data, og vi må kode inn en evt. justering for det endelige HAN formatet.

Lenke til kommentar
Del på andre sider

16 minutes ago, Marius-H said:

Noen som kan hjelpe meg med motstand-valg. Så slipper jeg åpne elektronikkboka fra 1997?

 

Har brukt denne kretsen. Men den reduserer til 13 høy og 10v lav for meg.

 

LaFonera_Hardware_Serial-Cable-Port_11_s

Jeg herjet mye fram og tilbake med dette før jeg gav opp...

 

Du trenger bare den øverste delen da du skal bare motta data.

 

Så kommer første utfordringen, inn-signalet ditt veksler mellom 20 og 15 volt, og du ønsker å oversette det til hhv 3.3 og 0V (litt slingring er lov, men si over 2.5 og under 0.5)

 

Her er problemet i at transistoren må ha emitter rett i jord for å trekke deg ned så langt som mulig mot jord. Ved 15V skal denne altså ikke lede (dvs. minst mulig) mens ved 20V skal den lede mest mulig. Utfordringen er da at om du deler 15V ned til si 0.4V, så vil ikke 20V gi noe særlig mer enn 0.53V, så det blir litt hårfint... Ikke umulig, men sannsynligvis må du inn med et ekstra ledd for å forsterke.

 

Husk også at denne kretsen vil invertere signalet, og det ønsker du ikke. Løsningen på det er å ha enda et transistortrinn for å snu tilbake, det hjelper deg også litt med problemet ovenfor.

 

Jeg laget to løsninger, først en med en zener-diode som droppet bort ca. 12V fra inngangssignalet, og deretter brukte et slikt dobbelt transistortrinn.

Neste bruker en enkel opamp (plukket tilfeldig LM358, fordi den lå lagelig til, og den tillot driftspenning rett fra HAN porten)

 

Begge deler er tilgjengelig fra min github, for den første skissen må du bla tilbake på commits til nokså tidlig

 

 

Lenke til kommentar
Del på andre sider

Da fortsetter jeg i riktig tråd @roarfred :)

 

Jeg målte rett på RX og den ligger på 3.26v og dropper til rett under 1v. Litt vanskelig å se på multimeteret. Kanskje den ikke dropper langt nok ned for ESPen? Funket jo med FTDIen.

 

Kanskje jeg skal hive inn en debuglinje som skriver ut absolutt alt som mottas i HanReader.cpp?

Lenke til kommentar
Del på andre sider

12 hours ago, xibriz said:

Da fortsetter jeg i riktig tråd @roarfred :)

 

Jeg målte rett på RX og den ligger på 3.26v og dropper til rett under 1v. Litt vanskelig å se på multimeteret. Kanskje den ikke dropper langt nok ned for ESPen? Funket jo med FTDIen.

 

Kanskje jeg skal hive inn en debuglinje som skriver ut absolutt alt som mottas i HanReader.cpp?

Ja, bare legg inn en linje som skriver ut den byte som mottas, og gjerne et mellomrom... Da skal det være relativt lett å kjenne igjen resulatet, og du kan evt. justere litt på kretsen mens den er live for å se om det dukker opp noe fornuftig...

 

Er forresten kretsen helt lik den som nå ligger ute på min github, med unntak av R8 som er fjernet?

Lenke til kommentar
Del på andre sider

På 10/29/2017 den 17.54, roarfred skrev:

Ja, bare legg inn en linje som skriver ut den byte som mottas, og gjerne et mellomrom... Da skal det være relativt lett å kjenne igjen resulatet, og du kan evt. justere litt på kretsen mens den er live for å se om det dukker opp noe fornuftig...

 

Er forresten kretsen helt lik den som nå ligger ute på min github, med unntak av R8 som er fjernet?

 

Jeg gjorde slik:

 


bool HanReader::read(byte data)
{
	if (debug) debug->println(data);
	if (reader.Read(data))
	{
		bytesRead = reader.GetRawData(buffer, 0, 512);
		listSize = getInt(1, buffer, 0, bytesRead);
		return true;
	}
	if (debug) debug->println(bytesRead);	
	
}

Her er resultatet:

126
0

List size: 0: 160
0

List size: 0: 227
0

List size: 0: 43
0

List size: 0: 33
0

List size: 0: 19
0

List size: 0: 152
0

List size: 0: 134
0

List size: 0: 230
0

List size: 0: 231
0

List size: 0: 0
0

List size: 0: 15
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 12
0

List size: 0: 7
0

List size: 0: 225
0

List size: 0: 10
0

List size: 0: 31
0

List size: 0: 2
0

List size: 0: 22
0

List size: 0: 7
0

List size: 0: 20
0

List size: 0: 255
0

List size: 0: 128
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 25
0

List size: 0: 10
0

List size: 0: 14
0

List size: 0: 75
0

List size: 0: 97
0

List size: 0: 109
0

List size: 0: 115
0

List size: 0: 116
0

List size: 0: 114
0

List size: 0: 117
0

List size: 0: 112
0

List size: 0: 95
0

List size: 0: 86
0

List size: 0: 48
0

List size: 0: 48
0

List size: 0: 48
0

List size: 0: 49
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 5
0

List size: 0: 255
0

List size: 0: 10
0

List size: 0: 16
0

List size: 0: 53
0

List size: 0: 55
0

List size: 0: 48
0

List size: 0: 54
0

List size: 0: 53
0

List size: 0: 54
0

List size: 0: 55
0

List size: 0: 50
0

List size: 0: 55
0

List size: 0: 52
0

List size: 0: 51
0

List size: 0: 56
0

List size: 0: 57
0

List size: 0: 55
0

List size: 0: 48
0

List size: 0: 50
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 96
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 255
0

List size: 0: 10
0

List size: 0: 18
0

List size: 0: 54
0

List size: 0: 56
0

List size: 0: 52
0

List size: 0: 49
0

List size: 0: 49
0

List size: 0: 50
0

List size: 0: 49
0

List size: 0: 66
0

List size: 0: 78
0

List size: 0: 50
0

List size: 0: 52
0

List size: 0: 51
0

List size: 0: 49
0

List size: 0: 48
0

List size: 0: 49
0

List size: 0: 48
0

List size: 0: 52
0

List size: 0: 48
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 7
0

List size: 0: 161
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 2
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 3
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 4
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 253
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 31
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 230
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 51
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 1
0

List size: 0: 17
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 71
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 85
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 32
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 18
0

List size: 0: 0
0

List size: 0: 232
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 52
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 18
0

List size: 0: 0
0

List size: 0: 230
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 0
0

List size: 0: 18
0

List size: 0: 233
0

List size: 0: 126
0

List size: 0: 

 

Lenke til kommentar
Del på andre sider

10 minutes ago, xibriz said:

 

Jeg gjorde slik:

 



bool HanReader::read(byte data)
{
	if (debug) debug->println(data);
	if (reader.Read(data))
	{
		bytesRead = reader.GetRawData(buffer, 0, 512);
		listSize = getInt(1, buffer, 0, bytesRead);
		return true;
	}
	if (debug) debug->println(bytesRead);	
	
}

Her er resultatet:


126
0

List size: 0: 160
0

List size: 0: 227
0

List size: 0: 43
0

List size: 0: 33
0

List size: 0: 19
0

List size: 0: 152
0

List size: 0: 134
0

List size: 0: 230
0

List size: 0: 231
0

List size: 0: 0
0

List size: 0: 15
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 12
0

List size: 0: 7
0

List size: 0: 225
0

List size: 0: 10
0

List size: 0: 31
0

List size: 0: 2
0

List size: 0: 22
0

List size: 0: 7
0

List size: 0: 20
0

List size: 0: 255
0

List size: 0: 128
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 25
0

List size: 0: 10
0

List size: 0: 14
0

List size: 0: 75
0

List size: 0: 97
0

List size: 0: 109
0

List size: 0: 115
0

List size: 0: 116
0

List size: 0: 114
0

List size: 0: 117
0

List size: 0: 112
0

List size: 0: 95
0

List size: 0: 86
0

List size: 0: 48
0

List size: 0: 48
0

List size: 0: 48
0

List size: 0: 49
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 5
0

List size: 0: 255
0

List size: 0: 10
0

List size: 0: 16
0

List size: 0: 53
0

List size: 0: 55
0

List size: 0: 48
0

List size: 0: 54
0

List size: 0: 53
0

List size: 0: 54
0

List size: 0: 55
0

List size: 0: 50
0

List size: 0: 55
0

List size: 0: 52
0

List size: 0: 51
0

List size: 0: 56
0

List size: 0: 57
0

List size: 0: 55
0

List size: 0: 48
0

List size: 0: 50
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 96
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 255
0

List size: 0: 10
0

List size: 0: 18
0

List size: 0: 54
0

List size: 0: 56
0

List size: 0: 52
0

List size: 0: 49
0

List size: 0: 49
0

List size: 0: 50
0

List size: 0: 49
0

List size: 0: 66
0

List size: 0: 78
0

List size: 0: 50
0

List size: 0: 52
0

List size: 0: 51
0

List size: 0: 49
0

List size: 0: 48
0

List size: 0: 49
0

List size: 0: 48
0

List size: 0: 52
0

List size: 0: 48
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 7
0

List size: 0: 161
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 2
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 3
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 4
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 253
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 31
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 230
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 51
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 1
0

List size: 0: 17
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 71
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 6
0

List size: 0: 0
0

List size: 0: 0
0

List size: 0: 2
0

List size: 0: 85
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 32
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 18
0

List size: 0: 0
0

List size: 0: 232
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 1
0

List size: 0: 52
0

List size: 0: 7
0

List size: 0: 0
0

List size: 0: 255
0

List size: 0: 18
0

List size: 0: 0
0

List size: 0: 230
0

List size: 0: 9
0

List size: 0: 6
0

List size: 0: 1
0

List size: 0: 0
0

List size: 0: 18
0

List size: 0: 233
0

List size: 0: 126
0

List size: 0: 

 

Kan du fjerne alt som skriver utenom data, og legge inn et parameter HEX på denne? Fint med et mellomrom og sånn at utlistingen blir omtrent slik:

01 22 33 44 11 22 33

Lenke til kommentar
Del på andre sider

10 minutter siden, roarfred skrev:

Kan du fjerne alt som skriver utenom data, og legge inn et parameter HEX på denne? Fint med et mellomrom og sånn at utlistingen blir omtrent slik:

01 22 33 44 11 22 33

 

Når jeg skriver ut byteverdien direkte med print/println så får jeg bare desimalverdien (126 istedet for 7E). Hvordan printer jeg den som hex?

Lenke til kommentar
Del på andre sider

14 minutes ago, xibriz said:

 

Når jeg skriver ut byteverdien direkte med print/println så får jeg bare desimalverdien (126 istedet for 7E). Hvordan printer jeg den som hex?

Noe slik som dette:

if (debug) debug->println(data, HEX);

Kan da gjerne ha mellomrom og, så noe slik:

Quote

if (debug) 
{
    debug->println(data, HEX);
    debug->println(" ");
}

 

Lenke til kommentar
Del på andre sider

8 timer siden, roarfred skrev:

Noe slik som dette:


if (debug) debug->println(data, HEX);

Kan da gjerne ha mellomrom og, så noe slik:

 

 

Jeg skal fikse det i kveld.

 

Siden det kommer data som starter å slutter på 126, så antar jeg at typen liste ikke blir bestemt? Eller kan det være noe annet?

Lenke til kommentar
Del på andre sider

56 minutes ago, xibriz said:

 

Jeg skal fikse det i kveld.

 

Siden det kommer data som starter å slutter på 126, så antar jeg at typen liste ikke blir bestemt? Eller kan det være noe annet?

Start og slutt på 126 (0x7E) er helt riktig.

DlmsReader::Read finner du logikken i innlesing av pakken. I prinsippet følger denne følgende mønster:

  • Pakken må starte med 7E
  • Frame-format valideres (må ha A som første del av byte nr 2)
  • Lengden på pakken leses fra byte 2/3
  • Headeren sin checksum kontrolleres
  • Den totale pakken sin checksum kontrolleres
  • Siste byte er 0x7E

Når alt dette slår til, så vil read() returnere true, for da vet vi at vi har en pakke hvor alt stemmer i hht. DLMS.

HanReader klassen handler så om å bruke denne pakken for å slå opp spesifikke verdier.

 

Jeg har testet med dine data (se KamstrupTest prosjektet), så vi vet at koden skal fungere.

 

Forresten, hviken kode bruker du?

  • I Code/ESPDebugger ligger en litt eldre versjon som nå kjører på min måler (tror ikke denne vil virke uten endringer hos deg)
  • I Code/Arduino/HanReader/src finner du nyeste versjon (denne har noen endringer, eks. er buffer øket til 512 bytes)

Det er absolutt å anbefale å bruke den sistnevnte. Denne er også lagt opp til å kunne bli et Arduino bibliotek. Du kan evt. kopiere inn alle filer fra Code/Arduino/HanReader/src og inn i Code/ESPDebugger. Etter det får du litt små justeringer, men du kan kikke i KamstrupTest.ino for hvordan det skal gjøres med List-enums fra Kamstrup.h filen

Lenke til kommentar
Del på andre sider

25 minutter siden, roarfred skrev:

Start og slutt på 126 (0x7E) er helt riktig.

DlmsReader::Read finner du logikken i innlesing av pakken. I prinsippet følger denne følgende mønster:

  • Pakken må starte med 7E
  • Frame-format valideres (må ha A som første del av byte nr 2)
  • Lengden på pakken leses fra byte 2/3
  • Headeren sin checksum kontrolleres
  • Den totale pakken sin checksum kontrolleres
  • Siste byte er 0x7E

Når alt dette slår til, så vil read() returnere true, for da vet vi at vi har en pakke hvor alt stemmer i hht. DLMS.

HanReader klassen handler så om å bruke denne pakken for å slå opp spesifikke verdier.

 

Jeg har testet med dine data (se KamstrupTest prosjektet), så vi vet at koden skal fungere.

 

Forresten, hviken kode bruker du?

  • I Code/ESPDebugger ligger en litt eldre versjon som nå kjører på min måler (tror ikke denne vil virke uten endringer hos deg)
  • I Code/Arduino/HanReader/src finner du nyeste versjon (denne har noen endringer, eks. er buffer øket til 512 bytes)

Det er absolutt å anbefale å bruke den sistnevnte. Denne er også lagt opp til å kunne bli et Arduino bibliotek. Du kan evt. kopiere inn alle filer fra Code/Arduino/HanReader/src og inn i Code/ESPDebugger. Etter det får du litt små justeringer, men du kan kikke i KamstrupTest.ino for hvordan det skal gjøres med List-enums fra Kamstrup.h filen

 

Jeg bruker koden fra  Code/Arduino/HanReader/src (har sett at bufferet er på 512 bytes i koden jeg bruker).

 

Tok utgangspunkt i KamstrupTest.ino så jeg vet at det jeg har fungerer med "sampledata", men av ukjente årsaker ikke med data som leses direkte.

 

Vi får se i kveld, kanskje det mangler noen bytes når det leses inn direkte eller noe.....

Lenke til kommentar
Del på andre sider

21 timer siden, roarfred skrev:

Noe slik som dette:


if (debug) debug->println(data, HEX);

Kan da gjerne ha mellomrom og, så noe slik:

 

 

Her:

 

7E A0 E3 2B 21 13 98 86 E6 E7 0 F 0 0 0 0 9 C 7 E1 B 1 3 13 28 32 FF 80 0 0 2 19 A E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 9 6 1 1 0 0 5 FF A 10 35 37 30 36 35 36 37 32 37 34 33 38 39 37 30 32 9 6 1 1 60 1 1 FF A 12 36 38 34 31 31 32 31 42 4E 32 34 33 31 30 31 30 34 30 9 6 1 1 1 7 0 FF 6 0 0 12 71 9 6 1 1 2 7 0 FF 6 0 0 0 0 9 6 1 1 3 7 0 FF 6 0 0 0 0 9 6 1 1 4 7 0 FF 6 0 0 1 F5 9 6 1 1 1F 7 0 FF 6 0 0 4 62 9 6 1 1 33 7 0 FF 6 0 0 3 FC 9 6 1 1 47 7 0 FF 6 0 0 6 5B 9 6 1 1 20 7 0 FF 12 0 E4 9 6 1 1 34 7 0 FF 12 0 E0 9 6 1 1 0 12 E4 7E 

Formatert litt bedre:

 

7E A0 E3 2B 21 13 98 86 E6 E7 00 0F 00 00 00 00 
09 0C 07 E1 0B 01 03 13 28 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 32 37 34 33 38 39 37 30 32 09 06 01 01 60 01 
01 FF 0A 12 36 38 34 31 31 32 31 42 4E 32 34 33 
31 30 31 30 34 30 09 06 01 01 01 07 00 FF 06 00 
00 12 71 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 00 09 06 01 
01 04 07 00 FF 06 00 00 01 F5 09 06 01 01 1F 07 
00 FF 06 00 00 04 62 09 06 01 01 33 07 00 FF 06 
00 00 03 FC 09 06 01 01 47 07 00 FF 06 00 00 06 
5B 09 06 01 01 20 07 00 FF 12 00 E4 09 06 01 01 
34 07 00 FF 12 00 E0 09 06 01 01 00 12 E4 7E 

 

Det ser ut som det er 224 bytes, med FTDI fikk jeg 229 bytes. Jeg kan jo sample litt mer? Men det funket ikke uansett hvor lenge den står å mottar data.

 

Edit: ja.. det ser ut som det er lengden av pakken det er problemer med...

Endret av xibriz
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.