roarfred Skrevet 25. oktober 2017 Forfatter Skrevet 25. oktober 2017 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... Siter
roarfred Skrevet 25. oktober 2017 Forfatter Skrevet 25. oktober 2017 (endret) 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 25. oktober 2017 av roarfred Siter
xibriz Skrevet 26. oktober 2017 Skrevet 26. oktober 2017 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. Siter
xibriz Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 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. Siter
roarfred Skrevet 27. oktober 2017 Forfatter Skrevet 27. oktober 2017 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. Siter
Marius-H Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 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.. Siter
roarfred Skrevet 27. oktober 2017 Forfatter Skrevet 27. oktober 2017 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... Siter
xibriz Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 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. Siter
Actibus Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 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. Siter
roarfred Skrevet 27. oktober 2017 Forfatter Skrevet 27. oktober 2017 6 hours ago, xibriz said: Jeg målte jo på min før porten ble aktivert. Konstant 24v. Takk, skal prøve å huske det denne gang Siter
roarfred Skrevet 27. oktober 2017 Forfatter Skrevet 27. oktober 2017 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. Siter
xibriz Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 Prøvde med software serial i kveld uten og komme noen vei. Prøvde også Sitat Serial.swap () uten hell. I morgen må jeg krype til korset å finne fram en ren ESP8266 chip. Siter
Marius-H Skrevet 27. oktober 2017 Skrevet 27. oktober 2017 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. Siter
roarfred Skrevet 27. oktober 2017 Forfatter Skrevet 27. oktober 2017 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. 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 Siter
xibriz Skrevet 29. oktober 2017 Skrevet 29. oktober 2017 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? Siter
roarfred Skrevet 29. oktober 2017 Forfatter Skrevet 29. oktober 2017 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? Siter
xibriz Skrevet 29. oktober 2017 Skrevet 29. oktober 2017 (endret) Ja helt lik unntatt R8 og en kondensator med litt andre verdier. Får forresten ikke testet før tidligst Tirsdag. Er på jobbreise. Endret 29. oktober 2017 av xibriz Siter
xibriz Skrevet 31. oktober 2017 Skrevet 31. oktober 2017 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: Siter
roarfred Skrevet 31. oktober 2017 Forfatter Skrevet 31. oktober 2017 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 Siter
xibriz Skrevet 31. oktober 2017 Skrevet 31. oktober 2017 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? Siter
roarfred Skrevet 31. oktober 2017 Forfatter Skrevet 31. oktober 2017 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(" "); } Siter
xibriz Skrevet 1. november 2017 Skrevet 1. november 2017 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? Siter
roarfred Skrevet 1. november 2017 Forfatter Skrevet 1. november 2017 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. I 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 Siter
xibriz Skrevet 1. november 2017 Skrevet 1. november 2017 25 minutter siden, roarfred skrev: Start og slutt på 126 (0x7E) er helt riktig. I 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..... Siter
xibriz Skrevet 1. november 2017 Skrevet 1. november 2017 (endret) 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 1. november 2017 av xibriz Siter
Anbefalte innlegg
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.