From 242ad1aa0a3e73cd19af5d8b1f87e37520ebf685 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:15:16 +0200 Subject: [PATCH 01/24] Update and rename init.py to custom_components/fujitsu_general_heatpump/__init__.py --- custom_components/fujitsu_general_heatpump/__init__.py | 1 + init.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 custom_components/fujitsu_general_heatpump/__init__.py delete mode 100644 init.py diff --git a/custom_components/fujitsu_general_heatpump/__init__.py b/custom_components/fujitsu_general_heatpump/__init__.py new file mode 100644 index 0000000..04ce0d3 --- /dev/null +++ b/custom_components/fujitsu_general_heatpump/__init__.py @@ -0,0 +1 @@ +""" fujitsu_general_heatpump integration.""" diff --git a/init.py b/init.py deleted file mode 100644 index 8b13789..0000000 --- a/init.py +++ /dev/null @@ -1 +0,0 @@ - From 23fc86b63ce539297f1631a7c3632584c9e2ade7 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:20:27 +0200 Subject: [PATCH 02/24] Update and rename fujitsu_general_heatpump.py to custom_components/fujitsu_general_heatpump/climate.py --- .../fujitsu_general_heatpump/climate.py | 236 ++++++++++++++++++ fujitsu_general_heatpump.py | 223 ----------------- 2 files changed, 236 insertions(+), 223 deletions(-) create mode 100644 custom_components/fujitsu_general_heatpump/climate.py delete mode 100644 fujitsu_general_heatpump.py diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py new file mode 100644 index 0000000..38642e9 --- /dev/null +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -0,0 +1,236 @@ +""" +Support for the Fujitsu General Split A/C Wifi platform AKA FGLair . +""" + +import logging +import voluptuous as vol + +from homeassistant.components.climate import ClimateDevice, PLATFORM_SCHEMA +from homeassistant.components.climate.const import ( + HVAC_MODE_OFF, + HVAC_MODE_HEAT, + HVAC_MODE_COOL, + HVAC_MODE_AUTO, + HVAC_MODE_DRY, + HVAC_MODE_FAN_ONLY, + SUPPORT_FAN_MODE, + SUPPORT_SWING_MODE, + SUPPORT_TARGET_TEMPERATURE, + SUPPORT_AUX_HEAT, + FAN_AUTO, FAN_LOW, FAN_MEDIUM, FAN_HIGH, FAN_DIFFUSE, + CURRENT_HVAC_HEAT, + CURRENT_HVAC_IDLE) +from homeassistant.const import ( + ATTR_TEMPERATURE, CONF_USERNAME, CONF_PASSWORD, TEMP_CELSIUS) +import homeassistant.helpers.config_validation as cv + +__version__ = '0.9.0' + +_LOGGER = logging.getLogger(__name__) + +REQUIREMENTS = ['https://github.com/xerxes87/pyfujitseu/archive/0.9.2.7.zip#pyfujitseu==0.9.2.7'] + +# Values from web interface +MIN_TEMP = 16 +MAX_TEMP = 30 + +SUPPORT_FLAGS = SUPPORT_FAN_MODE | SUPPORT_SWING_MODE | SUPPORT_TARGET_TEMPERATURE + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional('region'): cv.string, + vol.Optional('tokenpath'): cv.string, + +}) + + +HA_FAN_TO_FUJITSU = { + FAN_AUTO: "Auto", + FAN_LOW: "Low", + FAN_MEDIUM: "Medium", + FAN_HIGH: "High", + FAN_DIFFUSE: "Quiet" +} + +FUJITSU_FAN_TO_HA = { + "Auto": FAN_AUTO, + "Low": FAN_LOW, + "Medium": FAN_MEDIUM, + "High": FAN_HIGH, + "Quiet": FAN_DIFFUSE +} + + +def setup_platform(hass, config, add_entities, discovery_info=None): + """Setup the E-Thermostaat Platform.""" + _LOGGER.debug("FujitsuClimate setup_platform called") + import pyfujitseu.api as fgapi + _LOGGER.debug("FujitsuClimate pyfujitseu.api import called") + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + region = config.get('region') + tokenpath = config.get('tokenpath') + _LOGGER.debug("FujitsuClimate config.get ") + + fglairapi = fgapi.Api(username, password, region, tokenpath) + if not fglairapi._authenticate(): + _LOGGER.error("Unable to authenticate with Fujistsu General") + return + + _LOGGER.debug("FujitsuClimate fglairapi._authenticate ") + + devices = fglairapi.get_devices_dsn() + add_entities(FujitsuClimate(fglairapi, dsn) for dsn in devices) + _LOGGER.debug("FujitsuClimate setup_platform fine") + + +class FujitsuClimate(ClimateDevice): + """Representation of a E-Thermostaat device.""" + + def __init__(self, api, dsn): + """Initialize the thermostat.""" + _LOGGER.debug("FujitsuClimate init called for dsn: %s", dsn) + import pyfujitseu.splitAC as splitAC + _LOGGER.debug("FujitsuClimate pyfujitseu.splitAC called") + self._api = api + self._dsn = dsn + self._fujitsu_device = splitAC.splitAC(self._dsn, self._api) + _LOGGER.debug("FujitsuClimate _fujitsu_device setup.") + self._name = self.name + _LOGGER.debug("FujitsuClimate name set: %s", self._name) + self._aux_heat = self.is_aux_heat_on + self._target_temperature = self.target_temperature + self._fan_mode = self.fan_mode + self._hvac_mode = self.hvac_mode + self._swing_mode = self.swing_mode + + self._fan_modes = [FUJITSU_FAN_TO_HA['Quiet'], FAN_LOW, FAN_MEDIUM, FAN_HIGH, FAN_AUTO] + self._hvac_modes = [HVAC_MODE_HEAT, HVAC_MODE_COOL, HVAC_MODE_AUTO, HVAC_MODE_DRY, HVAC_MODE_FAN_ONLY, HVAC_MODE_OFF] + self._swing_modes = ['Horizontal' ,'Down', 'Unknown', 'Swing' ] + self._on = self.is_on + + + _LOGGER.debug("FujitsuClimate init fine.") + + @property + def name(self): + """Return the name of the thermostat.""" + return self._fujitsu_device.device_name['value'] + + @property + def is_aux_heat_on(self): + """Reusing is for Powerfull mode.""" + if not hasattr(self._fujitsu_device.powerful_mode, 'value'): + return False + elif self._fujitsu_device.powerful_mode['value'] == 1: + return True + else: + return False + + @property + def target_temperature(self): + """Return the temperature we try to reach.""" + return self._fujitsu_device.adjust_temperature_degree + + @property + def target_temperature_step(self): + """Return the supported step of target temperature.""" + return 1 + + + @property + def is_on(self): + """Return true if on.""" + if self._fujitsu_device.operation_mode['value'] != 0: + return True + else: + return False + + @property + def hvac_mode(self): + """Return current operation ie. heat, cool, idle.""" + return self._fujitsu_device.operation_mode_desc + + @property + def hvac_modes(self): + """HVAC modes.""" + return self._hvac_modes + + def set_hvac_mode(self, hvac_mode): + """Set HVAC mode.""" + _LOGGER.debug("FujitsuClimate set_hvac_mode called. self._hvac_mode: %s ; hvac_mode: %s", self._hvac_mode, hvac_mode) + if(hvac_mode == HVAC_MODE_OFF): + """Turn device off.""" + self._fujitsu_device.turnOff() + elif(self._hvac_mode != hvac_mode): + self._fujitsu_device.changeOperationMode(hvac_mode) + + def set_temperature(self, **kwargs): + """Set new target temperature.""" + _LOGGER.debug("FujitsuClimate set_temperature: %s ; 2: %s", kwargs.get(ATTR_TEMPERATURE), kwargs.get(ATTR_TEMPERATURE)) + self._fujitsu_device.changeTemperature(kwargs.get(ATTR_TEMPERATURE)) + + def update(self): + """Retrieve latest state.""" + self._fujitsu_device.refresh_properties() + + @property + def fan_mode(self): + """Return the fan setting.""" + return FUJITSU_FAN_TO_HA[self._fujitsu_device.get_fan_speed_desc()] + + @property + def fan_modes(self): + """Return the list of available fan modes.""" + return self._fan_modes + + def set_fan_mode(self, fan_mode): + """Set fan mode.""" + self._fujitsu_device.changeFanSpeed(HA_FAN_TO_FUJITSU[fan_mode]) + + @property + def swing_mode(self): + """Return the fan setting.""" + return self._fujitsu_device.get_swing_mode_desc() + + @property + def swing_modes(self): + """List of available swing modes.""" + return self._swing_modes + + def set_swing_mode(self, swing_mode): + """Set new target temperature.""" + self._fujitsu_device.changeSwingMode(swing_mode) + +############old stufffff + + @property + def unique_id(self) -> str: + """Return the unique ID for this thermostat.""" + return '_'.join([self._name, 'climate']) + + @property + def should_poll(self): + """Polling is required.""" + return True + + @property + def min_temp(self): + """Return the minimum temperature.""" + return MIN_TEMP + + @property + def max_temp(self): + """Return the maximum temperature.""" + return MAX_TEMP + + @property + def temperature_unit(self): + """Return the unit of measurement.""" + return TEMP_CELSIUS + + @property + def supported_features(self): + """Return the list of supported features.""" + return SUPPORT_FLAGS diff --git a/fujitsu_general_heatpump.py b/fujitsu_general_heatpump.py deleted file mode 100644 index 18c5a43..0000000 --- a/fujitsu_general_heatpump.py +++ /dev/null @@ -1,223 +0,0 @@ -""" -Support for the Fujitsu General Split A/C Wifi platform AKA FGLair . - -""" - -import logging -import voluptuous as vol - -from homeassistant.components.climate import ( - PLATFORM_SCHEMA, - ClimateDevice -) - -from homeassistant.components.climate.const import ( - ATTR_AWAY_MODE, ATTR_CURRENT_TEMPERATURE, ATTR_FAN_MODE, - ATTR_OPERATION_MODE, ATTR_SWING_MODE, STATE_AUTO, STATE_COOL, STATE_DRY, - STATE_FAN_ONLY, STATE_HEAT, SUPPORT_AWAY_MODE, SUPPORT_FAN_MODE, - SUPPORT_ON_OFF, SUPPORT_OPERATION_MODE, SUPPORT_SWING_MODE, - SUPPORT_TARGET_TEMPERATURE, SUPPORT_AUX_HEAT -) - -from homeassistant.const import (ATTR_TEMPERATURE, CONF_USERNAME, CONF_PASSWORD, TEMP_CELSIUS,STATE_ON, STATE_OFF,STATE_ON) -import homeassistant.helpers.config_validation as cv - -REQUIREMENTS = ['pyfujitsu==0.8.1.1'] - - -_LOGGER = logging.getLogger(__name__) - -SUPPORT_FLAGS = SUPPORT_TARGET_TEMPERATURE | SUPPORT_OPERATION_MODE -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_USERNAME): cv.string, - vol.Optional(CONF_PASSWORD): cv.string, -}) - -HA_STATE_TO_FUJITSU = { - STATE_FAN_ONLY: 'Fan', - STATE_DRY: 'Dry', - STATE_COOL: 'Cool', - STATE_HEAT: 'Heat', - STATE_AUTO: 'Auto', - STATE_OFF: 'Off', - STATE_ON: 'On' -} - -FUJITSU_TO_HA_STATE = { - 'Fan': STATE_FAN_ONLY, - 'Dry': STATE_DRY, - 'Cool': STATE_COOL, - 'Heat': STATE_HEAT, - 'Auto': STATE_AUTO, - 'fan': STATE_FAN_ONLY, - 'dry': STATE_DRY, - 'cool': STATE_COOL, - 'heat': STATE_HEAT, - 'Auto': STATE_AUTO, - - 'Off': STATE_OFF, - 'off': STATE_OFF, - - 'On': STATE_ON, - 'on': STATE_ON -} - -def setup_platform(hass, config, add_entities, discovery_info=None): - """Set up the Fujitsu Split platform.""" - import pyfujitsu.api as fgapi - username = config.get(CONF_USERNAME) - password = config.get(CONF_PASSWORD) - _LOGGER.debug("Added Fujitsu Account for username: %s ", username) - - fglairapi = fgapi.Api(username, password) - if not fglairapi._authenticate(): - _LOGGER.error("Unable to authenticate with Fujistsu General") - return - - devices = fglairapi.get_devices_dsn() - add_entities(FujitsuClimate(fglairapi, dsn) for dsn in devices) - -class FujitsuClimate(ClimateDevice): - """Representation of a Fujitsu Heatpump.""" - - def __init__(self, api, dsn): - #from homeassistant.components.pyfujitsu import splitAC - from pyfujitsu import splitAC - self._api = api - self._dsn = dsn - self._fujitsu_device = splitAC.splitAC(self._dsn, self._api) - self._name = self.name - self._aux_heat = self.is_aux_heat_on - self._target_temperature = self.target_temperature - self._unit_of_measurement = self.unit_of_measurement - self._current_fan_mode = self.current_fan_mode - self._current_operation = FUJITSU_TO_HA_STATE[self.current_operation] - self._current_swing_mode = self.current_swing_mode - self._fan_list = ['Quiet', 'Low', 'Medium', 'High', 'Auto'] - self._operation_list = [FUJITSU_TO_HA_STATE['Heat'], FUJITSU_TO_HA_STATE['Cool'], FUJITSU_TO_HA_STATE['Auto'], FUJITSU_TO_HA_STATE['Dry'], FUJITSU_TO_HA_STATE['Fan'],FUJITSU_TO_HA_STATE['Off'],FUJITSU_TO_HA_STATE['On']] - self._swing_list = ['Vertical Swing','Horizontal Swing', 'Vertical high', - 'Vertical Mid', 'Vertical Low' ] - self._target_temperature_high = self.target_temperature_high - self._target_temperature_low = self.target_temperature_low - self._on = self.is_on - self._supported_features = SUPPORT_TARGET_TEMPERATURE \ - | SUPPORT_OPERATION_MODE | SUPPORT_FAN_MODE \ - | SUPPORT_SWING_MODE | SUPPORT_ON_OFF | SUPPORT_AUX_HEAT - - @property - def name(self): - """Return the name of the climate device.""" - return self._fujitsu_device.device_name['value'] - - - @property - def temperature_unit(self): - """Return the unit of measurement used by the platform.""" - return TEMP_CELSIUS - - - @property - def current_operation(self): - """Return current operation ie. heat, cool, idle.""" - return FUJITSU_TO_HA_STATE[self._fujitsu_device.operation_mode_desc] - - @property - def operation_list(self): - """Return the list of available operation modes.""" - return self._operation_list - - @property - def target_temperature(self): - """Return the temperature we try to reach.""" - return self._fujitsu_device.adjust_temperature_degree - - @property - def target_temperature_step(self): - """Return the supported step of target temperature.""" - return 0.5 - - @property - def powerfull_mode(self): - """ Return Powerfull mode state""" - return self._fujitsu_device.powerful_mode - - - @property - def is_on(self): - """Return true if on.""" - if self._fujitsu_device.operation_mode['value'] != 0: - return True - else: - return False - - @property - def current_fan_mode(self): - """Return the fan setting.""" - return self._fujitsu_device.get_fan_speed_desc() - - @property - def fan_list(self): - """Return the list of available fan modes.""" - return self._fan_list - - @property - ## Todo combine swing modes in to one - def current_swing_mode(self): - """Return the fan setting.""" - return self._fujitsu_device.af_horizontal_direction['value'] - - @property - def swing_list(self): - """Return the list of available swing modes.""" - return self._swing_list - - def set_temperature(self, **kwargs): - """Set new target temperature.""" - self._fujitsu_device.changeTemperature(kwargs.get(ATTR_TEMPERATURE)) - - def set_fan_mode(self, fan_mode): - """Set new target fan mode.""" - print(fan_mode) - self._fujitsu_device.changeFanSpeed(fan_mode) - - def set_operation_mode(self, operation_mode): - """Set new target operation mode.""" - self._fujitsu_device.changeOperationMode(operation_mode) - -# def set_swing_mode(self, swing_mode): -# """Set new target swing operation.""" -# raise NotImplementedError() - - def turn_on(self): - """Turn device on.""" - return self._fujitsu_device.turnOn() - - - def turn_off(self): - """Turn device off.""" - return self._fujitsu_device.turnOff() - - @property - def is_aux_heat_on(self): - """Reusing is for Powerfull mode.""" - if self._fujitsu_device.powerful_mode['value'] == 1: - return True - else: - return False - - def turn_aux_heat_on(self): - """Reusing is for Powerfull mode.""" - self._fujitsu_device.powerfull_mode_on() - - def turn_aux_heat_off(self): - """Reusing is for Powerfull mode.""" - self._fujitsu_device.powerfull_mode_off() - - @property - def supported_features(self): - """Return the list of supported features.""" - return self._supported_features - - def update(self): - """Retrieve latest state.""" - self._fujitsu_device.refresh_properties() From 92fa4af8de771c1ba35a68ddc4db627a5c442930 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:23:38 +0200 Subject: [PATCH 03/24] Update and rename manifest.json to custom_components/fujitsu_general_heatpump/manifest.json --- .../fujitsu_general_heatpump/manifest.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) rename manifest.json => custom_components/fujitsu_general_heatpump/manifest.json (63%) diff --git a/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json similarity index 63% rename from manifest.json rename to custom_components/fujitsu_general_heatpump/manifest.json index 26a1335..db9cd75 100644 --- a/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -3,6 +3,10 @@ "name": "fujitsu_general_heatpump", "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", "dependencies": [], - "codeowners": [], - "requirements": ["pyfujitsu==0.8.1.1"] + "codeowners": [ + "@Mmodarre", + "@xerxes87", + ], + "requirements": ["pyfujitsu==0.9.0"], + "homeassistant": "0.96.0" } From 78e608c6b976dd48a873bed57099179345562bca Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:25:05 +0200 Subject: [PATCH 04/24] Delete Capture.PNG --- Capture.PNG | Bin 22826 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Capture.PNG diff --git a/Capture.PNG b/Capture.PNG deleted file mode 100644 index aa37e0748b974c662b3f50eb59422ac187554237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22826 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 Date: Fri, 9 Aug 2019 09:25:17 +0200 Subject: [PATCH 05/24] Delete Capture2.PNG --- Capture2.PNG | Bin 12584 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Capture2.PNG diff --git a/Capture2.PNG b/Capture2.PNG deleted file mode 100644 index f5a9ed522191668e874a96d0cd3b37d8d07b5cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12584 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 XPsfnhj1&0p1{ehyRdB78*~k9^rDHx{ From 793d12050a2b944239927d1003f8ffe76bc7ca3a Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:25:39 +0200 Subject: [PATCH 06/24] Add files via upload --- ha_fujitsu.jpg | Bin 0 -> 55153 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ha_fujitsu.jpg diff --git a/ha_fujitsu.jpg b/ha_fujitsu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe54c71029a0461e7cf43be389d846d8762bb6c7 GIT binary patch literal 55153 zcmeEv2UL{Fwr&#y5fF)zQ9wbWC_!R_NS2(l2uhNiL1+XC5^WGvkesvR3`$0F&LBDG z)HEI5&&)Vy&YU^--Z|&K`|ew7aQ&-$b$6v*yJ~;?+q+8iIQl#2n!L1}GzbF&10)Ol z1EHrtlAy~tIJh{MF5}|j;^AGsLO@1HfR9f=MM6qMMn}y+Pe)BldxM#a-RYq^c&kj1FY?UO`hXGd(Q+O0G7r$9(^(qaWTCitChA)VFT4u-;+g z<>ME4ASfjHNJ?5pR!&}BLsLszM_13(?Add33ri~}XBSsDcMnhh*8zb+!EZvMqTj{D zzW?wsE;TJZBQq;IC%2@uth}PKs=B7BxuvzOy`%Hn;Lz~M=-Bwg6$)nF`CI!JL;GoD|Fwbn{YxYJbzpxR*CdDl3j>%u zEMgEC)R`K>ZhAL0gcbDH^S@sPSsad(6HV3O_Ef&#%`<(Cfek^2(&BIG2l6 zMECBpmy97SYG|{h_O|Xy&{cLEY|R{cvWhs�!Eyb{4}Ti}bsx7j$;gP|WTz5XNNF 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 NF@HU)P|)|u{{h0<>d^oI literal 0 HcmV?d00001 From fa89a2dd5bce13d3afd3e49a503025fe4b46345f Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:32:09 +0200 Subject: [PATCH 07/24] Update README.md --- README.md | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 492edcc..8a077ee 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,18 @@ This is a platform to support Fujitsu General Airconditioners under Climate comp ### Sample UI: -![UI_SCREENSHOT](https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/Capture.PNG) -![UI_SCREENSHOT](https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/Capture2.PNG) +![UI_SCREENSHOT](https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/ha_fujitsu.jpg) ### Usage: 1. create this directory path `/config/custom_components/fujitsu_general_heatpump/` if it does not already exist. -2. Download the `fujitsu_general_heatpump.py` `manifest.json' and 'init.py` from the repo and place it in the directory mentioned in previous step. Rename `fujitsu_general_heatpump.py` to `climate.py` +2. Download the `climate.py` `manifest.json' and '__init__.py` from the repo and place it in the directory mentioned in previous step. So the end result would look like: `/config/custom_components/fujitsu_general_heatpump/climate.py` `/config/custom_components/fujitsu_general_heatpump/manifest.json` -`/config/custom_components/fujitsu_general_heatpump/init.py` +`/config/custom_components/fujitsu_general_heatpump/__init__.py` 3. add the below lines to your `configuration.yaml` file and replace it with your FGLair app username/password: ``` @@ -24,13 +23,26 @@ climate: - platform: fujitsu_general_heatpump username: password: + region: [eu, cn, us] (optional, default: us) + tokenpath: (optional, default: 'token.txt') ``` + +Full Example: +``` +climate: + - platform: fujitsu_general_heatpump + username: !secret FGLAIR_USER + password: !secret FGLAIR_PASS + region: 'eu' + tokenpath: 'home/homeassistant/token.txt' +``` + 4. Restart Home Assistant in order for the new component to show and all of your A/Cs in your account should appear in HASS. ### Known issues and missing features: -[RESOLVED]1. Google Assistant integration is not working [most possibly due to states not matching what Google assistant is expecting] -2. Logging needs to be implemented -3. The “powerful” functionality is implemented through aux_heat button in UI -4. There are some other functionalities in the A/C which currently is not implemented. -5. Could not reverse engineer the API to give the ambient room temperature. If you figured it out let me know and I am happy to update the library. + +- [X] Logging needs to be implemented +- [ ] The “powerful” functionality is implemented through aux_heat button in UI +- [ ] There are some other functionalities in the A/C which currently is not implemented. +- [ ] Possibility to add external temerature sensor From da64185dba18c94555f8b4054aac4e5637dded46 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 09:34:02 +0200 Subject: [PATCH 08/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a077ee..2c0b2f0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a platform to support Fujitsu General Airconditioners under Climate comp ### Sample UI: -![UI_SCREENSHOT](https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/ha_fujitsu.jpg) +![UI_SCREENSHOT](https://raw.githubusercontent.com/xerxes87/pyfujitsu_for_homeassistant/master/ha_fujitsu.jpg) ### Usage: 1. create this directory path `/config/custom_components/fujitsu_general_heatpump/` if it does not already exist. @@ -34,7 +34,7 @@ climate: username: !secret FGLAIR_USER password: !secret FGLAIR_PASS region: 'eu' - tokenpath: 'home/homeassistant/token.txt' + tokenpath: '/home/homeassistant/token.txt' ``` 4. Restart Home Assistant in order for the new component to show and all of your A/Cs in your account should appear in HASS. From 5523671cf9e75a9ecab67bc28e7d49184b8af6c8 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 11:25:11 +0200 Subject: [PATCH 09/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c0b2f0..6da0651 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a platform to support Fujitsu General Airconditioners under Climate comp ### Sample UI: -![UI_SCREENSHOT](https://raw.githubusercontent.com/xerxes87/pyfujitsu_for_homeassistant/master/ha_fujitsu.jpg) +![UI_SCREENSHOT](https://raw.githubusercontent.com/xerxes87/pyfujitsu_for_homeassistant/master/ha_fujitsu.jpg | width=100) ### Usage: 1. create this directory path `/config/custom_components/fujitsu_general_heatpump/` if it does not already exist. From ade2076cc9992b1d72d89ac64b10a0f435686a0c Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 11:26:14 +0200 Subject: [PATCH 10/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6da0651..2c0b2f0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a platform to support Fujitsu General Airconditioners under Climate comp ### Sample UI: -![UI_SCREENSHOT](https://raw.githubusercontent.com/xerxes87/pyfujitsu_for_homeassistant/master/ha_fujitsu.jpg | width=100) +![UI_SCREENSHOT](https://raw.githubusercontent.com/xerxes87/pyfujitsu_for_homeassistant/master/ha_fujitsu.jpg) ### Usage: 1. create this directory path `/config/custom_components/fujitsu_general_heatpump/` if it does not already exist. From 5ee945f783ee435d11af2c657f3820849df094ea Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 11:27:19 +0200 Subject: [PATCH 11/24] Add files via upload --- ha_fujitsu.jpg | Bin 55153 -> 27968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ha_fujitsu.jpg b/ha_fujitsu.jpg index fe54c71029a0461e7cf43be389d846d8762bb6c7..159ea59442bdff5cb25e2e4e201f193c14f193f6 100644 GIT binary patch literal 27968 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�!Eyb{4}Ti}bsx7j$;gP|WTz5XNNF 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 NF@HU)P|)|u{{h0<>d^oI From f6e708cf6b18a628989ada6aef3e78a10dda07bc Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Fri, 9 Aug 2019 11:32:53 +0200 Subject: [PATCH 12/24] Update climate.py --- custom_components/fujitsu_general_heatpump/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index 38642e9..f3fb879 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -28,7 +28,7 @@ _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/xerxes87/pyfujitseu/archive/0.9.2.7.zip#pyfujitseu==0.9.2.7'] +REQUIREMENTS = ['pyfujitsu==0.9.0'] # Values from web interface MIN_TEMP = 16 From 39f3f39d61a72d87e11178cbdcca40fade3cf89f Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Mon, 12 Aug 2019 10:21:05 +0200 Subject: [PATCH 13/24] Update climate.py --- custom_components/fujitsu_general_heatpump/climate.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index f3fb879..a84d1b7 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -65,8 +65,8 @@ def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the E-Thermostaat Platform.""" _LOGGER.debug("FujitsuClimate setup_platform called") - import pyfujitseu.api as fgapi - _LOGGER.debug("FujitsuClimate pyfujitseu.api import called") + import pyfujitsu.api as fgapi + _LOGGER.debug("FujitsuClimate pyfujitsu.api import called") username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) region = config.get('region') @@ -91,8 +91,8 @@ class FujitsuClimate(ClimateDevice): def __init__(self, api, dsn): """Initialize the thermostat.""" _LOGGER.debug("FujitsuClimate init called for dsn: %s", dsn) - import pyfujitseu.splitAC as splitAC - _LOGGER.debug("FujitsuClimate pyfujitseu.splitAC called") + import pyfujitsu.splitAC as splitAC + _LOGGER.debug("FujitsuClimate pyfujitsu.splitAC called") self._api = api self._dsn = dsn self._fujitsu_device = splitAC.splitAC(self._dsn, self._api) From b2adaa51e5e9b18dbe8a41c02bc8476173901fd8 Mon Sep 17 00:00:00 2001 From: xerxes87 Date: Wed, 14 Aug 2019 08:09:21 +0200 Subject: [PATCH 14/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c0b2f0..e0bbba2 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ climate: username: !secret FGLAIR_USER password: !secret FGLAIR_PASS region: 'eu' - tokenpath: '/home/homeassistant/token.txt' + tokenpath: 'token.txt' ``` 4. Restart Home Assistant in order for the new component to show and all of your A/Cs in your account should appear in HASS. From 3eac864bf508f60cbddc29f5f86326e20c80f58e Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Fri, 18 Oct 2019 19:08:18 +0200 Subject: [PATCH 15/24] manifest.json fix. --- .../fujitsu_general_heatpump/manifest.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index db9cd75..2f04f23 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -1,12 +1,12 @@ { - "domain": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant", - "name": "fujitsu_general_heatpump", - "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", - "dependencies": [], - "codeowners": [ - "@Mmodarre", - "@xerxes87", - ], - "requirements": ["pyfujitsu==0.9.0"], - "homeassistant": "0.96.0" - } + "domain": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant", + "name": "fujitsu_general_heatpump", + "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", + "dependencies": [], + "codeowners": [ + "@Mmodarre", + "@xerxes87" + ], + "requirements": ["pyfujitsu==0.9.0"], + "homeassistant": "0.96.0" +} \ No newline at end of file From 37df2d8ffe909d5bb22f63fdb394c931972754d9 Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Mon, 25 May 2020 14:39:19 +0200 Subject: [PATCH 16/24] ul --- .../fujitsu_general_heatpump/__init__.py | 2 +- .../fujitsu_general_heatpump/climate.py | 25 ++++++++++++------- .../fujitsu_general_heatpump/manifest.json | 5 ++-- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/__init__.py b/custom_components/fujitsu_general_heatpump/__init__.py index 04ce0d3..2e153dd 100644 --- a/custom_components/fujitsu_general_heatpump/__init__.py +++ b/custom_components/fujitsu_general_heatpump/__init__.py @@ -1 +1 @@ -""" fujitsu_general_heatpump integration.""" +""" fujitsu_general_heatpump integration.""" \ No newline at end of file diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index a84d1b7..715bddd 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -26,9 +26,11 @@ __version__ = '0.9.0' + + _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pyfujitsu==0.9.0'] +#REQUIREMENTS = ['pyfujitseu==0.9.3.2'] # Values from web interface MIN_TEMP = 16 @@ -64,9 +66,12 @@ def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the E-Thermostaat Platform.""" + + _LOGGER.debug("FujitsuClimate setup_platform called") + import pyfujitseu.api as fgapi _LOGGER.debug("FujitsuClimate setup_platform called") - import pyfujitsu.api as fgapi - _LOGGER.debug("FujitsuClimate pyfujitsu.api import called") + + _LOGGER.debug("FujitsuClimate pyfujitseu.api import called") username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) region = config.get('region') @@ -91,8 +96,8 @@ class FujitsuClimate(ClimateDevice): def __init__(self, api, dsn): """Initialize the thermostat.""" _LOGGER.debug("FujitsuClimate init called for dsn: %s", dsn) - import pyfujitsu.splitAC as splitAC - _LOGGER.debug("FujitsuClimate pyfujitsu.splitAC called") + import pyfujitseu.splitAC as splitAC + _LOGGER.debug("FujitsuClimate pyfujitseu.splitAC called") self._api = api self._dsn = dsn self._fujitsu_device = splitAC.splitAC(self._dsn, self._api) @@ -122,11 +127,11 @@ def name(self): def is_aux_heat_on(self): """Reusing is for Powerfull mode.""" if not hasattr(self._fujitsu_device.powerful_mode, 'value'): - return False + return False elif self._fujitsu_device.powerful_mode['value'] == 1: - return True + return True else: - return False + return False @property def target_temperature(self): @@ -150,6 +155,7 @@ def is_on(self): @property def hvac_mode(self): """Return current operation ie. heat, cool, idle.""" + _LOGGER.debug("FujitsuClimate hvac_mode: %s", self._fujitsu_device.operation_mode['value']) return self._fujitsu_device.operation_mode_desc @property @@ -164,6 +170,7 @@ def set_hvac_mode(self, hvac_mode): """Turn device off.""" self._fujitsu_device.turnOff() elif(self._hvac_mode != hvac_mode): + _LOGGER.debug("FujitsuClimate set_hvac_mode elif path called. ") self._fujitsu_device.changeOperationMode(hvac_mode) def set_temperature(self, **kwargs): @@ -233,4 +240,4 @@ def temperature_unit(self): @property def supported_features(self): """Return the list of supported features.""" - return SUPPORT_FLAGS + return SUPPORT_FLAGS \ No newline at end of file diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index 2f04f23..7d7be70 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -2,11 +2,10 @@ "domain": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant", "name": "fujitsu_general_heatpump", "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", + "requirements": ["pyfujitseu==0.9.3.2"], "dependencies": [], "codeowners": [ "@Mmodarre", "@xerxes87" - ], - "requirements": ["pyfujitsu==0.9.0"], - "homeassistant": "0.96.0" + ] } \ No newline at end of file From 31aac03fb27941753372a8870907cc6da2110b9e Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Tue, 30 Jun 2020 06:53:04 +0200 Subject: [PATCH 17/24] kbgg --- custom_components/fujitsu_general_heatpump/climate.py | 8 ++++---- custom_components/fujitsu_general_heatpump/manifest.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index 715bddd..21626cd 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -4,8 +4,9 @@ import logging import voluptuous as vol +import pyfujitseu -from homeassistant.components.climate import ClimateDevice, PLATFORM_SCHEMA +from homeassistant.components.climate import ClimateEntity, PLATFORM_SCHEMA from homeassistant.components.climate.const import ( HVAC_MODE_OFF, HVAC_MODE_HEAT, @@ -24,7 +25,7 @@ ATTR_TEMPERATURE, CONF_USERNAME, CONF_PASSWORD, TEMP_CELSIUS) import homeassistant.helpers.config_validation as cv -__version__ = '0.9.0' +__version__ = '0.9.1' @@ -90,7 +91,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): _LOGGER.debug("FujitsuClimate setup_platform fine") -class FujitsuClimate(ClimateDevice): +class FujitsuClimate(ClimateEntity): """Representation of a E-Thermostaat device.""" def __init__(self, api, dsn): @@ -167,7 +168,6 @@ def set_hvac_mode(self, hvac_mode): """Set HVAC mode.""" _LOGGER.debug("FujitsuClimate set_hvac_mode called. self._hvac_mode: %s ; hvac_mode: %s", self._hvac_mode, hvac_mode) if(hvac_mode == HVAC_MODE_OFF): - """Turn device off.""" self._fujitsu_device.turnOff() elif(self._hvac_mode != hvac_mode): _LOGGER.debug("FujitsuClimate set_hvac_mode elif path called. ") diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index 7d7be70..ca4a276 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -2,7 +2,7 @@ "domain": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant", "name": "fujitsu_general_heatpump", "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", - "requirements": ["pyfujitseu==0.9.3.2"], + "requirements": ["pyfujitseu"], "dependencies": [], "codeowners": [ "@Mmodarre", From bb565ca9402a69dafb02bb463e4dbaa662510a1e Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Tue, 30 Jun 2020 07:35:42 +0200 Subject: [PATCH 18/24] Manifest Domain adaption --- custom_components/fujitsu_general_heatpump/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index ca4a276..8706cf7 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -1,6 +1,6 @@ { - "domain": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant", - "name": "fujitsu_general_heatpump", + "domain": "pyfujitseu_for_homeassistant", + "name": "Fujitsu general heatpump", "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", "requirements": ["pyfujitseu"], "dependencies": [], From 4ecee9c7d7822b0cbe6a81e1877ea1927413747a Mon Sep 17 00:00:00 2001 From: esteele Date: Wed, 19 Aug 2020 21:11:33 -0400 Subject: [PATCH 19/24] Fix imports --- custom_components/fujitsu_general_heatpump/climate.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index 21626cd..6aac6a6 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -4,7 +4,9 @@ import logging import voluptuous as vol -import pyfujitseu +from pyfujitseu.api import Api as fgapi +from pyfujitseu.splitAC import splitAC + from homeassistant.components.climate import ClimateEntity, PLATFORM_SCHEMA from homeassistant.components.climate.const import ( @@ -69,7 +71,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the E-Thermostaat Platform.""" _LOGGER.debug("FujitsuClimate setup_platform called") - import pyfujitseu.api as fgapi _LOGGER.debug("FujitsuClimate setup_platform called") _LOGGER.debug("FujitsuClimate pyfujitseu.api import called") @@ -97,7 +98,6 @@ class FujitsuClimate(ClimateEntity): def __init__(self, api, dsn): """Initialize the thermostat.""" _LOGGER.debug("FujitsuClimate init called for dsn: %s", dsn) - import pyfujitseu.splitAC as splitAC _LOGGER.debug("FujitsuClimate pyfujitseu.splitAC called") self._api = api self._dsn = dsn From 9ec6910c0cd4c5d95d29276713015175c0d841d5 Mon Sep 17 00:00:00 2001 From: esteele Date: Wed, 19 Aug 2020 22:04:00 -0400 Subject: [PATCH 20/24] Fix component name --- custom_components/fujitsu_general_heatpump/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index 8706cf7..43f69a2 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -1,5 +1,5 @@ { - "domain": "pyfujitseu_for_homeassistant", + "domain": "fujitsu_general_heatpump", "name": "Fujitsu general heatpump", "documentation": "https://github.com/Mmodarre/pyfujitsu_for_homeassistant/blob/master/README.md", "requirements": ["pyfujitseu"], From be36210753af78dd2ff53b75f0433921deb28c92 Mon Sep 17 00:00:00 2001 From: esteele Date: Wed, 19 Aug 2020 22:12:00 -0400 Subject: [PATCH 21/24] Fix import --- custom_components/fujitsu_general_heatpump/climate.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index 6aac6a6..b6abff4 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -73,14 +73,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None): _LOGGER.debug("FujitsuClimate setup_platform called") _LOGGER.debug("FujitsuClimate setup_platform called") - _LOGGER.debug("FujitsuClimate pyfujitseu.api import called") username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) region = config.get('region') tokenpath = config.get('tokenpath') _LOGGER.debug("FujitsuClimate config.get ") - fglairapi = fgapi.Api(username, password, region, tokenpath) + fglairapi = fgapi(username, password, region, tokenpath) if not fglairapi._authenticate(): _LOGGER.error("Unable to authenticate with Fujistsu General") return From be2f81d31bc8d9b6f5a4e9ea147ba6585b5916ee Mon Sep 17 00:00:00 2001 From: esteele Date: Wed, 19 Aug 2020 22:16:22 -0400 Subject: [PATCH 22/24] Fix import --- custom_components/fujitsu_general_heatpump/climate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/fujitsu_general_heatpump/climate.py b/custom_components/fujitsu_general_heatpump/climate.py index b6abff4..c08c7fe 100644 --- a/custom_components/fujitsu_general_heatpump/climate.py +++ b/custom_components/fujitsu_general_heatpump/climate.py @@ -100,7 +100,7 @@ def __init__(self, api, dsn): _LOGGER.debug("FujitsuClimate pyfujitseu.splitAC called") self._api = api self._dsn = dsn - self._fujitsu_device = splitAC.splitAC(self._dsn, self._api) + self._fujitsu_device = splitAC(self._dsn, self._api) _LOGGER.debug("FujitsuClimate _fujitsu_device setup.") self._name = self.name _LOGGER.debug("FujitsuClimate name set: %s", self._name) From be1e1bf4d0c21e525cc7363ea56b0ab4aad478ee Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Tue, 9 Mar 2021 21:52:24 +0100 Subject: [PATCH 23/24] added version key --- custom_components/fujitsu_general_heatpump/manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index 43f69a2..9fb8436 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -7,5 +7,6 @@ "codeowners": [ "@Mmodarre", "@xerxes87" - ] + ], + "version": "1.0" } \ No newline at end of file From a370dffd6b5af863b0d774062edb8a52bd3440e7 Mon Sep 17 00:00:00 2001 From: Phil iPhone Date: Tue, 9 Mar 2021 22:03:59 +0100 Subject: [PATCH 24/24] added new version key --- custom_components/fujitsu_general_heatpump/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/fujitsu_general_heatpump/manifest.json b/custom_components/fujitsu_general_heatpump/manifest.json index 9fb8436..0db67cc 100644 --- a/custom_components/fujitsu_general_heatpump/manifest.json +++ b/custom_components/fujitsu_general_heatpump/manifest.json @@ -8,5 +8,5 @@ "@Mmodarre", "@xerxes87" ], - "version": "1.0" + "version": "1.0.0" } \ No newline at end of file