mirror of
https://github.com/jpeletier/koolnova2mqtt.git
synced 2026-07-25 19:26:55 +00:00
map hvac /hold modes. use modbus module
This commit is contained in:
+18
-2
@@ -17,6 +17,7 @@ type ZoneConfig struct {
|
||||
|
||||
type Zone struct {
|
||||
ZoneConfig
|
||||
OnEnabledChange func()
|
||||
OnCurrentTempChange func(newTemp float32)
|
||||
OnTargetTempChange func(newTemp float32)
|
||||
OnFanModeChange func(newMode FanMode)
|
||||
@@ -27,6 +28,11 @@ func NewZone(config *ZoneConfig) *Zone {
|
||||
z := &Zone{
|
||||
ZoneConfig: *config,
|
||||
}
|
||||
z.RegisterCallback(REG_ENABLED, func() {
|
||||
if z.OnEnabledChange != nil {
|
||||
z.OnEnabledChange()
|
||||
}
|
||||
})
|
||||
z.RegisterCallback(REG_CURRENT_TEMP, func() {
|
||||
if z.OnCurrentTempChange == nil {
|
||||
return
|
||||
@@ -45,7 +51,7 @@ func NewZone(config *ZoneConfig) *Zone {
|
||||
})
|
||||
z.RegisterCallback(REG_MODE, func() {
|
||||
fanMode := z.GetFanMode()
|
||||
hvacMode := z.GetHvacMode()
|
||||
hvacMode := z.GetKnMode()
|
||||
if z.OnFanModeChange != nil {
|
||||
z.OnFanModeChange(fanMode)
|
||||
}
|
||||
@@ -76,6 +82,16 @@ func (z *Zone) IsOn() bool {
|
||||
return r1&0x1 != 0
|
||||
}
|
||||
|
||||
func (z *Zone) SetOn(on bool) error {
|
||||
var r1 uint16
|
||||
if on {
|
||||
r1 = 0x3
|
||||
} else {
|
||||
r1 = 0x2
|
||||
}
|
||||
return z.WriteRegister(REG_ENABLED, r1)
|
||||
}
|
||||
|
||||
func (z *Zone) IsPresent() bool {
|
||||
r1 := z.ReadRegister(REG_ENABLED)
|
||||
return r1&0x2 != 0
|
||||
@@ -106,7 +122,7 @@ func (z *Zone) SetFanMode(fanMode FanMode) error {
|
||||
return z.WriteRegister(REG_MODE, r2|fm)
|
||||
}
|
||||
|
||||
func (z *Zone) GetHvacMode() KnMode {
|
||||
func (z *Zone) GetKnMode() KnMode {
|
||||
r2 := z.ReadRegister(REG_MODE)
|
||||
return (KnMode)(r2 & 0x000F)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user