• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

WLAN Maverick BBQ-Thermometer - Raspberry Pi Edition

der_gute

Militanter Veganer
Hi!
In diesem Thread könnt ihr nachlesen, wie ihr die Funksignale eures Maverick BBQ Thermometers am Raspberry auslesen könnt!
Ein Eingriff am Maverick ist nicht nötig, sodass ihr euer Gerät nicht kaputtmachen könnt :-).

Vorab: Ich setze bei dem Howto eine gewisse Grundkenntnis voraus.
Folgende Themen werde ich in diesem Howto nicht behandeln: initiale Einrichtung das Raspberries, Einrichtung von wiringPI, GPIO PIN Verteilung.

1. Anschluss des 433 MHz Receivers
Zum Einsatz kommt dieser Receiver:
http://www.amazon.de/Aukru-Superregeneration-Transmitter-Modul-receiver-module-433M-Empfänger-Modul/dp/B00OLI93IC/ref=sr_1_1?ie=UTF8&qid=1427028249&sr=8-1&keywords=433+mhz+receiver

Damit der Receiver funktionieren kann, muss dieser zunächst an den RPi angeschlossen werden (am einfachsten geht es mit Breadboard jumper Kabeln). Dies erfolgt über 3 Kabel: VCC, GND, DATA.
VCC sollte an den 3.3V GPIO Port, GND an einen Ground Port, Data geht an einen offenen GPIO Port. In meinem Setup wurde der GPIO PIN 4(BCM Nummerierung) verwendet.
Auf dem Receiver sind die Eingänge beschriftet, sodass ziemlich schnell deutlich werden sollte wo was angeschlossen werden sollte.

1.1 Antenne
Hier kann eine Kuferdraht mit 17,3 cm länge (sollte eingehalten werden) an den ANT Anschluss gelötet werden. Bei mir hat dies die Entfernung auf 2 M erhöht.

2. Einrichtung des Programms
Zunächst muss die Datei aus dem Anhang (maverick.c) in ein Verzeichnis auf dem PI kopiert werden.
Befindet sich die Datei auf dem Pi, kann diese mithilfe eines Editor bearbeitet werden, um den GPIO Port (BCM Bezeichnung verwenden!) anzupassen an dem sich der DATA Pin des Empfängers befindet.
#define PIN 4

In dem Programm können weitere Parameter zum debuggen aktiviert werden, die zunächst aussen vor gelassen werden. Interessant ist es, wie das Programm in anderen Umgebungen läuft bzw. ob das Script so übernommen werden kann.

2.1 Kompilieren des Programms
Ist der GPIO Pin gesetzt, muss das Programm nun noch kompiliert werden.
Dies erfolgt mit gcc. Desweiteren muss wiringpi installiert sein, damit bestimmte Funktionen genutzt werden können.
http://wiringpi.com/download-and-install/

gcc lässt sich mit sudo apt-get install gcc installieren.

Dann in das Verzeichnis mit der Datei maverick.c wechseln und folgenden Befehl ausführen:
gcc maverick.c -o maverick -lwiringPi

Der Prozess sollte ohne Rückmeldung durchlaufen.
Anschließend befindet sich im Ordner eine ausführbare Datei maverick.
Diese Datei muss nun im Hintergrund ausgeführt werden und schreibt ein Logfile, aus dem man die Temperatur entnehmen kann:
sudo ./maverick > maverick.log 2>&1 &
Wird die Datei nicht im Hintergrund, sondern im Vordergrund ausgeführt, nimmt die Ausgabe des Programms eine zu hohe Auslastung an und sorgt dafür, dass das Programm nicht korrekt laufen kann.

In der Logdatei kann man nun die Temperatur sehen:
Preamble detected @5451565
Byte 1:0xAA @1156605436 (5451573)
Byte 2:0x99 @1156609507 (5451577)
Byte 3:0x95 @1156613468 (5451581)
Byte 4:0x59 @1156617447 (5451585)
Byte 5:0x95 @1156621421 (5451589)
Byte 6:0x99 @1156625398 (5451593)
Byte 7:0x59 @1156629384 (5451597)
Byte 8:0x59 @1156633342 (5451601)
Byte 9:0x95 @1156637322 (5451605)
Probe 1:20 Probe 2:20 @1156637338

An dieser Stelle lasse ich offen was man mit diesem Logfile alles anstellen kann :-). Wer sich maverick.c ein wenig genauer ansieht, wird sehen, dass es auch Parameter gibt, um die Werte in eine HTML Datei zu schreiben.

