Kühlschrank Temperatursteuerung

Hallo zusammen,

Ich habe ein kleines Problem, ich will einen Kühlschrank mittels Relais Temperatursteuern.
Ich habe in dem Kühlschrank schon einen Temperatursensor DS18B20 eingebaut und möchte eine wert definieren können der dann gehalten wird.
Aber ich bin leider komplett frisch in die Materie eingestiegen und habe leider keine Ahnung von der Programmierung. Könnte mir wer dabei behilflich sein? :slightly_smiling_face:

@Goliard
Moin Goliard,
da hab ich am WE dran gebastelt. Wenn du möchtest kann ich dir den Prototyp
heute abend schicken.
1 Fühler Kühlschrankfür die Regelung, ein Fühler Gefierfach zum “Kucken”,
1 Fühler für den Verflüssigerlüfter über das Dimmyboard Drehzahlgesteuert.
Wie gesagt, der erste Entwurf, und nicht getestet.
Gruß Arno

@ahtdf
Hallo Arno,

Danke für deine Antwort.
Würde ich gerne probieren, vielleicht lässt es sich ja für mich umarbeiten. Dein Projekt ist viel umfangreicher. Meine Kühlschranksteuerung muss einfach nur der Ausgang C und T per Relais geschalter werden. Anbei ein Foto der Kompressorsteuerung.
Grüße David

Moin Goliard,

mit diesm Flow funktioniert es bei mir sehr gut. Ich habe den selben Kompressor verbaut.
Der Flow ist nicht von mir, sondern wurde netterweiße für mich gemacht.

Beste Grüße Maik

