API Reference
Note
This page is dynamically created using the sphinx.ext.autodoc extension.
CAME Domotic API
This module exposes the CAME Domotic API to the end-users.
- class aiocamedomotic.came_domotic_api.CameDomoticAPI(auth: Auth, *, command_timeout: int = 30)
Main class, exposes all the public methods of the CAME Domotic API.
- async async_add_user(username: str, password: str, group: str = '*') User
Add a new user to the CAME Domotic server.
- Parameters:
username (str) – The login name for the new user.
password (str) – The initial password for the new user.
group (str, optional) – The name of the permission group to assign to the new user (e.g.
"ETI/Domo"). Defaults to"*". Useasync_get_terminal_groups()to retrieve the available group names from the server.
- Returns:
A
Userobject representing the newly created user.- Return type:
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async classmethod async_create(host: str, username: str, password: str, *, websession: ClientSession | None = None, close_websession_on_disposal: bool = False, command_timeout: int = 30) CameDomoticAPI
Create a CameDomoticAPI object.
- Parameters:
host (str) – The host of the CAME Domotic server.
username (str) – The username to use for the API.
password (str) – The password to use for the API.
websession (aiohttp.ClientSession, optional) – The aiohttp session to use for the API. If not provided, a new aiohttp.ClientSession will be created.
close_websession_on_disposal (bool, default False) –
Controls whether the aiohttp session is closed when this object is disposed.
False(default): the session is preserved on disposal. Use this when the caller owns the session and reuses it elsewhere — which is the typical case in Home Assistant and other frameworks that maintain a single long-livedaiohttp.ClientSessionshared across multiple integrations. Closing it here would break every other component that relies on it.True: the session is closed on disposal. Use this only when you explicitly want this object to take ownership of the provided session and close it when done.
Note
When no
websessionis provided, this argument is ignored: the internally created session is always closed on disposal.command_timeout (int, optional) – the default timeout in seconds for all commands sent to the server (default: 30s).
- Returns:
The CameDomoticAPI object.
- Return type:
- Raises:
CameDomoticServerNotFoundError – if the host doesn’t respond to an HTTP request or doesn’t expose the CAME Domotic API endpoint.
Note
The session is not logged in until the first request is made.
- async async_dispose() None
Dispose the CameDomoticAPI object.
- async async_get_analog_inputs() list[AnalogIn]
Get the list of all standalone analog input sensors on the server.
Analog inputs are read-only sensors (e.g. hygrometers, thermometers, barometers) exposed via the
analoginfeature. They are independent of the thermoregulation system’s analog sensors.- Returns:
List of analog input sensors.
- Return type:
list[AnalogIn]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_analog_sensors() list[AnalogSensor]
Get analog sensor readings from the thermoregulation system.
Retrieves top-level temperature, humidity, and pressure sensor readings from the thermoregulation list response.
- Returns:
List of analog sensors found in the response.
- Return type:
list[AnalogSensor]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_cameras() list[Camera]
Get the list of all TVCC cameras defined on the server.
Cameras are read-only entities providing access to IP camera stream URIs. They do not support control commands.
- Returns:
List of cameras.
- Return type:
list[Camera]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_digital_inputs() list[DigitalInput]
Get the list of all digital input devices defined on the server.
Digital inputs are read-only binary sensors (e.g. physical buttons, contact sensors). They report their state but cannot be controlled.
- Returns:
List of digital inputs.
- Return type:
list[DigitalInput]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_floors() list[Floor]
Get the list of all the floors defined on the server.
- Returns:
List of floors.
- Return type:
list[Floor]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_lights() list[Light]
Get the list of all the light devices defined on the server.
- Returns:
List of lights.
- Return type:
list[Light]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_map_pages() list[MapPage]
Get the list of all map pages (floor plans) from the server.
Maps provide a spatial view of the installation with positioned device elements overlaid on background images. Map data is read-only and cannot be modified through the API.
- Returns:
List of map pages, each containing positioned elements. Returns an empty list if no maps are defined.
- Return type:
list[MapPage]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_openings() list[Opening]
Get the list of all opening devices defined on the server.
- Returns:
List of openings.
- Return type:
list[Opening]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_relays() list[Relay]
Get the list of all relay devices defined on the server.
Relays are simple on/off switches that can be controlled remotely.
- Returns:
List of relays.
- Return type:
list[Relay]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_rooms() list[Room]
Get the list of all the rooms defined on the server.
- Returns:
List of rooms.
- Return type:
list[Room]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_scenarios() list[Scenario]
Get the list of all scenarios defined on the server.
- Returns:
List of scenarios.
- Return type:
list[Scenario]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_server_info() ServerInfo
Get the server information.
Provides info about the server (keycode, software version, etc.) and the list of features supported by the CAME Domotic server.
- Returns:
Server information.
- Return type:
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_terminal_groups() list[TerminalGroup]
Get the list of terminal groups defined on the server.
Terminal groups define the permission scope assigned to users at creation time. Call this method before
async_add_user()to discover the available group names on the server.The
groupparameter ofasync_add_user()accepts a group name (e.g."ETI/Domo"), not its numeric ID. The special value"*"(the default) may be used when fine-grained group assignment is not required.- Returns:
Available groups. Returns an empty list if none are defined or the server response lacks the
arraykey.- Return type:
list[TerminalGroup]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_thermo_zones() list[ThermoZone]
Get the list of all thermoregulation zones defined on the server.
- Returns:
List of thermoregulation zones.
- Return type:
list[ThermoZone]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_timers() list[Timer]
Get the list of all timers defined on the server.
Timers are scheduling entities that define time-based activation windows. They support enabling/disabling, day toggling, and timetable configuration.
- Returns:
List of timers.
- Return type:
list[Timer]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_topology() PlantTopology
Get the complete plant topology (floors and rooms).
Merges data from the standard
floor_list_req/room_list_reqendpoints with the nested device list commands (nested_light_list_req,nested_openings_list_req,nested_thermo_list_req) to build a comprehensive topology even on servers where the flat floor/room endpoints return empty.Only nested commands for features supported by the server are sent.
- Returns:
The merged plant topology.
- Return type:
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_updates(timeout: int | None = None) UpdateList
Get status updates from the server using long polling.
This method performs a long-polling request: it blocks until the server sends one or more real-time status updates (e.g., a light turned on, a scenario activated), then returns them all at once.
- Parameters:
timeout (int | None, optional) – the timeout in seconds for the long-polling request. If None, uses the instance-level
command_timeout(default: 30s). Since this method uses long polling, a longer timeout (e.g. 120s) is recommended to avoid premature disconnections.- Returns:
List of status updates received from the server.
- Return type:
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_get_users() list[User]
Get the list of users defined on the server.
- Returns:
List of users. Returns an empty list if no users are defined or if the server response doesn’t contain the users list.
- Return type:
list[User]
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_ping() float
Ping the CAME Domotic server and measure round-trip latency.
Sends a keep-alive request to verify connectivity. If the session has expired, it transparently re-authenticates first.
- Returns:
Round-trip latency in milliseconds.
- Return type:
float
- Raises:
CameDomoticServerNotFoundError – If the server is unreachable.
CameDomoticAuthError – If authentication fails.
CameDomoticServerTimeoutError – If the request times out.
CameDomoticServerError – If the server returns an error.
- async async_set_thermo_season(season: ThermoZoneSeason) None
Set the global thermoregulation season for all zones.
This is a plant-level command that changes the season for the entire thermoregulation system.
Warning
Setting
seasontoPLANT_OFFcauses the CAME server to automatically switch all thermoregulation zones toThermoZoneMode.OFF. Reverting the season back toWINTERorSUMMERdoes not restore the previous zone modes — each zone staysOFFuntil its mode is changed explicitly viaasync_set_mode()orasync_set_config().If your application needs to restore zone operation after re-enabling a season, you must track each zone’s previous mode yourself and re-apply it after changing the season.
- Parameters:
season – The season to set. Valid values are
WINTER,SUMMER, andPLANT_OFF.- Raises:
ValueError – If
seasonisThermoZoneSeason.UNKNOWN.CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
Entity models
This module defines the Python representation of each of the entity types used by the CAME Domotic API.
- class aiocamedomotic.models.AnalogIn(raw_data: dict[str, Any])
Standalone analog input sensor from the
analogin_list_respendpoint.Represents a read-only analog sensor (e.g. hygrometer, thermometer, barometer) exposed via the
analoginfeature.- Parameters:
raw_data – Dictionary containing the sensor data from the API.
- Raises:
ValueError – If
nameoract_idkeys are missing from the input data.
- property act_id: int
Unique actuator/sensor identifier.
- property name: str
Display name of the sensor.
- property unit: str
Unit of measurement (e.g.
'C','%','hPa').
- class aiocamedomotic.models.AnalogInUpdate(raw_data: dict[str, Any])
Typed update for an analog input sensor (
analogin_status_ind/analogin_update_ind).- property act_id: int
Analog input actuator ID.
- property unit: str
Unit of measurement.
- property value: float
Sensor reading, with temperature scaling applied for unit
'C'.
- class aiocamedomotic.models.AnalogSensor(raw_data: dict[str, Any], sensor_type: AnalogSensorType = AnalogSensorType.UNKNOWN)
Analog sensor from the CAME Domotic thermoregulation system.
Represents a top-level temperature, humidity, or pressure sensor reading from the thermoregulation list response. These sensors are separate from the thermoregulation zones.
- Parameters:
raw_data – Dictionary containing the sensor data from the API.
sensor_type – The type of sensor (temperature, humidity, or pressure). Defaults to
AnalogSensorType.UNKNOWNif not specified.
Note
The
valueproperty returns the real sensor reading in the unit reported byunit(e.g., degrees C, %, hPa).- Raises:
ValueError – If
nameoract_idkeys are missing from the input data.
- property act_id: int
ID of the analog sensor.
- property name: str
Name of the analog sensor.
- sensor_type: AnalogSensorType = 'unknown'
The type of sensor (temperature, humidity, or pressure).
- property unit: str
Unit of measurement (e.g., ‘C’, ‘%’, ‘hPa’).
- property value: float
Sensor reading in the unit reported by
unit.
- class aiocamedomotic.models.AnalogSensorType(*values)
Type of an analog sensor.
Allowed values are:
TEMPERATURE (“temperature”)
HUMIDITY (“humidity”)
PRESSURE (“pressure”)
UNKNOWN (“unknown”)
- class aiocamedomotic.models.CameEntity
Base class for all the CAME entities.
- class aiocamedomotic.models.Camera(raw_data: dict[str, Any], auth: Auth)
TVCC camera entity in the CameDomotic API.
Cameras are read-only devices that provide streaming video and still-image URIs for IP cameras connected to the CAME Domotic system. They cannot be controlled remotely — this is purely a viewing/monitoring feature.
Warning
The
urianduri_stillfields point directly to camera HTTP endpoints on the local network. These URIs may contain embedded authentication credentials (e.g.http://user:pass@camera/stream). Avoid logging or displaying these values without sanitisation.- Raises:
ValueError – If
nameoridkeys are missing from the input data or the auth argument is not an instance of the expectedAuthclass.
- property id: int
Unique camera identifier.
Unlike other device models which use
act_id, cameras use a plainidfield as their primary key (JS field:id,idProperty).
- property is_flash: bool
Whether this camera uses a Flash (SWF) stream.
Flash streams are obsolete — consumers should fall back to
uri_stillfor cameras where this isTrue.Derived from:
stream_type == "swf"(same check as JS client, line 5493).
- property name: str
name).- Type:
Camera display name (JS field
- property stream_type: str
Raw stream format string as returned by the server.
The only known value with special semantics is
"swf"(Flash). All other values are treated identically by the JS client (JS field:stream_type).
- property uri: str
Primary streaming video URI.
Points directly to the camera’s stream endpoint on the LAN. The actual protocol/format is opaque — the JS client loads it in an iframe (JS field:
uri).
- property uri_still: str
Snapshot/still-image URI.
Returns a single JPEG frame from the camera. Useful for thumbnails or as a fallback when the primary stream format is not supported. Append
?t=<timestamp>for cache busting on repeated fetches (JS field:uri_still).
- class aiocamedomotic.models.DeviceType(*values)
Device type IDs used by the CAME ETI/Domo system.
Each device in the CAME Domotic system is associated with one of these type identifiers. Not all device types are currently supported by this library.
- Values:
ANALOG_INPUT (-3)
ENERGY_SENSOR (-2)
ANALOG_SENSOR (-1)
LIGHT (0)
OPENING (1)
THERMOSTAT (2)
PAGE (3)
SCENARIO (4)
CAMERA (5)
SECURITY_PANEL (6)
SECURITY_AREA (7)
SECURITY_SCENARIO (8)
SECURITY_INPUT (9)
SECURITY_OUTPUT (10)
GENERIC_RELAY (11)
GENERIC_TEXT (12)
SOUND_ZONE (13)
DIGITAL_INPUT (14)
TIMER (15)
- class aiocamedomotic.models.DeviceUpdate(raw_data: dict[str, Any])
Base class for a typed status update from the CAME API.
Wraps the raw update dict and exposes common properties. Subclasses add device-specific accessors.
- Parameters:
raw_data – The original dict from the
status_update_respresult array.
- property cmd_name: str
The indication
cmd_namestring from the raw update.
- property device_id: int | None
Primary device identifier (
act_id,open_act_id, orid).Returns the first available identifier, or
Noneif none is present.
- property device_type: DeviceType | None
The
DeviceTypefor this update, orNoneif thecmd_nameis not recognized.
- property name: str
Device name from the update.
- property update_indicator: UpdateIndicator | None
The
UpdateIndicatorfor this update, orNoneif thecmd_nameis not recognized.
- class aiocamedomotic.models.DigitalInput(raw_data: dict[str, Any], auth: Auth)
Digital input (binary sensor) entity in the CameDomotic API.
Digital inputs are read-only devices that report their binary state (ACTIVE/IDLE). They cannot be controlled remotely.
- Raises:
ValueError – If
nameoract_idkeys are missing from the input data or the auth argument is not an instance of the expectedAuthclass.
- property act_id: int
ID of the digital input.
- property addr: int
Address of the digital input.
- property name: str
Name of the digital input.
- property status: DigitalInputStatus
ACTIVE (0) or IDLE (1).
ACTIVEmeans the input is triggered (e.g. a button is being pressed).IDLEmeans the input is in its normal resting state.Returns
DigitalInputStatus.UNKNOWNwhen the status field is absent from the server response (some digital inputs do not report a status until their first state change).- Type:
Status of the digital input
- property type: DigitalInputType
Type of the digital input.
Returns
DigitalInputType.UNKNOWNwhen the type value is not recognized.
- property utc_time: int
UTC timestamp of the last event (Unix epoch seconds).
Returns
0if the digital input has never been triggered.
- class aiocamedomotic.models.DigitalInputStatus(*values)
Status of a digital input.
- Allowed values are:
ACTIVE (0): the input is active (e.g. a button is pressed)
IDLE (1): the input is idle (e.g. a button is not pressed)
- class aiocamedomotic.models.DigitalInputType(*values)
Type of a digital input.
- Allowed values are:
STATUS (1): standard status input
- class aiocamedomotic.models.DigitalInputUpdate(raw_data: dict[str, Any])
Typed update for a digital input (
digitalin_status_ind/digitalin_update_ind).- property act_id: int
Digital input actuator ID.
- property addr: int
Digital input address.
- property status: int
Digital input status value.
- property utc_time: int
UTC timestamp of the digital input event.
- class aiocamedomotic.models.Floor(raw_data: dict[str, Any])
Floor entity in the CAME Domotic API.
Represents a floor in the building structure with its identifier and name.
- property id: int
ID of the floor.
- property name: str
Name of the floor.
- class aiocamedomotic.models.Light(raw_data: dict[str, Any], auth: Auth)
Light entity in the CameDomotic API.
- Raises:
ValueError – If name or act_id keys are missing from the input data or the auth argument is not an instance of the expected Auth class.
- property act_id: int
ID of the light.
- async async_set_status(status: LightStatus, brightness: int | None = None, rgb: list[int] | None = None) None
Control the light.
- Parameters:
status (LightStatus) – Status of the light.
brightness (Optional[int]) – Brightness percentage of the light (range 0-100). If the brightness is not provided, it will stay unchanged. This argument is ignored for STEP_STEP lights.
rgb (Optional[List[int]]) – RGB color values as [R, G, B], each in range 0-255. If not provided, the color stays unchanged. This argument is ignored for non-RGB lights.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property floor_ind: int
Floor index of the light.
- property name: str
Name of the light.
- property perc: int
Brightness percentage of the light (range 0-100). Non dimmable lights will always return 100.
- property rgb: list[int] | None
RGB color values of the light as [R, G, B], each in range 0-255. Returns None for non-RGB lights.
- property room_ind: int
Room index of the light.
- property status: LightStatus
Status of the light. Allowed values are OFF (0), ON (1) and AUTO (4).
- class aiocamedomotic.models.LightStatus(*values)
Status of a light.
- Allowed values are:
OFF (0)
ON (1)
AUTO (4)
- class aiocamedomotic.models.LightType(*values)
Type of a light.
- Allowed values are:
STEP_STEP (normal lights)
DIMMER (dimmable lights)
RGB (color lights with brightness via HSV V channel)
- class aiocamedomotic.models.LightUpdate(raw_data: dict[str, Any])
Typed update for a light device (
light_switch_ind/light_update_ind).- property act_id: int
Light actuator ID.
- property floor_ind: int
Floor index.
- property perc: int
Brightness percentage (0-100). Defaults to 100 for non-dimmable.
- property rgb: list[int] | None
RGB color values
[R, G, B](0-255 each), orNone.
- property room_ind: int
Room index.
- property status: LightStatus
Light status (OFF, ON, AUTO).
- class aiocamedomotic.models.MapPage(raw_data: dict[str, Any])
A page (floor plan) in the CAME Domotic map system.
Each page represents a spatial view containing positioned elements (lights, openings, thermostats, page links, scenarios, cameras) overlaid on a background image. Elements are returned as raw dictionaries preserving the server response structure.
The
elementslist contains dictionaries with at least the following common keys:x,y,width,height,type,label,aspect,icon_id,permission,read_only,address. Additional keys depend on the element type (e.g.act_idfor devices,pagefor page links,scenario_idfor scenarios).- Raises:
ValueError – If
page_idorpage_labelkeys are missing from the input data, or ifpage_idis not an integer.
- property background: str
Relative URL path to the background image on the CAME server.
The URL may contain spaces (e.g.
"maps/maps_pianta piano terra.png"). Consumers must percent-encode the path when making HTTP requests. The full URL is constructed ashttp://<server_host>/<background>.
- property elements: list[dict[str, Any]]
Interactive elements placed on this map page.
Each element is a raw dictionary from the server response. Common keys include
x,y,width,height,type,label,aspect,icon_id,permission,read_only, andaddress. Type-specific keys (act_id,page,scenario_id,status) are present only for applicable element types.
- property page_id: int
Unique page identifier.
0is the root/home page.
- property page_label: str
Human-readable page title.
- property page_scale: int
Coordinate space size for element positioning.
Element
x/yvalues range from0topage_scale. Typically1024.
- class aiocamedomotic.models.Opening(raw_data: dict[str, Any], auth: Auth)
Opening entity in the CameDomotic API.
- Raises:
ValueError – If name or open_act_id keys are missing from the input data or the auth argument is not an instance of the expected Auth class.
- async async_set_status(status: OpeningStatus) None
Control the opening (open, close, stop, slat open, slat close).
- Parameters:
status (OpeningStatus) – Status to set for the opening.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property close_act_id: int
Actuator ID for closing action.
- property floor_ind: int | None
Floor index where the opening is located.
- property name: str
Name of the opening.
- property open_act_id: int
Actuator ID for opening action.
- property partial_positions: list[str]
List of configured partial opening positions, if any.
- property room_ind: int | None
Room index where the opening is located.
- property status: OpeningStatus
STOPPED (0), OPENING (1), CLOSING (2), SLAT_OPEN (3) and SLAT_CLOSE (4).
- Type:
Current status of the opening. Allowed values
- property type: OpeningType
Opening type.
- Raises:
ValueError – If the opening type is not recognized.
- class aiocamedomotic.models.OpeningStatus(*values)
Status of an opening.
- Allowed values are:
STOPPED (0)
OPENING (1)
CLOSING (2)
SLAT_OPEN (3)
SLAT_CLOSE (4)
- class aiocamedomotic.models.OpeningType(*values)
Type of an opening.
- Allowed values are:
SHUTTER (0)
- class aiocamedomotic.models.OpeningUpdate(raw_data: dict[str, Any])
Typed update for an opening device (
opening_move_ind/opening_update_ind).- property close_act_id: int
Actuator ID for the closing action.
- property device_id: int | None
For openings the primary ID is
open_act_id.
- property floor_ind: int
Floor index.
- property open_act_id: int
Actuator ID for the opening action.
- property room_ind: int
Room index.
- property status: OpeningStatus
Opening status (STOPPED, OPENING, CLOSING, etc.).
- class aiocamedomotic.models.PlantTopology(floors: list[TopologyFloor])
Complete plant topology (floors and rooms).
Built by merging data from the standard
floor_list_req/room_list_reqendpoints and the nested device list commands (nested_light_list_req,nested_openings_list_req,nested_thermo_list_req).- floors: list[TopologyFloor]
All floors in the plant, each containing its rooms.
- class aiocamedomotic.models.PlantUpdate(raw_data: dict[str, Any])
Marker update for
plant_update_ind.When this indication is received, all cached devices must be discarded and re-fetched from the server.
- property is_plant_update: bool
Always returns
True.
- class aiocamedomotic.models.Relay(raw_data: dict[str, Any], auth: Auth)
Relay entity in the CameDomotic API.
Represents a generic relay (simple on/off switch) in the CAME Domotic system. Provides properties to read relay attributes and a method to control relay state.
- Raises:
ValueError – If
nameoract_idkeys are missing from the input data or the auth argument is not an instance of the expectedAuthclass.
- property act_id: int
ID of the relay.
- async async_set_status(status: RelayStatus) None
Control the relay.
- Parameters:
status (RelayStatus) – Desired relay status (ON or OFF).
- Raises:
ValueError – If
statusisRelayStatus.UNKNOWN.CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property floor_ind: int
Floor index of the relay.
- property name: str
Name of the relay.
- property room_ind: int
Room index of the relay.
- property status: RelayStatus
Status of the relay. Allowed values are OFF (0) and ON (1).
- class aiocamedomotic.models.RelayStatus(*values)
Status of a relay.
- Allowed values are:
OFF (0)
ON (1)
UNKNOWN (-1): Returned when the server reports an unrecognised status value. Not a valid target for
async_set_status.
- class aiocamedomotic.models.RelayUpdate(raw_data: dict[str, Any])
Typed update for a relay device (
relay_status_ind/relay_update_ind).- property act_id: int
Relay actuator ID.
- property floor_ind: int
Floor index.
- property room_ind: int
Room index.
- property status: RelayStatus
Relay status (OFF, ON).
- class aiocamedomotic.models.Room(raw_data: dict[str, Any])
Room entity in the CAME Domotic API.
Represents a room in the building structure with its identifier, name, and the floor it belongs to.
- property floor_id: int
ID of the floor this room belongs to.
- property id: int
ID of the room.
- property name: str
Name of the room.
- class aiocamedomotic.models.Scenario(raw_data: dict[str, Any], auth: Auth)
Scenario entity in the CameDomotic API.
Represents a pre-configured automation scenario that can be activated to control multiple devices at once.
- Raises:
ValueError – If name or id keys are missing from the input data or the auth argument is not an instance of the expected Auth class.
- async async_activate() None
Activate the scenario.
Sends the scenario activation command to the CAME Domotic server.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property icon_id: int
Icon ID associated with the scenario.
- property id: int
ID of the scenario.
- property name: str
Name of the scenario.
- property scenario_status: ScenarioStatus
OFF (0), TRIGGERED (1), or ACTIVE (2).
- Type:
Scenario-specific status
- property status: int
General status of the scenario.
- property user_defined: int
Whether the scenario is user-defined (1) or system-defined (0).
- class aiocamedomotic.models.ScenarioStatus(*values)
Status of a scenario.
- Allowed values are:
OFF (0): scenario is not active
TRIGGERED (1): scenario has just been activated and is executing
ACTIVE (2): scenario is currently in effect
- class aiocamedomotic.models.ScenarioUpdate(raw_data: dict[str, Any])
Typed update for a scenario (
scenario_status_ind/scenario_activation_ind/scenario_user_ind).- property device_id: int | None
For scenarios the primary ID is
id.
- property id: int
Scenario ID.
- property scenario_status: ScenarioStatus
Scenario status (OFF, TRIGGERED, ACTIVE).
- class aiocamedomotic.models.ServerFeature(*values)
Server feature identifiers reported by the CAME Domotic server.
Each member corresponds to a functional block (e.g. lights, openings). Because
ServerFeatureis aStrEnum, each member is its string value (e.g.ServerFeature.LIGHTS == "lights"isTrue), so members can be compared directly against the plain strings infeatures.- Values:
LIGHTS(“lights”) — on/off, dimmable and RGB lightsOPENINGS(“openings”) — shutters, awnings, and motorized coversRELAYS(“relays”) — simple on/off relay switchesTHERMOREGULATION(“thermoregulation”) — climate zones and analog sensorsSCENARIOS(“scenarios”) — pre-configured automation sequencesDIGITALIN(“digitalin”) — read-only binary sensors (buttons, contacts)ANALOGIN(“analogin”) — read-only standalone analog sensorsENERGY(“energy”) — energy metersLOADSCTRL(“loadsctrl”) — load control / managementTIMERS(“timers”) — time-based scheduling entities
- class aiocamedomotic.models.ServerInfo(keycode: str, serial: str, features: list[str], swver: str | None = None, type: str | None = None, board: str | None = None)
Server information of a CAME Domotic server.
- board: str | None = None
Board type of the server.
- features: list[str]
List of feature strings reported by the server.
Each feature corresponds to a functional block (e.g. lights, openings). Values are plain strings whose known values are defined in
ServerFeature. BecauseServerFeatureis aStrEnum, you can compare entries against enum members directly (e.g.ServerFeature.LIGHTS in server_info.features).The return type is kept as
list[str]so that features introduced by newer firmware versions are preserved even if the library does not yet define them inServerFeature.
- keycode: str
Keycode of the server (CAME proprietary unique identifier).
- serial: str
Serial number of the server.
- swver: str | None = None
Software version of the server.
- type: str | None = None
Type of the server.
- class aiocamedomotic.models.TerminalGroup(raw_data: dict[str, Any])
Terminal group in the CAME Domotic API.
Represents a user permission group (e.g.
"ETI/Domo"). Groups are assigned to users at creation time viaCameDomoticAPI.async_add_user(). UseCameDomoticAPI.async_get_terminal_groups()to retrieve the available group names before creating a user.- property id: int
Numeric ID of the group.
- property name: str
Name of the group (e.g.
"ETI/Domo").
- class aiocamedomotic.models.ThermoZone(raw_data: dict[str, Any], auth: Auth)
Thermoregulation zone entity in the CameDomotic API.
Represents a single thermoregulation zone with its current state, including temperature readings, setpoint, operating mode, and season.
Temperature values from the API are integers multiplied by 10 (e.g., 215 = 21.5 degrees C). Properties in this class return converted float values in degrees.
- Raises:
ValueError – If
nameoract_idkeys are missing from the input data, or the auth argument is not an instance of the expectedAuthclass.
- property act_id: int
ID of the thermoregulation zone.
- property antifreeze: float | None
Antifreeze temperature in degrees Celsius, or None if not set.
- async async_set_config(mode: ThermoZoneMode, set_point: float, *, fan_speed: ThermoZoneFanSpeed | None = None) None
Configure the thermoregulation zone.
Note
The season cannot be changed via this method. Use
CameDomoticAPI.async_set_thermo_season()to change the season at the plant level.- Parameters:
mode – Operating mode to set.
set_point – Target temperature in degrees Celsius.
fan_speed – Fan speed setting (optional, requires extended info).
- Raises:
ValueError – If
modeorfan_speedisUNKNOWN.CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_set_fan_speed(fan_speed: ThermoZoneFanSpeed) None
Set the fan speed, keeping the current mode and temperature.
- Parameters:
fan_speed – Fan speed to set.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_set_mode(mode: ThermoZoneMode) None
Set the operating mode, keeping the current target temperature.
- Parameters:
mode – Operating mode to set.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_set_temperature(temperature: float) None
Set the target temperature, keeping the current operating mode.
Warning
This method only has an effect when the zone is in
ThermoZoneMode.MANUALmode. When the zone is in any other mode (e.g.AUTO,JOLLY), the server accepts the request without error but silently discards the new setpoint. Useasync_set_config()withmode=ThermoZoneMode.MANUALto guarantee that the setpoint is applied.- Parameters:
temperature – Target temperature in degrees Celsius.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property dehumidifier_enabled: bool
Whether the dehumidifier is enabled for this zone.
- property dehumidifier_setpoint: float | None
Dehumidifier humidity setpoint in percent, or None if not set.
- property fan_speed: ThermoZoneFanSpeed
Fan speed setting for the thermoregulation zone.
Returns
ThermoZoneFanSpeed.UNKNOWNfor unrecognized values.
- property floor_ind: int
Floor index of the thermoregulation zone.
- property leaf: bool
Whether this is an actual zone (leaf node) in the hierarchy.
- property mode: ThermoZoneMode
Operating mode of the thermoregulation zone.
Returns
ThermoZoneMode.UNKNOWNfor unrecognized mode values.
- property name: str
Name of the thermoregulation zone.
- property room_ind: int
Room index of the thermoregulation zone.
- property season: ThermoZoneSeason
Season setting for the thermoregulation zone.
Returns
ThermoZoneSeason.UNKNOWNfor unrecognized season values.
- property set_point: float
Target temperature in degrees Celsius.
- property status: ThermoZoneStatus
Status of the thermoregulation zone (OFF or ON).
- property t1: float | None
Temperature sensor 1 reading in degrees Celsius, or None.
- property t2: float | None
Temperature sensor 2 reading in degrees Celsius, or None.
- property t3: float | None
Temperature sensor 3 reading in degrees Celsius, or None.
- property temperature: float
Current temperature in degrees Celsius.
Handles both
temp(from list responses) andtemp_dec(from status indications) field names.
- class aiocamedomotic.models.ThermoZoneFanSpeed(*values)
Fan speed setting for a thermoregulation zone.
- Allowed values are:
OFF (0)
SLOW (1)
MEDIUM (2)
FAST (3)
AUTO (4)
- class aiocamedomotic.models.ThermoZoneMode(*values)
Operating mode of a thermoregulation zone.
- Allowed values are:
OFF (0)
MANUAL (1)
AUTO (2)
JOLLY (3)
- class aiocamedomotic.models.ThermoZoneSeason(*values)
Season setting for a thermoregulation zone.
- Allowed values are:
PLANT_OFF (“plant_off”)
WINTER (“winter”)
SUMMER (“summer”)
- class aiocamedomotic.models.ThermoZoneStatus(*values)
Status of a thermoregulation zone.
- Allowed values are:
OFF (0)
ON (1)
- class aiocamedomotic.models.ThermoZoneUpdate(raw_data: dict[str, Any])
Typed update for a thermostat zone (
thermo_zone_info_ind/thermo_update_ind).- property act_id: int
Zone actuator ID.
- property dehumidifier_enabled: bool
Whether the dehumidifier is enabled.
- property dehumidifier_setpoint: float | None
Dehumidifier humidity setpoint in percent, or None if not present.
- property fan_speed: ThermoZoneFanSpeed
Fan speed setting (OFF, SLOW, MEDIUM, FAST, AUTO).
- property floor_ind: int
Floor index.
- property mode: ThermoZoneMode
Operating mode (OFF, MANUAL, AUTO, JOLLY).
- property room_ind: int
Room index.
- property season: ThermoZoneSeason
Season setting (PLANT_OFF, WINTER, SUMMER).
- property set_point: float
Target temperature in degrees Celsius (converted from
set_point).
- property status: ThermoZoneStatus
Zone status (OFF, ON).
- property t1: float | None
Temperature sensor 1 reading in degrees Celsius.
- property t2: float | None
Temperature sensor 2 reading in degrees Celsius.
- property t3: float | None
Temperature sensor 3 reading in degrees Celsius.
- property temperature: float
Current temperature in degrees Celsius (converted from
temp_dec).
- class aiocamedomotic.models.Timer(raw_data: dict[str, Any], auth: Auth)
Timer entity in the CameDomotic API.
Represents a scheduling timer with time-based activation windows. Supports enabling/disabling, day-of-week toggling, and timetable configuration via the CAME API.
The
daysfield is a 7-bit bitmask (bit 0 = Monday, …, bit 6 = Sunday). For example,days=85(binary1010101) means Monday, Wednesday, Friday, and Sunday.- Raises:
ValueError – If
nameoridkeys are missing from the input data or the auth argument is not an instance ofAuth.
- property active_days: list[str]
Human-readable names of the days the timer is active on.
- async async_disable() None
Disable the timer.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_disable_day(day: int) None
Disable the timer for a specific day of the week.
- Parameters:
day – Day index (0=Monday, 1=Tuesday, …, 6=Sunday).
- Raises:
ValueError – If day is not in range 0-6.
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_enable() None
Enable the timer.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_enable_day(day: int) None
Enable the timer for a specific day of the week.
- Parameters:
day – Day index (0=Monday, 1=Tuesday, …, 6=Sunday).
- Raises:
ValueError – If day is not in range 0-6.
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_set_timetable(slots: list[tuple[int, int, int] | None]) None
Set the timer’s timetable.
Sends the complete timetable to the server. The list must contain exactly 4 entries — one per available slot. Use
Nonefor empty slots.- Parameters:
slots – List of 4 entries. Each entry is either a
(hour, min, sec)tuple for an active slot, orNonefor an empty slot.- Raises:
ValueError – If slots does not contain exactly 4 entries.
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- property bars: int
Number of timetable bars reported by the server.
- property days: int
Bitmask of active days (bit 0 = Monday, …, bit 6 = Sunday).
- property enabled: bool
Whether the timer is globally enabled.
- property id: int
Unique timer identifier.
- is_active_on_day(day_index: int) bool
Check whether the timer is active on a specific day.
- Parameters:
day_index – Day index (0=Monday, 1=Tuesday, …, 6=Sunday).
- Returns:
Trueif the timer is scheduled for this day,Falseotherwise (including when day_index is out of range).
- property name: str
Display name of the timer.
- property timetable: list[TimerTimeSlot]
Scheduled time slots.
Malformed entries are skipped with a warning.
- class aiocamedomotic.models.TimerTimeSlot(raw_data: dict[str, Any])
A single time window within a timer’s timetable.
On some firmware versions, the
stopandactivefields may be absent. Properties returnNonefor missing optional fields.- Parameters:
raw_data – Dictionary from a single timetable array entry.
- Raises:
ValueError – If
indexorstartkeys are missing.
- property active: bool | None
Whether this time window is active, or
Noneif absent.
- property index: int
Zero-based slot position in the timetable (0-3).
- property start_hour: int
Start time hour (0-23). Defaults to 0 if missing.
- property start_min: int
Start time minute (0-59). Defaults to 0 if missing.
- property start_sec: int
Start time second (0-59). Defaults to 0 if missing.
- property stop_hour: int | None
Stop time hour, or
Noneif thestopfield is absent.
- property stop_min: int | None
Stop time minute, or
Noneif thestopfield is absent.
- property stop_sec: int | None
Stop time second, or
Noneif thestopfield is absent.
- class aiocamedomotic.models.TimerUpdate(raw_data: dict[str, Any])
Typed update for a timer (
timer_info_ind/timer_update_ind).- property bars: int
Number of timetable bars reported by the server.
- property days: int
Days bitmask (bit 0 = Monday, …, bit 6 = Sunday).
- property device_id: int | None
For timers the primary ID is
id.
- property enabled: bool
Whether the timer is enabled.
- property id: int
Timer ID.
- property timetable: list[dict[str, Any]]
Raw timetable entries from the update.
- class aiocamedomotic.models.TopologyFloor(id: int, name: str, rooms: list[TopologyRoom])
A floor in the plant topology.
Contains the list of rooms discovered on this floor.
- id: int
Numeric identifier of the floor (
floor_ind).
- name: str
Human-readable name of the floor.
- rooms: list[TopologyRoom]
Rooms belonging to this floor.
- class aiocamedomotic.models.TopologyRoom(id: int, name: str)
A room in the plant topology.
Lightweight representation used by
PlantTopologyto describe the building structure independently of any specific device type.- id: int
Numeric identifier of the room (
room_ind).
- name: str
Human-readable name of the room.
- class aiocamedomotic.models.UpdateIndicator(*values)
Known status-update indication cmd_names from the CAME API.
These identify the type of state change in a
status_update_respresult item. Some indicators have two variants: one observed in real API traffic and one documented in API_reference.md. Both are mapped for firmware compatibility.- Values:
LIGHT (“light_switch_ind”)
OPENING (“opening_move_ind”)
RELAY (“relay_status_ind”)
THERMOSTAT (“thermo_zone_info_ind”)
DIGITAL_INPUT (“digitalin_status_ind”)
ANALOG_INPUT (“analogin_status_ind”)
SCENARIO_STATUS (“scenario_status_ind”)
SCENARIO_ACTIVATION (“scenario_activation_ind”)
ENERGY_METER (“meter_instant_power_ind”)
LOADSCTRL_METER (“loadsctrl_meter_ind”)
LOADSCTRL_RELAY (“loadsctrl_relay_ind”)
PLANT (“plant_update_ind”)
LIGHT_LEGACY (“light_update_ind”)
OPENING_LEGACY (“opening_update_ind”)
THERMOSTAT_LEGACY (“thermo_update_ind”)
RELAY_LEGACY (“relay_update_ind”)
DIGITAL_INPUT_LEGACY (“digitalin_update_ind”)
ANALOG_INPUT_LEGACY (“analogin_update_ind”)
TIMER (“timer_info_ind”)
SCENARIO_USER_LEGACY (“scenario_user_ind”)
TIMER_LEGACY (“timer_update_ind”)
- class aiocamedomotic.models.UpdateList(updates: UserList[dict[str, Any]] | None = None)
Chronological list of status updates from the CameDomotic API.
Extends
UserListto maintain backward compatibility: iterating yields rawdictobjects. Additional methods provide typed access and filtering.- get_by_device_type(device_type: DeviceType) list[dict[str, Any]]
Return raw update dicts filtered to the given device type.
- Parameters:
device_type – The
DeviceTypeto filter by.- Returns:
A list of raw update dicts whose
cmd_namemaps to device_type.
- get_typed_by_device_type(device_type: DeviceType) list[DeviceUpdate]
Parse and filter updates by device type.
- Parameters:
device_type – The
DeviceTypeto filter by.- Returns:
Typed
DeviceUpdateinstances whosedevice_typematches device_type.
- get_typed_updates() list[DeviceUpdate]
Parse all updates into typed
DeviceUpdateobjects.- Returns:
A list of
DeviceUpdatesubclass instances, one per raw update dict.
- property has_plant_update: bool
Whether any update in this list is a
plant_update_ind.When
True, the consumer should discard all cached devices and re-fetch them from the server.
- class aiocamedomotic.models.User(raw_data: dict[str, Any], auth: Auth)
User in the CAME Domotic API.
- Raises:
ValueError – If name key is missing from the input data the auth argument is not an instance of the expected Auth class.
- async async_change_password(current_password: str, new_password: str) None
Change the password of this user on the CAME Domotic server.
- Parameters:
current_password (str) – The user’s current password.
new_password (str) – The desired new password.
Note
Changing the password does not invalidate existing active sessions for that user — they remain valid until they expire. The new password will be required at the next login.
If the changed user is the currently authenticated user, the stored credentials are updated automatically in the active session — no additional action is required.
- Raises:
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error or the password change is rejected (
sl_user_pwd_change_ack_reasonis non-zero).
- async async_delete() None
Delete this user from the CAME Domotic server.
Sends a delete-user request to the server for the user identified by this object’s
nameproperty.- Raises:
ValueError – If this user is the currently authenticated user.
CameDomoticAuthError – If the authentication fails.
CameDomoticServerError – If the server returns an error.
- async async_set_as_current_user(password: str) None
Set the user as the current user in the CAME Domotic API session.
- Parameters:
password (str) – Password of the user.
- Raises:
CameDomoticAuthError – If the authentication fails.
Note
This method logs out the current user and logs in with the new user. If login with the new credentials fails, a
CameDomoticAuthErroris raised and the previous credentials are restored so the API client remains connected as the original user.
- property name: str
Name of the user.
- aiocamedomotic.models.get_update_device_type(update: dict[str, Any]) DeviceType | None
Return the device type for a status update dict, or None if unknown.
- Parameters:
update – A single update dict from the
status_update_respresult array. Must contain acmd_namekey.- Returns:
The corresponding
DeviceType, orNoneif thecmd_nameis not recognized.
- aiocamedomotic.models.parse_update(raw: dict[str, Any]) DeviceUpdate
Parse a raw update dict into the appropriate typed
DeviceUpdatesubclass.- Parameters:
raw – A single update dict from the
status_update_respresult array.- Returns:
A typed
DeviceUpdatesubclass instance. If thecmd_nameis not recognized, a genericDeviceUpdateis returned so that the consumer can still accessraw_data.
Constants
Constants for the CAME Domotic API.
- class aiocamedomotic.const.AckErrorCode(*values)
ACK error codes returned by the CAME Domotic server.
Each member carries a human-readable
messageand anis_authflag indicating whether the error is authentication-related.Because
AckErrorCodeis anIntEnum, members compare equal to their integer value (e.g.AckErrorCode.INVALID_USER == 1).Values:
INVALID_USER(1): Invalid user. [auth]TOO_MANY_SESSIONS(3): Too many sessions during login. [auth]JSON_SYNTAX_ERROR(4): Error occurred in JSON Syntax.NO_SESSION_COMMAND_TAG(5): No session layer command tag.UNRECOGNIZED_SESSION_COMMAND(6): Unrecognized session layer command.NO_CLIENT_ID(7): No client ID in request.WRONG_CLIENT_ID(8): Wrong client ID in request.WRONG_APPLICATION_COMMAND(9): Wrong application command.NO_REPLY(10): No reply to application command, maybe service down.WRONG_APPLICATION_DATA(11): Wrong application data.
- property is_auth: bool
Whether this error code indicates an authentication failure.
- property message: str
Human-readable error message for this ACK code.
- class aiocamedomotic.const.DeviceType(*values)
Device type IDs used by the CAME ETI/Domo system.
Each device in the CAME Domotic system is associated with one of these type identifiers. Not all device types are currently supported by this library.
- Values:
ANALOG_INPUT (-3)
ENERGY_SENSOR (-2)
ANALOG_SENSOR (-1)
LIGHT (0)
OPENING (1)
THERMOSTAT (2)
PAGE (3)
SCENARIO (4)
CAMERA (5)
SECURITY_PANEL (6)
SECURITY_AREA (7)
SECURITY_SCENARIO (8)
SECURITY_INPUT (9)
SECURITY_OUTPUT (10)
GENERIC_RELAY (11)
GENERIC_TEXT (12)
SOUND_ZONE (13)
DIGITAL_INPUT (14)
TIMER (15)
- class aiocamedomotic.const.UpdateIndicator(*values)
Known status-update indication cmd_names from the CAME API.
These identify the type of state change in a
status_update_respresult item. Some indicators have two variants: one observed in real API traffic and one documented in API_reference.md. Both are mapped for firmware compatibility.- Values:
LIGHT (“light_switch_ind”)
OPENING (“opening_move_ind”)
RELAY (“relay_status_ind”)
THERMOSTAT (“thermo_zone_info_ind”)
DIGITAL_INPUT (“digitalin_status_ind”)
ANALOG_INPUT (“analogin_status_ind”)
SCENARIO_STATUS (“scenario_status_ind”)
SCENARIO_ACTIVATION (“scenario_activation_ind”)
ENERGY_METER (“meter_instant_power_ind”)
LOADSCTRL_METER (“loadsctrl_meter_ind”)
LOADSCTRL_RELAY (“loadsctrl_relay_ind”)
PLANT (“plant_update_ind”)
LIGHT_LEGACY (“light_update_ind”)
OPENING_LEGACY (“opening_update_ind”)
THERMOSTAT_LEGACY (“thermo_update_ind”)
RELAY_LEGACY (“relay_update_ind”)
DIGITAL_INPUT_LEGACY (“digitalin_update_ind”)
ANALOG_INPUT_LEGACY (“analogin_update_ind”)
TIMER (“timer_info_ind”)
SCENARIO_USER_LEGACY (“scenario_user_ind”)
TIMER_LEGACY (“timer_update_ind”)
Utilities
- async aiocamedomotic.utils.async_is_came_endpoint(host: str, websession: ClientSession | None = None, timeout: int = 10) bool
Check whether a host exposes the CAME Domotic API endpoint.
Performs a credential-free HTTP GET on the CAME API URL to determine if the host is a CAME ETI/Domo server. Suitable for network autodiscovery alongside
CAME_MAC_PREFIXES.- Parameters:
host – IP address or hostname of the device to check (e.g.,
"192.168.1.100","came-server.local").websession – Optional
aiohttp.ClientSessionto reuse. When provided, the caller retains ownership and the session will not be closed by this function. When omitted, a temporary session is created and closed automatically.timeout – HTTP request timeout in seconds (default: 10).
- Returns:
Trueif the host responds with HTTP 200 on the CAME API endpoint,Falseotherwise (network error, timeout, wrong status, etc.).
Anonymization utilities for HTTP traffic logging.
This module provides automatic redaction of sensitive fields in CAME Domotic API request and response payloads, enabling safe sharing of traffic logs for debugging purposes.
The traffic logger (aiocamedomotic.traffic) is a child of the main
library logger and can be configured independently:
import logging
logging.getLogger("aiocamedomotic.traffic").setLevel(logging.DEBUG)
- aiocamedomotic.anonymizer.TRAFFIC_LOGGER = <Logger aiocamedomotic.traffic (WARNING)>
Dedicated logger for HTTP traffic. Enable at DEBUG level to see anonymized request/response payloads with elapsed times.
Errors
This module contains the exceptions that can be raised by the CAME Domotic API.
Exception hierarchy and suggested Home Assistant mapping:
CameDomoticServerNotFoundError→ConfigEntryNotReady(host unreachable, transient)CameDomoticAuthError→ConfigEntryAuthFailed(bad credentials, permanent — triggers reauth flow)CameDomoticServerTimeoutError→ConfigEntryNotReady(request timeout, transient)CameDomoticServerError(other ACK codes) → log and re-raise
- exception aiocamedomotic.errors.CameDomoticAuthError
Raised when there is an authentication error with the remote server.
- exception aiocamedomotic.errors.CameDomoticError
Base exception class for the CAME Domotic package.
- exception aiocamedomotic.errors.CameDomoticServerError
Raised if an error occurs while interacting with the remote CAME Domotic server.
- static create_ack_error(ack_code: int) CameDomoticError
Create appropriate exception based on ACK error code.
- Parameters:
ack_code (int) – The ACK error code from the server.
- Returns:
Appropriate exception instance based on error code.
- Return type:
- static format_ack_error(ack_code: int) str
Formats the ack code in a human-readable format.
- Parameters:
ack_code (int) – The ACK error code from the server.
- Returns:
The formatted error message.
- Return type:
str
- exception aiocamedomotic.errors.CameDomoticServerNotFoundError
Raised when the specified host is not available.
- exception aiocamedomotic.errors.CameDomoticServerTimeoutError
Raised when a request to the CAME Domotic server times out.
This exception indicates a transient failure. When using this library with Home Assistant, it should be mapped to
ConfigEntryNotReadyto allow the integration to retry with exponential backoff.See also the exception hierarchy mapping for Home Assistant integrations:
CameDomoticServerNotFoundError→ConfigEntryNotReady(host unreachable, transient)CameDomoticAuthError→ConfigEntryAuthFailed(bad credentials, permanent — triggers reauth flow)CameDomoticServerTimeoutError→ConfigEntryNotReady(request timeout, transient)CameDomoticServerError(other ACK codes) → log and re-raise
Auth module
This module manages the HTTP interaction with the CAME Domotic API.
Note
As a consumer of the CAME Domotic library, it’s quite unlikely that you
will need to use this class directly: you should use the CameDomoticAPI and the
CameEntity classes instead.
In case of special needs, consider requesting the implementation of the desired feature in the CAME Domotic library, or forking the library and implement the feature yourself.
- class aiocamedomotic.auth.Auth(websession: ClientSession, host: str, username: str, password: str, *, close_websession_on_disposal: bool = False)
Class to make authenticated requests to the CAME Domotic API server.
Security features:
Credential protection — username and password are encrypted in memory using Fernet symmetric encryption with a runtime-generated key. Credentials are explicitly cleared on disposal and as a safety net on garbage collection.
Note
This class is not meant to be used directly, but through the
CameDomoticAPIclass. To create an instance of this class, use the factory methodasync_create.- async classmethod async_create(websession: ClientSession, host: str, username: str, password: str, *, close_websession_on_disposal: bool = False, command_timeout: int = 30) Auth
Create an Auth instance.
- Parameters:
websession (ClientSession) – the aiohttp client session.
host (str) – the host of the CAME Domotic server.
username (str) – the username to use for the authentication.
password (str) – the password to use for the authentication.
close_websession_on_disposal (bool, optional) – whether to close the websession when disposing the Auth instance (default: False).
command_timeout (int, optional) – the default timeout in seconds for commands sent to the server (default: 30s).
- Raises:
CameDomoticServerNotFoundError – if the host doesn’t respond to an HTTP request or doesn’t expose the CAME Domotic API endopoint.
- Returns:
the Auth instance.
- Return type:
Note
The session is not logged in until the first request is made.
- async async_dispose() None
Dispose the Auth instance, eventually logging out if needed.
This method also explicitly clears sensitive attributes (username, password, and cipher_suite) to enhance security when the Auth instance is disposed.
- async async_get_valid_client_id() str
Get a valid client ID, eventually logging in if needed.
- Returns:
the client ID.
- Return type:
str
- Raises:
CameDomoticAuthError – if an error occurs during the login.
- async async_keep_alive() None
Keep the session alive, eventually logging in again if needed.
- Raises:
CameDomoticServerError – if an error occurs during the keep-alive request.
CameDomoticAuthError – if an error occurs during the login.
- async async_login() None
Login to the CAME Domotic server.
- Raises:
CameDomoticAuthError – if an error occurs during the login.
- async async_logout() None
Logout from the CAME Domotic server.
- Raises:
CameDomoticServerError – if an error occurs during the logout.
- async static async_raise_for_status_and_ack(response: ClientResponse) None
Check the response status and raise an error if necessary.
- Parameters:
response (ClientResponse) – the response.
- Raises:
CameDomoticServerError – if there is an error interacting with the remote CAME Domotic server.
CameDomoticAuthError – if there is an authentication error with the remote CAME Domotic server.
- async async_send_command(command: dict[str, Any], *, response_command: str | None = None, timeout: int | None = None, skip_ack_check: bool = False, command_type: str = 'sl_data_req', additional_payload: dict[str, Any] | None = None, _caller_holds_lock: bool = False) dict[str, Any]
Send a command to the CAME Domotic server.
- Parameters:
command (dict) – the command to send.
response_command (str, optional) – expected response command name to validate against the server response (default: None).
timeout (int | None, optional) – the timeout in seconds. If None, uses the instance-level
command_timeout(default: 30s).skip_ack_check (bool, optional) – whether to skip the ACK check (default: False).
command_type (str, optional) – the command type to send (default: “sl_data_req”).
additional_payload (dict, optional) – additional key-value pairs to include in the request payload (default: None).
_caller_holds_lock (bool, optional) – when True, the caller already holds
self._lockand has validated the session, so this method usesself.client_iddirectly instead of callingasync_get_valid_client_id()(which would deadlock). For internal use only (default: False).
- Returns:
the JSON response from the server.
- Return type:
dict
- Raises:
CameDomoticServerError – if an error occurs during the command.
CameDomoticAuthError – if there is an authentication error with the remote CAME Domotic server.
- async async_validate_host(timeout: int = 10) None
Validate the host asynchronously using aiohttp.
- Parameters:
timeout (int, optional) – the timeout in seconds (default: 10s).
- Raises:
CameDomoticServerNotFoundError – if the host doesn’t respond to an HTTP request or doesn’t expose the CAME Domotic API endopoint.
- backup_auth_credentials() tuple[bytes | None, bytes | None, str, float, int, int]
Backup the current authentication credentials.
- static create_cypher_suite() Fernet
Create a cypher suite.
- property current_username: str | None
Return the decrypted username for the current session, or None.
- Returns:
The plaintext username, or
Noneif the cipher suite has not been initialised (e.g. afterasync_dispose).- Return type:
str | None
Note
Usernames are not secret — they appear in plaintext in all API payloads. This property is intended for internal comparisons (e.g. preventing deletion of the current user). Avoid logging its return value unnecessarily.
- get_endpoint_url() str
Get the CAME Domotic endpoint URL.
- Returns:
the endpoint URL.
- Return type:
str
- is_session_valid() bool
Check whether the session is still valid or not.
- restore_auth_credentials(backup_state: tuple[bytes | None, bytes | None, str, float, int, int]) None
Restore authentication credentials from a backup.
- Parameters:
backup_state (tuple) – Username and password.
- update_auth_credentials(username: str, password: str) None
Update the authentication credentials.
- Parameters:
username (str) – New username.
password (str) – New password.
- aiocamedomotic.auth.handle_came_domotic_errors(func: _F) _F
Decorator to handle CAME Domotic API errors.
The decorator catches the following exceptions: - aiohttp.ClientResponseError: for HTTP errors (4xx, 5xx) - aiohttp.ServerTimeoutError: for timeouts - aiohttp.ClientError: for other network-related errors - CameDomoticAuthError: for authentication errors - any other exception: for unforeseen errors
- Raises:
CameDomoticServerError – in case of any of the above errors.
CameDomoticAuthError – in case of authentication error.