Bei Fragen einfach Fragen :-).

Viele Grüße
Der_Gute
 

Anhänge

  • maverick.zip
    2,3 KB · Aufrufe: 667
Ich ahne da was! :D

Grüßle und Tschöh!

Armin
 
@

Da brauchen wir keine v4 ;-)
Genau für solche dinge ist der AddOn Stecker auf der Platine. Mit einer Softwareanpassung sollte das ganze von v1-v3 Funktionieren...

Wir müssten halt alles auf 10Kanäle aufbohren...

@der_gute

Kannst du noch etwas zum Protokoll sagen?
Hast du noch ein paar Screenshots wie du die daten darstellst?
Bzw. vl hast du ja Interesse uns zu helfen um das ganze in das WLANThermometer einbinden?

Lg
 
@

Da brauchen wir keine v4 ;-)
Genau für solche dinge ist der AddOn Stecker auf der Platine. Mit einer Softwareanpassung sollte das ganze von v1-v3 Funktionieren...

Wir müssten halt alles auf 10Kanäle aufbohren...

@der_gute

Kannst du noch etwas zum Protokoll sagen?
Hast du noch ein paar Screenshots wie du die daten darstellst?
Bzw. vl hast du ja Interesse uns zu helfen um das ganze in das WLANThermometer einbinden?

Lg

Das Protokoll ist ein manchesterprotokoll. Betrachtet man das Ganz im logic analyzer (piscope fürn raspberry pi) kann man das encodieren.Anhand der länge der ausschläge kann man ermitteln, ob das folgebit eine 1 oder 0 ist. Diese Logik wird in dem Programm angewandt. Die im Programm ausgegebenen Bytes werden anschließend in Dezimale Werte umgewandelt, da jedes Byte zwei HEX Zeichen beinhaltet.

Ich habe ehrlichgesagt noch keine Idee, wie ich das Ganze darstelle :-). Meine Planung deutet aber auf FHEM, welches ich schon Zuhause einsetze. Wenn man die im Programm ausgewerteten Daten entsprechend parsed, könnte man diese im WLANThermo einfach als weiteres Thermometer anzeigen lassen.
Gerne helfe ich dabei das Ganze in den WLANThermo einzubauen. Ich könnte zb dafür sorgen, dass die Daten dem WLANThermo gerecht zur verfügung gestellt werden.
 
Hallo Der_Gute,

ich habe das von Dir verlinkte Set bestellt und werde am Wochenende testen. Das Programm ist kompiliert, jetzt habe ich noch eine Frage:
Der Receiver hat vier Beinchen, davon zwei Data Pins - ist einer zu verwenden oder beide?
Wenn beide zu verwenden sind, werden die auf einen GPIO gesteckt (ich verwende ein Breadboard).
Danke für eine kurze Antwort und

ich werde berichten ;-)
 
Und hier der angekündigte Bericht:

Ich habe auf einem Breadboard sowohl den Sender, als auch den Empfänger gesteckt, um unabhängig vom Maverick die Funktionalität der Bauteile zu testen. Für alle Anfänger, wie mich: der quadratische Baustein ist der Sender, der rechteckige der Empfänger.

Die Datenleitung des Senders steckt im physikalischen Pin 11, eine der beiden Datenleitungen des Empfängers im Pin 13 des Raspberry (in meinem Fall Raspberry 2 B)

Die Zuordnungen der PINs könnt ihr hier nachsehen:
http://www.reichelt.de/reicheltpedia/index.php/Raspberry_Pi

In der Datei maverick.c habe ich den Parameter "#define PIN" auf 2 gesetzt, wie oben beschrieben compiliert und gestartet.

Ohne Antenne beträgt die Reichweite wirklich nur wenige Zentimeter!

Einige Bilder dazu und der Spaß kann beginnen ;-)

bild001.jpg
bild002.jpg
bild003.jpg
 

Anhänge

  • bild001.jpg
    bild001.jpg
    186,3 KB · Aufrufe: 3.802
  • bild002.jpg
    bild002.jpg
    159,4 KB · Aufrufe: 3.752
  • bild003.jpg
    bild003.jpg
    207,7 KB · Aufrufe: 3.797
Der Fehlerteufel hat sich eingeschlichen, es muss lauten:
"#define PIN 27"

