@@ -219,6 +219,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) {
219
219
#if SEND_HAIER_AC
220
220
case decode_type_t ::HAIER_AC:
221
221
#endif
222
+ #if SEND_HAIER_AC160
223
+ case decode_type_t ::HAIER_AC160:
224
+ #endif // SEND_HAIER_AC160
222
225
#if SEND_HAIER_AC176
223
226
case decode_type_t ::HAIER_AC176:
224
227
#endif // SEND_HAIER_AC176
@@ -1200,6 +1203,52 @@ void IRac::haier(IRHaierAC *ac,
1200
1203
}
1201
1204
#endif // SEND_HAIER_AC
1202
1205
1206
+ #if SEND_HAIER_AC160
1207
+ // / Send a Haier 160 bit A/C message with the supplied settings.
1208
+ // / @param[in, out] ac A Ptr to an IRHaierAC160 object to use.
1209
+ // / @param[in] on The power setting.
1210
+ // / @param[in] mode The operation mode setting.
1211
+ // / @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit.
1212
+ // / @param[in] degrees The temperature setting in degrees.
1213
+ // / @param[in] fan The speed setting for the fan.
1214
+ // / @param[in] swingv The vertical swing setting.
1215
+ // / @param[in] turbo Run the device in turbo/powerful mode.
1216
+ // / @param[in] quiet Run the device in quiet mode.
1217
+ // / @param[in] filter Turn on the (ion/pollen/etc) filter mode.
1218
+ // / @param[in] clean Turn on the clean mode.
1219
+ // / @param[in] light Turn on the LED/Display mode.
1220
+ // / @param[in] prevlight Previous LED/Display mode.
1221
+ // / @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on.
1222
+ void IRac::haier160 (IRHaierAC160 *ac,
1223
+ const bool on, const stdAc::opmode_t mode,
1224
+ const bool celsius, const float degrees,
1225
+ const stdAc::fanspeed_t fan,
1226
+ const stdAc::swingv_t swingv,
1227
+ const bool turbo, const bool quiet, const bool filter,
1228
+ const bool clean, const bool light, const bool prevlight,
1229
+ const int16_t sleep) {
1230
+ ac->begin ();
1231
+ // No Model setting available.
1232
+ ac->setMode (ac->convertMode (mode));
1233
+ ac->setUseFahrenheit (!celsius);
1234
+ ac->setTemp (degrees);
1235
+ ac->setFan (ac->convertFan (fan));
1236
+ ac->setSwingV (ac->convertSwingV (swingv));
1237
+ // No Horizontal Swing setting available.
1238
+ ac->setQuiet (quiet);
1239
+ ac->setTurbo (turbo);
1240
+ ac->setHealth (filter);
1241
+ ac->setClean (clean);
1242
+ // No Clean setting available.
1243
+ // No Beep setting available.
1244
+ ac->setSleep (sleep >= 0 ); // Sleep on this A/C is either on or off.
1245
+ ac->setPower (on);
1246
+ // Light needs to be sent last as the "button" value seems to control it.
1247
+ ac->setLightToggle (light ^ prevlight);
1248
+ ac->send ();
1249
+ }
1250
+ #endif // SEND_HAIER_AC160
1251
+
1203
1252
#if SEND_HAIER_AC176
1204
1253
// / Send a Haier 176 bit A/C message with the supplied settings.
1205
1254
// / @param[in, out] ac A Ptr to an IRHaierAC176 object to use.
@@ -2764,6 +2813,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
2764
2813
const stdAc::swingv_t prev_swingv = (prev != NULL ) ? prev->swingv
2765
2814
: stdAc::swingv_t ::kOff ;
2766
2815
#endif // (SEND_LG || SEND_SHARP_AC)
2816
+ #if (SEND_HAIER_AC160)
2817
+ const bool prev_light = (prev != NULL ) ? prev->light : !send.light ;
2818
+ #endif // (SEND_HAIER_AC160)
2767
2819
#if SEND_MIDEA
2768
2820
const bool prev_quiet = (prev != NULL ) ? prev->quiet : !send.quiet ;
2769
2821
#endif // SEND_MIDEA
@@ -2978,6 +3030,16 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
2978
3030
break ;
2979
3031
}
2980
3032
#endif // SEND_HAIER_AC
3033
+ #if SEND_HAIER_AC160
3034
+ case HAIER_AC160:
3035
+ {
3036
+ IRHaierAC160 ac (_pin, _inverted, _modulation);
3037
+ haier160 (&ac, send.power , send.mode , send.celsius , send.degrees ,
3038
+ send.fanspeed , send.swingv , send.turbo , send.filter , send.clean ,
3039
+ send.light , prev_light, send.sleep );
3040
+ break ;
3041
+ }
3042
+ #endif // SEND_HAIER_AC160
2981
3043
#if SEND_HAIER_AC176
2982
3044
case HAIER_AC176:
2983
3045
{
@@ -3876,6 +3938,13 @@ namespace IRAcUtils {
3876
3938
return ac.toString ();
3877
3939
}
3878
3940
#endif // DECODE_HAIER_AC
3941
+ #if DECODE_HAIER_AC160
3942
+ case decode_type_t ::HAIER_AC160: {
3943
+ IRHaierAC160 ac (kGpioUnused );
3944
+ ac.setRaw (result->state );
3945
+ return ac.toString ();
3946
+ }
3947
+ #endif // DECODE_HAIER_AC160
3879
3948
#if DECODE_HAIER_AC176
3880
3949
case decode_type_t ::HAIER_AC176: {
3881
3950
IRHaierAC176 ac (kGpioUnused );
@@ -4351,6 +4420,14 @@ namespace IRAcUtils {
4351
4420
break ;
4352
4421
}
4353
4422
#endif // DECODE_HAIER_AC
4423
+ #if DECODE_HAIER_AC160
4424
+ case decode_type_t ::HAIER_AC160: {
4425
+ IRHaierAC160 ac (kGpioUnused );
4426
+ ac.setRaw (decode->state );
4427
+ *result = ac.toCommon (prev);
4428
+ break ;
4429
+ }
4430
+ #endif // DECODE_HAIER_AC160
4354
4431
#if DECODE_HAIER_AC176
4355
4432
case decode_type_t ::HAIER_AC176: {
4356
4433
IRHaierAC176 ac (kGpioUnused );
0 commit comments