Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. More then one MAX6675 in one node? ...smoking meat and fish...

More then one MAX6675 in one node? ...smoking meat and fish...

Scheduled Pinned Locked Moved Troubleshooting
12 Posts 3 Posters 3.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jonehrJ Offline
    jonehrJ Offline
    jonehr
    wrote on last edited by
    #3

    ebay.com
    ex.

    http://www.ebay.com/itm/1-K-Type-Thermocouple-Sensor-Probe-Diameter-1-6mm-Probe-Length-50-300mm-1500mm-/271178661987?var=&hash=item3f23820063:m:mlAXKtAdCmssGX3Sudq31Ww
    and

    http://www.ebay.com/itm/381359075336?_trksid=p2055119.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT

    1 Reply Last reply
    0
    • jonehrJ jonehr

      I'm using this example to have control over the temperature in the meat in my smoker, and it is working fine.
      The question:
      Can I have 6 temp sensors/MAX6675 connected to one node?
      How do I change the exemple?

      // this example is public domain. enjoy!
      // www.ladyada.net/learn/sensors/thermocouple
      
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>
      #include "max6675.h"
      
      #define MY_NODE_ID 10
      
      #define CHILD_ID_TEMP 10
      #define TEMP_SENSOR_DIGITAL_PIN 4
      
      
      int thermoDO = 4;
      int thermoCS = 5;
      int thermoCLK = 6;
      
      MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
      int vccPin = 3;
      int gndPin = 2;
      
      MyMessage msg(CHILD_ID_TEMP, V_TEMP);
      
      
      
      
      void presentation()  {
        
       
        // Send the sketch version information to the gateway and Controller
        sendSketchInfo("Temp Sensor", "0.1");
      
        // Register all sensors to gateway (they will be created as child devices)
        present(CHILD_ID_TEMP, S_TEMP);
      }
        
      
      
      
      void setup() {
        Serial.begin(115200);
        // use Arduino pins 
        pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
        pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
        
        Serial.println("MAX6675 test");
        // wait for MAX chip to stabilize
        delay(500);
      }
      
      void loop() {
        // basic readout test, just print the current temp
        int tempCelsius = thermocouple.readCelsius();
         Serial.print("C = "); 
         Serial.println(thermocouple.readCelsius());
         Serial.print("F = ");
         Serial.println(thermocouple.readFahrenheit());
         send(msg.set(tempCelsius));
       
         delay(5000);
      }```
      mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by
      #4

      @jonehr yes you can. You need different CS pins for each sensor, but the rest of the pins can be shared.

      1 Reply Last reply
      0
      • jonehrJ Offline
        jonehrJ Offline
        jonehr
        wrote on last edited by
        #5

        Thank you. I'll make a try.

        mfalkviddM 1 Reply Last reply
        0
        • jonehrJ jonehr

          Thank you. I'll make a try.

          mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by
          #6

          @jonehr great. Please report back on the progress.

          If you want to dive deeper i to how SPI works, sparkfun has a nice tutorial.

          jonehrJ 1 Reply Last reply
          0
          • mfalkviddM mfalkvidd

            @jonehr great. Please report back on the progress.

            If you want to dive deeper i to how SPI works, sparkfun has a nice tutorial.

            jonehrJ Offline
            jonehrJ Offline
            jonehr
            wrote on last edited by
            #7

            @mfalkvidd
            Thank you.
            I'll do so.

            1 Reply Last reply
            0
            • jonehrJ Offline
              jonehrJ Offline
              jonehr
              wrote on last edited by jonehr
              #8

              Now I've studied and done some copy pasting...I'm not a programmer as you can see.

              This code seems to work.. a bit...
              My problem now is that I don't know how to write the code to tell the controller/Domoticz that there are three sensors to the node. I only get one child in "the hardware list" in Domoticz.

              
              // Enable debug prints to serial monitor
              #define MY_DEBUG
              // Enable and select radio type attached
              #define MY_RADIO_NRF24
              //#define MY_RADIO_RFM69
              
              #include <SPI.h>
              #include <MySensors.h>
              #include "max6675.h"
              
              #define MY_NODE_ID AUTO
              
              #define CHILD_ID_TEMP AUTO
              #define TEMP_SENSOR_DIGITAL_PIN 4
              //#define NUMBER_OF_SENSORS 3 // Change this depending on how many sensors you connect.
              
              MyMessage msg(CHILD_ID_TEMP, V_TEMP);
              
              
              int thermoDO = 4;
              int thermoCS = 5;
              int thermoCS2 = 7;
              int thermoCS3 = 8;
              int thermoCLK = 6;
              
              MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
              MAX6675 thermocouple2(thermoCLK, thermoCS2, thermoDO);
              MAX6675 thermocouple3(thermoCLK, thermoCS3, thermoDO);
              
              int vccPin = 3;
              int gndPin = 2;
              
              
              
              void presentation()  {
                
               
                // Send the sketch version information to the gateway and Controller
                sendSketchInfo("Temp Sensor", "0.1");
              
                // Register all sensors to gateway (they will be created as child devices)
                present(CHILD_ID_TEMP, S_TEMP);
              }
                
              
              
              
              void setup() {
                Serial.begin(115200);
                // use Arduino pins 
                pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
                pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
                
                Serial.println("MAX6675 test");
                // wait for MAX chip to stabilize
                delay(500);
              }
              
              void loop() {
                // basic readout test, just print the current temp
                int tempCelsius = thermocouple.readCelsius();
                int tempCelsius2 = thermocouple2.readCelsius();
                int tempCelsius3 = thermocouple3.readCelsius();
                 
                 Serial.print("prob1---C = "); 
                 Serial.println(thermocouple.readCelsius());
              
                 Serial.print("prob2---C = "); 
                 Serial.println(thermocouple2.readCelsius());
              
                 Serial.print("prob3---C = "); 
                 Serial.println(thermocouple3.readCelsius());
                 
                  send(msg.set(tempCelsius));
                  send(msg.set(tempCelsius2));
                  send(msg.set(tempCelsius3));
               
                 delay(5000);
              }```
              

              My Domotics log:

              2017-01-03 21:23:57.057 (Mysensor server) Temp (2.1.0)
              2017-01-03 21:23:57.083 (Mysensor server) Temp (2.1.0)
              2017-01-03 21:23:57.105 (Mysensor server) Temp (2.1.0) ```

              My serial log:

              prob1---C = 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0
              3 TSM:INIT
              4 TSF:WUR:MS=0
              11 TSM:INIT:TSP OK
              13 TSF:SID:OK,ID=10
              14 TSM:FPAR
              51 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
              521 TSF:MSG:READ,0-0-10,s=255,c=3,t=8,pt=1,l=1,sg=0:0
              526 TSF:MSG:FPAR OK,ID=0,D=1
              1574 TSF:MSG:READ,8-8-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
              2058 TSM:FPAR:OK
              2059 TSM:ID
              2060 TSM:ID:OK
              2062 TSM:UPL
              2067 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
              2077 TSF:MSG:READ,0-0-10,s=255,c=3,t=25,pt=1,l=1,sg=0:1
              2082 TSF:MSG:PONG RECV,HP=1
              2085 TSM:UPL:OK
              2086 TSM:READY:ID=10,PAR=0,DIS=1
              2092 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
              2101 TSF:MSG:READ,0-0-10,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
              2108 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
              2116 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
              2130 TSF:MSG:READ,0-0-10,s=255,c=3,t=6,pt=0,l=1,sg=0:M
              2138 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=11,pt=0,l=11,sg=0,ft=0,st=OK:Temp Sensor
              2147 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:0.1
              2155 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
              2161 MCO:REG:REQ
              2165 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
              2171 TSF:MSG:READ,0-0-10,s=255,c=3,t=27,pt=1,l=1,sg=0:1
              2177 MCO:PIM:NODE REG=1
              2179 MCO:BGN:STP
              MAX6675 test
              2680 MCO:BGN:INIT OK,TSP=1
              prob1---C = 0.00
              prob2---C = 0.00
              prob3---C = 23.75
              2891 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:256
              2909 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:32
              2917 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:23
              prob1---C = 0.00
              prob2---C = 16.00
              prob3---C = 23.50
              8130 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
              8138 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
              8146 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:23

              mfalkviddM 1 Reply Last reply
              0
              • jonehrJ jonehr

                Now I've studied and done some copy pasting...I'm not a programmer as you can see.

                This code seems to work.. a bit...
                My problem now is that I don't know how to write the code to tell the controller/Domoticz that there are three sensors to the node. I only get one child in "the hardware list" in Domoticz.

                
                // Enable debug prints to serial monitor
                #define MY_DEBUG
                // Enable and select radio type attached
                #define MY_RADIO_NRF24
                //#define MY_RADIO_RFM69
                
                #include <SPI.h>
                #include <MySensors.h>
                #include "max6675.h"
                
                #define MY_NODE_ID AUTO
                
                #define CHILD_ID_TEMP AUTO
                #define TEMP_SENSOR_DIGITAL_PIN 4
                //#define NUMBER_OF_SENSORS 3 // Change this depending on how many sensors you connect.
                
                MyMessage msg(CHILD_ID_TEMP, V_TEMP);
                
                
                int thermoDO = 4;
                int thermoCS = 5;
                int thermoCS2 = 7;
                int thermoCS3 = 8;
                int thermoCLK = 6;
                
                MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
                MAX6675 thermocouple2(thermoCLK, thermoCS2, thermoDO);
                MAX6675 thermocouple3(thermoCLK, thermoCS3, thermoDO);
                
                int vccPin = 3;
                int gndPin = 2;
                
                
                
                void presentation()  {
                  
                 
                  // Send the sketch version information to the gateway and Controller
                  sendSketchInfo("Temp Sensor", "0.1");
                
                  // Register all sensors to gateway (they will be created as child devices)
                  present(CHILD_ID_TEMP, S_TEMP);
                }
                  
                
                
                
                void setup() {
                  Serial.begin(115200);
                  // use Arduino pins 
                  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
                  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
                  
                  Serial.println("MAX6675 test");
                  // wait for MAX chip to stabilize
                  delay(500);
                }
                
                void loop() {
                  // basic readout test, just print the current temp
                  int tempCelsius = thermocouple.readCelsius();
                  int tempCelsius2 = thermocouple2.readCelsius();
                  int tempCelsius3 = thermocouple3.readCelsius();
                   
                   Serial.print("prob1---C = "); 
                   Serial.println(thermocouple.readCelsius());
                
                   Serial.print("prob2---C = "); 
                   Serial.println(thermocouple2.readCelsius());
                
                   Serial.print("prob3---C = "); 
                   Serial.println(thermocouple3.readCelsius());
                   
                    send(msg.set(tempCelsius));
                    send(msg.set(tempCelsius2));
                    send(msg.set(tempCelsius3));
                 
                   delay(5000);
                }```
                

                My Domotics log:

                2017-01-03 21:23:57.057 (Mysensor server) Temp (2.1.0)
                2017-01-03 21:23:57.083 (Mysensor server) Temp (2.1.0)
                2017-01-03 21:23:57.105 (Mysensor server) Temp (2.1.0) ```

                My serial log:

                prob1---C = 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0
                3 TSM:INIT
                4 TSF:WUR:MS=0
                11 TSM:INIT:TSP OK
                13 TSF:SID:OK,ID=10
                14 TSM:FPAR
                51 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                521 TSF:MSG:READ,0-0-10,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                526 TSF:MSG:FPAR OK,ID=0,D=1
                1574 TSF:MSG:READ,8-8-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                2058 TSM:FPAR:OK
                2059 TSM:ID
                2060 TSM:ID:OK
                2062 TSM:UPL
                2067 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                2077 TSF:MSG:READ,0-0-10,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                2082 TSF:MSG:PONG RECV,HP=1
                2085 TSM:UPL:OK
                2086 TSM:READY:ID=10,PAR=0,DIS=1
                2092 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                2101 TSF:MSG:READ,0-0-10,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                2108 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                2116 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                2130 TSF:MSG:READ,0-0-10,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                2138 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=11,pt=0,l=11,sg=0,ft=0,st=OK:Temp Sensor
                2147 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:0.1
                2155 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                2161 MCO:REG:REQ
                2165 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                2171 TSF:MSG:READ,0-0-10,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                2177 MCO:PIM:NODE REG=1
                2179 MCO:BGN:STP
                MAX6675 test
                2680 MCO:BGN:INIT OK,TSP=1
                prob1---C = 0.00
                prob2---C = 0.00
                prob3---C = 23.75
                2891 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:256
                2909 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:32
                2917 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:23
                prob1---C = 0.00
                prob2---C = 16.00
                prob3---C = 23.50
                8130 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
                8138 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
                8146 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:23

                mfalkviddM Offline
                mfalkviddM Offline
                mfalkvidd
                Mod
                wrote on last edited by
                #9

                @jonehr great that you got them workin.

                All three sensors need to be presented, and the sensor number needs to be set when sending values. See the temperature example, especially this part:

                  // Present all sensors to controller
                  for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {   
                     present(i, S_TEMP);
                  }
                

                for presentation and this part for sending values:

                
                      // Send in the new temperature
                      send(msg.setSensor(i).set(temperature,1));
                
                1 Reply Last reply
                0
                • jonehrJ Offline
                  jonehrJ Offline
                  jonehr
                  wrote on last edited by
                  #10

                  Now I've tried all day...I can't get it to work.
                  Trying to follow your advice @mfalkvidd but only made small steps with "presentation". Very thankful for your help but unfortunately I don't get it right.
                  I've specified 5 sensors to the node but Domoticz sees 6 . The only working child is child 255. There I see the temperature.

                  0_1483629730258_domscreen.png
                  The code looks like this now:

                  // Enable debug prints to serial monitor
                  #define MY_DEBUG
                  // Enable and select radio type attached
                  #define MY_RADIO_NRF24
                  //#define MY_RADIO_RFM69
                  
                  #include <SPI.h>
                  #include <MySensors.h>
                  #include "max6675.h"
                  
                  #define MY_NODE_ID AUTO
                  
                  #define CHILD_ID_TEMP AUTO
                  
                  
                  
                  #define TEMP_SENSOR_DIGITAL_PIN 4
                  
                  #define MAX_ATTACHED_SENSORS 5
                  #define NUMBER_OF_SENSORS 5 // Change this depending on how many sensors you connect.
                  
                  MyMessage msg(CHILD_ID_TEMP, V_TEMP);
                  
                  
                  int gndPin = 2;
                  int vccPin = 3;
                  int thermoDO = 4;
                  int thermoCLK = 6;
                  int thermoCS1 = 5;
                  int thermoCS2 = 7;
                  int thermoCS3 = 8;
                  int thermoCS4 = 8;
                  int thermoCS5 = 8;
                  
                  MAX6675 thermocouple1(thermoCLK, thermoCS1, thermoDO);
                  MAX6675 thermocouple2(thermoCLK, thermoCS2, thermoDO);
                  MAX6675 thermocouple3(thermoCLK, thermoCS3, thermoDO);
                  MAX6675 thermocouple4(thermoCLK, thermoCS4, thermoDO);
                  MAX6675 thermocouple5(thermoCLK, thermoCS5, thermoDO);
                  
                  
                  
                  
                  void presentation()  {
                    
                    
                   
                      // Send the sketch version information to the gateway and Controller
                    sendSketchInfo("Temp Sensor", "0.1");
                    
                  
                  
                    // Present all sensors to controller
                    for (int i=0; i<NUMBER_OF_SENSORS && i<MAX_ATTACHED_SENSORS; i++) {   
                      present(i, S_TEMP);
                  
                    
                       // Register all sensors to gateway (they will be created as child devices)
                    present(CHILD_ID_TEMP, S_TEMP);
                    }
                  }
                    
                  
                  
                  
                  void setup() {
                    Serial.begin(115200);
                    // use Arduino pins 
                    pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
                    pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
                    
                    Serial.println("MAX6675 test");
                    // wait for MAX chip to stabilize
                    delay(500);
                  }
                  
                  void loop() {
                     //basic readout test, just print the current temp
                    int tempCelsius1 = thermocouple1.readCelsius();
                    int tempCelsius2 = thermocouple2.readCelsius();
                    int tempCelsius3 = thermocouple3.readCelsius();
                    int tempCelsius4 = thermocouple4.readCelsius();
                    int tempCelsius5 = thermocouple5.readCelsius();
                    
                  
                    
                    
                     
                     Serial.print("prob1---C = "); 
                     Serial.println(thermocouple1.readCelsius());
                  
                     Serial.print("prob2---C = "); 
                     Serial.println(thermocouple2.readCelsius());
                  
                     Serial.print("prob3---C = "); 
                     Serial.println(thermocouple3.readCelsius());
                     
                      send(msg.set(tempCelsius1));
                      send(msg.set(tempCelsius2));
                      send(msg.set(tempCelsius3));
                      send(msg.set(tempCelsius4));
                      send(msg.set(tempCelsius5));
                   
                  
                       //for (int i=0; i<NUMBER_OF_SENSORS && i<MAX_ATTACHED_SENSORS; i++) {   
                      // Send in the new temperature
                        //  send(msg.setreadCelsius(i));}
                  
                   
                     delay(5000);
                  }
                  

                  And the serial log:
                  prob1---C = 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0
                  3 TSM:INIT
                  4 TSF:WUR:MS=0
                  11 TSM:INIT:TSP OK
                  13 TSF:SID:OK,ID=10
                  14 TSM:FPAR
                  51 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  2058 !TSM:FPAR:NO REPLY
                  2060 TSM:FPAR
                  2096 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  3083 TSF:MSG:READ,0-0-10,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                  3087 TSF:MSG:FPAR OK,ID=0,D=1
                  3228 TSF:MSG:READ,5-5-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                  3686 TSF:MSG:READ,8-8-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                  3775 TSF:MSG:READ,1-1-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                  4104 TSM:FPAR:OK
                  4105 TSM:ID
                  4106 TSM:ID:OK
                  4108 TSM:UPL
                  4145 !TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1
                  4152 TSF:MSG:READ,0-0-10,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                  4157 TSF:MSG:PONG RECV,HP=1
                  4159 TSM:UPL:OK
                  4161 TSM:READY:ID=10,PAR=0,DIS=1
                  4165 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                  4179 TSF:MSG:READ,0-0-10,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                  4205 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                  4213 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                  4229 TSF:MSG:READ,0-0-10,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                  4236 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=11,pt=0,l=11,sg=0,ft=0,st=OK:Temp Sensor
                  4245 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:0.1
                  4282 TSF:MSG:SEND,10-10-0-0,s=0,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                  4325 !TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=NACK:2.1.0
                  4334 TSF:MSG:SEND,10-10-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=1,st=OK:
                  4354 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                  4362 TSF:MSG:SEND,10-10-0-0,s=2,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                  4370 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                  4378 TSF:MSG:SEND,10-10-0-0,s=3,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                  4386 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                  4397 TSF:MSG:SEND,10-10-0-0,s=4,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                  4425 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                  4432 MCO:REG:REQ
                  4435 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                  4445 TSF:MSG:READ,0-0-10,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                  4450 MCO:PIM:NODE REG=1
                  4452 MCO:BGN:STP
                  MAX6675 test
                  4954 MCO:BGN:INIT OK,TSP=1
                  prob1---C = 2.00
                  prob2---C = nan
                  prob3---C = 21.50
                  5227 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
                  5235 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:56
                  5245 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21
                  5254 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21
                  5273 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21

                  mfalkviddM 1 Reply Last reply
                  0
                  • jonehrJ jonehr

                    Now I've tried all day...I can't get it to work.
                    Trying to follow your advice @mfalkvidd but only made small steps with "presentation". Very thankful for your help but unfortunately I don't get it right.
                    I've specified 5 sensors to the node but Domoticz sees 6 . The only working child is child 255. There I see the temperature.

                    0_1483629730258_domscreen.png
                    The code looks like this now:

                    // Enable debug prints to serial monitor
                    #define MY_DEBUG
                    // Enable and select radio type attached
                    #define MY_RADIO_NRF24
                    //#define MY_RADIO_RFM69
                    
                    #include <SPI.h>
                    #include <MySensors.h>
                    #include "max6675.h"
                    
                    #define MY_NODE_ID AUTO
                    
                    #define CHILD_ID_TEMP AUTO
                    
                    
                    
                    #define TEMP_SENSOR_DIGITAL_PIN 4
                    
                    #define MAX_ATTACHED_SENSORS 5
                    #define NUMBER_OF_SENSORS 5 // Change this depending on how many sensors you connect.
                    
                    MyMessage msg(CHILD_ID_TEMP, V_TEMP);
                    
                    
                    int gndPin = 2;
                    int vccPin = 3;
                    int thermoDO = 4;
                    int thermoCLK = 6;
                    int thermoCS1 = 5;
                    int thermoCS2 = 7;
                    int thermoCS3 = 8;
                    int thermoCS4 = 8;
                    int thermoCS5 = 8;
                    
                    MAX6675 thermocouple1(thermoCLK, thermoCS1, thermoDO);
                    MAX6675 thermocouple2(thermoCLK, thermoCS2, thermoDO);
                    MAX6675 thermocouple3(thermoCLK, thermoCS3, thermoDO);
                    MAX6675 thermocouple4(thermoCLK, thermoCS4, thermoDO);
                    MAX6675 thermocouple5(thermoCLK, thermoCS5, thermoDO);
                    
                    
                    
                    
                    void presentation()  {
                      
                      
                     
                        // Send the sketch version information to the gateway and Controller
                      sendSketchInfo("Temp Sensor", "0.1");
                      
                    
                    
                      // Present all sensors to controller
                      for (int i=0; i<NUMBER_OF_SENSORS && i<MAX_ATTACHED_SENSORS; i++) {   
                        present(i, S_TEMP);
                    
                      
                         // Register all sensors to gateway (they will be created as child devices)
                      present(CHILD_ID_TEMP, S_TEMP);
                      }
                    }
                      
                    
                    
                    
                    void setup() {
                      Serial.begin(115200);
                      // use Arduino pins 
                      pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
                      pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
                      
                      Serial.println("MAX6675 test");
                      // wait for MAX chip to stabilize
                      delay(500);
                    }
                    
                    void loop() {
                       //basic readout test, just print the current temp
                      int tempCelsius1 = thermocouple1.readCelsius();
                      int tempCelsius2 = thermocouple2.readCelsius();
                      int tempCelsius3 = thermocouple3.readCelsius();
                      int tempCelsius4 = thermocouple4.readCelsius();
                      int tempCelsius5 = thermocouple5.readCelsius();
                      
                    
                      
                      
                       
                       Serial.print("prob1---C = "); 
                       Serial.println(thermocouple1.readCelsius());
                    
                       Serial.print("prob2---C = "); 
                       Serial.println(thermocouple2.readCelsius());
                    
                       Serial.print("prob3---C = "); 
                       Serial.println(thermocouple3.readCelsius());
                       
                        send(msg.set(tempCelsius1));
                        send(msg.set(tempCelsius2));
                        send(msg.set(tempCelsius3));
                        send(msg.set(tempCelsius4));
                        send(msg.set(tempCelsius5));
                     
                    
                         //for (int i=0; i<NUMBER_OF_SENSORS && i<MAX_ATTACHED_SENSORS; i++) {   
                        // Send in the new temperature
                          //  send(msg.setreadCelsius(i));}
                    
                     
                       delay(5000);
                    }
                    

                    And the serial log:
                    prob1---C = 0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0
                    3 TSM:INIT
                    4 TSF:WUR:MS=0
                    11 TSM:INIT:TSP OK
                    13 TSF:SID:OK,ID=10
                    14 TSM:FPAR
                    51 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    2058 !TSM:FPAR:NO REPLY
                    2060 TSM:FPAR
                    2096 TSF:MSG:SEND,10-10-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                    3083 TSF:MSG:READ,0-0-10,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                    3087 TSF:MSG:FPAR OK,ID=0,D=1
                    3228 TSF:MSG:READ,5-5-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                    3686 TSF:MSG:READ,8-8-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                    3775 TSF:MSG:READ,1-1-10,s=255,c=3,t=8,pt=1,l=1,sg=0:1
                    4104 TSM:FPAR:OK
                    4105 TSM:ID
                    4106 TSM:ID:OK
                    4108 TSM:UPL
                    4145 !TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1
                    4152 TSF:MSG:READ,0-0-10,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                    4157 TSF:MSG:PONG RECV,HP=1
                    4159 TSM:UPL:OK
                    4161 TSM:READY:ID=10,PAR=0,DIS=1
                    4165 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                    4179 TSF:MSG:READ,0-0-10,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    4205 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                    4213 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                    4229 TSF:MSG:READ,0-0-10,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                    4236 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=11,pt=0,l=11,sg=0,ft=0,st=OK:Temp Sensor
                    4245 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:0.1
                    4282 TSF:MSG:SEND,10-10-0-0,s=0,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    4325 !TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=NACK:2.1.0
                    4334 TSF:MSG:SEND,10-10-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=1,st=OK:
                    4354 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                    4362 TSF:MSG:SEND,10-10-0-0,s=2,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    4370 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                    4378 TSF:MSG:SEND,10-10-0-0,s=3,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    4386 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                    4397 TSF:MSG:SEND,10-10-0-0,s=4,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
                    4425 TSF:MSG:SEND,10-10-0-0,s=255,c=0,t=6,pt=0,l=5,sg=0,ft=0,st=OK:2.1.0
                    4432 MCO:REG:REQ
                    4435 TSF:MSG:SEND,10-10-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                    4445 TSF:MSG:READ,0-0-10,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                    4450 MCO:PIM:NODE REG=1
                    4452 MCO:BGN:STP
                    MAX6675 test
                    4954 MCO:BGN:INIT OK,TSP=1
                    prob1---C = 2.00
                    prob2---C = nan
                    prob3---C = 21.50
                    5227 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:0
                    5235 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:56
                    5245 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21
                    5254 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21
                    5273 TSF:MSG:SEND,10-10-0-0,s=255,c=1,t=0,pt=2,l=2,sg=0,ft=0,st=OK:21

                    mfalkviddM Offline
                    mfalkviddM Offline
                    mfalkvidd
                    Mod
                    wrote on last edited by
                    #11

                    Nice work. Some small adjustments:
                    Remove this

                       // Register all sensors to gateway (they will be created as child devices)
                      present(CHILD_ID_TEMP, S_TEMP);
                    

                    The 5 temperature probes will get presented in the for loop above and will get numbers 0, 1, 2, 3, and 4.

                    Also change

                        send(msg.set(tempCelsius1));
                        send(msg.set(tempCelsius2));
                        send(msg.set(tempCelsius3));
                        send(msg.set(tempCelsius4));
                        send(msg.set(tempCelsius5));
                    

                    to

                        send(msg.setSensor(0).set(tempCelsius1));
                        send(msg.setSensor(1).set(tempCelsius2));
                        send(msg.setSensor(2).set(tempCelsius3));
                        send(msg.setSensor(3).set(tempCelsius4));
                        send(msg.setSensor(4).set(tempCelsius5));
                    

                    That should be it. The code could be made a bit cleaner by using arrays but if you aren't familiar with that type if coding I suggest you keep it the way it is.

                    1 Reply Last reply
                    0
                    • jonehrJ Offline
                      jonehrJ Offline
                      jonehr
                      wrote on last edited by
                      #12

                      @mfalkvidd

                      I'm very grateful...thank you! works fine.
                      As you said, the code could be cleaner but I'm fully satisfied.
                      When I get the time I'll do some basic coding studies.

                      1 Reply Last reply
                      1
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      14

                      Online

                      11.7k

                      Users

                      11.2k

                      Topics

                      113.1k

                      Posts


                      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • MySensors
                      • OpenHardware.io
                      • Categories
                      • Recent
                      • Tags
                      • Popular