Mit einem zusätzlichen Baustein für 4 Euro (Empfänger) kann man mit dem Raspberry die gleiche Funktionalität realisieren, wie mit anderen, spezialisierten Boards (OpenPicus etc). Zusätzlich bietet der Raspberry viele weitere Einsatzmöglichkeiten (ich nutze ihn als VPS-Server - und jetzt auch als "range extender" für den Maverick).

Ich habe mir noch ein AkkuPack geholt (hier) und seit 6 Stunden läuft der Raspberry damit. Für ein PP könnte es reichen, denn laut Anzeige ist das Akku noch 3/4 gefüllt.

M
 
Hallo der_gute,

vielen Dank für die Entwicklungsmühe und die Beschreibung hier.
Allerdings habe ich ein paar Fragen, da ich es nicht zum Laufen bekomme.
Welchen Maverick-Sender verwendest du? ET-733, oder?
Das Problem ist, dass die empfangenen Signal bei mir ganz anders aussehen.
Ich habe bis jetzt einige Internetquellen gefunden, wo das Thema Maverick behandelt wird, überall gibt es ähnliches zu lesen.
Bei mir kommt zwar ca. alle 12 s ein Signal, wie im Internet an verschiedenen Stellen beschrieben, aber ich habe weder vier wiederholte Botschaften noch einen sauberen Manchester-Code. Vielmehr ist am Anfang immer ein langer Puls (ca. 130 ms), und danach gefühlt jedes mal was anders, teils mit längeren Pausen, teils mit sehr schnellen Wechseln.
Ich habe jetzt schon extra das Empfangssignal der Empfängerplatine im Original-Empfänger abgegriffen, um Störungen auszuschließen.
Momentan beobachte ich es mit Piscope.
Ich habe jetzt auch schon einen anderen GPIO probiert, weil ich nicht ausschließen konnte, dass auf diesem Pin des Raspberry irgendwelche anderen Funktionen laufen.

Hast du nen Tipp?

Beste Grüße
Florian
 
Hallo der_gute,

vielen Dank für die Entwicklungsmühe und die Beschreibung hier.
Allerdings habe ich ein paar Fragen, da ich es nicht zum Laufen bekomme.
Welchen Maverick-Sender verwendest du? ET-733, oder?
Das Problem ist, dass die empfangenen Signal bei mir ganz anders aussehen.
Ich habe bis jetzt einige Internetquellen gefunden, wo das Thema Maverick behandelt wird, überall gibt es ähnliches zu lesen.
Bei mir kommt zwar ca. alle 12 s ein Signal, wie im Internet an verschiedenen Stellen beschrieben, aber ich habe weder vier wiederholte Botschaften noch einen sauberen Manchester-Code. Vielmehr ist am Anfang immer ein langer Puls (ca. 130 ms), und danach gefühlt jedes mal was anders, teils mit längeren Pausen, teils mit sehr schnellen Wechseln.
Ich habe jetzt schon extra das Empfangssignal der Empfängerplatine im Original-Empfänger abgegriffen, um Störungen auszuschließen.
Momentan beobachte ich es mit Piscope.
Ich habe jetzt auch schon einen anderen GPIO probiert, weil ich nicht ausschließen konnte, dass auf diesem Pin des Raspberry irgendwelche anderen Funktionen laufen.

Hast du nen Tipp?

Beste Grüße
Florian

Hallo Florian,
ist schonmal super, dass du dich mit piscope beschäftigt hast :-).
Ich verwende einen ET-733. Normalerweise sollte sofern du den von mir beschriebenen PIN verwendet hast das Ganze auch laufen.
Hast du eine Antenne am Empfänger? Hast du mal einen anderen Empfänger getestet? Denk daran, das sind low budget chinadinger :).
Da ist ja diese eine Spule auf dem Empfänger.. hast du damit irgendwas gemacht? Die sollte idealerweise nicht verbogen oder ähnliches sein.
 
Hi,

bei mir mag das auch niht so recht...
Hab ich gestern mal ein paar Stunden damit gespielt aber ich bekomme gar keine Daten rein....

Habs dann auch am Pi 2 probiert. Ist es da normal dass die Auslastung auf 100% geht auf einen Kern?

LG
 
Am Pi 2 müssen im Programm selbst erstmal mehrere Threads definiert werden, die dann wiederum auf die einzelnen Kerne verteilt werden können. Deshalb gehen 100% auf einen Kern. Für entlastung kann man sorgen, wenn man das Programm nicht im vordergrund, sondern im Hintergrund laufen lässt. Dann bekommt man auch verlässliche Werte!
Kannst du Signale mit piscope empfangen?
 
