Vittja data från trådlös elmätare

Berätta om dina pågående projekt.
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Vittja data från trådlös elmätare

Inlägg av kng »

Tja, det kändes dags att starta min första tråd här.

Är sedan länge mätgalning och har en drös 1-wire givare i huset, inklusive huvudelmätaren.
Såg att conrad hade prisvärda trådlösa elmätare: voltcraft energy count 3000.
Vart mycket nöjd med dessa och undrade såklart hur man skulle kunna få in detta i datorn. Klart det finns färdiga system baserat på t.ex zigbee men i en helt annan prisklass. Så, har sökt och sökt på nätet och inte hittat särskilt mycket information om varesig exakt frekvens eller protokoll, inte ens usb-mottagare verkar finnas.
Så, då återstår bara reverse engineering, va ? (:

Plockade isär mottagaren och kunde ganska snabbt konstatera att det är två feta mås-skitar på den, där den ena verkar vara radiomottagare och den andra ordnar resten.
Bild
Bild
Bild


Sagt och gjort, lödde fast tunna trådar på de fem ledningsbanor som inte var spänningsmatning till den mindre måsskiten och kopplade upp den till min Saleae logic.
En hel drös data uppenbarade sig, zoomade in och det såg minsann ut som SPI, sånär som på nån extra ledning som såg helt galen ut :P
två byte skärmdump.
Mycket mer än så hann jag inte igår. Hann mest spekulera i enable signalen som verkade vara aktiv för två byte i stöten, vilket borde tala för 16bit överföringar av något slag.

Tanken var att i slutändan koppla in en atmega som fick sniffa lämpliga ledningar och spotta ut vettig data över seriesnöre som man får in i datorn för loggning till sql eller liknande. Det är dock en herrejösses massa data som måste tolkas och avkodas innan det kan bli verklighet.
Har en backup plan på det hela, det sitter en SO8 bredvid den större måsskiten som jag misstänker är eeprom för lagring av config+data (icke flyktig data, man kan slita ut batterierna och den glömmer inget). Så om radiodatan är allt för kryptisk så borde man ju kunna sniffa det den sparar i prommen istället. Har inte hunnit logga den trafiken än men det dröjer nog inte så länge.

Större bilder och diverse data och anteckningar finns på: http://www.kng.se/voltcraft/

All info och feedback tas gladeligen emot (:
Användarvisningsbild
PeterH
Inlägg: 8636
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Vittja data från trådlös elmätare

Inlägg av PeterH »

Välkommen till forumet :) Det här kommer jag följa med stor spänning, har tänkt på det många gånger men hittar inte riktigt tiden...
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Tackar (:

Vart ivrig och lödde om trådarna till SO8'an som satt där med bortslipat namn. Tvärkollade på elfa angående pinout och kom fram till att den nog matchar 24C08 vilket ju är kul. Dock kan jag inte I2C riktigt, så den är lagom svårtolkad nu. Har I2C analysator i Logic som visar allt i klartext, så det är ju inte på bit-nivå man måste luska.
Denna loggning finns i "voltcraft_05.logicdata" på siten.
Bild

Hoppas jag valde rätt på SDA/SCL :P Men det ser då rimligt ut.. om bittarna är rätt återstår dock att se, finns några inställningar för I2C analysatorn att leka med.

Hade inte planerat att löda lös prommen, men om allt annat failar så kanske det blir så.
ToPNoTCH
Inlägg: 5111
Blev medlem: 21 december 2009, 17:59:48

Re: Vittja data från trådlös elmätare

Inlägg av ToPNoTCH »

Ser onekligen ut som I2C men jag kan inte uttyda "Stop Data Transfer" enl. 24C08.

Är det bara pinout som gör att du gissar på Microchip flash eller har du fler "signs" ?
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Jag ser att det är lite udda artifakter i signalerna, sitter och försöker lära mig I2C samtidigt som jag tyder datan jag får ut, för det mesta är det hyffsat logiskt men det är en del skumma saker som pågår.
En del saker kan dock bero på samplingshastigheten i loggningen, kan kicka upp den tills datorn storknar och se om det blir bättre imorrn :P

Ett microchip 24Cxx passar pinouten perfekt, dels är det pullup på "SDA" och sen är det bara en till ledning från den stora mås-skiten, borde vara SCL. SPI har alldelens för många pinnar och sen vet jag inte om det finns så många få-pinnars eprommar ?
Ett av adressbenen (E2) är draget till 0V och två verkar lämnade (mätte inte, får kolla imorrn om dom går till +3V) vilket tyder på 24C08 eftersom den använder E2 men inte E1 och E0 (utan har A8 och A9 där).

Har laddat upp http://www.kng.se/voltcraft/voltcraft_mem_01.txt och min hand-tolkning av den http://www.kng.se/voltcraft/eeprom_01.txt för att se ungefär vart den läser/skriver. Microchip har 0b1010xxxx (0xA0-0xAF) som hårdkodad identifiering på sina 24Cxx, vilket återkommer ständigt i loggen.

Jag tror det är enklast att sniffa den data som ska till eprommen om man vill logga dom "sparade" elmätarna och slippa gå lös på radiodatan :P
Har en bild på de pinnar jag döpt på kortet: http://www.kng.se/voltcraft/ledningsnamn_01.jpg
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Ett tips, ladda ner Logic programmet (gratis och full funktion) och rota i datan som finns på min site, där kan man ju fippla hur mkt som helst med rådatan (:
http://www.saleae.com/downloads/
version 1.1.x krävs för de loggar jag sparar nu.
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Sitter och glor på datan jag loggat nu och kan inte annat än att konstatera att det är fula signaler och elände som gör att det inte tolkas helt korrekt i Logic's I2C-analysator, t.ex så verkar den missa bytes som läses ut pga att bussen hoppar till eller växlar på både SDA och SCL samtidigt m.m. Det finns inga inställningar som gör tolkningen bättre/tolerantare heller.

Har loggat uppstart och ytterligare en "scan", så det blir nog att korrigera den info man får ut av I2C analysen med handtydd data som inte tolkats.

Datorn klarade 16MHz samplingsfrekvens och när de kortaste pulserna är typ 20-25us så tror jag nog att den inte missar något viktigt. Som tur är så lagras bara förändringarna, så filerna blir inte enorma bara för att man har mycket samplingar.
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Oh holy crap.. nu har poletten äntligen ramlat ner (tack J10), hade väldigt svårt att förstå I2C eeprom adresseringen först, men nu verkar det funka :P
Jag har handtolkat bytes som logic missat, men det är oftast bara en i slutet av en sekventiell läsning.

Har lokaliserat en del data iaf, adresserna till sändarna sparas på adress 0x01C0 och är i little-endian, min ser ut såhär:
E2 42 A2 38 38 26 55 27 E3 30 00 00 00 00 00 00 00 00
(id1) (id2) (id3) (id4) (id5) (id6) (id7) (id8) (id9)
Första mottagaren har en lapp med "ID: 42E2" t.ex

Håller på att dekoda i vilka areor den lagrar mätvärden nu, men det vart sent och jag har inte fått hundra ordning på den biten /:
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Har loggat minnestrafiken med flera olika typer av data. Enklast möjliga sätt att stimulera fram alla data är att trycka på CH+ knappen, då läser den in den aktuella kanalens data och visar den på displayen. Har försökt skriva av alla värden varje loggning så man kan se vad som ändrats och inte.

Hur som helst så kröp jag till korset, eller kanske snarare stillade min nyfikenhet genom att läsa ur hela eprommet med min trogna MP3.5.
Valde helt sonika 24C08 i Multiprog och läste ur, funkade perfa, här är hexfilen (:
http://www.kng.se/voltcraft/voltcraft_ee.hex

Minneskartan är följande (kanal 1-5 verfierade, resten extrapolerat)
Kanal, start-stop #1, start-stop #2
1 0x0000-0x002A 0x0210-0x0217
2 0x0030-0x005A 0x0240-0x0247
3 0x0060-0x008A 0x0270-0x0277
4 0x0090-0x00BA 0x02A0-0x02A7
5 0x00C0-0x00EA 0x02D0-0x02D7
6 0x00F0-0x011A 0x0300-0x0307
7 0x0120-0x014A 0x0330-0x0337
8 0x0150-0x017A 0x0360-0x0367
9 0x0180-0x01AA 0x0390-0x0397

Som jag skrev tidigare, själva mätaradresserna finns på 0x01C0-0x01C8 (fylld med 00 till 0x01CF).
Andra parametrar såsom tariff borde finnas på 0x01D0-0x01D9 och läses bara vid uppstart.

Dessa är de värden som borde finnas i ovan nämd hexfil:
1 0.0W 33.30cost 0.0max 10.504/m 37.00kWh 126.04/y 2134on 2314tot
2 0.0W 557.0cost 0.0max 121.44/m 618.9kWh 1457.3/y 3036on 3348tot
3 18.7W 108.37cost 258.4max 31.57/m 120.41kWh 378.9/y 2505on 2505tot
4 0.0W 0.181cost 1225.4max 0.925/m 202.0Wh 11.100/y 0.168on 143.42tot
5 153.4W 910.4cost 154.5max 631.4/m 1011.5kWh 7577/y 1052.4on 1052.4tot

cost, per month, per year är säkert magiska och baseras på tariff och andra osmarta algoritmer.
De data man borde kunna identifiera är momentan effekt, ackumulerad effekt, timmar på, timmar totalt.
Mig veteligen är det little-endian 16bit tal för momentan effekt, ackumulerad kan vara större, timmar borde också vara 16-bit.

Någon som har koll på hur man brukar spara decimaltal osv i minnen ?
Fransson
Inlägg: 525
Blev medlem: 20 maj 2006, 12:27:55
Ort: Bagarmossen (sthlm)

Re: Vittja data från trådlös elmätare

Inlägg av Fransson »

Nästa steg borde väl vara parallell loggning av datakommunikationen mellan "mås-skitarna" och trafiken till minnet. Då kan du använda trafiken till minnet som mall för att lära dig tolka trafiken mellan "mås-skitarna".
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Ja, varför inte.. Riggade hela rasket och körde en uppstart + scanning, håll till godo :P
http://www.kng.se/voltcraft/all_lines_01.logicdata

Jag kommer nog inte att börja med att gå lös på den datan, är först och främst intresserad av att få ut momentan effekt samt ackumulerad effekt ur eeprommen, sen kan det bli aktuellt att rota i radiodatan (:
ekman
Inlägg: 280
Blev medlem: 13 januari 2009, 14:04:35

Re: Vittja data från trådlös elmätare

Inlägg av ekman »

Förstår mig verkligen inte på det här, men mycket roligt att följa i alla fall :)
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Ett litet fynd iaf, undersökte tariff och kom fram till följande:
Den sparar data (rätta mig om jag har fel) i BCD och skickas i rak little-endian på adress 0x01D2 och tre byte framåt, t.ex (hex):
00 50 00 = 0.500
00 00 01 = 1.000
40 23 01 = 1.234

Tror inte detta med BCD gäller övrig data då det mesta innehåller 00-FF.
Tariff ändrar dessutom aktuell kostnad och år/månads-kostnad så den används bara för visning av data, inte för lagring.

Försök nummer två är reset av kanal, alltså "nollställa" räknarna.
Det jobbiga med att resetta en kanal är att den öppnar ytterligare en funktion i enheten, nämligen SAVE, vilket ska visa skillnaden från föregående avläsningar... eller nått sånt. Ser att den skrev i områden efter dom jag sett tidigare, t.ex 0x002C-0x002F där den normalt bara skrivit till 0x002A tidigare.
Har listat ut att den sparar sin SAVE-data baserat på cost/month i BCD på 0x002C (kanal1), min data "75 14 01 00" betyder "11.475kWh" multiplicerat med tariff (vilket jag har på 1.000 för enkelhetens skull).

Har fortfarande inte lyckats isolera vart all diskret data hamnar och i vilket format, vilket käns lite störande.
kng
Inlägg: 28
Blev medlem: 20 december 2010, 19:11:00
Ort: Umeå

Re: Vittja data från trådlös elmätare

Inlägg av kng »

Nu så.. nu börjar det likna något.
Kom på att man kan nollställa värden i både mottagare och sändare, vilket ju ger helt olika resultat iom att det är envägskommunikation.
Om man nollställer i mottagaren så sparas ackumulerad effekt i ett offsetregister som subtraheras från framtida mätningar, om man däremot nollställer på sändaren så skickar den ju nollor till mottagaren... båda hjälper ju till i analysen av systemet.
Detta är vad jag hittat hittills, kan inte lova att det stämmer på all data eftersom det kan vara mer saker som påverkar än jag upptäckt.
Allt är baserat på kanal 1, lägst adress är högst värde (little-endian):
0x0000-0x0001: max effekt
0x0002-0x0003: aktuell effekt
0x0004-0x0007: ackumulerad effekt
0x000B-0x000D: tid på
0x000F-0x0011: tid totalt (mätare igång)
0x0025-0x0028: offset på ackumulerad effekt vid nollställning i mottagare

Talen som sådana är aningen magiska, om man vet svaret och dividerar med typ 3600 så får man ibland 16, eller ibland 40 eller 160.. så det lär ju vara någon slags flyttal eller täljare/nämnare på nått vis.
danielr112
Inlägg: 8092
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Vittja data från trådlös elmätare

Inlägg av danielr112 »

Du sa det att alla andra lösningar är dyrare. Men Plugwise är ju billigare per enhet än denna du länkade till.

Om inte annat grymt bra jobbat! Önskar jag hade tiden själv.
Skriv svar