* Jag hade i princip hårdvaran för mottagaren färdig
* Termometern var billig
* Jag kan ha nytta av det i hemautomationen
* Att jag faktiskt kan göra det

Termometern ifråga är denna, art.nr 48640:

Strategi:
1. Lista ut hur den kommunicerar
Öppnar manualen: 433MHz, sänder data en gång per minut.
2. Försöka "se" det data som skickas
Här krävs någon form av logger för att sampla signalen(har inget oscilloskop). Öppnade sändaren och såg att termometern och RF-modulatorn var fint separerade på kretskortet. Mellan de två delarna fanns en signalledare. Men stor sannolikhet det data jag ville kika på.
Som logger använder jag hårdvaran från en sån här. *smygreklam* (har gjort stora delar av programvaran och sitter på utvecklingsverktygen). Inuti sitter en en DSP som piskar de flesta AVR/PIC och naturligtvis är det väldigt "overkill" för att sampla en termometer

Anyway.. en timer sattes upp till 192kHz och en cirkulär buffert på några sekunder används för att sampla datapinnen på sändaren.
3. Analysera data
När jag "såg" datat på en skvaller-LED stoppade jag emulatorn och dumpade bufferten till en fil på datorn som jag sedan öppnade i Adobe Audition(bild).
Efter en del klurande kunde jag konstatera att pulslängen definerade '1' (~300us) eller '0' (~700us). Mellan varje bit fanns ett space-tecken (~520us).
Totalt skickas 44 bitar och alla dessa skickas dessutom en gång till med ca 30ms paus emellan.
Att gruppera bitarna var inte helt trivialt. Genom att göra flera olika samplingar och samtidigt skriva upp vad den riktiga termometern visade kunde jag lista ut det viktigaste. Följande bild kan se lite förvirrande ut men lugn, jag ska förklara:
Varje rad är en samplingssekvens (ett helt meddelande alltså), temperaturen står längst till vänster. Totalt är det 6 samplingar gjorda, uppdelade i 5 jämförelser (rad 2 och 3 är samma, 4 och 5 osv..).
I varje jämförelse är skillnader markerade med rött.
Vad jag kom fram till:
Kolumn A: Ändras inte, är förmodligen enhetens adress men eftersom jag bara ha en sändare kan jag inte verifiera.
Kolumn B: Ingen aning...
Kolumn C: Tiotalssiffran+5 (antar att man vill slippa 2-komplement..)
Kolumn D: Entalssiffran
Kolumn E: Tiondelen
Kolumn F: Kopia av C
Kolumn G: Kopia av D
Kolumn H: Ingen aning...
Paketet borde innehålla någon form av felkontroll/checksumma så det inte står orimlig temperatur på displayen i en minut.
4. Implementera
Jag vet tillräckligt för att kunna avläsa temperaturen och gjorde därför en liten enkel flanktriggad rutin som lyssnar efter data (trådbundet), mäter pulslängder och skriver ut den binära strängen. Fungerade!

Än så länge bara trådbundet alltså, plockade upp för mycket skräp när jag testade via radio, måste lägga in ett filter och tänka över flanktriggningen lite mer.
5. Klura vidare...
De sista bitarna (bokstavligt talat) är inte lösta... här behöver jag elektronikforumets smarta hjärnor till hjälp.
6. Användningsområden...
* Avläsa termometern med en liten uC och billig RF-demodulator... kan ju användas till många saker. Mer intressant:
* Skicka data till termometerdislayen. Man skulle t.ex. kunna visa antal mail i inboxen på termometern!

PS. Vår "Konftel 300" som jag länkat till släpps officiellt i morgon men tydligen så har tyskarna smygstartat, därav länken till den tyska sidan
