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

Hårek

Medlemmer
  • Innlegg

    192
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    3

Alt skrevet av Hårek

  1. Bruk interrupt for å detektere at noe endrer seg. Se eksempel her: https://www.allaboutcircuits.com/technical-articles/using-interrupts-on-arduino/
  2. Ja, den er trekantkoblet. Bryter på to av faselederne.
  3. Tok avlesing av effekt og strøm. Har en 6 kW varmekolbe som dominerer belastningen, 3-fas, med totrinns bryter. Opererer bryteren og leser av etter ca 1/2 minutt: Avslått: 1,7 kW, L1 3,9A, L3 3,6A 1/2 effekt: 4,9 kW, L1 15,6A, L3 16A Full effekt: 8,1 kW, L1 19,1A, L3 19,1A Kommer dessverre ikke til med strømtang i skapet, det er for trangt.
  4. Prøv Free Serial Analyzer. https://freeserialanalyzer.com/ Serieport parametre er 2400, 8, N, 1
  5. Har ikke lagt opp til å analysere reaktiv effekt. Men ut fra lagrede verdier så er det litt import i et par minutter av gangen. Mulig det er når termostaten på varmepumpen slår inn, det har jeg ingen kontroll på. Så vidt jeg kan se i farten er alle effekt verdiene unsigned.
  6. Har en luft/luft varmepumpe, og induksjonstopp. Siste døgn har jeg 100 kWh forbruk, 0,13 kWh reaktiv import, og 3,47 kWh reaktiv export. (Aidon, IT)
  7. Akkurat det kan jeg ikke si noe om, har helt forskjellig programvare (som vises på det bildet hver gang noen linker til 'roarfred' sin tråd ?) Regner med at andre har det du trenger.
  8. Nei, tror ikke det. Har annen hardware enn din, men det står jo ikke noe merking som skulle tilsi at det har betydning. Når det gjelder data, så ser det bra ut. Første linjen du la ut: 7e a0 2a 41 08 83 13 04 13 e6 e7 00 0f 40 00 00 00 00 01 01 02 03 09 06 01 00 01 07 00 ff 06 00 00 06 a8 02 02 0f 00 16 1b 6d 01 7e Active power import 1704 W
  9. Ja, det er nok slik det bør implementeres. Gikk tidlig bort fra å se etter end flag.
  10. Det stemmer nok. Har Aidon og IT, og den sender strøm kun for 2 faser. Det er 12 'items' i Liste 2, ikke 13.
  11. Parity skal være None. Serieport instilling er 2400, 8, N, 1. Begynnelsen på meldingen er OK, fram til rundt 14 - 15 bytes. Jeg har annen hardware ("TSS721 M-BUS To TTL" og "USR-TCP232-T2").
  12. Vente en stund? Denne kommer bare en gang i timen. Alt annet kommer hvert 10 sekund (på Aidon).
  13. Fikk en SMS fra Hafslund rett før kl 17: "Det lykkes oss dessverre ikke å åpne HAN-porten på din strømmåler. Vi vil forsøke på nytt neste uke ..." Så oppdaget jeg at det var aktivitet på den gamle loggeren, med 24V spenning. Koblet til min nye logger, og jovisst har jeg data. ?
  14. Det ser riktig ut. Her er en alterativ måte å se det på. Kommer fra metoden jeg nevnte før i dag: choice: {array: SEQUENCE OF{ choice: {structure: SEQUENCE OF{ choice: {octetString: 0100010700ff}, choice: {doubleLongUnsigned: 1785}, choice: {structure: SEQUENCE OF{ choice: {integer: 0}, choice: {enumerate: 27}}}}}}}
  15. Jeg fant løsningen i OpenMUC jDLMS, som nevnt et par poster over her. Åpenbaringen kom da jeg sendte meldingen (som begynner med 0109) inn i org.openmuc.jdlms.internal.asn1.cosem.Data klassen. Så fikk jeg hele strukturen vist i toString(). Dette er ganske kompleks kode. Den er rekursiv på en finurlig måte. Den inneholder også funksjoner for å generere meldinger, de fjernet jeg for å kunne kompilere uten å dra inn alt for mye. Det siste du spør om er 'scaler' og 'unit'. Hvis du har dokumentene fra tronde, se BS EN 62056-6-2:2013 side 30 : "Table 3 – Enumerated values for physical units"
  16. Sorry, feil bok. Det skulle vært Excerpt_GB8.pdf. Har Java kode som fungerer så langt, men var ikke oppmerksom på at "bit-stuffing" kan forekomme. Noe jeg må se på.
  17. Har jobbet med OpenMUC jDLMS, Java implementation of the DLMS/COSEM protocol. Trodde det var en god mulighet til å bruke ferdig kode. Men det er 360 filer med veldig lite dokumentasjon, og ikke spesielt godt strukturert. Prøvde å kjøre HDLC frame dekoderen der, men den feiler få LLC Control byte, som er 0x13 på våre data. De vil dekode en FrameType som ikke er definert. Nå har jeg masse lesestoff som tronde var så vennlig å legge ut, skal jobbe meg gjennom det først. Edit: kom et langt stykke videre med OpenMUC jDLMS. Fant en klasse som kan dekode det meste av innholdet, rekursivt. Nå må jeg prøve å finne ut hvordan det fungerer.
  18. Aner ikke hvorfor det blir slik. Og JS kan jeg fint lite av. Men hjelper denne? https://stackoverflow.com/questions/5320439/how-do-i-swap-endian-ness-byte-order-of-a-variable-in-javascript
  19. Det er den som kommer nærmest, men byttet endian. Får 0xC4E0 istedet for 0xe0c4.
  20. Det er en 16-bit CRC. Men det finnes visst mange algorimer for dette. https://stackoverflow.com/questions/45795958/javascript-crc16-sample-code-or-implementation Har ikke så mye peiling på detaljene, var heldig og fant ferdiglagd kode i Java.
  21. Ikke droppe frame type. Du begynner første byte etter Flag. Lengden er gitt av byte 2, 0xD2 = 210. Det er inkludert FCS.
  22. 7E skal ikke være med. Jeg tar heller ikke med FCS.
  23. Hele pakken i et buffer (list1), uten start flag. I Aidon eksemplet begynner den med a0d2. Framelength = 210. Lengden jeg gir til utregningen er da 208. FCS = e0c4 Det er veriden jeg får tilbake fra GXFCS16.countFCS16().
  24. boolean frameOk = false; int ffb1 = list1.get(0); // Read the two Frame Format bytes int ffb2 = list1.get(1); if ((ffb1 & 0xf0) == HDLC_FRAME_FORMAT3) { // Check that we have the Frame Format field, then this is start flag int frameLength = ((ffb1 & 0x03) << 8) + ffb2; int fcsb1 = list1.get(frameLength - 2); // Get 2-byte checksum at tail int fcsb2 = list1.get(frameLength - 1); int fcs = (fcsb1 << 8) + fcsb2; frameOk = checkFcs(list1, frameLength - 2, 0, fcs); // Check FCS. if (!frameOk) { System.out.println("HDLC: CRC fail"); } } private boolean checkFcs(List<Integer> messageData, int length, int offset, int fcsValue) { int chksum = GXFCS16.countFCS16(messageData, offset, length); return chksum == fcsValue; } Her er min kode for å sjekke FCS. GXFCS16 på Github: https://github.com/Gurux/gurux.dlms.java/blob/master/development/src/main/java/gurux/dlms/GXFCS16.java
  25. Hva koder du i? RoarFred har lagt ut en C# implementasjon, jeg fant en i Java som jeg bruker.
×
×
  • 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.