Announcement

Collapse
No announcement yet.

Reading Temperature from a 2441 Thermostat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Reading Temperature from a 2441 Thermostat

    I am a developer and trying to read the temperature from a 2441 Thermostat using the 2412S Power Line Modem (Serial commands).

    I am sending the following SD command:

    [Hex]

    02 62 4C 80 F1 10 6B 03

    where my thermostat has Insteon ID of 4C.80.F1.

    02 62 for Standard Message

    4C 80 F1 for my thermostat Insteon ID

    10 for Message Flags (bit 4 set to "1" for Standard Message) [NOTE: I am not sure if this is correct and there seems to be no documentation on the Message Flags)

    6B for Cmd1 to thermostat (Thermostat Status)

    03 for Cmd2 (Temperature returned in ACK)

    I am getting a 0x15 (NAK) as a response, and cannot figure out what I am doing wrong. I have also tried 6B 00, 6A 03 and 6A 00 for Cmd1 and Cmd2 (there seems to be conflicting information between the Modem Developer's Guide, Command Table and Developer's Notes for Insteon Thermostats (V 012).

    Please note that I have been using the 2412S for many years, primarily as a way to control legacy X10 devices but also to control and monitor Insteon devices as well so I know my modem is fine. Reading the thermostat is a new feature I am adding to an existing application.

    Any help is greatly appreciated.

  • #2
    Looks like you are trying to send an extended command. Flags are explained on page 42 of the Modem Developer's Guide.

    Comment


    • #3
      I had been looking in the Modem Developer's Guide and not the Developer's Guide, 2nd Edition. Page 42 is exactly what I was looking for! Thanks!

      So in follow up, I am sending a 02 62 4C 80 F1 00 6B 03 and I get a response of 6B 03 06, which looks like the correct Cmd1 and ACK but the 03 should be the temperature. Right now, I am seeing 70° on the thermostat through the phone app (which should be 0x46 in the ACK Cmd2 data?)?

      I have also tried 6A 03 and 6A 00 for Cmd1 and Cmd2 but always see the commands echoed back.
      Last edited by zimbrich; 11-21-2018, 11:03 AM. Reason: Put right message values and responses

      Comment


      • #4
        That's the echo from the PLM. The response from the device will come after that in a 02 50 ... message.

        Comment


        • #5
          Since the 2441TH is Insteon RF only and the 2412S is power line only.
          Do you have a dual band module close to both of them. That is passing the messages between the two of them?

          Are the 2441TH and 2412S linked to each other?
          Last edited by BLH; 11-22-2018, 11:26 AM. Reason: Add data

          Comment


          • #6
            I am able read a 2852 leak sensor with no problems so I know I can read RF.

            Comment


            • #7
              Hi,
              Kind of late answer, but I have the answer.
              The thermostat developer guide is written badly, like all developer 'notes'. I guess the code they flash to the PLM is a mess. I took me long time to figure out the guide.
              For thermostats, to read the mode, temperature you have to
              send an extended message 0x62 as long as 22 bytes:

              PLM <- 02:62:##:##:##:1F:2E:00:00:00:00:00:00:00:00:00:00 :00:00:00:002 where ## is the mac of the thermostat

              you expect back 59 bytes. Wait for them

              > 02:62:##.##.##:1F:2E:00:00:00:00:00:00:00:00:00:00 :00:00:00:002:06: // this is what you sent with 0x6 which means OK
              > 02:50:##.##.##:49:F9:97:2F:2E:00: // this is some extended shit
              > 02:51:##.##.##:49:F9:97:17:2E:00: 00:01:008:20:00:00:03:00:0A:05:04:10:00: // this contains data in last 14 bytes

              Then you get the last 14 bytes from end of 59 bytes data = [00:01:008:20:00:00:03:00:0A:05:04:10:00]

              temp = (data[3]|data[13]<<8) * 0.1;
              mode = data[7]; 0 - > off 1->auto 2->heat 3->cool
              hum = data[4];
              fanmode = data[8]
              flags = data[12]
              temp_celsius=flags & 0x8
              PS soome hex were replaced with smiles....

              Comment


              • #8
                Ok, if I am understanding you right, the message should be as follows:
                0x02:0x62 [STX, Extended length message] (2 bytes)
                ##.##.## [Insteon ID] (3bytes)
                0x1F [Message flags] (1 byte)
                0x2E [Command 1] (1 byte)
                0x00 [Command 2] (1 byte)
                0x00:0x00:0x00:0x00:0x00:0x00:0x00:0x00:0x00:0x00:0x00: 0x00:0x00:0x02 [User Data 1-14] (14 bytes)

                (22 bytes total)

                User Data 14 = 0x02? Is that correct?

                Comment

                Working...
                X