Temperature With Max6675



It’s possible to have Temperature With Max6675 in node-red?



Can you tell us a little more about your system? What interface does the Max6675 have?



Actualy i use max6675 with arduino.



If you want to send the data to the Pi, I would use MQTT. Put a broker on the Pi and then set up the arduino to publish the date and in node-red, subscribe to the topic and you are good to go.



No need for the Arduino… - interesting thread here - including useful tips on wiring etc…



I already have max6675 working with pi but it’s possible to use it with node-red?



Well, first off just try calling the python program using an exec node (or the node-red-node-daemon may be better if its a long running program)

Otherwise you are probably into raw SPI code which some nodes may support but probably a steep curve.



Hey guys,

I have a C++ Code for reading the Max6675 Module. Now I like to use the wiring Pi libary in Node Red, what exists there, and changed the code into javascript. But still there are some errors in the code. Maybe with the help with you guys we can build a function node to use this code to read out the Max6675.

The C+ code is based on the follow link:

My actual code in node red function is: (Comments are in German sry for that)

// MAX6675.c liest die Temperatur des Thermoelemnts Typ K aus

// Hier sind die verbundenen PIN-Anschlüsse einzutragen
// nach WiringPi Labelling, für Bild siehe Anleitung
var CLK = 14
var DBIT = 13 // SO
var CS = 10

//Einzubindene Bibliotheken für die Kommunikation mit dem Pi

var wpi = require('wiring-pi');

// Methoden zur Temperaturmessung deklariert
var start = 0;
var Ctemp, Ftemp;

function main() {

while(start < 3) {

if (wpi.wiringPiSetup () == -1) //Zugriff auf die Bibliothek wiringPi
exit (1) ;

wpi.pinMode(CLK, OUTPUT); // Deklarierung des In- bzw. Outputs
wpi.pinMode(DBIT, INPUT); // der einzelnen Variablen bzw. Pins
wpi.pinMode(CS, OUTPUT);

wpi.digitalWrite(CS, HIGH); // mit High wird der Wert auf 1 gesetzt
wpi.digitalWrite(CLK, LOW); // mit Low wird der Wert auf 0 gesetzt

SENSOR_VALUE = Thermal_Couple_Read();
if (SENSOR_VALUE == -1) {
printf ("No sensor connected. \n");
else {

printf ("Wert %d: ", start+1);
printf ("S= %d;", SENSOR_VALUE);
Ctemp = SENSOR_VALUE * 0.25;    //Umrechnungswert in Grad Temperatur
printf ("C= %4.2f; ", Ctemp);
Ftemp = (Ctemp * 9 / 5) + 32;   //Umrechnung in Fahrenheit
printf ("F= %4.2f; \n", Ftemp);

delay(10000), // In Millisekunden angegeben, also 10 Sekunden warten
start++; // Inkrementiert den start wert


return 0;

function Thermal_Couple_Read() {

var value = 0;
// init Sensor
wpi.digitalWrite(CS, LOW);
wpi.digitalWrite(CS, HIGH);

/* Liest den Chip aus und gibt den Rohtemperaturwert wieder
Stellt den CS Pinausgang auf 0 und

  • erlaubt die Auslesung des Konvertierungsprozesses*/

wpi.digitalWrite(CS, LOW);
/* Bit 15 ist wirkungslos, daher wird dieser übergangen*/
wpi.digitalWrite(CLK, HIGH);
// delay(1);
wpi.digitalWrite(CLK, LOW);

Liest die Bits 14-3 vom MAX6675 für die Temperatur
Schleife zum Lesen der einzelnen Bits
und Speichern des finalen Wertes */

var i;
for (i = 14; i >= 0; i--) {
wpi.digitalWrite(CLK, HIGH);
// delay(1);
value += digitalRead(DBIT) << i;
wpi.digitalWrite(CLK, LOW);

// Überprüfen ob der Bit D2 auf 0 oder 1 ist, wenn 1 dann kein Sensor
if ((value & 0x04) == 0x04) return -1;
// Ausgabe des Endwertes
return value >> 3;