Hey zusammen,
Habe mich dem Thema Benachrichtigung über das Vorheizen vom Backofen angenommen. Es gibt bereits eine Idee von nem User, im Abluftstrom des Backofens die Innenraumtemperatur indirekt zu erfassen, um festzustellen, dass dieser vorgeheizt ist. Die Idee hat mich dazu gebracht, eine direkt Messung des Backofen Innenraums anzustreben. Da das bei mir Wunderbar läuft, möchte ich nun das Projekt mit euch teilen. Für ca. 15€ könnt ihr dann auf das Grad genau die Backofen Innenraumtemperatur ermitteln und euch benachrichtigen lassen.
Ein weitere Möglichkeit wäre die Verwendung im Grill, sowie mit einem Einsatz von Fleisch Thermometern, könntet ihr euch einen Selbstbau Fleischtemperatur Sensor bauen.
Was benötigt ihr (Backofeninnenraumtemperatur)
-1 ESP 8266 Node MCU Dev Board
-1 kleines Gehäuse (bei mir passt der ESP gerade so rein, musste diesen ein klein wenig an den Außenkanten Abschleifen. https://www.amazon.de/gp/produ…psc=1&tag=hktips-forum-21)
-1 Temperatur Sensor https://www.amazon.de/gp/produ…psc=1&tag=hktips-forum-21
-1 altes 230V zu 5V USB Netzteil
Als erstes bauen wir die Hardware zusammen.
Hierzu könnt ihr entsprechende Jumperkabel verwenden, oder eine Adapter Platine zusammenlöten.
Wichtig ist nur die Belegung der 5 Drähte:
Sensor
Breadboard <===> ESP8266
GND <===> GND
VCC <===> 3,3V
SCK <===> D5 (HSCLK)
CS <===> D7 (HMOSI)
S0 <===> D6 (HMISO)
Dann sobald das entsprechend Verdrahtet ist, Programmieren wir den ESP8266 mit diesem Script:
(WLAN Einstellungen (//WLAN Setup) , sowie MQTT Server (void Setup()) müssen noch an euer Smart-Home angepasst werden)
/*********
Adrian Zilly
Energy Meter ESP8266 Dev Module
Hardware Lib: ESP8266 v1.0 Dev Module
v1.3
*********/
//Import Librarys
#include "max6675.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
//WLAN Setup
const char* SSID = "MEINWLAN"; //WLAN Name
const char* PSK = "DASPASSWORT"; //Passwort WLAN
int WLANTimeout = 30;
int WLANCounts = 0;
//MQTT Channels
const char* MQTTChannel = "BackofenTemperatur"; //MQTT Channel
int thermoDO = 12;
int thermoCS = 13;
int thermoCLK = 14;
double Temperatur;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
//Timer Setup
int SendTimer = 10; //Sende Timer in s
//Timer definieren
long crontimer;
//Client Define
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
WiFi.mode(WIFI_STA);
Serial.println(SSID);
WiFi.begin(SSID, PSK);
while (WiFi.status() != WL_CONNECTED && WLANTimeout > WLANCounts) {
delay(500);
WLANCounts++;
Serial.print("\n Wifi Connecting..");
}
if (WLANCounts >= WLANTimeout) {
ESP.restart();
}
else {
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
WLANCounts = 0;
}
}
void GetTemp ()
{
Temperatur = thermocouple.readCelsius();
}
void TxData()
{
client.publish(MQTTChannel, String(Temperatur).c_str(), true);
Serial.println("================GESENDET==============");
Serial.print("Temperatur in °C: ");
Serial.println(Temperatur);
}
void reconnect() {
while (!client.connected()) {
Serial.println("Reconnecting MQTT...");
if (!client.connect("BackofenMessung")) {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" retrying in 1 seconds");
delay(1000);
}
}
client.subscribe("Backofen");
Serial.println("MQTT Connected...");
}
void setup()
{
Serial.begin(115200);
WiFi.disconnect();
delay(500);
setup_wifi();
client.setServer("AAA.BBB.CCC.DDDD", PPPP); //Server Adresse eintragen, nach Komma Port vom Server
}
void loop()
{
//Check Alles verbunden?
if (WiFi.status() != WL_CONNECTED) {
setup_wifi();
}
if (!client.connected()) {
reconnect();
}
delay(1000);
Serial.println("Reloop------- ");
delay(1000);
//Ausfuehrung Zentralprogramm
GetTemp();
//-------------------Timer Update-------------------
if (millis() / 1000 > crontimer + SendTimer) {
TxData(); //Daten uebertragen
crontimer = millis() / 1000;
}
//-------------------Timer Update-------------------
client.loop();
}
Alles anzeigen
Das ganze ladet ihr dann hoch und anschließend könnt ihr den Sensor mittel MQTT in Homebridge einbinden.
Am besten den Sensor nach dem Hochladen vom Programmiergerät abstecken und dann an das Netzteil anschließen.
Nun in euerer Homebridge das Plugin "mqttthing" installieren. (https://github.com/arachnetech/homebridge-mqttthing#readme)
Unter dem Abschnitt "Accessories" dann den Code einfügen.
{
"type": "temperatureSensor",
"name": "Backofen Temperatur",
"topics": {
"getCurrentTemperature": "BackofenTemperatur"
},
"history": true,
"minTemperature": 0,
"maxTemperature": 300,
"accessory": "mqttthing"
}
Alles anzeigen
Homebridge Neustarten und dann erscheint schon der Temperatursensor in Homekit.
Möchtet ihr gleich noch eine PushCut Notification einfügen dann könnt ihr hierzu, falls installiert, Node-Red verwenden.
Anbei der Code:
(Pushcut Link müsst ihr noch dann anpassen, Code per Import Funktion importieren)
<img src="https://forum.smartapfel.de/attachment/13663-img-9316-autoscaled-jpg/?thumbnail=1" class="woltlabAttachment" data-attachment-id="13663" id="wcfImgAttachment0">[{"id":"cd2be1ef.9ab688","type":"hb-status","z":"3383cfa7.72883","name":"Backofen Temperatur","Homebridge":"Homebridge-Hue","Manufacturer":"mqttthing","Service":"Temperature Sensor","device":"Homebridge-HueCC:22:3D:E3:CE:11mqttthingBackofen Temperatur0000008A","conf":"da33e4eb.437528","x":340,"y":3500,"wires":[["c3fdd514.b84e4","8bcac717.5edeb8"]]},{"id":"d3bc7b57.ad60b","type":"timeswitch","z":"3383cfa7.72883","name":"UPDATE","mytopic":"UPDATE","lat":"47.9990077","lon":"7.8421043","starttime":"0","endtime":"1425","duskoff":"0","dawnoff":"0","sun":true,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"jan":true,"feb":true,"mar":true,"apr":true,"may":true,"jun":true,"jul":true,"aug":true,"sep":true,"oct":true,"nov":true,"dec":true,"x":160,"y":3500,"wires":[["cd2be1ef.9ab688"]]},{"id":"c3fdd514.b84e4","type":"function","z":"3383cfa7.72883","name":"Temp Backofen","func":"//Variablen Setzen\nvar Temp = msg.payload.CurrentTemperature;\n\n//Alles löschen\nmsg = {};\n\n//Auswertung\n\nif (Temp >= 180){\n Out = 2;\n}\nelse if (Temp < 180 && Temp >= 50){\n Out = 1;\n}\nelse if (Temp < 50){\n Out = 0;\n}\n\nmsg.topic = \"Temperatur Backofen\";\nmsg.payload = Out;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":3500,"wires":[["4e52de66.38b9e","8bcac717.5edeb8"]]},{"id":"8bcac717.5edeb8","type":"debug","z":"3383cfa7.72883","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":610,"y":3460,"wires":[]},{"id":"4e52de66.38b9e","type":"rbe","z":"3383cfa7.72883","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","x":790,"y":3500,"wires":[["569db583.cb6924"]]},{"id":"569db583.cb6924","type":"switch","z":"3383cfa7.72883","name":"1 / 2 / any","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":920,"y":3500,"wires":[["156ccbb0.d2b9bc"],[],[]]},{"id":"156ccbb0.d2b9bc","type":"http request","z":"3383cfa7.72883","name":"Pushcut Backofen vorgeheizt","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://api.pushcut.io/","tls":"","persist":false,"proxy":"","authType":"","x":1160,"y":3500,"wires":[[]]},{"id":"da33e4eb.437528","type":"hb-conf","username":"966-66-041"}]