Funk-wetterstations-protokoll: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
Zeile 192: Zeile 192:
 
lu = Luftfeuchtigkeit    20-99<br>
 
lu = Luftfeuchtigkeit    20-99<br>
 
crc = CRC Checksumme<br>
 
crc = CRC Checksumme<br>
 +
<br>
 +
Protokoll Aufbau:<br>
 +
<br>
 +
Bit Selektion mittels Zeitspannen monuladion des Ausbleibenden traeger signals.<br>
 +
mittels Zeitspannen monuladion des Traegers wird zwichen normale Bits (450 bis 519us) und einer<br>
 +
unvollstaendigen uebertragung unterschieden (360 bis 369us).<br>
 +
Datenblock Start Uebertragungs ankuendigung durch traeger pause von 8890 bis 8919us.<br>
 +
Logisch "1" Pegel Endspricht einer traeer pause von 4000us bis 4048us<br>
 +
Logisch "0" Pegel Endspricht einer traeer pause von 1920us bis 1999us<br>
 +
Der Datenblock ende wird mittels leicht Verlaengertem "0" oder "1" Pegel angekuendigt,<br>
 +
die Letes Bit "0" Pegel endspricht einer traeger pause von 2070 bis 2089us,<br>
 +
sowie Letzes Bit "1" Pegel endspricht einer traeger pause von 4130 bis 4169us.<br>
 +
Jeder Gueltige Datenblock besteht aus 37 Traeger Pulsen, und somit 36 Bits.<br>
 +
um funkstoerungen aus zu gleichen, wird jeder Datenblock innerhalb eines telegrams, 7 bis 9 mal wiederholt.<br>
 +
<br>
 
<br>
 
<br>
 
=== Linux shell Script für eigene Daten Auswertung/Aufbereitung ===
 
=== Linux shell Script für eigene Daten Auswertung/Aufbereitung ===
 
<source lang="bash">
 
<source lang="bash">
 
cat -                                                  |
 
cat -                                                  |
    while read Line1 ; do echo $Line1                   |
+
        while read Line1 ; do echo $Line1               |
        sed 's/p.*\ 36[0-9]$/End-/'                     |      #      End-            pulse  362us bis 368us
+
                sed 's/p.*\ 4[56789][0-9]$/_/'         |      #      "_"            pulse  450us bis 519us
        sed 's/p.*\ 4[789][0-9]$/_/'                   |      #       _              pulse  474us bis 509us
+
                sed 's/p.*\ 5[01][0-9]$/_/'             |      #
        sed 's/p.*\ 5[0][0-9]$/_/'                     |      #
+
                sed 's/p.*\ 36[0-9]$/End-/'             |      #       "End-"          pulse  360us bis 369us
        sed 's/s.*\ 89[01][0-9]$/Start/'               |      #      Start           space 8908us bis 8914us
+
                sed 's/s.*\ 89[01][0-9]$/Start/'       |      #      "Start"        space 8890us bis 8919us
         sed 's/s.*\ 19[456][0-9]$/L/'                   |      #      L               space 1943us bis 1968us
+
                sed 's/s.*\ 88[9][0-9]$/Start/'         |      #
        sed 's/s.*\ 40[123][0-9]$/H/'                   |      #      H               space 4015us bis 4038us
+
                sed 's/s.*\ 19[23456789][0-9]$/L/'     |      #      "L"            space 1920us bis 1999us
        sed 's/s.*\ 207[0-9]$/End-low\\\\n/'           |      #      End-low         space 2072us bis 2079us
+
                sed 's/s.*\ 40[01234][0-9]$/H/'         |      #      "H"            space 4000us bis 4049us
        sed 's/s.*\ 41[45][0-9]$/End-high\\\\n/'       |      #      End-high        space 4148us bis 4155us
+
                sed 's/s.*\ 20[78][0-9]$/End-l\\\\n/'   |      #      "End-l"         space 2070us bis 2089us
        sed 's/s.*\ 16777215$/Pause/'                           #      Pause
+
                sed 's/s.*\ 41[3456][0-9]$/End-h\\\\n/' |      #      "End-h"        space 4130us bis 4169us
    done                                               |
+
                sed 's/s.*\ 16777215$/Pause/'                   #      "Pause"
    while read Line2 ; do
+
        done                                           |
        if [ "$Line2" = "Pause" ] ; then
+
        while read Line2 ; do
                echo -en "\n$Line2\n"
+
                if [ "$Line2" = "Pause" ] ; then
        else
+
                        echo -en "\n$Line2\n"
                echo -en "$Line2"
+
                else
        fi
+
                        echo -en "$Line2"
    done
+
                fi
 +
        done
 
</source><br>
 
</source><br>
<br>
 
 
<br>
 
<br>
 
=== Beispiel Ausgaben des Scripts ===
 
=== Beispiel Ausgaben des Scripts ===

Version vom 28. Juli 2009, 09:37 Uhr

Protokoll Analyse der Funk Wetterstation der Firma Krippl Watches GmbH
Verkauft bei Aldi

Funk Wetterstation:
http://www.produktservice.info/shop/index.aspx?view=3&product_id=83
Bilder:
Vorderseite, Ausgeschaltet
Vorderseite, Eingeschaltet
Hinterseite
Innen Ansicht