Hallo Florian,
ist schonmal super, dass du dich mit piscope beschäftigt hast :-).
Ich verwende einen ET-733. Normalerweise sollte sofern du den von mir beschriebenen PIN verwendet hast das Ganze auch laufen.
Hast du eine Antenne am Empfänger? Hast du mal einen anderen Empfänger getestet? Denk daran, das sind low budget chinadinger :).
Da ist ja diese eine Spule auf dem Empfänger.. hast du damit irgendwas gemacht? Die sollte idealerweise nicht verbogen oder ähnliches sein.

Hallo und danke für die schnelle Rückmeldung.
Ich habe schon den Original-Empfänger angezapft, weil ich meinem billig-Teil nicht mehr vertraue.
Also Maverick auf und von dessen Empfängerplatine den Datenpin. Daher kann ich sicher sein, dass das Signal passt, weil der Maverick gleichzeitig gültige Daten gezeigt hat.
Beim Schreiben ist das einzige, was mit eingefallen ist, dass meine Krokoklemme vielleicht einen Wackler o.ä. hatte...?
Ich habe wie gesagt verschiedene Pins probiert.

PS: Hatte deine Posts im Pi-Forum auch schon gelesen ;-)
Danke erstmal für die Hilfe.

Gruß
Florian
 
Hi Florian!
Und obwohl du den Original- Empfänger angezapft hast, hast du keine vernünftigen Daten im piscope gesehen?
Ich kann mich leider nicht mehr genau daran erinnern, was man genau tun musste, um korrekte Daten im piscope sehen zu können. Das Programm maverick.c lief aber nicht, während piscope lief, oder?
 
Hi,

ja.
Ich bin mir nicht 100% sicher, ob es nicht noch im Hintergrund aktiv war, aber ich meine nicht. Ich werde das heute nochmal prüfen (zusammen mit der wackeligen Verbindung).
An sich kann und muss man im scope nicht viel einstellen, oder? Richtigen Pin wählen und dann triggert er auf pin-change.
Zur Info: Die Präambel konnte ich gelegentlich "mitten drin" entdecken. Auch dein Programm hat sie erkannt. Danach kam meist zweimal 0xff (also Müll) und dann ist er mit Fehler ausgestiegen.

Gruß
Florian
 
Am Pi 2 müssen im Programm selbst erstmal mehrere Threads definiert werden, die dann wiederum auf die einzelnen Kerne verteilt werden können. Deshalb gehen 100% auf einen Kern. Für entlastung kann man sorgen, wenn man das Programm nicht im vordergrund, sondern im Hintergrund laufen lässt. Dann bekommt man auch verlässliche Werte!
Kannst du Signale mit piscope empfangen?

Ich hab das Programm im Hintergrund laufen lassen....

Das Logfile bleibt komplett leer. Wenn ich den Sourcecode richtig verstanden habe müsste er, wenn er den Pin setze, einen Eintrag erzeugen?!
Die Ausgabe bekomme ich zwar in der Konsole wenn ich

./maverick

aber mit

./maverick > maverick.log 2>&1 &

bleibt es komplett leer


Piscope etc. hab ich noch nicht probiert...
 
Hallo Phantomias,

an der Stelle empfehle ich erstmal zu sehen, ob du entsprechende Signale überhaupt bekommst. Dies lässt sich am besten mit Piscope realisieren, da du dann genau sehen kannst (in echtzeit) ob signale eingehen. Gehen signale ein, kann man gucken ob die grob nach dem aussehen was man haben will. Dann kann man gucken, woran es liegt, dass dein Log nicht beschrieben wird :-)
 
Das Logfile bleibt komplett leer. Wenn ich den Sourcecode richtig verstanden habe müsste er, wenn er den Pin setze, einen Eintrag erzeugen?!
Die Ausgabe bekomme ich zwar in der Konsole wenn ich

./maverick

aber mit

./maverick > maverick.log 2>&1 &

bleibt es komplett leer

Hallo,
noch eine kurze Rückmeldung von mir dazu.
Bei mir war es genau so: Ausgaben auf der Konsole kamen (jeweils bis zum Fehler), ins file hat er aber nichts übernommen. Passiert das Schreiben ins file vielleicht erst, wenn alles gepasst hat?
Gruß
Florian
 
Zurück
Oben Unten