HowTo: Maverick ET-732 bzw. ET-733 BBQ Grillthermometer mit FHEM auslesen

Begonnen von Der_Gute, 15 Juni 2015, 13:33:50

Vorheriges Thema - Nächstes Thema

Der_Gute

Hallo zusammen,
mit dem Thread feier ich einen kleinen Einstand in diesem Forum :-).
Ich habe es geschafft das Funkthermometer Maverick ET-732 bzw. ET-733 mit FHEM auszulesen.

Hier wird noch eine Anleitung zur Einrichtung stehen, sodass ihr dies selber nachbauen könnt.
Hardware die man dazu benötigt:
Einen RPI, einen 433mhz Funkempfänger (so ein 0815 Teil für paar Mücken) und Zeit :-).
Ich denke werde bis Morgen eine Anleitung geposted haben! Hierfür dient dieser Thread.

Der_Gute

#1
Soo hier ein kleines Howto zum Einsatz mit dem Raspberry!
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-Superreg...d=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

4 Einbindung in FHEM
4.1 Script welches das Maverick Programm steuert (wird auf dem Maverickpi eingerichtet)
#!/bin/bash

#check if process already runs
processrunning=`ps -ef |grep -c maverick`
if [ $processrunning -eq 1 ]; then
#echo "no process is running.count:$processrunning"
#no program is running - start  maverick program
sudo /home/pi/maverick/maverick > /home/pi/maverick/maverick.log 2>&1 &
fi

a=0
linescount_last=0
rm /home/pi/maverick/maverick_values.log
#parse the probes
until [ $a -eq 1 ]
do
sleep 15
#get linecount of file to determine if new value was added
cat /home/pi/maverick/maverick.log |grep "Probe" >>/home/pi/maverick/maverick_values.log
linescount=`cat /home/pi/maverick/maverick_values.log |wc -l`
#echo "lines count: $linescount"
#check if lines were added
if [ "$linescount" != "$linescount_last" ]; then
#echo "linecount has changed"
tail -1 /home/pi/maverick/maverick_values.log >/home/pi/maverick/maverick_values_last.log
temp_probe1=`cat /home/pi/maverick/maverick_values_last.log|cut -d ":" -f2 |cut -d "    " -f1`
temp_probe2=`cat /home/pi/maverick/maverick_values_last.log|cut -d ":" -f3 |cut -d "    " -f1`
#echo "probe1:$temp_probe1"
#echo "probe2:$temp_probe2"
#send to fhem
echo "setreading Balkon_Grilltemperatur temperature_probe1 $temp_probe1">/home/pi/maverick/tofhem
echo "setreading Balkon_Grilltemperatur temperature_probe2 $temp_probe2">>/home/pi/maverick/tofhem
echo "setreading Balkon_Grilltemperatur state T1: $temp_probe1 T2: $temp_probe2">>/home/pi/maverick/tofhem

nc fhempi 7072 < /home/pi/maverick/tofhem

fi
linescount_last=$linescount

done

Das Script schaut, ob es schon einen Prozess mit dem Maverickprogramm gibt.Wenn nein wird dieses gestartet. Anschließend wertet das Script die Temperaturen aus dem Logfile aus, schreibt diese in ein weiteres Logfile eben nur mit den Temperaturen  und schickt diese an den FHEM server.

4.2 Kontrolle des obrigen Scripts mit FHEM
Mein Kommunikationsweg lautet:
FHEM switch der eine 1 oder 0 in eine Datei auf dem FHEM Server schreibt
FHEM Server syncht diese Datei per scp auf den Maverickpi im Cron
Checkscript auf dem Maverickpi überprüft den Wert dieser Datei im Cron und startet bzw. schließt das grill_start.sh script.

#!/bin/bash
#check if temperature of grill has to be tracked
grillcheck=`cat /home/pi/grillmessung`
if [ "$grillcheck" == "1" ]; then
#turn grillchecking on
if pidof -x "/home/pi/grill_start.sh" >/dev/null; then
echo "no instance running so start one"
else
echo " run in else"
/home/pi/grill_start.sh &
fi
else
#turn grillchecking off
/home/pi/grill_stop.sh
fi

fhem.cfg:

# Balkon Grilltemperatur
# Messung ein und ausschalten
define Balkon_Grillmessung dummy
attr Balkon_Grillmessung devStateIcon An:rc_RED Aus:rc_PLAY
attr Balkon_Grillmessung eventMap on:An off:Aus
attr Balkon_Grillmessung icon scene_stove
attr Balkon_Grillmessung room Balkon
attr Balkon_Grillmessung setList off on
define off_Balkon_Grillmessung notify Balkon_Grillmessung:on {system("/home/pi/grillmessung_an.sh&")}
define on_Balkon_Grillmessung notify Balkon_Grillmessung:off {system('/home/pi/grillmessung_aus.sh &');;}
# Temperaturerfassung
define Balkon_Grilltemperatur dummy
attr Balkon_Grilltemperatur devStateIcon state:temp_temperature
attr Balkon_Grilltemperatur icon scene_stove
attr Balkon_Grilltemperatur room Balkon
define FileLog_Balkon_Grilltemperatur FileLog ./log/Balkon_Grilltemperatur-%Y.log Balkon_Grilltemperatur
attr FileLog_Balkon_Grilltemperatur logtype text
attr FileLog_Balkon_Grilltemperatur room CUL_HM
define Balkon_Grilltemp SVG FileLog_Balkon_Grilltemperatur:SVG_FileLog_Balkon_Grilltemperatur_1:CURRENT
attr Balkon_Grilltemp room Balkon