Aussensensor mit Temperatur und Luftfeuchtigkeits Messung:
http://www.produktservice.info/shop/index.aspx?view=3&product_id=37
Preis 7,50 Euro
Bilder:
Vorderseite<
Hinterseite Geschlossen<
Hinterseite Batteriefach Offen<
Innen Ansicht, Übersicht<
Innen Ansicht, Prozessor Platine<
Innen Ansicht, Sende Platine
Innen Ansicht, Temp und Feuchte Sensor

Der Aussensensor übermittelt die daten über funk, mittels 433 Mhz,
Jeweils alle ca. 5 minuten, 3 gleiche Sequenzen.
an einer wetter basis können maximal 3 Aussensensoren erkannt werden.

Protokoll Analyse:

Aufbau Aussensensor Aufgeschraubt, Entfernung funk modul, Sende signal "Aufnahme"/Dekodierung mittels PC mit Seriellem port und Lirc Software.
Aufzeichnung mit mode2 binary, umleitung in eine datei.

Analysierte Daten:

Bit Signal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
C C C C C C C C C R R L te te te te te te te te te te te te lu lu lu lu lu lu lu lu crc crc crc crc
wertigkeit 0,1 0,2 0,4 0,8 1,6 3,2 6,4 12,8 25,6 51,2 102,4 negativ 1 2 4 8 10 20 40 80
Bit Mess. 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7

C = Kanal, Batt Status ?
R = Random ? ? ? selten änderung ? ? ?
L = Low Pegel ? ? ?
te = Temperatur ~ -51,2 bis +65,5 Max Illegal = -76,8 und +127,9
lu = Luftfeuchtigkeit 20-99
crc = CRC Checksumme

Protokoll Aufbau:

Bit Selektion mittels Zeitspannen monuladion des Ausbleibenden traeger signals.
mittels Zeitspannen monuladion des Traegers wird zwichen normale Bits (450 bis 519us) und einer
unvollstaendigen uebertragung unterschieden (360 bis 369us).
Datenblock Start Uebertragungs ankuendigung durch traeger pause von 8890 bis 8919us.
Logisch "1" Pegel Endspricht einer traeer pause von 4000us bis 4048us
Logisch "0" Pegel Endspricht einer traeer pause von 1920us bis 1999us
Der Datenblock ende wird mittels leicht Verlaengertem "0" oder "1" Pegel angekuendigt,
die Letes Bit "0" Pegel endspricht einer traeger pause von 2070 bis 2089us,
sowie Letzes Bit "1" Pegel endspricht einer traeger pause von 4130 bis 4169us.
Jeder Gueltige Datenblock besteht aus 37 Traeger Pulsen, und somit 36 Bits.
um funkstoerungen aus zu gleichen, wird jeder Datenblock innerhalb eines telegrams, 7 bis 9 mal wiederholt.


Linux shell Script für eigene Daten Auswertung/Aufbereitung

cat -                                                   |
        while read Line1 ; do echo $Line1               |
                sed 's/p.*\ 4[56789][0-9]$/_/'          |       #       "_"             pulse  450us bis 519us
                sed 's/p.*\ 5[01][0-9]$/_/'             |       #
                sed 's/p.*\ 36[0-9]$/End-/'             |       #       "End-"          pulse  360us bis 369us
                sed 's/s.*\ 89[01][0-9]$/Start/'        |       #       "Start"         space 8890us bis 8919us
                sed 's/s.*\ 88[9][0-9]$/Start/'         |       #
                sed 's/s.*\ 19[23456789][0-9]$/L/'      |       #       "L"             space 1920us bis 1999us
                sed 's/s.*\ 40[01234][0-9]$/H/'         |       #       "H"             space 4000us bis 4049us
                sed 's/s.*\ 20[78][0-9]$/End-l\\\\n/'   |       #       "End-l"         space 2070us bis 2089us
                sed 's/s.*\ 41[3456][0-9]$/End-h\\\\n/' |       #       "End-h"         space 4130us bis 4169us
                sed 's/s.*\ 16777215$/Pause/'                   #       "Pause"
        done                                            |
        while read Line2 ; do
                if [ "$Line2" = "Pause" ] ; then
                        echo -en "\n$Line2\n"
                else
                        echo -en "$Line2"
                fi
        done


Beispiel Ausgaben des Scripts

Sensor Geschaltet auf Kanal 1
Pause
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_L_L_L_L_L_L_H_L_H_L_L_End-low
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_LEnd-
Pause
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_Start_H_L_L_L_L_H_H_H_L_L_L_L_L_H_L_H_L_L_L_L_H_L_L_L_H_L_L_H_H_H_L_L_H_L_L_End-high
_StartEnd-
Pause



Kleines Beispiel Programm, vor einigen jahren für einen PIC16F877 Geschrieben.
http://www.keyb.de/pic/pic16f877_temp_sensor_daten_auswerten_und_8bit_lcd_v01.asm
unveränderter BETA status 02.11.2007.


Rückfragen: (Michael Schultz) ethersex [at] keyb [dot] de