Skip to content

anse1/klimalogg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GNU Radio RX and decoder for a “Thermo-/Hygrosender TFA 30.3180.IT”

This repository contains a GNU Radio Companion flowchart, a perl decoder and some notes I wrote for receiving the signals of a wireless thermometer/hygrometer TFA KLIMALOGG PRO 30.3039.IT.

receiver

  • 868.3 MHz
  • OOK, symbol rate about 85 kHz

klimalogg.png

bit fiddling

The messages from the sensor match the following regular expression:

(?:01){10}1101111(.{168})1(?:01){20}0{10}
^-sync prefix    ^-payload ^-suffix

The payload has every second bit set to 1. Removing them, the following message remains:

010000101011100100001110101101100001000101000001010000000110000011110110101010111100
cccccccccccciiiiiiiiiiiiiiiiaaaabbbbccccddddHHHHHHHHccccccccccccNNNNccccccccSSSSSSSS
^-constant  ^-hex digits    |   |   |   |   |       ^-constant  |   |       ^-checksum
              of ID sticker |   |   |   |   ^-humidity, binary  |   ^-constant
                            ^---^---^---^--temperature, BCD     ^-transmission counter

All numbers are sent LSB first. The following function yields the value from the sensor display. I have no idea what the perpetual 8 in digit b means…

t(a,c,d) = (a-4)*10 + d + c*0.1 °C

decoder invocation

klimalogg.pl listens on UDP port 35000, decodes the incoming bits and stores them in a postgres database. It expects the following table to be present:

create table klimalogg(t timestamptz default now(), hygro int2, temp float, raw bit varying);
create index on klimalogg using brin (t);

known bugs

  • Clock recovery fails on every second telegram
  • AGC stage is missing
  • DC removal currently implemented with an AddConst block

About

GNU Radio RX and decoder for a "Thermo-/Hygrosender TFA 30.3180.IT"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages