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.
  • 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
          • P Panos Toumpaniaris

            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 Offline
            T Offline
            ToniA
            wrote on last edited by ToniA
            #34

            @Panos-Toumpaniaris said:

            Am I missing something?

            Yes you are :smiley:

            You just have an uninitialized pointer to PanasonicNKEHeatpumpIR, while you should have this instead:

            PanasonicNKEHeatpumpIR *ACIR = new PanasonicNKEHeatpumpIR();
            
            P 1 Reply Last reply
            0
            • D DirkB19

              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 Offline
              T Offline
              ToniA
              wrote on last edited by
              #35

              @DirkB19 said:

              @ ToniA, do you expect problems when integrating this into the same Mysensors sketch as PIR + DHT22 ?

              It should be fine. Just make sure that if you have any interrupt handlers (PIR?), make sure they execute fast so that they don't mess up the timings. It's probably not a very good idea to disable interrupts while sending the IR, as the IR sending takes several hundreds of milliseconds.

              1 Reply Last reply
              0
              • T ToniA

                @Panos-Toumpaniaris said:

                Am I missing something?

                Yes you are :smiley:

                You just have an uninitialized pointer to PanasonicNKEHeatpumpIR, while you should have this instead:

                PanasonicNKEHeatpumpIR *ACIR = new PanasonicNKEHeatpumpIR();
                
                P Offline
                P Offline
                Panos Toumpaniaris
                wrote on last edited by
                #36

                @ToniA said:

                @Panos-Toumpaniaris said:

                Am I missing something?

                Yes you are :smiley:

                You just have an uninitialized pointer to PanasonicNKEHeatpumpIR, while you should have this instead:

                PanasonicNKEHeatpumpIR *ACIR = new PanasonicNKEHeatpumpIR();
                

                Sorry I didn't answer sooner.. I was having too much fun with my working node!
                I just forgot a constructor and no matter how many times I went through my code I couldn't see it!
                Thanks so much Toni!

                One down 30 more nodes to go!

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

                  Just got my Sensebenders this week. I can confirm that the HeatpumpIR library works also on the Sensebender :) Nice...

                  F 1 Reply Last reply
                  1
                  • T ToniA

                    Just got my Sensebenders this week. I can confirm that the HeatpumpIR library works also on the Sensebender :) Nice...

                    F Offline
                    F Offline
                    Fredrik Carlsson
                    wrote on last edited by
                    #38

                    @ToniA
                    Hey, thanks for all the work you have put down. I have had some other projects going the last year so have not really put down more time on this.

                    How is it working with the sensebender? Are you using it on batteries?
                    Any ide about battery usage?

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

                      I just got it running on Sensebender today, on my desk. The problem is that this is not a 'sensor', but an 'actuator'. So it needs to listen to the radio all the time. I believe it would not run on batteries for too long.

                      I was asking about how to power the Sensebender in another thread, but didn't yet get any real answers. So let's try once more:

                      What kind of schema should I use to power the Sensebender (with NRF24), provided that I have +5V DC available, and I have a bunch of different capacitors and 'LE33ACZ 5V-3.3V Step Down Regulators'?

                      1 Reply Last reply
                      0
                      • F Offline
                        F Offline
                        Fredrik Carlsson
                        wrote on last edited by Fredrik Carlsson
                        #40

                        Hello
                        It would be nice to make it run on batteries, maybe with 10 seconds sleep, and then wake up only to check with gateway if there is a new command and then sleep again.

                        I am building a pir sensor now based on 3*aa batteris running on 4,5 volt.I will ust use an LE33 step down directly after the battery pack to provide power to both sensebender+radio+pir. Dont know if that is the optimal way to do it but it should work

                        1 Reply Last reply
                        0
                        • BR3NDAB Offline
                          BR3NDAB Offline
                          BR3NDA
                          wrote on last edited by
                          #41

                          I have my heatpump mysensor working, and hooked up to Openhab.

                          Arduino code here:

                          #include <MySensor.h>
                          #include <SPI.h>
                          #include <Arduino.h>
                          
                          #include <PanasonicCKPHeatpumpIR.h>
                          #include <PanasonicHeatpumpIR.h>
                          
                          #define POWER_ID 0
                          #define MODE_ID 1
                          #define FAN_ID 2
                          #define TEMP_ID 3
                          #define VDIR_ID 4
                          #define HDIR_ID 5
                          
                          
                          MySensor gw;
                          MyMessage powerMsg(POWER_ID, V_STATUS); 
                          MyMessage modeMsg(MODE_ID, V_HVAC_FLOW_STATE);
                          MyMessage fanMsg(FAN_ID, V_PERCENTAGE);
                          MyMessage tempMsg(TEMP_ID, V_TEMP);
                          MyMessage vdirMsg(VDIR_ID, V_VAR1); 
                          MyMessage hdirMsg(HDIR_ID, V_VAR2); 
                          
                          IRSenderPWM irSender(3);       // IR led on Arduino digital pin 3, using Arduino PWM
                          
                          HeatpumpIR *heatpumpIR = new PanasonicNKEHeatpumpIR();
                          
                          //Some global variables to hold the states
                          int POWER_STATE;
                          int TEMP_STATE;
                          int FAN_STATE;
                          int MODE_STATE;
                          
                          void setup()  
                          {  
                            gw.begin(incomingMessage, AUTO, false);
                          
                            // Send the sketch version information to the gateway and Controller
                            gw.sendSketchInfo("Heatpump", "1.0");
                          
                            // Register all sensors to gw (they will be created as child devices)
                            gw.present(POWER_ID, S_BINARY);
                            gw.present(MODE_ID, S_HVAC);
                            gw.present(FAN_ID, S_HVAC);
                            gw.present(TEMP_ID, S_HVAC);
                            gw.present(VDIR_ID, S_CUSTOM);
                            gw.present(HDIR_ID, S_CUSTOM);
                               
                            // Load our values on start
                            POWER_STATE = gw.loadState(POWER_ID);
                            TEMP_STATE = gw.loadState(TEMP_ID);
                            FAN_STATE = gw.loadState(FAN_ID);
                            MODE_STATE = gw.loadState(MODE_ID);
                            
                            sendHeatpumpCommand();
                          }
                          
                          void loop() {
                            gw.process();
                          } 
                          
                          void handlePowerMessage(bool newState) {
                            if (newState) {
                              POWER_STATE = POWER_ON;
                            }
                            else {
                              POWER_STATE = POWER_OFF;
                            }
                            gw.saveState(POWER_ID, newState);
                          }
                          
                          void handleModeMessge(int newMode) {
                            switch(newMode) {    
                              case 0:
                                MODE_STATE = MODE_HEAT; break;
                              case 1:
                                MODE_STATE = MODE_COOL; break;
                              case 2:
                                MODE_STATE = MODE_AUTO; break;
                              case 3:
                                MODE_STATE = MODE_FAN; break;
                               case 4:
                                MODE_STATE = MODE_DRY; break;
                            }
                            MODE_STATE = newMode;
                            gw.saveState(MODE_ID, newMode);
                          }
                          
                          void handleFanMessage(int newFan) {
                            if (newFan > 5) newFan=5;
                            switch(newFan) {
                              case 0:
                                FAN_STATE = FAN_AUTO; break;
                              case 1:
                                FAN_STATE = FAN_1; break;
                              case 2:
                                FAN_STATE = FAN_2; break;
                              case 3:
                                FAN_STATE = FAN_3; break;
                              case 4:
                                FAN_STATE = FAN_4; break;
                              case 5:
                                FAN_STATE = FAN_5; break;
                              default:
                                FAN_STATE = FAN_AUTO; break;
                            }
                            FAN_STATE = newFan;
                            gw.saveState(FAN_ID, newFan);
                          }
                          
                          void handleTempMessage(int newTemp) {
                            TEMP_STATE = newTemp;
                            gw.saveState(TEMP_ID, newTemp);
                          }
                          
                          void sendHeatpumpCommand() {
                            Serial.println("Power = " + (String)POWER_STATE);
                            Serial.println("Mode = " + (String)MODE_STATE);
                            Serial.println("Fan = " + (String)FAN_STATE);
                            Serial.println("Temp = " + (String)TEMP_STATE);
                            heatpumpIR->send(irSender, POWER_STATE, MODE_STATE, FAN_STATE, TEMP_STATE, VDIR_AUTO, HDIR_AUTO);
                          }
                          void incomingMessage(const MyMessage &message) {
                            // We only expect one type of message from controller. But we better check anyway.
                            if (message.isAck()) {
                               Serial.println("This is an ack from gateway");
                            }
                             Serial.print("Incoming change for sensor:");
                             Serial.print(message.sensor);
                             Serial.print(", New status: ");
                             Serial.println(message.getBool());
                          
                             switch(message.sensor) {
                              case POWER_ID: {
                                bool newState = message.getBool();
                                handlePowerMessage(newState);
                                break;
                              }
                              case MODE_ID: {
                                int newMode = message.getInt();
                                handleModeMessge(newMode);
                                break;
                              }
                              case FAN_ID: {
                                int newFan = message.getInt();
                                handleFanMessage(newFan);
                                break;
                              }
                              case TEMP_ID: {
                                int newTemp = message.getInt();
                                handleTempMessage(newTemp);
                                break;
                              }
                             }
                            sendHeatpumpCommand();
                          }
                          

                          Openhab items

                          Switch	Power_HeatPump	"Heatpump on/off" <aircon>
                          Number	Mode_HeatPump	"Heatpump mode"
                          Number	Fan_HeatPump	"Heatpump fan" <airing>
                          Number	Temp_HeatPump	"Heatpump temperature [%d C]"	<temperature>
                          String	VDir_HeatPump	"vertical"
                          String	HDir_HeatPump	"horizontal"
                          

                          Openhab sitemap

                          sitemap heatpump label="Heatpump" {
                            Frame {
                              Switch item=Power_HeatPump
                              Selection item=Mode_HeatPump mappings=[0="heat", 1="cool", 2="auto", 3="fan", 4="dry"]
                              Selection item=Fan_HeatPump mappings=[0="auto", 1="Level 1", 2="Level 2", 3="Level 3", 4="Level 4", 5="Level 5"]
                              Setpoint item=Temp_HeatPump minValue=10 maxValue=30 step=1
                              Text item=VDir_HeatPump
                              Text item=HDir_HeatPump
                            }
                          }
                          

                          Openhab rules

                          val org.eclipse.xtext.xbase.lib.Functions$Function4 numberOperation = [
                              org.openhab.core.library.items.NumberItem numberItem, 
                              org.openhab.core.library.items.StringItem arduinoItem, 
                              String arduinoDevMap,
                              Integer subType|
                              logInfo("number", "Sending number message to mysensors node")
                              var Integer state = numberItem.state
                              logInfo("mysensors", "Function: numberOperation >> "+arduinoDevMap + "1;1;" + subType + ";" + state )
                              arduinoItem.sendCommand(arduinoDevMap + "1;0;" + subType + ";" + state + "\n")
                          ]
                          
                          //switch function
                          val org.eclipse.xtext.xbase.lib.Functions$Function4 switchOperation = [
                              org.openhab.core.library.items.SwitchItem relayItem, 
                              org.openhab.core.library.items.StringItem arduinoItem, 
                              String arduinoDevMap,
                              Integer subType|
                              logInfo("switch", "Sending switch message to mysensors node")
                              
                              var Integer state = 0
                              if (relayItem.state == OFF) {
                                  state = 0 
                              }
                              else {
                                  state = 1
                              }
                              logInfo("mysensors", "Function: switchOperation >> "+arduinoDevMap + "1;1;" + subType + ";" + state )
                              arduinoItem.sendCommand(arduinoDevMap + "1;0;" + subType + ";" + state + "\n")
                          ]
                          
                          
                          
                          
                          rule "Heatpump on"
                          when
                              Item Power_HeatPump received command
                          then
                              switchOperation.apply(Power_HeatPump, MySensors_Gateway, sensorToItemsMap.get("Power_HeatPump"),  V_STATUS)         
                          end 
                          
                          rule "Heatpump mode"
                          when
                              Item Mode_HeatPump received update
                          then
                              numberOperation.apply(Mode_HeatPump, MySensors_Gateway, sensorToItemsMap.get("Mode_HeatPump"),  V_VAR1)         
                          end 
                          
                          
                          rule "Heatpump temp"
                          when
                              Item Temp_HeatPump received command
                          then
                              numberOperation.apply(Temp_HeatPump, MySensors_Gateway, sensorToItemsMap.get("Temp_HeatPump"),  V_TEMP)         
                          end 
                          
                          rule "heatpump fan"
                          when
                              Item Fan_HeatPump received command
                          then
                              numberOperation.apply(Fan_HeatPump, MySensors_Gateway, sensorToItemsMap.get("Fan_HeatPump"),  V_PERCENTAGE)         
                          end 
                          
                          1 Reply Last reply
                          2
                          • T ToniA

                            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 Offline
                            SGiS Offline
                            SGi
                            wrote on last edited by
                            #42

                            @ToniA Hi, do you have a guide on how to set up Domoticz with this example? I understand enough about mysensors and domoticz to be dangerous but i dont get how Domoticz can send the right command....

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

                              Take a look at this topic on the Domoticz forum: http://www.domoticz.com/forum/viewtopic.php?f=34&t=8751

                              M 1 Reply Last reply
                              0
                              • SGiS SGi

                                @ToniA Hi, do you have a guide on how to set up Domoticz with this example? I understand enough about mysensors and domoticz to be dangerous but i dont get how Domoticz can send the right command....

                                bjacobseB Offline
                                bjacobseB Offline
                                bjacobse
                                wrote on last edited by
                                #44

                                @SGi
                                Hi,
                                I have created the wiki:
                                https://www.domoticz.com/wiki/AC_/_heatpumpIR

                                Everything is based in Toni's great effort :-)
                                I also first used the mysensors Arduino, but since I am still using "old" mysensors ver 1.5.4 (And currently I don't have time to upgrade to latest and greatest, which support text based commands)
                                Then I have taken same approach as Toni and use Wemos D1 Mini Pro that uses HTTP or MQTT wifi

                                gohanG 1 Reply Last reply
                                0
                                • T ToniA

                                  Take a look at this topic on the Domoticz forum: http://www.domoticz.com/forum/viewtopic.php?f=34&t=8751

                                  M Offline
                                  M Offline
                                  moskovskiy82
                                  wrote on last edited by moskovskiy82
                                  #45

                                  @ToniA

                                  Thanks for the library it's great. I can also confirm that it works with Fujitsu remote AR-REB1E out of the box.

                                  Trying to integrate this into HomeAssistant and just do not know where to start. Is there any example how to post a whole string of commands for the air cond via mysensors-MQTT?

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    moskovskiy82
                                    wrote on last edited by
                                    #46

                                    So nobody is using it this with MQTT gateway?

                                    bjacobseB 1 Reply Last reply
                                    0
                                    • bjacobseB bjacobse

                                      @SGi
                                      Hi,
                                      I have created the wiki:
                                      https://www.domoticz.com/wiki/AC_/_heatpumpIR

                                      Everything is based in Toni's great effort :-)
                                      I also first used the mysensors Arduino, but since I am still using "old" mysensors ver 1.5.4 (And currently I don't have time to upgrade to latest and greatest, which support text based commands)
                                      Then I have taken same approach as Toni and use Wemos D1 Mini Pro that uses HTTP or MQTT wifi

                                      gohanG Offline
                                      gohanG Offline
                                      gohan
                                      Mod
                                      wrote on last edited by
                                      #47

                                      @bjacobse if I have a new Daikin heat pump with a newer remote that is not in the library, I guess I'm out of luck, right?

                                      bjacobseB 1 Reply Last reply
                                      0
                                      • M moskovskiy82

                                        So nobody is using it this with MQTT gateway?

                                        bjacobseB Offline
                                        bjacobseB Offline
                                        bjacobse
                                        wrote on last edited by
                                        #48

                                        @moskovskiy82
                                        hi, I'm not using the MQTT with mysensors
                                        I think you should direct your questions to a HomeAssistant forum.
                                        My setup uses Wemos D1 Mini Pro and Domoticz

                                        M 1 Reply Last reply
                                        0
                                        • gohanG gohan

                                          @bjacobse if I have a new Daikin heat pump with a newer remote that is not in the library, I guess I'm out of luck, right?

                                          bjacobseB Offline
                                          bjacobseB Offline
                                          bjacobse
                                          wrote on last edited by
                                          #49

                                          @gohan
                                          Please use the github for heatpump to ask you question, as I assume that Toni mostly is checking that. It seems that there 2 different Daikin heatpumps supported

                                          https://github.com/ToniA/arduino-heatpumpir

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


                                          10

                                          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