Diese Punkte habe ich nicht so genau ausgeführt. Bei Interesse stehe ich jedoch gerne zur Verfügung!.

Viele Grüße
Der_Gute

Der_Gute

Inzwischen glaube ich, dass der Thread in dem falschen Bereich liegt :-).
Kann ein entsprechender Mod diesen bitte verschieben?

Gidiano

Hallo Du Guter,

ein Traum wird wahr! Gerade für Long Jobs am Grill ist ein logging der Temperatur eine feine Sache.
Mal schauen, ob ich das hinkriege, da ist ja einiges zu machen  :o

Grüße und besten Dank,
Christian
Grüße,
Christian

mfeske

Hallo Guter,

hört sich wirklich gut an, spannend wäre natürlich ob bei einem vorhandenen CUL433 diese Konfiguration auch funktioniert.

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

DerBodo

Hi,

kurzes Feedback von mir, funktioniert soweit ganz gut (lasse mir die Werte derzeit nur auf der Console ausgeben).
Mit jedem 12 Sekunden "Tick" werden bei mir die Ergebnisse allerdings 3x ausgegeben, hier werde ich noch versuchen ein bisschen etwas anzupassen.

Gruß

Bodo

mfeske

Hallo Bodo,

was für einen Empfänger verwendet Du ß

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)


mfeske

Das ist ja Sender und Empfänger ?! Ich hatte überlegt das Thermometer direkt über den CUL abzufragen.  Hat da schon jemand Erfahrungen und welches Protokoll wird genutzt?

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

DerBodo

Laut ein paar Infos ist es wohl Hideki und sollte mit einem RFXTRX laufen, hatte für meinen Versuch einfach den Sender/Epmfänger aus dem Startpost bestellt.


blub145

Hi,

vielen Dank für Deine Arbeit. Aber leider habe ich noch Probleme. Welches ist denn das grill_stop.sh und grill_start.sh Script? Und welche Script rufst du mit grillmessung_an und grillmessung_aus aus FHEM aus?

Danke Dirk

igami

Hallo zusammen,

ich würde auch gern mein Grillthermometer empfangen. Soweit ich gelesen haben reicht ein CUL nicht aus.
Zitat von: Der_Gute am 15 Juni 2015, 16:09:00
Zum Einsatz kommt dieser Receiver:
http://www.amazon.de/Aukru-Superreg...d=1427028249&sr=8-1&keywords=433+mhz+receiver
Der Link funktioniert leider nicht, da ... enthalten ist.
Kann ich mir einfach
Zitat von: DerBodo am 19 Juli 2015, 21:42:37
ich habe diesen hier.

http://www.amazon.de/gp/product/B00OLI93IC?psc=1&redirect=true&ref_=oh_aui_detailpage_o06_s00
den bestellen und dann der Anleitung folgen?

Ansonten würde mir eine kostengünstige USB Variante auch gefallen, da ich den RasPi eigentlich nicht mehr nutze.

Vielen Dank und Grüße
igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

atze09

Wenn das ganze mit dem FHEMduino funktionieren würde, wäre es der Wahnsinn!
Danke schon mal für deine Arbeit.

Axo

Hallo zusammen,

das ist perfekt, genau das habe ich gesucht. Leider bin ich absoluter Anfänger im Programmieren, daher mal eine Frage dazu: Was genau muss ich in den Schritten 4.1 und 4.2 machen? Ist "maverickpi" eine Datei? Wo finde ich die? Freue mich über eine kurze Erläuterung.

Danke und Gruß,
Axo

rogseut

Ist jemand schon mit dem Thema weiter?
Gibt es schon ein Tutorial bzw. ein Modul?

Ich bin begeisteter Griller und möchte gerne mein Maverick ET-732 in FHEM integrieren.

Möchte die Temperaturen sehn und auch einen Alarm in FHEM Programmieren können.
Der Alarm soll bei erreichen der Grenzwerte min/max. Temp. und/oder bei erreichen einer Grillzeit über
Pushover kommen.

Ich erhoffe mir dadurch bessere Kontrolle bei Longjobs, dabei geh ich häufig mehrere Stunden ausser Haus.
Die Kontrolle dabei zubehalten beruhigt ungemein, ich bin schon immer ganz gespannt ob
während meiner abwesendheit alle gut gegangen ist. Mir ist es schon mal passiert das die Temp.
zu weit runter ist und das alles verzögert hat.