mirror of
https://github.com/jpeletier/koolnova2mqtt.git
synced 2026-05-07 05:10:24 +00:00
set fan mode
This commit is contained in:
@@ -172,6 +172,23 @@ func (b *Bridge) Start() error {
|
|||||||
log.Printf("Cannot set target temperature to %g in zone %d", targetTemp, zone.ZoneNumber)
|
log.Printf("Cannot set target temperature to %g in zone %d", targetTemp, zone.ZoneNumber)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = b.Subscribe(fanModeSetTopic, func(message string) {
|
||||||
|
fm, err := Str2FanMode(message)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Unknown fan mode %q in message to zone %d", message, zone.ZoneNumber)
|
||||||
|
}
|
||||||
|
err = zone.SetFanMode(fm)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Cannot set fan mode to %s in zone %d", message, zone.ZoneNumber)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
name := fmt.Sprintf("%s_zone%d", b.ModuleName, zone.ZoneNumber)
|
name := fmt.Sprintf("%s_zone%d", b.ModuleName, zone.ZoneNumber)
|
||||||
config := map[string]interface{}{
|
config := map[string]interface{}{
|
||||||
|
|||||||
+12
-1
@@ -1,6 +1,9 @@
|
|||||||
package kn
|
package kn
|
||||||
|
|
||||||
import "koolnova2mqtt/bimap"
|
import (
|
||||||
|
"errors"
|
||||||
|
"koolnova2mqtt/bimap"
|
||||||
|
)
|
||||||
|
|
||||||
const NUM_ZONES = 16
|
const NUM_ZONES = 16
|
||||||
|
|
||||||
@@ -81,6 +84,14 @@ func FanMode2Str(fm FanMode) string {
|
|||||||
return st.(string)
|
return st.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Str2FanMode(st string) (FanMode, error) {
|
||||||
|
fm, ok := FanModes.Get(st)
|
||||||
|
if !ok {
|
||||||
|
return FAN_OFF, errors.New("Unknown fan mode")
|
||||||
|
}
|
||||||
|
return fm.(FanMode), nil
|
||||||
|
}
|
||||||
|
|
||||||
func KnMode2Str(hm KnMode) string {
|
func KnMode2Str(hm KnMode) string {
|
||||||
st, ok := KnModes.GetInverse(hm)
|
st, ok := KnModes.GetInverse(hm)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -100,6 +100,12 @@ func (z *Zone) GetFanMode() FanMode {
|
|||||||
return (FanMode)(r2&0x00F0) >> 4
|
return (FanMode)(r2&0x00F0) >> 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (z *Zone) SetFanMode(fanMode FanMode) error {
|
||||||
|
r2 := z.ReadRegister(REG_MODE) & 0x000F
|
||||||
|
fm := (uint16(fanMode) & 0x000F) << 4
|
||||||
|
return z.WriteRegister(REG_MODE, r2|fm)
|
||||||
|
}
|
||||||
|
|
||||||
func (z *Zone) GetHvacMode() KnMode {
|
func (z *Zone) GetHvacMode() KnMode {
|
||||||
r2 := z.ReadRegister(REG_MODE)
|
r2 := z.ReadRegister(REG_MODE)
|
||||||
return (KnMode)(r2 & 0x000F)
|
return (KnMode)(r2 & 0x000F)
|
||||||
|
|||||||
Reference in New Issue
Block a user