Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyfritzhome/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from .fritzhome import Fritzhome
from .fritzhomedevice import FritzhomeDevice

__version__ = version(__name__)
__version__ = "0.6.18" #version(__name__)

__all__ = (
"Fritzhome",
Expand Down
86 changes: 49 additions & 37 deletions pyfritzhome/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,12 @@ def list_all(fritz, args):
print("#" * 30)
print("name=%s" % device.name)
print(" ain=%s" % device.ain)
print(" id=%s" % device.identifier)
print(" productname=%s" % device.productname)
print(" manufacturer=%s" % device.manufacturer)
print(" present=%s" % device.present)
print(" lock=%s" % device.lock)
print(" devicelock=%s" % device.device_lock)
print(" is_group=%s" % device.is_group)
if device.is_group:
print(" group_members=%s" % device.group_members)
#~ print(" is_group=%s" % device.is_group)
#~ if device.is_group:
#~ print(" group_members=%s" % device.group_members)

if device.present is False:
continue
Expand All @@ -41,41 +38,45 @@ def list_all(fritz, args):
print(" power=%s" % device.power)
print(" energy=%s" % device.energy)
print(" voltage=%s" % device.voltage)
print(" current=%s" % device.current)
if device.has_temperature_sensor:
print(" Temperature:")
print(" temperature=%s" % device.temperature)
print(" offset=%s" % device.offset)
if device.has_thermostat:
print(" Thermostat:")
print(" battery_low=%s" % device.battery_low)
print(" battery_level=%s" % device.battery_level)
print(" actual=%s" % device.actual_temperature)
print(" target=%s" % device.target_temperature)
print(" comfort=%s" % device.comfort_temperature)
print(" eco=%s" % device.eco_temperature)
print(" window=%s" % device.window_open)
print(" window_until=%s" % device.window_open_endtime)
print(" boost=%s" % device.boost_active)
print(" boost_until=%s" % device.boost_active_endtime)
print(" adaptive_heating_running=%s" % device.adaptive_heating_running)
print(" summer=%s" % device.summer_active)
print(" holiday=%s" % device.holiday_active)
if device.has_alarm:
print(" Alert:")
print(" alert=%s" % device.alert_state)
if device.has_lightbulb:
print(" Light bulb:")
print(" state=%s" % ("Off" if device.state == 0 else "On"))
if device.has_level:
print(" level=%s" % device.level)
if device.has_color:
print(" hue=%s" % device.hue)
print(" saturation=%s" % device.saturation)
if device.has_blind:
print(" Blind:")
print(" level=%s" % device.level)
print(" levelpercentage=%s" % device.levelpercentage)
print(" endpositionset=%s" % device.endpositionsset)
if device.has_humidity_sensor:
print(" Humidity:")
print(" relative_humidity=%s" % device.rel_humidity)
#~ if device.has_thermostat:
#~ print(" Thermostat:")
#~ print(" battery_low=%s" % device.battery_low)
#~ print(" battery_level=%s" % device.battery_level)
#~ print(" actual=%s" % device.actual_temperature)
#~ print(" target=%s" % device.target_temperature)
#~ print(" comfort=%s" % device.comfort_temperature)
#~ print(" eco=%s" % device.eco_temperature)
#~ print(" window=%s" % device.window_open)
#~ print(" window_until=%s" % device.window_open_endtime)
#~ print(" boost=%s" % device.boost_active)
#~ print(" boost_until=%s" % device.boost_active_endtime)
#~ print(" adaptive_heating_running=%s" % device.adaptive_heating_running)
#~ print(" summer=%s" % device.summer_active)
#~ print(" holiday=%s" % device.holiday_active)
#~ if device.has_alarm:
#~ print(" Alert:")
#~ print(" alert=%s" % device.alert_state)
#~ if device.has_lightbulb:
#~ print(" Light bulb:")
#~ print(" state=%s" % ("Off" if device.state == 0 else "On"))
#~ if device.has_level:
#~ print(" level=%s" % device.level)
#~ if device.has_color:
#~ print(" hue=%s" % device.hue)
#~ print(" saturation=%s" % device.saturation)
#~ if device.has_blind:
#~ print(" Blind:")
#~ print(" level=%s" % device.level)
#~ print(" levelpercentage=%s" % device.levelpercentage)
#~ print(" endpositionset=%s" % device.endpositionsset)


def device_name(fritz, args):
Expand Down Expand Up @@ -202,6 +203,9 @@ def main(args=None):
parser.add_argument(
"-v", action="store_true", dest="verbose", help="be more verbose"
)
parser.add_argument(
"-A", "--aha", action="store_true", dest="aha_api", help="Use legacy AHA API"
)
parser.add_argument(
"-f",
"--fritzbox",
Expand Down Expand Up @@ -234,6 +238,12 @@ def main(args=None):
version="{version}".format(version=__version__),
help="Print version",
)
parser.add_argument(
"--test-data",
action="store_true",
dest="testdata",
help="Use offline test data"
)

_sub = parser.add_subparsers(title="Commands")

Expand Down Expand Up @@ -399,6 +409,8 @@ def main(args=None):
password=args.password,
port=args.port or None,
ssl_verify=not args.insecure,
force_aha_api=args.aha_api,
use_testdata=args.testdata
)
fritzbox.login()
args.func(fritzbox, args)
Expand Down
4 changes: 4 additions & 0 deletions pyfritzhome/devicetypes/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Init file for the device types."""

from .fritzhomedevicebase import FritzhomeDeviceBase
from .fritzhomedevicealarm import FritzhomeDeviceAlarm
from .fritzhomedevicebutton import FritzhomeDeviceButton
from .fritzhomedevicehumidity import FritzhomeDeviceHumidity
Expand All @@ -13,9 +14,11 @@
from .fritzhomedeviceblind import FritzhomeDeviceBlind
from .fritzhometemplate import FritzhomeTemplate
from .fritzhometrigger import FritzhomeTrigger
from .fritzhomeunit import FritzhomeUnit


__all__ = (
"FritzhomeDeviceBase",
"FritzhomeDeviceAlarm",
"FritzhomeDeviceButton",
"FritzhomeDeviceHumidity",
Expand All @@ -29,4 +32,5 @@
"FritzhomeDeviceBlind",
"FritzhomeTemplate",
"FritzhomeTrigger",
"FritzhomeUnit",
)
88 changes: 44 additions & 44 deletions pyfritzhome/devicetypes/fritzhomedevicebase.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from __future__ import print_function


import logging

from pyfritzhome.devicetypes.fritzhomeentitybase import FritzhomeEntityBase
Expand All @@ -14,59 +13,60 @@
class FritzhomeDeviceBase(FritzhomeEntityBase):
"""The Fritzhome Device class."""

battery_level = None
battery_low = None
identifier = None
is_group = None
fw_version = None
group_members = None
manufacturer = None
productname = None
present = None
tx_busy = None
product_name = None
is_connected = None

def __repr__(self):
"""Return a string."""
return "{ain} {identifier} {manuf} {prod} {name}".format(
return "{ain} {manuf} {prod} {name}".format(
ain=self.ain,
identifier=self.identifier,
manuf=self.manufacturer,
prod=self.productname,
name=self.name,
)

def update(self):
"""Update the device values."""
self._fritz.update_devices()

def _update_from_node(self, node):
_LOGGER.debug("update base device")
super()._update_from_node(node)
self.ain = node.attrib["identifier"]
self.identifier = node.attrib["id"]
self.fw_version = node.attrib["fwversion"]
self.manufacturer = node.attrib["manufacturer"]
self.productname = node.attrib["productname"]

self.present = bool(int(node.findtext("present")))

groupinfo = node.find("groupinfo")
self.is_group = groupinfo is not None
if self.is_group:
self.group_members = str(groupinfo.findtext("members")).split(",")

try:
self.tx_busy = self.get_node_value_as_int_as_bool(node, "txbusy")
except Exception:
pass

try:
self.battery_low = self.get_node_value_as_int_as_bool(node, "batterylow")
self.battery_level = int(self.get_node_value_as_int(node, "battery"))
except Exception:
pass

# General
def get_present(self):
"""Check if the device is present."""
return self._fritz.get_device_present(self.ain)
self._units = {}
if self._fritz._use_aha:
self.manufacturer = node.attrib["manufacturer"]
self.product_name = node.attrib["productname"]
self.is_connected = self.get_node_value_as_int_as_bool(node, "present")
else:
self.manufacturer = self._node["manufacturer"]
self.product_name = self._node["productName"]
self.is_connected = self._node["isConnected"]

def find_interface(self, interface):
for unit in self._units.values():
if interface := unit.find_interface(interface):
return interface
return None

def get_config():
self._fritz.update_device_config(self.ain)

# legacy
@property
def productname(self):
return self.product_name

# legacy
@property
def present(self):
return self.is_connected

def clear_units(self):
self._units = {}

def add_or_update_unit(self, unit):
self._units[unit.ain] = unit

# with aha, there are no units and interfaces. Emulated interfaces become directly attached
def add_or_update_unit(self, unit):
self._units[unit.ain] = unit

def units(self):
return self._units.values()
39 changes: 0 additions & 39 deletions pyfritzhome/devicetypes/fritzhomedevicehumidity.py

This file was deleted.

68 changes: 0 additions & 68 deletions pyfritzhome/devicetypes/fritzhomedevicepowermeter.py

This file was deleted.

Loading