Skip to content

Commit

Permalink
Merge pull request #74 from nao-pon/BathroomDryer
Browse files Browse the repository at this point in the history
Add Bathroom dryer
  • Loading branch information
nao-pon authored Oct 4, 2024
2 parents 24ef506 + f0f3627 commit a7a410f
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 17 deletions.
75 changes: 75 additions & 0 deletions pychonet/BathroomDryer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from pychonet.EchonetInstance import EchonetInstance
from pychonet.lib.epc_functions import (
DICT_41_AUTO_8_LEVELS,
DICT_41_AUTO_STANDARD,
DICT_41_ON_OFF,
DICT_41_YES_NO,
_int,
_signed_int,
)


class BathroomDryer(EchonetInstance):
EOJGC = 0x02
EOJCC = 0x73

EPC_FUNCTIONS = {
0xB0: [
_int,
{
0x10: "ventilation",
0x20: "prewarming",
0x30: "heating",
0x40: "drying",
0x50: "circulation",
0x60: "mistSauna",
0x61: "waterMist",
0x00: "stop",
},
], # "Operation setting",
0xB1: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Ventilation operation setting",
0xB2: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Bathroom pre-warmer operation setting",
0xB3: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Bathroom heater operation setting",
0xB4: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Bathroom dryer operation setting",
0xB5: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Cool air circulator operation setting",
0xB6: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Mist sauna operation setting",
0xB7: [
_int,
{**DICT_41_AUTO_STANDARD, **DICT_41_AUTO_8_LEVELS},
], # "Water mist operation setting",
0xBA: _int, # "Measured relative bathroom humidity",
0xBB: _signed_int, # "Measured bathroom temperature",
0xC2: [_int, DICT_41_AUTO_8_LEVELS], # "Ventilation air flow rate setting",
0xCF: [_int, DICT_41_ON_OFF], # "Filter cleaning reminder sign setting",
0xE0: [_int, DICT_41_ON_OFF], # "Human body detection status",
# 0x90: "“ON timer-based reservation” setting 1",
# 0xE1: "“ON timer-based reservation” setting 2",
# 0x91: "ON timer setting (time)",
# 0x92: "ON timer setting (relative time)",
# 0x94: "“OFF timer-based reservation” setting",
# 0x95: "OFF timer setting (time)",
# 0x96: "OFF timer setting (relative time)",
}

def __init__(self, host, api_connector=None, instance=0x1):
self._eojgc = self.EOJGC
self._eojcc = self.EOJCC
super().__init__(host, self._eojgc, self._eojcc, instance, api_connector)
36 changes: 19 additions & 17 deletions pychonet/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,37 @@
from pychonet.lib.eojx import EOJX_CLASS