[{"id":"4996c6c3b317fa9d","type":"tab","label":"Kühlbox","disabled":false,"info":""},{"id":"421bc42149e46aaf","type":"ui_time_scheduler","z":"4996c6c3b317fa9d","group":"1c2c5da28224e47f","name":"","startDay":0,"refresh":60,"devices":["Fridge Timer"],"singleOff":false,"onlySendChange":false,"customPayload":false,"eventMode":false,"eventOptions":[],"sendTopic":false,"lat":"","lon":"","customContextStore":"","outputs":2,"order":1,"width":"0","height":"0","x":750,"y":360,"wires":[["bc8a36f4c7099a09"],["c0feef80e3d61fed"]]},{"id":"b1c3b77b762a24c5","type":"file in","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetimer","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":560,"y":360,"wires":[["421bc42149e46aaf"]]},{"id":"468116bf9f700378","type":"inject","z":"4996c6c3b317fa9d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":190,"y":360,"wires":[["f6398b85ee5c8a39"]]},{"id":"f6398b85ee5c8a39","type":"delay","z":"4996c6c3b317fa9d","name":"","pauseType":"delay","timeout":"7","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":360,"y":360,"wires":[["b1c3b77b762a24c5"]]},{"id":"c4d8c91108a6d401","type":"ui_switch","z":"4996c6c3b317fa9d","name":"","label":"Fridgetimer On/Off","tooltip":"","group":"1c2c5da28224e47f","order":1,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","topicType":"str","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":true,"className":"","x":450,"y":260,"wires":[["3177befdb57441ae"]]},{"id":"3177befdb57441ae","type":"function","z":"4996c6c3b317fa9d","name":"","func":"global.set(\"fridgetimeronoff\", msg.payload)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":640,"y":260,"wires":[[]]},{"id":"c0feef80e3d61fed","type":"function","z":"4996c6c3b317fa9d","name":"check timer on/off","func":"var check = global.get(\"fridgetimeronoff\");\nif(check === true)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":950,"y":360,"wires":[["f62557f0045a6ac6"]]},{"id":"04f4a34e20744a51","type":"inject","z":"4996c6c3b317fa9d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":190,"y":260,"wires":[["c4d8c91108a6d401"]]},{"id":"5b1eb646ae0720d3","type":"comment","z":"4996c6c3b317fa9d","name":"Timer","info":"","x":170,"y":320,"wires":[]},{"id":"bc8a36f4c7099a09","type":"file","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetimer","filenameType":"str","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":960,"y":320,"wires":[[]]},{"id":"aab65d39f6b1cc21","type":"ui_slider","z":"4996c6c3b317fa9d","name":"","label":"Set Runtime (min)","tooltip":"set a runtime in min (max 600)","group":"d3d2de9b553af3c0","order":5,"width":0,"height":0,"passthru":true,"outs":"end","topic":"topic","topicType":"msg","min":0,"max":"600","step":"20","className":"","x":450,"y":1000,"wires":[["059989f873e59261"]]},{"id":"f5c27df832dc8c3d","type":"countdown","z":"4996c6c3b317fa9d","name":"","topic":"","payloadTimerStart":"true","payloadTimerStartType":"bool","payloadTimerStop":"false","payloadTimerStopType":"bool","timer":30,"resetWhileRunning":false,"setTimeToNewWhileRunning":true,"startCountdownOnControlMessage":true,"minuteCounter":false,"x":850,"y":1000,"wires":[["4a080a044fd1e5b9"],["4a080a044fd1e5b9","56f17f50d381b711"]]},{"id":"059989f873e59261","type":"function","z":"4996c6c3b317fa9d","name":"set Topic to Control","func":"if (msg.payload == 0) {\n    msg.payload = \"cancel\"\n    msg.topic = \"control\"\n    return msg\n}\nelse {\n    msg.payload = Number(msg.payload*60)\n    msg.topic=\"control\";\n    return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":650,"y":1000,"wires":[["f5c27df832dc8c3d","13d2ca4f1e5d53e5"]]},{"id":"4a080a044fd1e5b9","type":"function","z":"4996c6c3b317fa9d","name":"Set fridge Off","func":"if(msg.payload==false) {\n    return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":1000,"wires":[["f62557f0045a6ac6"]]},{"id":"63e46ef5e7a7b9e8","type":"ui_text","z":"4996c6c3b317fa9d","group":"d3d2de9b553af3c0","order":6,"width":0,"height":0,"name":"","label":"remaining time:","format":"{{msg.payload}}","layout":"row-spread","className":"","x":1240,"y":1040,"wires":[]},{"id":"56f17f50d381b711","type":"function","z":"4996c6c3b317fa9d","name":"remaining time","func":"if (msg.payload == -1 || msg.payload == -0) {\n    return null\n}\n\nif (msg.payload == \"cancel\") {\n    msg.payload = \" \"\n    return msg\n}\nelse {\n    msg.payload = msg.payload/60;\n    msg.payload = msg.payload.toFixed(0);\n    msg.payload = msg.payload + \"min\";\n    return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1040,"y":1040,"wires":[["63e46ef5e7a7b9e8"]]},{"id":"fa1ee5cde2a3f6be","type":"function","z":"4996c6c3b317fa9d","name":"stop countdown","func":"msg.payload = \"cancel\"\nmsg.topic = \"control\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":640,"y":1040,"wires":[["f5c27df832dc8c3d","6d14fdbb452850a6"]]},{"id":"6d14fdbb452850a6","type":"delay","z":"4996c6c3b317fa9d","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":640,"y":1120,"wires":[["8a879b0d50f2746a","56f17f50d381b711"]]},{"id":"8a879b0d50f2746a","type":"function","z":"4996c6c3b317fa9d","name":"stop countdown","func":"msg.payload = 0\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":1000,"wires":[["aab65d39f6b1cc21"]]},{"id":"13d2ca4f1e5d53e5","type":"delay","z":"4996c6c3b317fa9d","name":"400ms","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":830,"y":1040,"wires":[["56f17f50d381b711"]]},{"id":"f62557f0045a6ac6","type":"ui_switch","z":"4996c6c3b317fa9d","name":"","label":"Fridge","tooltip":"","group":"d3d2de9b553af3c0","order":1,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"topic","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"className":"","x":1110,"y":560,"wires":[["0ef4e493c26b7e25"]]},{"id":"0ef4e493c26b7e25","type":"function","z":"4996c6c3b317fa9d","name":"set relay true/false","func":"global.set(\"one\", msg.payload) //ggf. \"one\" mit entsprechendem Relay ersetzen\nmsg.url = \"http://localhost:1880/relay/one/\"+String(msg.payload) //ggf. \"one\" mit entsprechendem Relay ersetzen\nmsg.method = \"PUT\"\nmsg.payload = msg.url\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1290,"y":560,"wires":[["818117a5147e3682"]]},{"id":"918193afa0195038","type":"comment","z":"4996c6c3b317fa9d","name":"verbundenes relay in der function Node setzen!!","info":"","x":1280,"y":520,"wires":[]},{"id":"754eaeb371791c75","type":"comment","z":"4996c6c3b317fa9d","name":"Timer ist beim Neustart immer auf \"Aus\"","info":"","x":270,"y":220,"wires":[]},{"id":"c6f6e1cf69dd46a0","type":"function","z":"4996c6c3b317fa9d","name":"get temp","func":"msg.payload = Number(global.get(\"temp1\"))\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":560,"wires":[["da926eae8fc158f4"]]},{"id":"25fcc44256e0e457","type":"inject","z":"4996c6c3b317fa9d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":"60","topic":"","payload":"","payloadType":"date","x":190,"y":560,"wires":[["c6f6e1cf69dd46a0"]]},{"id":"da926eae8fc158f4","type":"smooth","z":"4996c6c3b317fa9d","name":"","property":"payload","action":"mean","count":"5","round":"2","mult":"single","reduce":false,"x":560,"y":560,"wires":[["f1fbdfe71856cb1a","d2e0d1ae3a0dcf4e"]]},{"id":"f1fbdfe71856cb1a","type":"function","z":"4996c6c3b317fa9d","name":"check temp and set relay on/off","func":"var current_temp = Number(msg.payload)\nvar temp_on = Number(flow.get(\"fridgetemp_on\"))\n\nif (flow.get(\"fridgetemp_control\") == false || flow.get(\"fridgetemp_control\") == undefined) {\n    return null\n}\nelse if (flow.get(\"fridgetemp_control\") == true) {\n    if (current_temp > temp_on) {\n        msg.payload = true\n    }\n    else if (current_temp <= temp_on) {\n        msg.payload = false\n    }\n    return msg\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":560,"wires":[["f62557f0045a6ac6"]]},{"id":"67459c70f6d07281","type":"comment","z":"4996c6c3b317fa9d","name":"temp Sensor einstellen in der function Node!!","info":"","x":410,"y":520,"wires":[]},{"id":"f3d2d5102d19c1f9","type":"inject","z":"4996c6c3b317fa9d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"date","x":190,"y":760,"wires":[["df1eb4146d116172","ec8730f1045c1490"]]},{"id":"561655e4d2f7e594","type":"ui_slider","z":"4996c6c3b317fa9d","name":"","label":"Temp on:","tooltip":"Set temp at which the relay will be turned ON","group":"d3d2de9b553af3c0","order":2,"width":0,"height":0,"passthru":true,"outs":"end","topic":"topic","topicType":"msg","min":"10","max":"20","step":1,"className":"","x":620,"y":760,"wires":[["8044337ed5aa81e5","037d873ba14dd94b"]]},{"id":"8044337ed5aa81e5","type":"function","z":"4996c6c3b317fa9d","name":"set temp on","func":"flow.set(\"fridgetemp_on\", msg.payload)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":760,"wires":[[]]},{"id":"037d873ba14dd94b","type":"file","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetemp_on","filenameType":"str","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":890,"y":800,"wires":[[]]},{"id":"df1eb4146d116172","type":"file in","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetemp_on","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":410,"y":760,"wires":[["561655e4d2f7e594"]]},{"id":"a0118b89c5d8f795","type":"ui_switch","z":"4996c6c3b317fa9d","name":"","label":"Temp Control","tooltip":"","group":"d3d2de9b553af3c0","order":3,"width":"3","height":"1","passthru":true,"decouple":"false","topic":"topic","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"className":"","x":630,"y":840,"wires":[["4115eaa927ba2e03","fab273520f545f6f"]]},{"id":"4115eaa927ba2e03","type":"file","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetemp_control","filenameType":"str","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":900,"y":880,"wires":[[]]},{"id":"ec8730f1045c1490","type":"file in","z":"4996c6c3b317fa9d","name":"","filename":"pekaway/fridgetemp_control","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":420,"y":840,"wires":[["a0118b89c5d8f795"]]},{"id":"fab273520f545f6f","type":"function","z":"4996c6c3b317fa9d","name":"set tempcontrol on/off","func":"flow.set(\"fridgetemp_control\", msg.payload)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":840,"wires":[[]]},{"id":"818117a5147e3682","type":"http request","z":"4996c6c3b317fa9d","name":"","method":"use","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1490,"y":560,"wires":[[]]},{"id":"7ab87c71db1fc483","type":"comment","z":"4996c6c3b317fa9d","name":"Slider Werte einstellen","info":"","x":640,"y":720,"wires":[]},{"id":"d2e0d1ae3a0dcf4e","type":"ui_text","z":"4996c6c3b317fa9d","group":"d3d2de9b553af3c0","order":4,"width":"3","height":"1","name":"","label":"Current temp","format":"{{msg.payload}}°C","layout":"row-spread","className":"","x":750,"y":520,"wires":[]},{"id":"d1133834b78be051","type":"comment","z":"4996c6c3b317fa9d","name":"Kühlschrank Laufzeit","info":"","x":290,"y":960,"wires":[]},{"id":"4a98ba3bdd7f2761","type":"comment","z":"4996c6c3b317fa9d","name":"(Wenn Temp über \"Temp On\"-Wert, dann schalte den Kühlschrank an)","info":"","x":990,"y":720,"wires":[]},{"id":"67a83c8714ca5d5b","type":"comment","z":"4996c6c3b317fa9d","name":"Tempsensor Daten kommen alle 1min, nach 5min wird ein Mittelwert errechnet und weitergegeben","info":"","x":470,"y":600,"wires":[]},{"id":"1c2c5da28224e47f","type":"ui_group","name":"Timer","tab":"1dd05d8790d17372","order":3,"disp":true,"width":"6","collapse":false,"className":""},{"id":"d3d2de9b553af3c0","type":"ui_group","name":"Controls","tab":"1dd05d8790d17372","order":2,"disp":true,"width":"6","collapse":false,"className":""},{"id":"1dd05d8790d17372","type":"ui_tab","name":"Kühlbox","icon":"dashboard","disabled":false,"hidden":false}]

Sieht nicht ganz so schick aus die Steuerung, sollte aber funktionieren.

Du hast ganz oben links einen Schalter, um die Kühlbox manuell zu schalten. “Temp On” ist der Temperaturwert, ab dem die Kühlbox automatisch eingeschaltet wird (wenn Temp Control" aktiviert ist). Also es wird alle 60s die Temperatur abgefragt, dann nach 5min ein Mittelwert errechnet, damit nicht bei minimalen Schwankungen das Relay immer an und aus geht. Ist dieser Mittelwert über dem eingestellten “Temp On” Wert, geht das Relay an, ist es gleich oder darunter, geht das Relay aus.

Current temp wird dementsprechend erst nach 5min angezeigt bzw. aktualisiert.

Runtime ist genauso wie bei der Heizung, nach der eingestellten Zeit geht das Relay aus.
Da musst du aber beachten, dass die automatische Temp Control das Relay evtl. wieder anschaltet.
Der Timer ist auch einfach von der Heizung übernommen.

Im Backend musst du noch das Relay, an welchem die Kühlbox hängt, einstellen, den Temp Sensor und die Werte des “Temp On”-Sliders kannst du dir noch anpassen.

Hab dir alles mit Kommentaren versehen.

Hallo Maik,

Danke für deine Antwort. Ich habe von Arno schon was bekommen was ich umschreiben könnte. Dank trotzdem, bin am Wochenende am Bus testen und eine Alternative ist nie schlecht.

Schöne Rest Woche
Grüße David

genial - genau sowas hatte ich bereits mal vorgeschlagen, eine zweite Temperatursteuerung (neben der autoterm)
wenn man jetzt noch die Hysterese einstellen könnte :sunglasses:, oder geht das bereits ?

Ich hab den gleichen Kompressor und benutze momentan das W3230 Thermostat, da kannste auch alles einstellen, ist eben nur nicht mit dem Vanpi verbunden.
Ein Temperaturfühler im Kühlschrank ist bereits mit dem Vanpi verbunden.

Wie bekomme ich das ins System ?
(hab leider mit node red noch nicht viel gemacht…)
Einfach das script in node red importieren ?

grüsse,
Olaf

Hallo Olaf,

das mit der Hysterie ist im Flow super gelöst. Du brauchst nur alles reinkopieren, im Flow Relay und Tempsensoren benennen, deployen und dann sollte es laufen.

Den W3230 habe ich auch verbaut, allerdings lief mir da der Kompressor zu oft. Hat mir nicht so gefallen.

Gruß Maik

ok, mal gucken, ob ich noch dazu komme, am WE geht’s 'n paar Tage weg.

Das der Kompressor mit dem W3230 zu oft lief, verstehe ich nicht, hab bei mir 4 Grad Hysterese eingestellt und das hat prima funktioniert.
Die Temperaturkurve konnte ich dank Vanpi Temperatursensor gut verfolgen :slight_smile:

Apropos Tmp-Sensor: weisst du zufällig, in welcher Reihenfolge die im Vanpi angezeigt werden ?
Meine Vermutung: zufällig nach irgendeiner “ID”, die müssen ja anhand von irgendeiner Adresse unterschieden werden.
Ich hatte bereits 3 Stück installiert, und als ein Vierter dazu kam, hat‘s mir die ganze Reihenfolge durcheinandergebracht, Innentemperatur war dann Kühlschrank, Aussentemp. hat die Heisswassertemperatur angezeigt… Also einmal alle neu identifizieren, was kein Spass ist, wenn 2 verdeckt montiert sind und alle bei nichtbenutzung des Van’s annähernd die gleiche Temperatur haben :crazy_face:

ich habe keine Ahnung von Node - Red und habe diese Anleitung geschickt bekommen, weil ich gerne 6 Temperatursensoren anschließen wollte.

Du müsstest an allen 3 Stellen die Variablen temp4 und temp5 tauschen, weil das Display fragt die Variablen temp1 bis temp4 ab und zeigt die Werte entsprechend an.

Oder, der erstmal einfachere Weg wäre (Ist aber noch eine weitere STelle die zu ändern ist…):

Im Flow “Pekaway Display 1” gibt es die function “send status home”

Wenn du dort an der markierten Stelle temp4 durch temp5 ersetzt, sollte dieser Werte im Display als 4ter Temperatursensor angezeigt werden.

Mit den entsprechnenden Stellen sind diese gemeint:

erst Sensor_Dashboard (zeigt den Sensor im Info Tab an)
dann Config (Um in der Frontend Config den Namen vergeben zu können)
und dann den Init_flow (damit der Name bei einem Neustart wieder eingelesen wird)

Ich helfe mir oft mit der Node-Red Suche. Gib mal einen Temp-Sensor, den du tauschen möchtest in die Suche ein und tausche Sie da gegeneinander aus. Es wird glaube ich, nicht ausreichen nur in einem Flow zu tauschen Am besten nimmst du ein Image zum Testen und wenn es läuft kannst du es auf das eigentliche Image anwenden.

Gruß Maik

Die Temperatur Sensoren haben eine ID.
Die kleinste mogelt sich immer auf Platz 1.
Das geht mir ach auf den Senkel. Ich wollte mir für die Fühler was bauen indem ich den sensor 1,2,3… auf Külschrank, Aussenfühler, usw verlinken kann.
Hab ich für Wasser und Abwasser schon gemacht. Ich habe dann den Sensor in der Programmierung Wassersensor genannt. Und kann dann sagen level 1 du bist Wassersensor und so hab ich überall wo Wassersensor steht den level 1 drinne.
Ist ähnlich wie das zuweisen von Fühler und Relay für die Heizung
Gruß Arno

@Goliard
Hey David
Hast du das mit dem Kühlschrank getestet???

@ahtdf
Hei Arno,
Sorry für die verspätete Antwort. Bin im Urlaub und habe es jetzt erst richtig testen können.
Soweit funktioniert der Kühlschrank. Danke nochmal.
Grüße David

Schönen Urlaub.
Hauptsache funktioniert :wink:
Gruß Arno