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.
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
Inzwischen glaube ich, dass der Thread in dem falschen Bereich liegt :-).
Kann ein entsprechender Mod diesen bitte verschieben?
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
Hallo Guter,
hört sich wirklich gut an, spannend wäre natürlich ob bei einem vorhandenen CUL433 diese Konfiguration auch funktioniert.
Gruß
Micha
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
Hallo Bodo,
was für einen Empfänger verwendet Du ß
Gruß
Micha
Hi Micha,
ich habe diesen hier.
http://www.amazon.de/gp/product/B00OLI93IC?psc=1&redirect=true&ref_=oh_aui_detailpage_o06_s00 (http://www.amazon.de/gp/product/B00OLI93IC?psc=1&redirect=true&ref_=oh_aui_detailpage_o06_s00)
Gruß
Bodo
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
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.
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
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 (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
Wenn das ganze mit dem FHEMduino funktionieren würde, wäre es der Wahnsinn!
Danke schon mal für deine Arbeit.
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
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.
Hat jemand vlt einen Signalduino ? Ich in dort gerade drüber gestolpert dass wohl HIDEKI decodiert werden kann.
Das wäre eine günstige Variante das Maverick auszulesen.
Ich habe zwar keinen, habe aber denk ichalles dazu im Schrank. Ich könnte wenn es noch nötig ist auf die schnelle einen zusammenklatschen.
Ein Maverick ET732 steht auch zur verfügung. Einfach bescheid geben.
Wenn du es mal probieren würdest, wüssten wir direkt obs mit dem signalduino geht.
Also Bau einen Signaludino, werd gleich mal fangen. Frau backt eh Kuchen.
Fertig ist das Teil! Was braucht ihr für Daten? Beziehungsweise was soll ich nun Testen?
Empfang ist leider sehr sehr schlecht Antenne ist 17,3cm lang. Reichweite ca. 5cm
Also hab neuen Empfänger eingebaut nun ist der Empfang schon viel besser.
:-)
2015.12.08 19:53:28 4: SIGNALduino/msg READ: MU;P0=-536;P1=756;P2=-173;P3=502;P5=197;D=23232505232505230303250303052325052325052123254;CP=5;
2015.12.08 19:53:28 4: Found matched Protocol id 8 -> TX3 Protocol
2015.12.08 19:53:28 5: Starting demodulation at Position -1
2015.12.08 19:53:28 4: Found matched Protocol id 16 -> Dooya shutter
2015.12.08 19:53:28 5: Starting demodulation at Position 5
2015.12.08 19:53:28 5: restarting demodulation at Position 9+2
2015.12.08 19:53:28 5: restarting demodulation at Position 19+2
2015.12.08 19:53:28 5: restarting demodulation at Position 24+2
2015.12.08 19:53:28 5: restarting demodulation at Position 29+2
2015.12.08 19:53:28 5: restarting demodulation at Position 35+2
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: /MU;P0=582;P1=-483;P4=256;D=0010
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: MU;P0=582;P1=-483;P4=256;D=0010/10101010141410141010101014101414
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: MU;P0=582;P1=-483;P4=256;D=001010101010141410141010101014101414/10101014141014144;CP=4;
2015.12.08 19:53:40 4: SIGNALduino/msg READ: MU;P0=582;P1=-483;P4=256;D=00101010101014141014101010101410141410101014141014144;CP=4;
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: /MU;P0=-852;P1=495;P2=-549;P3=-3
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: MU;P0=-852;P1=495;P2=-549;P3=-3/07;P4=191;D=01212121213424313424
2015.12.08 19:53:40 5: SIGNALduino/RAW READ: MU;P0=-852;P1=495;P2=-549;P3=-307;P4=191;D=01212121213424313424/313421212121313131311;CP=1;
2015.12.08 19:53:40 4: SIGNALduino/msg READ: MU;P0=-852;P1=495;P2=-549;P3=-307;P4=191;D=01212121213424313424313421212121313131311;CP=1;
2015.12.08 19:53:40 4: Found matched Protocol id 8 -> TX3 Protocol
2015.12.08 19:53:40 5: Starting demodulation at Position -1
2015.12.08 19:53:40 4: Found matched Protocol id 16 -> Dooya shutter
2015.12.08 19:53:40 5: Starting demodulation at Position -1
2015.12.08 19:53:51 5: SIGNALduino/RAW READ: /MS;P0=-5324;P1=122;P2=-587;P3=3
2015.12.08 19:53:51 5: SIGNALduino/RAW READ: MS;P0=-5324;P1=122;P2=-587;P3=3/41;D=103234;CP=1;SP=0;
2015.12.08 19:53:51 4: SIGNALduino/msg READ: MS;P0=-5324;P1=122;P2=-587;P3=341;D=103234;CP=1;SP=0;
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: /MU;P0=-525;P2=142;P3=423;P4=-11
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=-525;P2=142;P3=423;P4=-11/692;P5=-4940;D=00203030302020342
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=-525;P2=142;P3=423;P4=-11692;P5=-4940;D=00203030302020342/5252525253525303030303022;CP=2;
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=-525;P2=142;P3=423;P4=-11692;P5=-4940;D=002030303020203425252525253525303030303022;CP=2;/
2015.12.08 19:53:52 4: SIGNALduino/msg READ: MU;P0=-525;P2=142;P3=423;P4=-11692;P5=-4940;D=002030303020203425252525253525303030303022;CP=2;
2015.12.08 19:53:52 4: Found matched Protocol id 16 -> Dooya shutter
2015.12.08 19:53:52 5: Starting demodulation at Position 1
2015.12.08 19:53:52 5: restarting demodulation at Position 7+2
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: /MU;P0=2864;P1=-255;P2=844;P3=45
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=2864;P1=-255;P2=844;P3=45/9;P4=250;P5=-507;D=0121314541314
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=2864;P1=-255;P2=844;P3=459;P4=250;P5=-507;D=0121314541314/53535353541314541353531454131453
2015.12.08 19:53:52 5: SIGNALduino/RAW READ: MU;P0=2864;P1=-255;P2=844;P3=459;P4=250;P5=-507;D=012131454131453535353541314541353531454131453/2;CP=4;
2015.12.08 19:53:52 4: SIGNALduino/msg READ: MU;P0=2864;P1=-255;P2=844;P3=459;P4=250;P5=-507;D=0121314541314535353535413145413535314541314532;CP=4;
2015.12.08 19:53:52 4: Found matched Protocol id 8 -> TX3 Protocol
2015.12.08 19:53:52 5: Starting demodulation at Position -1
2015.12.08 19:53:52 4: Found matched Protocol id 16 -> Dooya shutter
2015.12.08 19:53:52 5: Starting demodulation at Position 6
2015.12.08 19:53:52 5: restarting demodulation at Position 10+2
2015.12.08 19:53:52 5: restarting demodulation at Position 19+2
2015.12.08 19:53:52 5: restarting demodulation at Position 24+2
2015.12.08 19:53:52 5: restarting demodulation at Position 34+2
2015.12.08 19:54:04 5: SIGNALduino/RAW READ: /MU;P0=-459;P1=1176;P2=-291;P3=3
2015.12.08 19:54:04 5: SIGNALduino/RAW READ: MU;P0=-459;P1=1176;P2=-291;P3=3/780;P4=279;P5=528;D=123242524042
2015.12.08 19:54:04 5: SIGNALduino/RAW READ: MU;P0=-459;P1=1176;P2=-291;P3=3780;P4=279;P5=528;D=123242524042/52405050425240425240425050524050
2015.12.08 19:54:04 5: SIGNALduino/RAW READ: MU;P0=-459;P1=1176;P2=-291;P3=3780;P4=279;P5=528;D=12324252404252405050425240425240425050524050/5041;CP=4;
2015.12.08 19:54:04 4: SIGNALduino/msg READ: MU;P0=-459;P1=1176;P2=-291;P3=3780;P4=279;P5=528;D=123242524042524050504252404252404250505240505041;CP=4;
2015.12.08 19:54:04 4: Found matched Protocol id 8 -> TX3 Protocol
2015.12.08 19:54:04 5: Starting demodulation at Position -1
2015.12.08 19:54:04 4: Found matched Protocol id 9 -> CTW 600
2015.12.08 19:54:04 5: Starting demodulation at Position -1
@ der_gute:
ich bekomme bei maverick.c ein:
Preamble detected @7643
Byte 1:0xAA @7650765 (7651)
!!!PATTERN FAILURE!!! @559
was könnte da falsch sein ?
/edit: verwende nun python - klappt schon danke !
Hallo,
mit dem RFXTRX klappt es nun. Modul ist im Thread und wahrscheinlich morgen im SVN
http://forum.fhem.de/index.php/topic,22977.0.html
Beste Grüße
Michael
Nach dem letzten Update bekomme ich mit dem Signalduino plötzlich sehr viel öfter und regelmässig Einträge ins Log (parallel zum Aufleuchten der roten LED kommen 1 oder 2 Einträge):
2017.07.07 13:35:16 5: Starting notify loop for sduino, 1 event(s), first is DMSG u630FCDFC0FCC
2017.07.07 13:35:16 5: End notify loop for sduino
2017.07.07 13:35:16 5: Starting notify loop for sduino, 1 event(s), first is UNKNOWNCODE u630FCDFC0FCC
2017.07.07 13:35:16 5: End notify loop for sduino
2017.07.07 13:35:17 5: Starting notify loop for sduino, 1 event(s), first is DMSG u63F81F9BF8
2017.07.07 13:35:17 5: End notify loop for sduino
2017.07.07 13:35:17 5: Starting notify loop for sduino, 1 event(s), first is UNKNOWNCODE u63F81F9BF8
2017.07.07 13:35:17 5: End notify loop for sduino
Im Event-Monitor sieht das dann so aus:
2017-07-07 13:35:16 SIGNALduino sduino DMSG u630FCDFC0FCC
2017-07-07 13:35:16 SIGNALduino sduino UNKNOWNCODE u630FCDFC0FCC
2017-07-07 13:35:17 SIGNALduino sduino DMSG u63F81F9BF8
2017-07-07 13:35:17 SIGNALduino sduino UNKNOWNCODE u63F81F9BF8
Leider bekomme ich so trotzdem keine "ordentliche" Temperatur angezeigt...