nachdem ich nun schon seit etwas mehr als einem Jahr hier mitlese und jede Menge super Infos umsetzen konnte - Danke dafür an alle die dazu beitragen das dieses Forum so aktiv ist - Möchte ich jetzt mal was zurück geben.
Da dies mein erstes grösseres eigenes Projekt ist, bin ich natürlich für Hinweise und Verbeserungsvorschläge offen.
Da ich gerne Low and Slow auf meinem Grill arbeite, muss eine Überachung her. Die bestand zuerst aus einem Maverick Funkthermometer. Die Reichweite und Funktionalität hat mir allerdings nicht ausgereicht. Also muss was eigenes her.
Here we go:
Zum Einsatz kommt ein Funkdifferenz Sensor HM-WDS30-OT2-SM den ich seiner Sensoren beraubt habe. Statt dessen kommen die Sensoren von dem Maverick ET-732 zum Einsatz. Diese werden über eine 2.5mm Klinkenkupplung mit dem HM Sensor verbunden.
WICHTIG: In der 2,5mm Klinkenkupplung am HM Sensor muss ein 91kOhm (1%) WIderstand parallel zum MAverick Sensor verlötet werden. Nur damit kommt die Geberkurve der Maverick Sensoren in den Messbereich des HM Sensors.
Aufnehmen der Geberkurve:
Hierzu habe ich beide Maverick Sensoren in den Backofen gepackt und die Temperatur Schrittweise um 10 Grad erhöht. Nach jeder Erhöhung und abwarten einer Temperaturangleichzeit (ca. 10 Minuten) Wurden die Geber in das original Maverick gesteckt, der Wert notiert, dann an den HM Sensor gesteckt, gewartet bis der nächste Messwert übertragen wurde und den ebenfalls notiert.
CCU2 Programmierung.
Als erstes brauchen wir ein CUXD Wrapper device für die Food Temperatur und eines zweites für die Garraum Temperatur.
Hier wird der HM Sensor eingetragen: und hier werden die Messwerte aus dem Backofen eingetragen Damit haben wir schonmal die korrekten Temperaturen und der CCU2. Jetzt müssen wir damit nur noch was sinnvolles anstellen. Dazu müssen erstmal diverse SysVar´s angelegt werden:
SV_BBQ_Alarm_Food - Logikwert - Aktiv/Inaktiv
SV_BBQ_Alarm_Pit- Logikwert - Aktiv/Inaktiv
SV_BBQ_Food_soll - Zahl - 0 - 255
SV_BBQ_Pit_soll - Zahl - 0-255
SV_BBQ_Pit_delta - Zahl - 0-255 (zulässige Abweichung der Garraum temp)
Jett brauchts noch 2 virtuelle Taster zum EIn und Ausschalten der Alarme:
BBQ_Alarm_Pit_OnOff
BBQ_Alarm_Food_OnOff
Hier das Programm zum Ein und Ausschalten des Food Alarms Das Programm zum Ein und Ausschalen des Pit Alarms ist analog aufgebaut.
Hier das Programm für den Food Tempvergleich: und hier das dazugehörige Script:
Code: Alles auswählen
! *** Temperaturenvergleich ***
! Food Temperaturen vergleichen
! Lokale Variablen definieren
real Food_ist;
real Food_soll;
! Werte einlesen
Food_soll= dom.GetObject("SV_BBQ_Food_Soll").Value();
Food_ist = dom.GetObject("Food_Temperatur").DPByHssDP("TEMPERATURE").Value();
! Wert schreiben
dom.GetObject("SV_BBQ_Food_Ist").State(Food_ist);
if ((Food_ist >= (Food_soll - 3)) && (Food_ist < Food_soll))
{
string url="'http://192.168.178.61:50000/tts=" # "Achtung Durchsage, die Zielkerntemperatur von" # (Food_ist).ToString(0) # "Grad wird in Kürze erreicht, bitte bereitmachen das Grillgut runterzunehmen"# "'" ;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:1.CMD_RUNS").State("1");
string url="'http://192.168.178.39:50000/tts=" # "Achtung Durchsage, die Zielkerntemperatur von" # (Food_ist).ToString(0) # "Grad wird in Kürze erreicht, bitte bereitmachen das Grillgut runterzunehmen"# "'" ;
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:2.CMD_RUNS").State("1");
}
if (Food_ist >= Food_soll)
{
string url="'http://192.168.178.61:50000/tts=" # "Achtung Durchsage, die Zielkerntemperatur von " # (Food_ist).ToString(0) # "Grad ist erreicht, bitte das Grillgut runternehmen"#"'" ;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:1.CMD_RUNS").State("1");
string url="'http://192.168.178.39:50000/tts=" # "Achtung Durchsage, die Zielkerntemperatur von " # (Food_ist).ToString(0) # "Grad ist erreicht, bitte das Grillgut runternehmen"#"'" ;
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:2.CMD_RUNS").State("1");
}
url ="";
Food_soll=0;
Food_ist=0;
Code: Alles auswählen
! *** Temperaturenvergleich ***
! *** Delta bitte bei Bedarf anpassen und auskommentieren ***
! dom.GetObject("SV_BBQ_Pit_delta").State(15);
! *** Ab hier nichts mehr ändern ***
! Pit Temperaturen vergleichen
! Lokale Variablen definieren
real Pit_ist;
real Pit_soll;
real Pit_delta;
! Werte einlesen
Pit_soll= dom.GetObject("SV_BBQ_Pit_Soll").Value();
Pit_ist = dom.GetObject("Pit_Temperatur").DPByHssDP("TEMPERATURE").Value();
Pit_delta= dom.GetObject("SV_BBQ_Pit_delta").Value();
! Wert schreiben
dom.GetObject("SV_BBQ_Pit_Ist").State(Pit_ist);
if (Pit_ist > (Pit_soll+ Pit_delta))
{
string url="'http://192.168.178.61:50000/tts=" # "Achtung Durchsage, die Garraum Temperatur ist mit" # (Pit_ist).ToString(0) # "Grad zu hoch"#"'" ;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:1.CMD_RUNS").State("1");
string url="'http://192.168.178.39:50000/tts=" # "Achtung Durchsage, die Garraum Temperatur ist mit" # (Pit_ist).ToString(0) # "Grad zu hoch"#"'" ;
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:2.CMD_RUNS").State("1");
}
if (Pit_ist < (Pit_soll- Pit_delta))
{
string url="'http://192.168.178.61:50000/tts=" # "Achtung Durchsage, die Garraum Temperatur ist mit" # (Pit_ist).ToString(0) # "Grad zu niedrig"#"'" ;
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:1.CMD_RUNS").State("1");
string url="'http://192.168.178.39:50000/tts=" # "Achtung Durchsage, die Garraum Temperatur ist mit" # (Pit_ist).ToString(0) # "Grad zu niedrig"#"'" ;
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O /dev/null " # url);
dom.GetObject("CUxD.CUX2801001:2.CMD_RUNS").State("1");
}
url ="";
Pit_ist=0;
Pit_soll=0;
Pit_delta=0;
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 14");
Code: Alles auswählen
Die aktuelle Pit Temp beträgt $t2 °C
Die aktuelle Food Temp beträgt $t1 °C
Code: Alles auswählen
array set values [rega_script {
var t1 = dom.GetObject("Food_Temperatur").State();
var t2 = dom.GetObject("Pit_Temperatur").State();
} ]
set t1 $values(t1)
set t2 $values(t2)
Vielleicht gefällt es ja dem Einen oder Anderen. Kommentare? Gerne...