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. Development
  3. Heatpump controller

Heatpump controller

Scheduled Pinned Locked Moved Development
55 Posts 15 Posters 26.1k Views 11 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.
  • F Offline
    F Offline
    Fredrik Carlsson
    wrote on last edited by
    #14

    Hello
    nice that you cna use it for something :)
    Sorry, I have no idea regarding Daikin, but if you build sometihng to record the codes with maybe you can figure it out and just add that to the library somehow?

    Anyway, i have thought more about this and i do actually want to be able to make it a little smarter than the code above.
    It would be nice if its possible to send a whole string direct from the controller. ie "send(irSender, POWER_ON, MODE_HEAT, FAN_AUTO, 21, VDIR_AUTO, HDIR_AUTO)" Then I can on the controller side make all the logic and that way have complete control of how the heatpump behaves.

    I have tried to search a little, but can not find any concrete answer. How big is the maximum size of the payload you can send with this library?

    1 Reply Last reply
    0
    • hekH Offline
      hekH Offline
      hek
      Admin
      wrote on last edited by hek
      #15

      Answer in big blue box here:
      http://www.mysensors.org/build/serial_api

      25 bytes.

      1 Reply Last reply
      0
      • J johnr

        Hi,

        Thank you for the inspiration. I skuld like to use this to control my Daikin heatpump in my cabin. Unfortunatley I am not able to travel there for I while to access the remote. I think I need it to analyze the signal since Daikin is not supported by the library you used.

        I am thinking just two buttons (on 22 degrees/ on 10 degrees)

        Did you stumble over any Daikin codes while working on this project?

        Maybe it is possible to use the code these guys decoded http://www.hifi-remote.com/forums/viewtopic.php?t=11769

        D Offline
        D Offline
        DirkB19
        wrote on last edited by
        #16

        @johnr

        I'm taking my first steps with IR sender/receiver because I'm also looking for controlling my DAIKIN heatpump.
        I assembled IR receiver, IR sender and nano and loaded From the examples IR Sender/Receiver sketch.
        It works with the remote of my Samsung TV, which it recognises as NEC.
        Daikin is not recognized.
        My Panasonic TV remote is not recognized.
        My Telenet Set-Top box remote is not recognized.
        I guess there is a IRlib for Panasonic, right ?

        Thx, guys !

        1 Reply Last reply
        0
        • T Offline
          T Offline
          ToniA
          wrote on last edited by
          #17

          Nice to see that my little HeatpumpIR library made it all the way here :)

          I'm also quite new to MySensors, I actually just started today, I've had all the necessary hardware on my table for some weeks now... My goal is to power a (physically) small MySensors device directly from the Panasonic heatpump, and hide everything within the indoor unit's covers, and have it fully controlled by Domoticz. There's quite a bit of work to do, as for example Domoticz does not have a suitable devuce type yet.

          And how about MySensors, I'm still quite a newbie on the messaging schema... Is there a schema which could be used to communicate all of these within the same message:

          • ON/OFF information (0 or 1)
          • Temperature information (integer from 8 to 30)
          • Fan speed information (integer from 0 to 5)
          • Mode information (COOL, HEAT etc. i.e. integer from 0 to 6)

          What comes to Daikin, it would probably be quite easy to add it into the HeatpumpIR code, provided that I could borrow the remote controller for a while. Or, if somebody else could decode the protocol.

          1 Reply Last reply
          1
          • J Offline
            J Offline
            johnr
            wrote on last edited by
            #18

            ToniA,

            Where are you based? I maybe can send you my remote, if I am sure to get it back ;)
            I think it will be a challenge to send all the information with only 25 bytes.

            1 Reply Last reply
            0
            • T Offline
              T Offline
              ToniA
              wrote on last edited by
              #19

              In live in Finland...

              I now have the HeatpumpIR working together with Domoticz, so that I can also define which commands to send from Domoticz. And yes, 24 bits is plenty enough :)

              https://github.com/ToniA/arduino-heatpumpir/tree/master/examples/MySensorsNode

              @johnr, do you happen to have an infrared receiver module? If you do, I could assist you in decoding the protocol. This is how I for example got the Mitsubishi protocol decoded, I've never had a Mitsubishi remote controller myself...

              SGiS 1 Reply Last reply
              0
              • hekH Offline
                hekH Offline
                hek
                Admin
                wrote on last edited by
                #20

                Wow, great job @ToniA

                Would you consider creating a pull request with the example and HeatpumpIR library when you feel finished?

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  ToniA
                  wrote on last edited by
                  #21

                  @hek, I created pull request #211. I think it's good enough, the challenges are really on the Domoticz side.

                  1 Reply Last reply
                  0
                  • hekH Offline
                    hekH Offline
                    hek
                    Admin
                    wrote on last edited by
                    #22

                    Thanks, I'll take a look!

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      ToniA
                      wrote on last edited by
                      #23

                      I finally managed to get rid of all compiler warnings :) I must say I like your CI build system, I'm also running Jenkins at work, actually running the build system on Jenkins is my primary job at the moment...

                      So the heatpump IR sender node is now one of the examples on the MySensors 'development' branch.

                      1 Reply Last reply
                      0
                      • hekH Offline
                        hekH Offline
                        hek
                        Admin
                        wrote on last edited by hek
                        #24

                        Thanks for the work you've put into the HeatpumpIR library,

                        All creds go to @Anticimex who did the setup of the headless Arduino IDE builder in Jenkins. Messy business to get it right ;)

                        But it is really nice to get intant compiler feedback on changes and pull requests for different platforms and boards.

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          johnr
                          wrote on last edited by
                          #25

                          ToniA, I can collect the Daikin remote from my cabin during next week. I have the following IR-reciever, is it enough to decode it per your instructions?

                          http://www.ebay.com/itm/380746925201?rmvSB=true

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            ToniA
                            wrote on last edited by
                            #26

                            Yes, I think it would work. I have used this piece of software to decode the bits from the remote.

                            If you have any heatpump/AC remotes at hand, you could try it out already now. It should also work with TV remotes etc. The only thing is that you might need to adjust the limits it's using to tell the one's and zero's apart.

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              johnr
                              wrote on last edited by
                              #27

                              Hi Toni,

                              inally I was able to fetch the Dakikin remote from my cabin. What type of software did you say you use to decode the remote?

                              fetsF 1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                ToniA
                                wrote on last edited by
                                #28

                                Quite a co-incidence, I just finished decoding the Sharp/IVT infrared protocol, and pushed my decoder changes into Github:

                                https://github.com/ToniA/Raw-IR-decoder-for-Arduino

                                This is the hardware you'd need, just about any Arduino would do, I'm using both Duemilanove and Mega: https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/arduino_irreceiver.png

                                If you get the hex sequences and timings out, I can assist with the rest. We can discuss the detail over email (take a look at my Github profile...).

                                1 Reply Last reply
                                0
                                • J johnr

                                  Hi Toni,

                                  inally I was able to fetch the Dakikin remote from my cabin. What type of software did you say you use to decode the remote?

                                  fetsF Offline
                                  fetsF Offline
                                  fets
                                  wrote on last edited by
                                  #29

                                  @johnr did you see that : instructables article and associated github

                                  1 Reply Last reply
                                  0
                                  • T Offline
                                    T Offline
                                    ToniA
                                    wrote on last edited by
                                    #30

                                    Interesting... I took a look at mharizanov's work, and I think I might have a decoder for the protocol here: https://github.com/ToniA/Raw-IR-decoder-for-Arduino

                                    Would you try if this correctly decodes the protocol? I would also appreciate some full outputs of successful decode, together with the explanation of the state the remote control shows after the button press.

                                    If the decoder is correct, creating a Daikin module for the HeatpumpIR library will be a piece of cake :)

                                    1 Reply Last reply
                                    1
                                    • T Offline
                                      T Offline
                                      ToniA
                                      wrote on last edited by
                                      #31

                                      mharizanov's version of Daikin was different, the protocol now seems to have one extra frame which seems to carry the wall clock time.

                                      The HeatpumpIR library now has the initial (untested) Daikin support.

                                      1 Reply Last reply
                                      0
                                      • P Offline
                                        P Offline
                                        Panos Toumpaniaris
                                        wrote on last edited by Panos Toumpaniaris
                                        #32

                                        Hello,

                                        I'm trying to build a sensor node to control a Panasonic AirCon and I'm having trouble (using the latest MySensors and Heatpump-IR libs).
                                        Whenever the node tries to send IR it restarts. I tried switching RF24's CE and CS pins in case the timers conflict and tried to reduce sram usage as much as I could to no avail.

                                        I'm using a nano and RF24 wireless modules. The hardware works ok with other sketches (for example a simple relay ON/OFF).

                                        Here's the sketch:

                                        #include <Arduino.h>
                                        #include <MySensor.h>  
                                        #include <MyTransportNRF24.h>
                                        #include <SPI.h>
                                        #include <Timer.h>
                                        #include <avr/pgmspace.h>
                                        #include <PanasonicHeatpumpIR.h>
                                        
                                        
                                        #define ACW2_CHILD 2           // Id of the AC Warm 2 hours child
                                        #define ACW6_CHILD 3           // Id of the AC Warm 6 hours child
                                        
                                        
                                        
                                        MyTransportNRF24 radio(7, 8, RF24_PA_MAX);
                                        
                                        MySensor gw(radio);
                                        
                                        MyMessage acw2Msg(ACW2_CHILD, V_LIGHT);
                                        MyMessage acw6Msg(ACW6_CHILD, V_LIGHT);
                                        
                                        IRSender irsender(9);
                                        PanasonicNKEHeatpumpIR *ACIR;
                                        
                                        Timer t;
                                        
                                        boolean ac_state = false;
                                        
                                        
                                        void setup() {
                                        
                                        
                                          // Initialize library and add callback for incoming messages
                                          gw.begin(incomingMessage, AUTO, true);
                                        
                                          // Register all sensors to gw (they will be created as child devices)
                                          gw.present( ACW2_CHILD, S_LIGHT );
                                          gw.present( ACW6_CHILD, S_LIGHT );
                                          gw.sendSketchInfo("AC", "1");
                                        
                                          
                                        }
                                        
                                        void loop() {
                                          // MySensors Process
                                          gw.process();
                                        
                                          
                                        
                                          // Timer Process
                                          t.update();
                                        
                                        }
                                        
                                        void incomingMessage(const MyMessage &message) {
                                        
                                          if (message.isAck()) {
                                                 Serial.println(F("This is an ack from gateway"));
                                              }
                                              
                                          if (message.type == V_LIGHT) {
                                            boolean state = message.getBool();
                                            
                                            if (message.sensor == ACW2_CHILD) {
                                              
                                              if(state){
                                                Serial.println(F("--- received ACW2 - ON"));
                                             schedule_auto(6600000);
                                             //schedule_auto(6000);      
                                              }
                                              else
                                              {
                                                Serial.println(F("--- received ACW2 - OFF"));
                                                ac_off();
                                              }
                                              
                                            }
                                            
                                            if (message.sensor == ACW6_CHILD) {
                                              Serial.println(F("--- received ACW6"));
                                               if(state){
                                             schedule_quiet(21000000);      
                                                 }
                                              else
                                              {
                                                ac_off();
                                              }
                                             }
                                            }
                                        }
                                        
                                        
                                        void schedule_auto(int dur) {
                                        
                                           Serial.println(F("--- sending auto"));
                                           ACIR->send(irsender, POWER_ON, MODE_HEAT, FAN_AUTO, 26, VDIR_MIDDLE, HDIR_AUTO);
                                           t.after(dur,ac_off);
                                           ac_state = true;
                                          
                                        }
                                        
                                        void schedule_quiet(int dur) {
                                        
                                           
                                           Serial.println(F("--- sending quiet"));
                                           ACIR->send(irsender, POWER_ON, MODE_HEAT, FAN_1, 25, VDIR_MIDDLE, HDIR_AUTO);
                                           t.after(dur,ac_off);
                                           ac_state = true;
                                          
                                        }
                                        
                                        void ac_off() {
                                          Serial.println(F("--- trying off"));
                                          if (ac_state) 
                                          {
                                            Serial.println(F("--- sending off"));
                                          ACIR->send(irsender, POWER_OFF, MODE_HEAT, FAN_1, 25, VDIR_MIDDLE, HDIR_AUTO);
                                        
                                          ac_state = false;
                                          gw.send(acw2Msg.set(false), true);
                                          gw.send(acw6Msg.set(false), true);
                                          }
                                         
                                        }
                                        
                                        

                                        Here's the Serial output:

                                        send: 2-2-0-0 s=255,c=0,t=18,pt=0,l=5,sg=0,st=ok:1.5.1
                                        send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
                                        read: 0-0-2 s=255,c=3,t=6,pt=0,l=1,sg=0:M
                                        repeater started, id=2, parent=0, distance=1
                                        send: 2-2-0-0 s=2,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                        send: 2-2-0-0 s=3,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                        send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=2,sg=0,st=ok:AC
                                        send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=1,sg=0,st=ok:1
                                        read: 0-0-2 s=2,c=1,t=2,pt=0,l=1,sg=0:0
                                        send: 2-2-0-0 s=2,c=1,t=2,pt=0,l=1,sg=0,st=ok:0
                                        --- received ACW2 - OFF
                                        --- trying off
                                        read: 0-0-2 s=2,c=1,t=2,pt=0,l=1,sg=0:1
                                        send: 2-2-0-0 s=2,c=1,t=2,pt=0,l=1,sg=0,st=ok:1
                                        --- resend: 2-2-0-0 s=255,c=0,t=18,pt=0,l=5,sg=0,st=ok:1.5.1
                                        send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
                                        read: 0-0-2 s=255,c=3,t=6,pt=0,l=1,sg=0:M
                                        repeater started, id=2, parent=0, distance=1
                                        send: 2-2-0-0 s=2,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                        send: 2-2-0-0 s=3,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                        send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=2,sg=0,st=ok:AC
                                        send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=1,sg=0,st=ok:1
                                        

                                        the node restarted at " --- resend" ... it should be "---received"...

                                        Am I missing something?

                                        T 1 Reply Last reply
                                        0
                                        • D Offline
                                          D Offline
                                          DirkB19
                                          wrote on last edited by
                                          #33

                                          Hi,

                                          Great news ! :smiley:
                                          I've tested the DaikinHeatpumpIR library and I can report that it works with my Daikin Heatpump, type RXS25G2V1B
                                          FVXS25FV1B
                                          the remote is ARC452A1

                                          I'm really happy that it works and would like to say thank you to the dev's !
                                          Finally I will be able to start some real energy saving by controlling the Daikin heatpump based on conditions like presence, outside temp, (google)-calendar, and heath generated from a second central heating system (allowing me to choose most economic heathing source).

                                          I already have a Nano based sensor node (near the Daikin unit) for PIR motion detection and DHT22 temp/humidity, so hopefully I can manage to integrate the simple ON/OFF via IR into the same sketch.
                                          If not, another dedicated node will be needed.
                                          @ ToniA, do you expect problems when integrating this into the same Mysensors sketch as PIR + DHT22 ?

                                          Bye,
                                          DirkB

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


                                          11

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 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