blafois / Daikin-IR-Reverse

Daikin AC Infrared remote control protocol reverse
133 stars 11 forks source link

Additional features #7

Open medicalwei opened 2 years ago

medicalwei commented 2 years ago
Offset  Description            Length     Example        Decoding
========================================================================================================
00-03   Header                 4          11 da 27 00
04      Message Identifier     1          00    
05      Mode, On/Off, Timer    1          49             49 = Heat, On, No Timer
06      Temperature            1          30             It is temperature x2. 0x30 = 48 / 2 = 24°C
08      Fan / Vert Swing       1          30             30 = Fan 1/5 No Vert Swing. 3F = Fan 1/5 + Vert Swing. 
09      Hori Swing             1          0F             00 = No Horizontal Swing. 0F = Horizontal Swing 
0a-0c   Timer delay            3          3c 00 60           
0d      Silent / Powerful      1          01             01 = Powerful enabled, 20 = Silent enabled
10      Econo / Eco Sensing    1          84             84 = Econo, 82 = Eco Sensing
12      Checksum               1          8e             Add all previous bytes and do a OR with mask 0xff

Added Horizontal/Vertical swing, Silent outdoor unit feature (denoted as Silent), Eco Sensing feature.

The second frame seems to be related to timer feature, which mine has a byte ticking to the minute, but I am not yet sure.

mildsunrise commented 6 months ago

Hi! I added these features and also #9 in my python implementation: https://gist.github.com/mildsunrise/a53bd50d529d92631fdaaed2368f903f

zoff99 commented 6 months ago

@mildsunrise can you give a usage example of your python script?

mildsunrise commented 6 months ago

Just call encode_remote_control_transmission() with the parameters you want. Simple example:

import daikin

frames = daikin.encode_remote_control_transmission(
    power=True, mode=daikin.Mode.HEAT,
    temperature=21*2, fan_speed=daikin.FanSpeed.AUTO,
)
zoff99 commented 6 months ago

ah ok. but how do you actually send that to an IR interface on the raspi for example?

mildsunrise commented 6 months ago

you'll want to pass your frames to frames_to_signal():

daikin.frames_to_signal(frames)

and this will return an IR signal, such as:

[450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 25000, 3500, 1700, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 35000, 3500, 1700, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 35000, 3500, 1700, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 420, 450, 1286, 450, 1286, 450, 420, 450, 1286, 450, 420, 450, 420, 450, 1286, 450, 420, 450]

which you would then emit through your blaster.

I have never used a raspi as an IR blaster, so I don't know what are the steps to emit a signal with that.