mirror of
https://github.com/jpeletier/koolnova2mqtt.git
synced 2026-01-11 15:11:43 +00:00
set fan mode
This commit is contained in:
17
kn/bridge.go
17
kn/bridge.go
@@ -172,6 +172,23 @@ func (b *Bridge) Start() error {
|
||||
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)
|
||||
config := map[string]interface{}{
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package kn
|
||||
|
||||
import "koolnova2mqtt/bimap"
|
||||
import (
|
||||
"errors"
|
||||
"koolnova2mqtt/bimap"
|
||||
)
|
||||
|
||||
const NUM_ZONES = 16
|
||||
|
||||
@@ -81,6 +84,14 @@ func FanMode2Str(fm FanMode) 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 {
|
||||
st, ok := KnModes.GetInverse(hm)
|
||||
if !ok {
|
||||
|
||||
@@ -100,6 +100,12 @@ func (z *Zone) GetFanMode() FanMode {
|
||||
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 {
|
||||
r2 := z.ReadRegister(REG_MODE)
|
||||
return (KnMode)(r2 & 0x000F)
|
||||
|
||||
Reference in New Issue
Block a user