from .version import __version__
from .AutomaticEntranceDoor import AutomaticEntranceDoor
from .BathroomDryer import BathroomDryer
from .CeilingFan import CeilingFan
from .DistributionPanelMeter import DistributionPanelMeter
from .EchonetInstance import EchonetInstance
from .ElectricBlind import ElectricBlind
from .ElectricShutter import ElectricShutter
from .ElectricCurtain import ElectricCurtain
from .ElectricRainSlidingDoor import ElectricRainSlidingDoor
from .ElectricEnergyMeter import ElectricEnergyMeter
from .ElectricGate import ElectricGate
from .ElectricWindow import ElectricWindow
from .AutomaticEntranceDoor import AutomaticEntranceDoor
from .ElectricLock import ElectricLock
from .ElectricRainSlidingDoor import ElectricRainSlidingDoor
from .ElectricShutter import ElectricShutter
from .ElectricVehicleCharger import ElectricVehicleCharger
from .ElectricWaterHeater import ElectricWaterHeater
from .ElectricWindow import ElectricWindow
from .FloorHeater import FloorHeater
from .FuelCell import FuelCell
from .GasMeter import GasMeter
from .GeneralLighting import GeneralLighting
from .SingleFunctionLighting import SingleFunctionLighting
from .LightingSystem import LightingSystem
from .HomeAirCleaner import HomeAirCleaner
from .HomeAirConditioner import HomeAirConditioner
from .HomeSolarPower import HomeSolarPower
from .HotWaterGenerator import HotWaterGenerator
from .HybridWaterHeater import HybridWaterHeater
from .LightingSystem import LightingSystem
from .LowVoltageSmartElectricEnergyMeter import LowVoltageSmartElectricEnergyMeter
from .Refrigerator import Refrigerator
from .SingleFunctionLighting import SingleFunctionLighting
from .StorageBattery import StorageBattery
from .TemperatureSensor import TemperatureSensor
from .DistributionPanelMeter import DistributionPanelMeter
from .LowVoltageSmartElectricEnergyMeter import LowVoltageSmartElectricEnergyMeter
from .HybridWaterHeater import HybridWaterHeater
from .HotWaterGenerator import HotWaterGenerator
from .FloorHeater import FloorHeater
from .FuelCell import FuelCell
from .GasMeter import GasMeter
from .ElectricEnergyMeter import ElectricEnergyMeter
from .WaterFlowMeter import WaterFlowMeter
from .CeilingFan import CeilingFan
from .ElectricWaterHeater import ElectricWaterHeater
from .Refrigerator import Refrigerator


def Factory(host, server, eojgc, eojcc, eojci=0x01):
Expand All @@ -56,6 +57,7 @@ def Factory(host, server, eojgc, eojcc, eojci=0x01):
f"{0x02}-{0x6B}": ElectricWaterHeater,
f"{0x02}-{0x6F}": ElectricLock,
f"{0x02}-{0x72}": HotWaterGenerator,
f"{0x02}-{0x73}": BathroomDryer,
f"{0x02}-{0x79}": HomeSolarPower,
f"{0x02}-{0x7B}": FloorHeater,
f"{0x02}-{0x7C}": FuelCell,
Expand Down
2 changes: 2 additions & 0 deletions pychonet/lib/epc.py
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,8 @@
0xB3: "Bathroom heater operation setting",
0xB4: "Bathroom dryer operation setting",
0xB5: "Cool air circulator operation setting",
0xB6: "Mist sauna operation setting",
0xB7: "Water mist operation setting",
0xBA: "Measured relative bathroom humidity",
0xBB: "Measured bathroom temperature",
0xC2: "Ventilation air flow rate setting",
Expand Down
13 changes: 13 additions & 0 deletions pychonet/lib/epc_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
DICT_41_ON_OFF = {0x41: DATA_STATE_ON, 0x42: DATA_STATE_OFF}
DICT_41_YES_NO = {0x41: "yes", 0x42: "no"}
DICT_41_AUTO_NONAUTO = {0x41: "auto", 0x42: "non-auto"}
DICT_41_AUTO_STANDARD = {0x41: "auto", 0x42: "standard"}
DICT_41_UNLOCK_LOCK = {0x42: DATA_STATE_UNLOCK, 0x41: DATA_STATE_LOCK}
DICT_41_OPEN_CLOSED = {0x41: DATA_STATE_OPEN, 0x42: DATA_STATE_CLOSE}
DICT_41_ENABLED_DISABLED = {0x41: "enabled", 0x42: "disabled"}
Expand Down Expand Up @@ -59,6 +60,18 @@
0x43: "temporarily_disabled",
}

DICT_41_AUTO_8_LEVELS = {
0x41: "auto",
0x31: "level-1",
0x32: "level-2",
0x33: "level-3",
0x34: "level-4",
0x35: "level-5",
0x36: "level-6",
0x37: "level-7",
0x38: "level-8",
}


def _swap_dict(d: dict):
return {v: k for k, v in d.items()}
Expand Down

0 comments on commit a7a410f

Please sign in to comment.