e213941791
s/net_io_counters/network_info/g
2023-04-22 17:19:23 +02:00
977b55dea9
Merged network addresses into NetworkInterface
model.
2023-04-22 17:19:23 +02:00
ebe79ac29a
Refactored system schema dataclasses.
...
- `percent_field` should be declared on `platypush.schemas.dataclasses`
level, since it's not specific to the `system` plugin.
- Added a common `SystemBaseSchema` that takes care of calling
`_asdict()` if the object is passed as a `psutil` object instead of a
dict.
2023-04-22 17:19:23 +02:00
2d618188c8
Print the full exception stack trace if .status
fails.
2023-04-22 17:19:23 +02:00
b3a0896485
Converted NetworkConnection
schema/response.
2023-04-22 17:19:22 +02:00
d473b5d836
Make the recursive entity merger/column set logic more resilient against ObjectDeletedError
2023-04-22 10:40:30 +02:00
98a300c4b1
Added NetworkInterface
entities to system
plugin.
...
Plus, `platypush.schemas.system` has now been split into multiple
submodules to avoid a single-file mega-module with all the system
schemas definitions.
2023-04-21 00:45:15 +02:00
44b8fd4b34
Support for disk
entities in the system
integration.
2023-04-20 16:26:51 +02:00
6b03451386
Better responsive alignment for the collapse toggler.
2023-04-20 16:26:05 +02:00
e8c96ad35d
Added convertTime
utility function
2023-04-20 02:27:58 +02:00
153d03d43f
Moved CPU percentage on the level of the CPU entity instead of a child entity.
2023-04-19 01:48:05 +02:00
4ebfbf3851
Added memory stats entities.
2023-04-19 01:31:11 +02:00
0073239a40
Support for CPU load_average
entity.
2023-04-18 18:26:02 +02:00
1cee0459cf
Added CpuFrequency
entity to system
.
2023-04-18 01:49:36 +02:00
a5b0a524f6
Added CpuStats
entity to system
.
2023-04-18 01:19:06 +02:00
b4fbd3e915
Added percent
entity to cpu
.
2023-04-17 02:25:04 +02:00
711cc2b239
Removed (now unused) CpuTimesResponse
.
2023-04-17 02:25:03 +02:00
b9286f50b0
Added support for CpuTimes
as an entity of the system
plugin.
...
Also, there is now a single `Cpu` entity being exported, with a nested
hierarchy structured like:
```
cpu
-> cpu_info
-> cpu_times
-> idle
-> user
-> system
-> ...
-> cpu_load
-> ...
```
2023-04-17 02:25:03 +02:00
4842c1911b
Frontend entities should have a reference to allEntities
.
...
There are probably more optimal ways of achieving this other than
passing a reference to the full list of entities to each of the
entities, such as running a BFS to recursively expand all the entities
within the child hierarchy of an entity.
This is needed because the entity needs to know which entities aren't
direct children, but are two or more layers down in the hierarchy, so
they should be passed to their own child entities.
2023-04-17 02:25:03 +02:00
6e65783feb
Added schemas for CpuTimes
.
2023-04-17 02:25:03 +02:00
e810025a6d
Added Cpu
and CpuTimes
entities.
2023-04-17 02:25:03 +02:00
65481dc6b4
Added PercentSensor
entity type.
2023-04-17 02:25:02 +02:00
e7f64843a5
Added include_children
parameter to _merge_columns
.
...
We need to recursively merge the columns of children entities if a child
entity isn't a leaf node.
2023-04-17 02:25:02 +02:00
b43017ef01
Refactoring the system
plugin to support entities.
2023-04-17 02:25:02 +02:00
3e3c48d779
Defined new entity and schema for CpuInfo.
2023-04-17 02:25:02 +02:00
186a21f715
Added CpuInfo entity frontend components.
2023-04-17 02:25:01 +02:00
74aeca5c34
Trigger a sensor event only if abs(old_data - new_data) > tolerance
...
Not if abs(old_data - new_data) >= tolerance, otherwise events will
always be triggered when tolerance=0, even if the data hasn't changed.
2023-04-17 02:25:01 +02:00
4c19535612
A more resilient logic on entity copy/serialization to prevent ObjectDeletedError
2023-04-13 17:16:21 +02:00
a499b7bc2f
Deprecated poll_seconds
in light.hue
.
...
For sake of naming consistency with other plugins, we should use
`poll_interval` instead.
2023-04-03 01:36:12 +02:00
10955dad72
Fixed some documentation glitches in switchbot
.
2023-04-03 01:36:12 +02:00
6e5f746dbe
Removed deprecated gpio.sensor
base plugin.
...
Now all the plugins that used to implement it have been moved to
`SensorPlugin`.
2023-04-03 01:36:12 +02:00
8852cb8db4
Fixed new class name for sensor.mcp3008
plugin.
2023-04-03 01:36:12 +02:00
d5ddc0c65e
Migrated arduino
integration to the new SensorPlugin
API.
2023-04-03 01:36:12 +02:00
cf16076bce
Added icons for new entity sensor sources.
2023-04-03 01:36:11 +02:00
ac2ec58f89
Migrated mcp3008
integration to the new SensorPlugin
API.
2023-04-03 01:36:11 +02:00
45e5ca47e7
Fallback for sensor._has_changes
2023-04-02 15:38:49 +02:00
962c55937d
Migrated sensor.distance
integration.
...
Remove `backend.sensor.distance` and `gpio.sensor.distance`. They are
now replaced by the `sensor.hcsr04` integration, which is compatible
with the new `SensorPlugin` API.
2023-04-02 14:20:12 +02:00
92578a17c9
Added small docstring portion
2023-04-02 13:55:00 +02:00
beff88986a
Migrated dht
integration.
...
Removed `backend.sensor.dht` and `gpio.sensor.dht`. They have been
merged into the new `sensor.dht` integration, which supports the new
`SensorPlugin` API.
2023-04-02 13:38:53 +02:00
8f604445a2
Migrated old sensor.accelerometer
integration.
...
Removed `backend.sensor.accelerometer` and `gpio.sensor.accelerometer`.
The logic has now been merged in the new `sensor.lis3dh` integration,
which is compatible with the new `SensorPlugin` API.
2023-04-02 13:22:28 +02:00
44cf25271c
Migrated pmw3901
integration.
...
Removed legacy `backend.sensor.motion.pmw3901` and
`gpio.sensor.motion.pmw3901`. They have been merged in the new
`sensor.pmw3901` integration, compatible with the new `SensorPlugin`
API.
2023-04-02 12:36:08 +02:00
fcdda40c4a
Update the _last_measurement
only if some events were processed from the new data.
2023-04-02 12:09:45 +02:00
88784985e1
Should be abs(old_data - new_data) >= tolerance
.
...
Not `abs(old_data - new_data) > tolerance`.
2023-04-02 12:08:40 +02:00
a3f4b21478
Updated dist files
2023-04-02 03:24:11 +02:00
e6e5dec088
Updated dist files
2023-04-02 02:56:09 +02:00
7697c1c6ad
Migrated envirophat
to the new SensorPlugin
API.
...
Removed `backend.sensor.envirophat` and `gpio.sensor.envirophat` plugin.
They have now been merged into the new `sensor.envirophat` plugin.
2023-04-02 02:49:08 +02:00
3cd42c9e45
Entity
should use Message.Encoder
as a JSON serializer.
2023-04-02 02:44:19 +02:00
31f411868c
Message.Encoder
should serialize binary data to 0x
-led hex strings.
2023-04-02 02:43:06 +02:00
9e5ad0e0b1
Entity.to_dict
now takes into account columns mapped to properties.
...
No more `_value` in the JSON output instead of the `value` property.
If a column is marked as private, and there's an associated property
mapped to its public name, then we should use and serialize that value.
2023-04-02 02:22:40 +02:00
8d4aa310f4
Support for values passed in dict format to ThreeAxisSensor
2023-04-02 02:02:08 +02:00
5a6f4bcf57
Added 3-axis sensor, accelerometer and magnetometer entities
2023-04-02 01:13:22 +02:00
d964167631
s/TimeDurationSensor/TimeDuration/g
2023-04-02 00:57:48 +02:00
839c6108a0
Added sensor.*
icon classes
2023-04-02 00:40:50 +02:00
429893ddbf
Updated dist files
2023-04-01 23:58:28 +02:00
f24d0773d1
No need for sensor.vl53l1x.transform_entities
to call the parent.
2023-04-01 23:54:43 +02:00
99572f9731
Sanity check to prevent empty objects from being propagated to sensor.transform_entities
2023-04-01 23:41:28 +02:00
3f3726c50a
Fixed another occurrence of "Subscripted generics cannot be used" etc. error
2023-04-01 23:34:22 +02:00
e2e73d0fdb
Fix another Python < 3.10 subscripted generic issue.
2023-04-01 23:23:51 +02:00
c1d0f21ead
Migrated ltr559
integration to the new API.
...
Merged `backend.sensor.ltr559` and `gpio.sensor.ltr559` into the new
`sensor.ltr559` plugin, which extends the new `SensorPlugin` API.
2023-04-01 23:16:03 +02:00
8e0f88ea16
Don't swap the argument of SensorPlugin.publish_entities
with a list if not required
2023-04-01 23:06:37 +02:00
0047d85b9d
Dirty fix for "Subscripted generics cannot be used with class and instance checks" on Python < 3.10
2023-04-01 22:52:24 +02:00
98ec018292
Replaced NoneType
reference.
...
`types.NoneType` is not always available on all Python versions, so we
have to make our own type for it.
2023-04-01 22:42:13 +02:00
5dabfed365
Migrated sensor.bme280
to the new SensorPlugin
interface.
...
Removed the old `backend.sensor.bme280` and the old `gpio.sensor.bme280`
plugin. They have now been merged into the new `sensor.bme280` runnable
plugin, which extends the `SensorPlugin` API and supports entities.
2023-04-01 22:31:24 +02:00
6f237a1500
Support the deprecated poll_seconds
option on RunnablePlugin
2023-04-01 22:02:59 +02:00
c23e8867e2
Added enabled_sensors
to the sensor
plugin
2023-04-01 21:56:56 +02:00
7912a59ff8
vl53l1x
plugin migrated to the new SensorPlugin
interface.
2023-04-01 19:31:13 +02:00
6a5a5de03e
serial
plugin migrated to the new SensorPlugin
interface.
2023-04-01 19:29:56 +02:00
bf4db76830
Legacy sensor
backend replaced by an extended sensor
runnable plugin.
2023-04-01 19:24:35 +02:00
bf75eb73ac
Added an abstract base SensorDataEvent
for sensor events.
2023-03-31 22:51:35 +02:00
6a3ade3304
Added common.sensors
package.
...
The package contains the base types and constants shared across
sensor-based integrations.
2023-03-31 22:50:47 +02:00
42d468c895
get_lock
should raise a TimeoutError if lock.acquire
is False
2023-03-31 22:31:32 +02:00
7bdd877e49
Support the binary
flag both on serial.read
and serial.write
.
2023-03-31 14:31:45 +02:00
1efaff878e
Rewritten serial
plugin.
...
`backend.serial` has been removed and the polling logic merged into the
`serial` plugin.
The `serial` plugin now supports the new entity engine as well.
2023-03-31 14:31:45 +02:00
2a8a3f4394
Removed legacy sensor.distance.vl53l1x backend
2023-03-31 14:26:14 +02:00
a3e8c7c155
Rewritten vl53l1x integration as a runnable plugin with entity support
2023-03-31 14:25:05 +02:00
226034946f
Added distance_sensor
entity
2023-03-31 14:22:28 +02:00
6fb362a6fb
gpio.sensor.distance.vl53l1x -> sensor.distance.vl53l1x
2023-03-31 14:21:48 +02:00
e198f2a175
Replaced .title
in get_plugin
with .upper
on the first character.
...
`str.title` capitalizes any alphabetic letter after any non-alphabetic
letter. That's a problem for Platypush plugins' naming convention,
because plugins like `sensor.distance.vl53l1x` may be broken into
`sensor.distance.vl53.l1.x`.
2023-03-31 14:09:43 +02:00
c2f9ebf4ed
Updated dist files
2023-03-27 01:47:29 +02:00
2781eb1fb1
Merge branch 'master' into 29-generic-entities-support
2023-03-27 00:36:50 +02:00
7a368ebbb8
[ #240 ] Migrated clipboard
plugin from pyperclip
to pyclip
.
...
Closes : #240
2023-03-26 23:52:15 +02:00
bce2fdee25
Replaced deprecated asyncio.wait([])
with asyncio.gather(*[])
.
2023-03-26 23:15:53 +02:00
cf91ab90df
Increased default width of nav
on desktop+
2023-03-26 23:10:46 +02:00
c0251ef2f7
s/instance/instance_name/g
in LinodeInstanceStatusChanged
.
...
For sake of consistency - we also have `instance_id` and having the
instance name assigned to the `instance` attribute is quite ambiguous.
2023-03-26 22:58:20 +02:00
6d674fef21
Fixed small JSON syntax error in the docstring of ntfy.send_message
.
2023-03-26 22:53:42 +02:00
30124e7cef
Fixed docstring of Event.__init__
.
2023-03-26 22:53:11 +02:00
276aff757b
Removed circular dependency.
...
Workaround for the circular dependency between
`platypush.entities.bluetooth` and `platypush.plugins.bluetooth.model`.
Unentangling the circular dependency would require way too much work,
since the entity model provides several helpers and properties that
depend on the plugin's model.
The workaround in this commit is to simply push those imports down in
the methods that use them, so they won't be imported until those methods
are called, as well as removing some type annotations that depended on
those objects.
2023-03-26 15:30:57 +02:00
89bc54da22
Updated dist files
2023-03-26 12:30:46 +02:00
295758bb20
Added frontend components for cloud instances.
2023-03-26 12:27:17 +02:00
bc2730c841
Rewritten linode
integration.
...
- Support for cloud instances as native entities.
- Using Marshmallow dataclasses+schemas instead of custom `Response`
objects.
- Merge `linode` backend into `linode` plugin.
2023-03-26 11:23:33 +02:00
4b9c5a0203
Support for schema EnumField
.
2023-03-26 03:48:32 +02:00
026662f6b6
Added base schema for Marshmallow dataclasses.
2023-03-26 03:47:44 +02:00
7bbae55e44
platypush.entities._managers
-> platypush.entities.managers
.
...
It's better for entity managers to be stored in their own public
package, instead of cluttering too much the namespace of their parent
package.
2023-03-26 03:46:06 +02:00
89d85baa6d
Support for implicit serialization of Enum values in JSONAble.
2023-03-26 03:43:04 +02:00
a71017df33
Updated web app files
2023-03-24 16:45:55 +01:00
567e9d4e21
Removed legacy bluetooth
backends.
...
No replacements have been made for the OBEX backends (push and file
services). PyOBEX is too broken and unmaintained, and there are too many
poorly documented steps required to get an unprivileged user to run an
SDP service.
2023-03-24 16:41:30 +01:00
3c355352c5
Using the new StoppableThread
API.
2023-03-24 16:39:30 +01:00
5ebf4e912e
Added wait_stop
and shoud_stop
methods to StoppableThread
.
2023-03-24 16:05:18 +01:00
998793e94f
Added OBEX_FILE_TRANSFER
constant to directory
stub.
2023-03-24 15:41:20 +01:00
4b4db5b3c7
Added StoppableThread
common interface.
2023-03-24 15:40:16 +01:00
2f49ddf33a
Fallback logic that uses DBus to disconnect from a BT device.
...
This logic will be used if the connection wasn't opened by the current
process and therefore a call to DBus is required to terminate it.
2023-03-24 01:57:05 +01:00
913ef6f8cd
Refresh BluetoothDevice.reachable
when a device is found/lost.
2023-03-24 01:56:19 +01:00
d46d4e2300
Added support for Bluetooth devices blacklist.
...
Based on device address, name or manufacturer.
2023-03-24 01:52:39 +01:00
0cebcf4f9b
switchbot.bluetooth
integration migrated to a bluetooth
plugin.
2023-03-23 17:46:54 +01:00
4fac110bb8
Added bluetooth.set
method, whose execution is delegated to the plugins.
2023-03-23 17:45:02 +01:00
cd219f44c4
Pass the list of plugins when creating Bluetooth managers.
2023-03-23 17:42:16 +01:00
43289a3b55
Scan always at least for 10 seconds before failing on get_device
.
2023-03-23 17:41:37 +01:00
6267943786
Wrap BleakError
exceptions into AssertionError
.
2023-03-23 17:40:30 +01:00
d6805a8b18
Added support for custom Bluetooth device plugins.
2023-03-23 17:10:37 +01:00
af125347d6
If no matching services are found when connecting to a device, default to BLEManager.
...
GATT characteristics are not necessarily exposed as services.
2023-03-23 13:00:26 +01:00
d1cd6dd2af
get_plugin with reload=True should stop the existing plugin if it's running
2023-03-23 01:11:54 +01:00
a2a5fce6cb
Added Apple Continuity
to the list of blacklisted manufacturers/models
2023-03-22 22:55:19 +01:00
e71c312133
Always read an entity's parent through get_parent when climbing up.
...
This should avoid the risk of `DetachedInstanceError` by retrieving the
object into the session if it's not available.
2023-03-22 22:41:09 +01:00
5c23d3aa87
metadata and rssi fields on BLEDevice have been deprecated.
...
Changed the BLE beacon parsing logic to read those fields from
`AdvertisementData` instead of `BLEDevice`.
2023-03-22 22:39:01 +01:00
65bc3ae06d
Noisy beacons device configuration should look both at manufacturer and model.
2023-03-22 22:37:46 +01:00
f49b866a51
Focus the <input> element when a <NameEditor> element is created.
2023-03-22 21:28:21 +01:00
dd80dc998c
Show entity icon and type in the list of children entities on EntityModal.
2023-03-22 21:26:59 +01:00
239dd17f23
Exclude from the list of display children on EntityModal those with no name or that are configuration values.
2023-03-22 16:38:38 +01:00
e10bec88c0
Noisy beacons logging trace moved from info to debug.
2023-03-22 16:31:57 +01:00
5dd95362a1
Include links both to the parent and children entities in EntityModal.
2023-03-22 16:20:29 +01:00
99cfd247a5
A more effective logic to exclude noisy BLE beacons.
...
This includes BLE beacons sent from all Google/Apple/Microsoft/Samsung
beacon networks in all of their variants.
2023-03-22 15:35:02 +01:00
01d323fad0
Passing a boolean exclude_known_noisy_beacons
to bluetooth
plugin.
...
The logic to exclude BLE beacons from randomized devices needs to be a
bit more granular and not limited only to the reported device
manufacturer.
2023-03-22 15:29:19 +01:00
f6e09d34e4
A more clever logic of parsing the manufacturer for BLE devices.
...
1. Check the manufacturer parsed via Bleak/Theengs
2. Check the MAC address prefix in the oui numbers table
3. Check from the reported `manufacturer_data`
2023-03-22 14:16:00 +01:00
f7e8cfe5a7
Don't include unit
in BLE sensors when they are matched against the native type.
...
It's likely to just include the native type name anyway.
2023-03-22 14:14:59 +01:00
486f37a45e
Support sensor value reported both on value
as well as _value
fields.
2023-03-22 14:11:13 +01:00
bfc87e0f7b
Display arrays and objects in the entity modal as prettified JSON.
2023-03-22 13:50:35 +01:00
c750d83188
Prevent name collisions on bluetooth.ServiceClass
.
2023-03-22 03:27:25 +01:00
174b1ee6a9
Use a default list of excluded Bluetooth manufacturers.
2023-03-21 16:03:01 +01:00
e9abb5cb9a
Implemented support for child entities in entity modals.
2023-03-21 16:02:02 +01:00
b1cb7ef847
Added a list of excluded_manufacturers
to BluetoothPlugin
.
2023-03-21 14:32:45 +01:00
718e0434ba
Display all available entity attributes on EntityModal.
2023-03-20 14:32:03 +01:00
78bbe71be1
Another .pull-right fix.
2023-03-20 02:04:32 +01:00
3743ee4f00
s/TheengsGateway/TheengsDecoder/g now that the pip package has been published.
2023-03-20 01:41:21 +01:00
431dedf3eb
BluetoothDevice moved to its own component, with device connect support.
2023-03-20 01:28:12 +01:00
0a4b22c12e
Implemented connect/disconnect call on BluetoothService component.
2023-03-20 01:27:47 +01:00
714f853751
Pass the list of children to the entity component.
2023-03-20 01:27:21 +01:00
a011de890b
Better .pull-right class implementation.
2023-03-20 01:26:48 +01:00
2b5596820b
Made Types.objectsEqual method more robust against null input
2023-03-19 22:50:23 +01:00
71a3481560
Better style for the sidebar/nav
2023-03-19 22:23:37 +01:00
12096f2dbe
Don't fail hard when device disconnection fails.
2023-03-19 12:56:53 +01:00
40f81b105f
Set the connected flag when connecting/disconnecting from a service.
2023-03-19 12:56:31 +01:00
9d66b63266
BluetoothService attributes fixes.
...
BluetoothService IDs should always be in the format `address::uuid` and
the name should always be in title format.
2023-03-19 12:55:14 +01:00
6e9263c4e4
A more elegant logic to infer the manufacturer name.
2023-03-19 12:54:52 +01:00
b568876474
Use a service's UUID as a name instead of Unknown if the service is unknown.
2023-03-19 12:54:09 +01:00
aa04741daa
Added BluetoothService UI component
2023-03-19 12:53:23 +01:00
f74fab795d
Added parent
component value to Entity
.
2023-03-19 12:50:45 +01:00
243de15813
Added connected
flag to BluetoothService
.
2023-03-19 12:49:38 +01:00
256d9adbf2
Removed children
from BluetoothDevice.to_json
- it makes events too verbose
2023-03-19 12:48:11 +01:00
4144e4f842
Fixed self._ip_to_dev expansion
2023-03-19 12:47:07 +01:00
878fe91155
Big rewrite/refactor of the entities merger
2023-03-19 12:40:48 +01:00
2411b961e8
[WIP] Big, big refactor of the Bluetooth integration.
...
- Merged together Bluetooth legacy and BLE plugins and scanners.
- Introduced Theengs as a dependency to infer BLE device types and
create sub-entities appropriately.
- Using `BluetoothDevice` and `BluetoothService` entities as the bread
and butter for all the Bluetooth plugin's components.
- Using a shared cache of devices and services between the legacy and
BLE integrations, with merging/coalescing logic included.
- Extended list of discoverable services to include all those officially
supported by the Bluetooth specs.
- Instantiate a separate pool of workers to discover services.
- Refactor of the Bluetooth events - all of them are now instantiated
from a single `BluetoothDevice` object.
2023-03-13 02:31:21 +01:00
4bc61133c5
The Entity object should also have a to_json
method.
2023-03-12 23:01:51 +01:00
4a8da80c7c
Don't join self._thread on stop in RunnablePlugin if self._thread = current_thread
2023-03-11 23:45:46 +01:00
31552963c4
EntitiesDb.upsert
should return a deep copy of the upserted entities.
...
Not the upserted entities themselves, no matter if expunged or made transient.
Reminder to my future self: returning the flushed entities and then using them
outside of the session or in another thread opens a big can of worms when using
SQLAlchemy.
2023-03-10 12:06:36 +01:00
f45e47363d
Use lazy='joined' instead of lazy='selectin' on Entity.parent.
...
That's the best way to ensure that all the columns are fetched eagerly and
prevent errors later when trying to access lazily loaded attributes outside
of the session/thread.
2023-03-10 12:01:23 +01:00
8ccf3e804d
Added utility get_entities_engine() function.
2023-03-10 11:49:23 +01:00
60da930e4b
Added support for get_plugin(MyPlugin) besides get_plugin('my').
2023-03-10 11:47:39 +01:00
3fcc9957d1
A dirty fix to prevent DetachedInstanceError when accessing the parent entity.
2023-03-10 11:45:44 +01:00
ceb7a2f098
EntitiesEngine synchronization improvements.
...
- Added `wait_start()` method that other threads can use to synchronize
with the engine and wait before performing db operations.
- Callback logic wrapped in a try/except block to prevent custom
integrations with buggy callbacks from crashing the engine.
2023-03-10 00:57:24 +01:00
73dc2463f1
Added auto_commit=False to entities.save()
2023-03-10 00:40:51 +01:00
7e92d5f244
Added recursive .copy()
method to Entity
.
2023-03-09 22:35:31 +01:00
9f9ee575f1
Added _import_error_ignored_modules.
...
ImportErrors on these entity modules will be ignored when dynamically
loading them, since they have optional external dependencies and we
shouldn't throw an error if we can't import them.
2023-03-09 01:40:35 +01:00
c4efec6832
Several fixes and improvements on the entities engine.
...
- Support for an optional callback on `publish_entities` to get notified
when the published object are flushed to the db.
- Use `lazy='selectin'` for the entity parent -> children relationship -
it is more efficient and it ensures that all the data the application
needs is loaded upfront.
- `Entity.entity_key` rolled back to `<external_id, plugin>`. The
fallback logic on `<id, plugin>` created more problems than those it
as supposed to solve.
- Added `expire_on_commit=False` to the entities engine session to make
sure that we don't get errors on detached/expired instances.
2023-03-09 01:16:04 +01:00
1781a19a79
s/Entity.to_json/Entity.to_dict/g
...
stuff
2023-03-06 23:46:33 +01:00
b9efa9fa30
entity_key should coalesce (entity.external_id or entity.id)
2023-03-06 16:54:02 +01:00
72c55c03f2
[WIP] Refactoring/extending models and parsers for Bluetooth entities.
2023-03-03 02:10:11 +01:00
a688e7102e
Changed default poll_interval
for RunnablePlugin
.
...
30 -> 15 seconds.
2023-03-03 02:00:48 +01:00
ead4513915
Added optional unit
column to RawSensor
entity.
2023-03-03 01:59:27 +01:00
7be55e446f
Convert UUID objects to strings when serializing to JSON.
2023-03-02 21:58:26 +01:00
15fadb93bb
Added stand-alone connect
and disconnect
actions to bluetooth
.
2023-02-25 01:59:35 +01:00
70d1bb893c
A cleaner way of calculating the success
response attribute.
2023-02-25 01:58:09 +01:00
2dfb389630
Added remaining bluetooth
entity types in _mappers.py
.
2023-02-23 21:20:41 +01:00
a0556d3a42
Added PresenceSensor
entities.
2023-02-23 01:42:26 +01:00
886b930e2f
Support for bluetooth
devices with multiple temperature sensors.
2023-02-23 01:27:31 +01:00
56d693032a
Added DewPointSensor
entities.
2023-02-23 01:23:04 +01:00
d212276247
Added PressureSensor
entities.
2023-02-23 01:12:27 +01:00
dd3f683006
Added unit
to bluetooth
mappers whenever available.
2023-02-23 01:04:33 +01:00
d961e2a997
Added TimeDurationSensor
entity.
2023-02-23 01:02:13 +01:00
c3e16f9f9d
Added support for heart rate sensor entities.
2023-02-23 00:55:55 +01:00
3dab94c346
Added StepsSensor
detection to bluetooth
.
2023-02-23 00:50:06 +01:00
e1b3d52706
Added StepsSensor
entity.
2023-02-23 00:45:58 +01:00
dcab766cef
Only scan for the configured Bluetooth service UUIDs.
2023-02-22 03:36:16 +01:00
d8c429f4a8
Major improvements on the entities engine.
...
- Better logic to recursively link parent/children entities, so partial
updates won't get lost.
- Removed `EntitiesCache` - it was too much to maintain while keeping
consistent with the ORM, and it was a perennial fight against
SQLAlchemy's own cache.
- Removed `EntityNotifier` - with no need to merge cached entities, the
`notify` method has become much simpler and it's simply been merged
in the `EntitiesRepository`.
2023-02-22 02:53:45 +01:00
9776921836
Better way of handling with RawSensor
in bluetooth
integration.
2023-02-22 02:26:51 +01:00
a5a923a752
Added BluetoothDeviceNewDataEvent
.
...
These events handle the case where a Bluetooth device only publishes new
service data without advertising any additional updated properties.
2023-02-22 02:23:11 +01:00
dc7cbe743d
Refactored/improved RawSensor
entity.
...
It will now automatically deal with most of the native types and convert
them to strings on the db.
2023-02-22 02:19:19 +01:00
b2ffc08c89
s/MultiValueSensor/CompositeSensor/g on smartthings
2023-02-22 02:18:12 +01:00
340fd08064
Removed some old type: ignore
comments.
2023-02-22 01:29:51 +01:00
cf219d5a48
Added some more docstrings to entities.
2023-02-22 01:02:26 +01:00
7fa545d7f8
Merge branch 'master' into 29-generic-entities-support
2023-02-22 00:46:33 +01:00
c645ce6bb8
Bump version: 0.24.4 → 0.24.5
2023-02-22 00:32:57 +01:00
bbc9647cb0
s/MultiValueSensor/CompositeSensor/g
2023-02-21 23:14:10 +01:00
2fa45fc5a3
Documentation and LINT fixes for sensor entities.
2023-02-21 23:10:05 +01:00
b4627ecd04
Removed deprecated use_unicode parameter from MPDClient
2023-02-20 20:35:33 +01:00
aa0b909fff
Use the TheengsDecoder to parse Bluetooth packets and map services to native entities.
2023-02-20 20:27:17 +01:00
73bf2446bd
Wrap bluetooth.connect
in a per-device locked section.
2023-02-19 23:11:19 +01:00
9112239ac3
Better exception management in AsyncRunnablePlugin
.
...
Exceptions that cause the termination of the plugin's loop should always
be logged as such, unless the plugin is supposed to stop and various
exceptions may occur upon teardown.
2023-02-19 23:03:27 +01:00
a6c36fa1c1
Added brand, model and model_id columns to BluetoothDevice
.
2023-02-19 23:02:04 +01:00
68e6b271c1
Updated dist files
2023-02-19 22:58:20 +01:00
cb9b01c89f
Added raw_sensor metadata
2023-02-19 22:57:50 +01:00
72a9a9dfcf
LINT/type fixes
2023-02-19 22:56:45 +01:00
8aedc3c233
Recursively normalize child entities in EntityManager._normalize_entities
2023-02-18 17:51:57 +01:00
613e32e7c1
Extended number of supported events and data fields in Bluetooth integration.
2023-02-18 01:15:10 +01:00
7adae272a4
Merge branch 'master' into 29-generic-entities-support
2023-02-15 22:24:41 +01:00
08553f84b9
Added timeout
parameter to websocket.send
.
2023-02-15 22:23:15 +01:00
45664be44b
Removed deprecated backend.bluetooth.scanner
.
...
Scan capabilities are now implemented on the `bluetooth` plugin itself.
2023-02-13 23:13:51 +01:00
471bc1fd3d
Updated dist files
2023-02-13 23:13:32 +01:00
a3aa186ddf
- Added support for scan_pause
/scan_resume
on bluetooth
integration.
...
- Added `BluetoothDevice` as its own entity type.
2023-02-13 23:12:25 +01:00
1d0be5c929
- Simplified prototype for EntityManager.set
...
- Added small documentation/annotations notes to the `Plugin` module.
- Small LINT fixes
2023-02-11 21:35:00 +01:00
575635fd6b
Defined set
as a base method for all plugins that implement writeable entities
2023-02-11 04:04:21 +01:00
4365352331
[WIP] s/set_value/set/g for entities
2023-02-11 03:57:23 +01:00
b0cc80ceb0
Rewriting bluetooth.ble
plugin to use bleak
instead of gattlib
.
2023-02-10 17:40:20 +01:00
f30e077a5a
Support for custom Bluetooth adapter on switchbot.bluetooth
.
2023-02-08 23:01:05 +01:00
8469a1027f
Migrated/refactored switchbot.bluetooth
integration.
...
- Out `gattlib` + `pybluez`, in `bleak`. It's not platform-dependent, it doesn't
require libboost and other heavy build dependencies, and it doesn't require the
user that runs the service from having special privileges to access raw
Bluetooth sockets.
- Better integration with Platypush native entities. The devices are now mapped
to write-only `EnumSwitch` entities, and the status returns the serialized
representation of those entities instead of the previous intermediate
representation.
2023-02-08 22:42:00 +01:00
35719b0da9
Let publish_entities
return the list of transformed_entities
2023-02-08 02:09:34 +01:00
e04870209e
More LINT fixes
2023-02-08 01:50:54 +01:00
a98a5f0980
typo fix
2023-02-08 01:09:25 +01:00
e49a0aec4d
Various improvements.
...
- Better synchronization logic on stop for `AsyncRunnablePlugin`.
- Fixed several thread names by dropping `prctl.set_name` in favour of
specifying the name directly on thread creation.
- Several LINT fixes.
2023-02-08 00:46:50 +01:00
9d028af524
Removed last reference of SwitchPlugin
2023-02-05 23:10:35 +01:00
419a0cec61
More LINTing
...
Better prototype for `MultiLevelSwitchEntityManager.set_value`
2023-02-05 23:07:43 +01:00
fde834c1b1
More LINT fixes + refactors
2023-02-05 22:00:50 +01:00
4849e14414
LINT fixes for the utils
module + additional documentation
2023-02-05 18:05:41 +01:00
b8fca97891
Default poll_interval for RunnablePlugin
set to 30 seconds
2023-02-05 17:31:43 +01:00
06dfd1a152
Added support for more entities in switchbot
2023-02-05 15:34:50 +01:00
64e9bf17cf
Updated dist files
2023-02-05 14:53:36 +01:00
2047b9b76c
[WIP] Refactoring switchbot
plugin as a runnable plugin + entity manager
2023-02-04 22:22:51 +01:00
65827aa0cd
Updated dist files
2023-02-04 17:36:46 +01:00
b96838a856
Major LINT fixes/refactor for the Config
class
2023-02-04 17:35:48 +01:00
db5846d296
Add the unit to the Dimmer
display value if it's available
2023-02-04 17:28:54 +01:00
0311d87bc3
The switch.wemo
integration now extends SwitchEntityManager
2023-02-04 00:58:28 +01:00
de2849546a
LINT fixes
2023-02-04 00:26:48 +01:00
a160d3217e
Removed legacy get_sensor_plugins
and get_switch_plugins
actions
2023-02-03 22:54:42 +01:00
b6814b4f16
Removed legacy Switches integration [frontend]
2023-02-03 22:49:09 +01:00
6ef2feea71
LINT fixes for utils
plugin
2023-02-03 18:08:19 +01:00
3db9c58d31
[WIP] Converted switch.tplink
plugin.
...
`switch.tplink` converted to a `RunnablePlugin` that implements
`SwitchEntityManager`.
2023-02-03 02:20:20 +01:00
be3b99326f
[WIP] Refactoring @manages
annotation into a proper EntityManager
hierarchy
2023-02-02 23:21:12 +01:00
63d6920716
Updated dist files
2023-02-02 18:07:44 +01:00
59eb0742a1
s/warnings/logger.debug/ if publish_entities is called with no engine registered
2023-01-29 21:52:12 +01:00
8aff181956
Merged zwave.mqtt
backend into the zwave.mqtt
plugin
2023-01-29 02:34:48 +01:00
0e56d0fff6
Double-check if self._thread != None on stop on the ntfy thread
...
Race conditions may occur here
2023-01-27 22:12:34 +01:00
341e749d23
Merged the zigbee.mqtt
backend into the plugin.
...
- Deprecated the old `zigbee.mqtt` backend
- Black style for the `mqtt` backend
2023-01-27 01:59:57 +01:00
afdeb91f66
Implemented remaining supported entities for the smartthings
integration
2023-01-26 22:10:02 +01:00
334ccc35a2
Don't serialize I/O wrappers
...
This removes warnings on `config.get`, where the `logging` configuration
key may also contain the current logging stream and we end up with a
JSONDecodeError when trying to serialize it.
2023-01-25 00:52:37 +01:00
ba31dff06a
Major refactor + fixes for smartthings
2023-01-24 23:56:28 +01:00
147f36c86c
All Sensor
instances should have is_read_only=True
by default
2023-01-22 21:05:14 +01:00
fd76642082
Added Volume
and Muted
entities
2023-01-22 21:04:46 +01:00
bb637a1411
Defined a unique stop_timeout
(default=5) for RunnablePlugin
2023-01-22 14:28:16 +01:00
6d4cf64253
More work on smartthings
.
...
- Added support for `Battery` entities
- Fixed saturation range for `Light` entities
- Parsing `min`/`max`/`unit` from the status attributes, if available
2023-01-22 01:01:47 +01:00
ddd516a677
Added polling/RunnablePlugin logic to smartthings
2023-01-22 00:09:10 +01:00
dabbe031ab
Don't show the entity modal unless the user clicks on the name or icon
2023-01-21 23:46:38 +01:00
32e4e60579
A more robust handling of events in the zwave.mqtt
backend
2023-01-21 23:44:51 +01:00
3940288396
Use the new bus notification helpers
2023-01-21 16:59:18 +01:00
241670c9d0
Handle parent/child update events through broadcast bus events
2023-01-21 16:58:28 +01:00
3923a09831
- Expose methods on the bus module to publish/subscribe to notifications and entity updates
...
- Removed some redundant `pass` statements in Z-Wave derived event classes
2023-01-21 16:56:27 +01:00
fb562bb415
Propagate the @update event to the parent entities
2023-01-21 14:55:06 +01:00
4d762b81dc
EntityUpdateEvent traces can now be logged on INFO level
...
The EntityUpdateEvents generated by light.hue are now less noisy.
2023-01-21 14:50:05 +01:00
247912799f
Refactored light.hue integration so EntityUpdateEvents won't be triggered on every call to _get_lights
2023-01-21 14:48:33 +01:00
dfb13127ee
Added MotionSensor entities
2023-01-21 14:47:18 +01:00
a892bad34c
Refactoring smartthings plugin to support more entity types
2023-01-21 14:09:26 +01:00
22b8b03cb2
Refactored EntityIcon component
2023-01-15 20:02:50 +01:00
9a5e2899e8
Support for external_url and image_url on entities
2023-01-15 20:01:47 +01:00
2cc5e3f726
UI tweaks
2023-01-15 15:46:25 +01:00
9e4fbc6a21
Defined the collapsed data property on EntityMixin level
2023-01-15 15:29:26 +01:00
78e250186b
Deallocate the color converter when the light component is unmounted
2023-01-15 15:25:04 +01:00
e9371ac5d0
Improved entity collapse logic
...
- Toggle collapsed state also if clicked on the gap between the entity
name and the right edge, instead of opening the entity modal. The
entity configuration modal should open only when clicking on the
entity name or icon (and these should be highlighted on hover as links
as well).
- The collapsed state update should be propagated to the wrapped
component as well, if applicable.
2023-01-15 15:03:53 +01:00
dbf5ed3b85
s/expanded/collapsed/g (for naming consistency)
2023-01-15 14:26:44 +01:00
bb483fd1b1
Using a nice gradient for hover-bg
2023-01-15 12:34:18 +01:00
cda03887d4
Updated dist files
2023-01-15 12:34:02 +01:00
9df4d5b5b8
Zigbee entities should be marked as unreachable also if they are currently being interviewed
2023-01-14 22:35:17 +01:00
afd9a1d6bf
Don't load entities that only have non-queriable children
2023-01-14 22:33:53 +01:00
2778357a9e
Wrapped dynamic Vue components in shallowRef.
...
The performance of the page is heavily degraded by components loaded
dynamically via defineAsyncComponent that recursively carry behind the
whole Vue machinery.
By wrapping defineAsyncComponent calls in shallowRef we make sure that
we only wire the root level of the newly created dynamic component.
2023-01-14 22:31:48 +01:00
fd2d83c80b
Renamed Notification mixin's warn and error methods.
...
Renamed to `notifyWarning` and `notifyError` respectively.
Those names can often clash with other properties defined on components
that extend the mixin (like entities).
2023-01-14 22:27:43 +01:00
aa22507f50
DropdownItem.className should not be enforced to be a string.
...
It can also be a class -> boolean object.
2023-01-14 22:11:05 +01:00
a58caa17e2
Decreased time of EventQueue (2 -> 1 second) to make entity events more responsive
2023-01-13 23:28:58 +01:00
68497e6388
Normalize the light devices' IEEE addresses before retrieving the associated devices
2023-01-13 23:28:12 +01:00
22a566a88b
More refactors and fixes for zigbee.mqtt
2023-01-13 02:58:47 +01:00
38438230d7
The batch of entities currently being processed should have no duplicate keys
2023-01-11 01:22:56 +01:00
4a2851231c
Large refactor of zigbee.mqtt
...
- Support for device options as children configuration entities
- Refactored switches management, removed legacy `switches` plugin
integration, and supporting multiple binary switches for one device
2023-01-09 01:02:49 +01:00
27b23b7fae
Normalize array/dict options for values on EnumSwitch
2023-01-09 01:01:35 +01:00
e9c84ff5d4
Support units on dimmer entities
2023-01-09 01:01:05 +01:00
32330ca7a8
Merge branch 'master' into 29-generic-entities-support
2023-01-08 23:26:08 +01:00
dependabot[bot]
a0e45c38a5
Bump minimatch from 3.0.4 to 3.1.2 in /platypush/backend/http/webapp
...
Bumps [minimatch](https://github.com/isaacs/minimatch ) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases )
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2 )
---
updated-dependencies:
- dependency-name: minimatch
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 22:24:41 +00:00
dependabot[bot]
379c822588
Bump json5 from 1.0.1 to 1.0.2 in /platypush/backend/http/webapp
...
Bumps [json5](https://github.com/json5/json5 ) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases )
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md )
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2 )
---
updated-dependencies:
- dependency-name: json5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 22:22:52 +00:00
dependabot[bot]
47c3a24def
Bump loader-utils from 1.4.0 to 1.4.2 in /platypush/backend/http/webapp
...
Bumps [loader-utils](https://github.com/webpack/loader-utils ) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases )
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md )
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2 )
---
updated-dependencies:
- dependency-name: loader-utils
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 15:53:12 +00:00
66000a0774
Merge branch 'master' into 29-generic-entities-support
2023-01-08 00:23:57 +01:00
2893cb1cc4
Replaced deprecated missing
marshmallow parameter with load_default
2023-01-08 00:15:24 +01:00
7d90b274ae
Make sure that any existing device monitor is terminated upon disconnection
2023-01-07 23:48:02 +01:00
72454a6583
Merge branch 'master' into 29-generic-entities-support
2023-01-07 23:31:31 +01:00
40bdc3b7f3
Always wait 5 seconds (regardless of the poll interval) in case of errors.
...
Also, print the error only on the first occurrence, to prevent log
spamming.
2023-01-07 23:21:59 +01:00
e8f767d819
Take into account the notify_only_if_changed parameter
2023-01-07 23:11:34 +01:00
c5cf9803ff
Take into account the notify_only_if_changed parameter
2023-01-07 23:09:42 +01:00
6630873e2c
Merge branch 'master' into 29-generic-entities-support
2023-01-07 22:39:46 +01:00
2ee810bdc4
Added missing event to documentation
2023-01-07 22:39:23 +01:00
b7f266cd92
Merge branch 'master' into 29-generic-entities-support
2023-01-07 22:31:36 +01:00
a77206800d
Added HID plugin to support interaction with generic HID devices
2023-01-07 22:30:32 +01:00
c215c693f5
Only pass children that aren't configuration values to the entities
2023-01-03 23:25:43 +01:00
7868d6fe37
Support for nested configuration objects on entity modals
2023-01-03 23:16:14 +01:00
13eb515f87
Select current display value by default on EnumSwitch
2023-01-03 23:14:57 +01:00
01727f53bc
Support for is_configuration flag on zwave
entities
2023-01-03 23:13:34 +01:00
c32aecece3
Added is_configuration flag to entities
2023-01-03 23:12:27 +01:00