Hallo,
ich habe mal einen Wiki-Artikel verfasst, wie ein DVB-T Stick mit RTL2832U Chip zur Funksignalanalyse benutzt werden kann.
http://www.fhemwiki.de/wiki/Funksignalanalyse_mit_DVB-T_Stick
Damit lassen sich sowohl einzelne Signale als auch der gesamte Funkverkehr in bestimmten Bereichen analysieren.
Viel Spaß damit.
sehr cool. Ich erinnere mich das es auch schon mal Ansätze gegeben hat daraus einen universal CUL zu bauen, sind aber wohl im Sand verlaufen.
vg
Jörg
Gestern abend hatte ich auch das problem das ich sehen wollte was ein 433mhz handsender sendet, ich habe ebenfalls mit nem SDR stick aufgezeichnet allerdings weis ich nicht wie ich jetzt weiterkomme,
Man sieht die signale ganz gut in audacity aber gibt es tools um den code zu analysieren ?
Und wie kann ich audacity auf µsekunden umstellen ?
Meine Aufzeichnung hänge ich mal hinten dran, das ist von Voltomat Funkschaltern aus dem Bauhaus.
https://app.box.com/s/pydi3zqxoj57mfxzlqnp
thx
Yaku
Hallo Yaku,
ich habe noch nicht nach Tools gesucht, die das analysieren können. Bislang habe ich das von Hand gemacht. Also Informationen über das Funkprotokoll gesucht und dann anhand der Puls-/Pausenlängen ausgewertet. Nach einiger Zeit kriegt man darin Übung und kann die Funksignale schnell in Bits bzw. Bytes umrechnen.
Eine feinere Einstellung für die Zeitachse habe ich in Audacity auch schon vergeblich gesucht. Ich habe das Signal mit der Zoom-Funktion so weit vergrößert, dass ich die Werte durch die Differenz in der Zeitleiste ausrechnen konnte.
Das Signal von Deiner Fernbedienung ist zumindest kein Intertechno. Es wird vermutlich nicht von einem CUL gesendet werden können.
Gruß,
Christian
Ich hab auch ein Problem mit dem beschreiben der Signale, z.B. bei den elro/brennenstuhl/vivanco die ich habe habe ich immer eine ununterbrochene Sinuskurve, bei den Voltomat ist das gepulst? hi mit halbem dutycirlce ?
Es ist immer wieder unterbrochen, ggf. bekomme ich das mit meinem Arduino hin das so zu verschicken.
Gestern hat mir jemand baudline empfohlen zum analysieren, aber das funktioniert nicht unter windows, ggf. muss ich mal mit livecd´s experimentieren.
Gibt wahrscheinlich nichts das signale und protokolle automatisch erkennt ? *träum*
danke
Yaku
Hallo,
Zitat
Ich hab auch ein Problem mit dem beschreiben der Signale, z.B. bei den elro/brennenstuhl/vivanco die ich habe habe ich immer eine ununterbrochene Sinuskurve, bei den Voltomat ist das gepulst? hi mit halbem dutycirlce ?
Ein Signal mit einer ununterbrochenen Sinuskurve habe ich hier bei einem IT+ Thermometer gesehen. Da das garantiert nicht kompatibel mit meinem SlowRF-CUL ist, ist es für mich erst mal uninteressant. Irgendwo habe ich gelesen, dass es für den Arduino ein IT+ Modul geben soll. Ich glaube aber nicht, dass er mehrere Protokolle gleichzeitig verwerten kann.
Zitat
Gestern hat mir jemand baudline empfohlen zum analysieren, aber das funktioniert nicht unter windows, ggf. muss ich mal mit livecd´s experimentieren.
Gibt wahrscheinlich nichts das signale und protokolle automatisch erkennt ? *träum*
Eine automatische Signalanalyse wird wohl Utopie bleiben. :(
Gruß,
Christian
Zitat von: C_Herrmann am 04 März 2014, 19:58:03
Eine automatische Signalanalyse wird wohl Utopie bleiben.
Frag mal bei der NSA nach...
Zitat
Frag mal bei der NSA nach...
>Jau, die haben bestimmt auch schon einen Riesen-CUL im Orbit schweben, mit dem sie alle unsere Geräte gleichzeitg schalten können. ;)
So, ich hab mal alle Befehle meiner Fernbedienung aufgezeichnet aber nur mit 8bit Auflösung, ich denke mal das reicht bei 2,4mhz Samplingfrequenz.
https://app.box.com/s/kwb30ghfrrlij6clxeix
260µsec puls
6 wiederholungen des gesammten Befehls
10600µsec zwischen dem senden.
Falls das jemand gebrauchen kann. Ich werde jetzt immer mal wieder herumprobieren wie ich Zeit habe.
Hallo Yaku,
für mich sieht das so aus, als ob auf ein Sinussignal ein FM-Puls aufmoduliert ist.
Falls Du das Gehäuse öffnen kannst, sieh mal nach, was da für ein Chip drin ist. Datenblätter sollten dann im Netz zu finden sein.
Gruß,
Christian
Auf dem Chip steht:
TE89TP16N
B332U0307#1 //gerade bei der 0 könnte es auch eine 9 oder ein O sein die Beschriftung ist schwer zu lesen.
Ok, technisch müsste es gehen die Signale so oder wenigstens ähnlich zu senden ich hab meinen Arduino im Netzwerk als Gateway.
Der Befehl ist allerdings viel länger als die anderen udp Befehle die ich fuer die 10dip senden muss und ggf. muss ich meinen Arduinosketch umschreiben um längere Codes verschicken zu können, der Anfang sieht aber schon vielversprechend aus.
Ich hab ein Bild anghängt, oben sieht man was der Arduino aktuell verschickt die Frequenz der Schwingungen ist zwar höher aber wenigstens bei den Elro/Brennenstuhl macht das kein Problem wenn das timing stimmt.
der UDP-Befehl sieht bei mir jetzt z.B. so aus(da is aber noch was falsch drin) aber teile sehen schon ganz gut aus: TXP:0,0,6,10600,260,66,1,10,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,1,1,5,1,1,1,5,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5,1,1,1,5;
Hallo,
dabei kann ich Dir nicht weiterhelfen. Viel Spass beim Experimentieren.
Gruß,
Christian
Nein bei dem Gateway usw. natürlich nicht, aber es wäre interessant wenn mehr Leute die Datagramme Ihrer Fernsteuerungen aufzeichnen würden. Natürlich so lange nichts sicherheitsrelevantes dabei ist. Wenn es jedem gelingt Rohbefehle aufzeichnen und wieder Senden zu können denke ich wäre das auch schon eine Hilfe auch wenn man die eigentliche Codierung nicht versteht. Und falls nachher jemand mit mehr Verständnis die Codes betrachtet können bibliotheken wie die RC-switch(open source lib fuer arduino und rPI) lib usw. erweitert werden.
Kann man denn beim CUL keine Rohdaten schicken ?
Hallo,
raw-Daten können gesendet werden. Mit der aktuellen Firmware ist das aber nur im Bereich SlowRF möglich. Einzelheiten dazu kannst Du unter http://culfw.de/commandref.html finden.
Komplexere Signale söllten theoretisch bei der verbauten Hardware möglich sein. Dafür müsste aber die Firmware völlig neu geschrieben werden. Aufgrund des begrenzten Speiches sind derzeit nur wenige Protokolle gleichzeitig möglich.
Gruß,
Christian
Ein Freund von mir hat heute morgen seine HE312Sv2 (Homeeasy UK) mitgebracht und die Fernbedienung hat funktioniert.
Also bin ich jetzt ziehmlich sicher das die Voltomat Homeeasy Uk benutzen.
nebenbei gibts die Sticks aktuell sehr günstig hier:
http://www.ebay.de/itm/AGH-Chic-Hot-RTL-SDR-FM-DAB-DVB-T-Dongle-Stick-RTL2832-R820T-SPC-0155-/131114030555?pt=US_Video_Capture_TV_Tuner_Cards&hash=item1e870155db&clk_rvr_id=600794326272
Moin,
ich habe nun alles nach Anleitung aufgebaut, bin aber anscheinend zu untalentiert um eine Frequenz einzustellen geschweige denn ein Funktelegramm aufzuzeichnen.
In der aktuellen Version des SDR-Sharp (und auch den anderen Versionen) gab/gibt es keine Möglichkeit die Frequenz einzustellen, ich bekomme es also nicht hin im Bereich bei 868MHz irgendwas zu sehen.
Kann mir jemand weiterhelfen oder einen Link senden, wo ich das weiter verfolgen bzw. erfragen kann?
Danke und Gruß, machnetz
Hallo machnetz,
ich benutze immer noch die Stable-Version. Dort musste noch irgendeine Datei zugefügt werden, die in den nightly's schon enthalten ist.
Zunächst muss der Stick oben links auf RTL-SDR/USB eingestellt werden.
Am linken Bildrand gibt es ein Register Radio. Dort muss WFM ausgewählt werden. Dann habe ich unter Frequency 868.336.000 und unter Center 868.400.000 eingestellt. Filter bandwidth steht auf 200000. Damit kann ich alle Geträte in diesen Bereich erkennen.
Zum Aufnehmen muss das Register "Recording (Plugin)" aufgeklappt werden. Zum Aufzeichnen der Funksignale muss Baseband und nicht Audio aktiviert sein.
In den übrigen Registern habe ich nichts verändert.
Gruß,
Christian
Ich wärme das Thema mal wieder auf...
Das Programm RTL_433 (https://github.com/merbanan/rtl_433) ist schon sehr nett:
Zitatrtl_433, an ISM band generic data receiver for RTL2832 based DVB-T receivers
Usage: = Tuner options =
[-d <RTL-SDR USB device index>] (default: 0)
[-g <gain>] (default: 0 for auto)
[-f <frequency>] [-f...] Receive frequency(s) (default: 433920000 Hz)
[-p <ppm_error] Correct rtl-sdr tuner frequency offset error (default: 0)
[-s <sample rate>] Set sample rate (default: 250000 Hz)
[-S] Force sync output (default: async)
= Demodulator options =
[-R <device>] Enable only the specified device decoding protocol (can be used multiple times)
[-G] Enable all device protocols, included those disabled by default
[-l <level>] Change detection level used to determine pulses [0-16384] (0 = auto) (default: 0)
[-z <value>] Override short value in data decoder
[-x <value>] Override long value in data decoder
[-n <value>] Specify number of samples to take (each sample is 2 bytes: 1 each of I & Q)
= Analyze/Debug options =
[-a] Analyze mode. Print a textual description of the signal. Disables decoding
[-A] Pulse Analyzer. Enable pulse analyzis and decode attempt
[-D] Print debug info on event (repeat for more info)
[-q] Quiet mode, suppress non-data messages
[-W] Overwrite mode, disable checks to prevent files from being overwritten
= File I/O options =
[-t] Test signal auto save. Use it together with analyze mode (-a -t). Creates one file per signal
Note: Saves raw I/Q samples (uint8 pcm, 2 channel). Preferred mode for generating test files
[-r <filename>] Read data from input file instead of a receiver
[-m <mode>] Data file mode for input / output file (default: 0)
0 = Raw I/Q samples (uint8, 2 channel)
1 = AM demodulated samples (int16 pcm, 1 channel)
2 = FM demodulated samples (int16) (experimental)
3 = Raw I/Q samples (cf32, 2 channel)
Note: If output file is specified, input will always be I/Q
[-F] kv|json|csv Produce decoded output in given format. Not yet supported by all drivers.
[-C] native|si|customary Convert units in decoded output.
[-T] specify number of seconds to run
[-U] Print timestamps in UTC (this may also be accomplished by invocation with TZ environment variable set).
[<filename>] Save data stream to output file (a '-' dumps samples to stdout)
Supported device protocols:
[01]* Silvercrest Remote Control
[02] Rubicson Temperature Sensor
[03] Prologue Temperature Sensor
[04] Waveman Switch Transmitter
[05]* Steffen Switch Transmitter
[06]* ELV EM 1000
[07]* ELV WS 2000
[08] LaCrosse TX Temperature / Humidity Sensor
[09]* Acurite 5n1 Weather Station
[10]* Acurite 896 Rain Gauge
[11]* Acurite 609TXC Temperature and Humidity Sensor
[12] Oregon Scientific Weather Sensor
[13]* Mebus 433
[14]* Intertechno 433
[15] KlikAanKlikUit Wireless Switch
[16] AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)
[17]* Cardin S466-TX2
[18] Fine Offset Electronics, WH-2 Sensor
[19] Nexus Temperature & Humidity Sensor
[20] Ambient Weather Temperature Sensor
[21] Calibeur RF-104 Sensor
[22]* X10 RF
[23]* DSC Security Contact
[24]* Brennstuhl RCS 2044
[25]* GT-WT-02 Sensor
[26]* Danfoss CFR Thermostat
[27]* Energy Count 3000 (868.3 MHz)
[28]* Valeo Car Key
[29] Chuango Security Technology
[30] Generic Remote SC226x EV1527
[31] TFA-Twin-Plus-30.3049 and Ea2 BL999
[32] Fine Offset WH1080 Weather Station
[33] WT450
[34] LaCrosse WS-2310 Weather Station
[35] Esperanza EWS
[36]* Efergy e2 classic
[37]* Inovalley kw9015b rain and Temperature weather station
[38] Generic temperature sensor 1
[39]* Acurite 592TXR Temperature/Humidity Sensor and 5n1 Weather Station
[40]* Acurite 986 Refrigerator / Freezer Thermometer
[41] HIDEKI TS04 Temperature and Humidity Sensor
[42] Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor
[43] CurrentCost Current Sensor
[44] emonTx OpenEnergyMonitor
[45] HT680 Remote control
[46] S3318P Temperature & Humidity Sensor
[47] Akhan 100F14 remote keyless entry
[48] Quhwa
[49] OSv1 Temperature Sensor
[50] Proove
[51] Bresser Thermo-/Hygro-Sensor 3CH
[52] Springfield Temperature and Soil Moisture
[53] Oregon Scientific SL109H Remote Thermal Hygro Sensor
[54] Acurite 606TX Temperature Sensor
[55] TFA pool temperature sensor
[56] Kedsum Temperature & Humidity Sensor
[57] blyss DC5-UK-WH (433.92 MHz)
[58] Steelmate TPMS
[59] Schraeder TPMS
[60]* LightwaveRF
[61] Elro DB286A Doorbell
[62] Efergy Optical
[63] Honda Car Key
[64]* Template decoder
[65] Fine Offset Electronics, XC0400
[66] Radiohead ASK
[67] Kerui PIR Sensor
* Disabled by default, use -R n or -G
Noch besser scheint mir: Universal-Radio Hacker. (https://github.com/jopohl/urh)
Habe einen SDR DVB-T Stick gekauft. Funktioniert super mit meinen Temperaturfühlern und dem rtl_433: Bekomme die Temperaturwerte aller Fühler ausgegeben.
Wie bekomme ich nun die Werte ins FHEM?
Habe ein kleines Java-Programm geschrieben, welches die Ausgabe von rtl_433 auswertet und die Sensordaten pro Fühler in jeweils ein eigenes Verzeichnis schreibt (und dabei auch gleich die gelieferten Fahrenheit in Celsius umrechnet):
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.ProcessBuilder.Redirect;
import java.text.DecimalFormat;
public class TempParser
{
Process sensorProgram;
static DecimalFormat df=new DecimalFormat("#.#");
public static void main(String[] args) throws IOException
{
TempParser parser=new TempParser();
parser.run();
}
public void run() throws IOException
{
startSensorProgram();
InputStream in=sensorProgram.getInputStream();
BufferedReader bin=new BufferedReader(new InputStreamReader(in));
String line=bin.readLine();
System.out.println("Header: "+line);
while( (line=bin.readLine())!=null )
{
String[] data=line.split(",");
String deviceId=data[1];
String tempStr=data[3];
String humidStr=data[4];
double tempFahrenheit=Double.parseDouble(tempStr);
double tempCelsius=(tempFahrenheit-32)*5/9;
String celString=df.format(tempCelsius);
writeValueFiles(deviceId, celString, humidStr);
}
}
private void startSensorProgram() throws IOException
{
ProcessBuilder pb=new ProcessBuilder("/usr/local/bin/rtl_433", "-R", "20", "-F", "csv");
pb.redirectError(Redirect.INHERIT);
sensorProgram = pb.start();
}
private void writeValueFiles(String deviceId, String celString, String humidStr)
{
File outputPath=new File("/var/sensor/"+deviceId);
if( !outputPath.exists() )
outputPath.mkdir();
writeValueFile(outputPath,"temp",celString);
writeValueFile(outputPath,"hydr",humidStr);
}
private void writeValueFile(File outputPath, String name, String content)
{
try
{
File outFile=new File(outputPath,name);
FileWriter fout=new FileWriter(outFile);
BufferedWriter bout=new BufferedWriter(fout);
bout.write(content);
bout.close();
System.out.println("Write value <"+content+"> to file <"+outFile+">.");
}
catch( IOException io )
{
io.printStackTrace();
}
}
}
Im FHEM habe ich dann über das Modul "CustomReadings" die einzelnen Fühler eingelesen.
Das funktioniert eigentlich recht gut.
Nun die Frage - gibt es einen besseren Weg, diese Daten ins FHEM reinzubekommen?
Obwohl die Lösung gut funktioniert, hat sie einige Nachteile. Z.B. das die Sensorwerte zeitverzögert kommen (je nach CustomReadings interval), oder es auch nicht auffällt wenn ein Sensor ausfällt - es bleibt immer der letzte empfangene Wert angezeigt.