Fabio Manganiello
85ecdcb0cb
Removed entity icon loading animation.
...
The animation has a big impact on page loading performance when the
system includes a high number of entities that all need their loading
animation to be render.
2023-05-01 09:49:34 +02:00
Fabio Manganiello
24c6b7b377
Updated dist files
2023-05-01 01:25:27 +02:00
Fabio Manganiello
b7cf1a42de
Use a proxy value in the `variable` component for the textbox.
...
Otherwise the value may keep being overwritten while the user is typing
a new one.
2023-05-01 01:22:20 +02:00
Fabio Manganiello
a3839e637d
Set a max-width: 600px for group containers.
2023-05-01 01:22:02 +02:00
Fabio Manganiello
1e43866978
Moved more entity common CSS out of the Vue component.
2023-05-01 01:21:18 +02:00
Fabio Manganiello
de84a65a22
Show prettified entity type when hover the entity icon.
2023-05-01 01:20:31 +02:00
Fabio Manganiello
7906ee2c49
Entity components style improvements.
...
Multiple style improvements for the entity components. Among these:
- A more consistent style for entity values and toggler buttons.
- Fixed overflowing/underflowing entities on smaller/larger screen
sizes.
- Simplified the stylesheets for many entities as many component classes
have now been moved to `common.scss`.
2023-04-30 22:32:50 +02:00
Fabio Manganiello
d1066ba624
Use Math.round instead of parseInt when parsing durations.
2023-04-30 16:22:37 +02:00
Fabio Manganiello
5d4bffa119
Fixed retrieval of `entities` plugin.
2023-04-30 10:42:05 +02:00
Fabio Manganiello
94a493580c
Updated dist files
2023-04-30 01:36:13 +02:00
Fabio Manganiello
0b853e0a54
Apply `word-break: break-all` to entities' names and values.
...
The entity name and value in the component header may be arbitrarily
long and rendered on small screens.
We therefore need to ensure that the text won't overflow the screen
width.
2023-04-30 01:17:54 +02:00
Fabio Manganiello
3d7755159f
Improved compatibility for `traceback.format_exception`.
...
The new syntax, that only requires an `Exception` instance to be passed
to the function, is only compatible with Python >= 3.10.
2023-04-30 00:38:17 +02:00
Fabio Manganiello
6b28d16ccf
Exclude more noisy Bluetooth beacons.
...
Exclude any beacons from devices with no name, no children other than
services, and with none of those services being public/known.
2023-04-29 23:34:24 +02:00
Fabio Manganiello
f764d1b4fb
Noisy Bluetooth beacons notices should be logged on info level.
2023-04-29 23:18:12 +02:00
Fabio Manganiello
52f036dc1d
Updated dist files
2023-04-29 22:49:35 +02:00
Fabio Manganiello
cbf0ea8a19
Style fixes for mobile screens.
2023-04-29 22:45:10 +02:00
Fabio Manganiello
e96885a805
Delete the entity on `variable.unset` instead of setting it to null.
2023-04-29 18:21:57 +02:00
Fabio Manganiello
b4048002b9
Updated dist files
2023-04-29 18:21:32 +02:00
Fabio Manganiello
6d9c34f06f
Added VariableModal to set variables from the dashboard.
2023-04-29 18:20:41 +02:00
Fabio Manganiello
a3888be216
The robustness check in case of missing fields should also apply to other system entities.
2023-04-29 16:08:38 +02:00
Fabio Manganiello
8c9768b05e
Robustness check for system disk entities.
...
When the system information is still loading it may happen that the
device associated to the disk hasn't been loaded yet.
2023-04-29 16:04:57 +02:00
Fabio Manganiello
a20065c649
Exposed `_entities` utility property in `Plugin`.
...
It can be used by other plugins to easily access the `entities` plugin,
along the lines of `db` and `redis`.
2023-04-29 15:50:31 +02:00
Fabio Manganiello
68d8befa34
Removed some vestigial commented code.
2023-04-29 15:28:44 +02:00
Fabio Manganiello
23b851e9d7
`variable.status` robustness fix.
...
`entities.transform_entities` will pass back an empty list instead of an
empty dict if no entities were found, and the function should be able to
handle it.
2023-04-29 15:24:58 +02:00
Fabio Manganiello
e919bf95ad
Print the full stack trace if a plugin failed in `entities.scan`
2023-04-29 15:14:13 +02:00
Fabio Manganiello
38c87ef39f
Added frontend component for the `Variable` entity.
2023-04-29 11:37:21 +02:00
Fabio Manganiello
f40f956507
Migrated `variable` table to the new entities framework.
2023-04-29 11:36:55 +02:00
Fabio Manganiello
8fe61217ce
Added `_db` and `_redis` properties to the Plugin class.
...
Plugins can now access the database and Redis APIs directly without
having to run their own `get_plugin` validation logic.
2023-04-29 11:35:57 +02:00
Fabio Manganiello
a8d2261f32
Added `core_plugins` to the configuration.
...
These plugins (only including `variable` for now) are a core part of the
application and should always be explicitly enabled.
2023-04-29 11:34:34 +02:00
Fabio Manganiello
78cee5d9b0
Added support for automatic database migrations.
...
Added Alembic environment and `run_db_migrations` logic to the entities
engine so database schema changes can be processed as soon as the
application is started.
2023-04-29 11:32:31 +02:00
Fabio Manganiello
ff9b76477d
Fixed arguments naming.
2023-04-28 11:04:33 +02:00
Fabio Manganiello
162904f281
[ #253 ] Added support for relational filters on event hooks.
2023-04-27 22:07:02 +02:00
Fabio Manganiello
87db5ca5f3
Exclude all iBeacon devices by default (it's not only Apple, it's everyone)
2023-04-26 14:17:59 +02:00
Fabio Manganiello
7685521e2b
Always use the default configuration values for MQTT listeners if not specified
2023-04-26 03:30:05 +02:00
Fabio Manganiello
10d587efd0
FIX: Possible assert evaluation error.
...
Some versions/configurations of Python may throw `Boolean value of this
clause is not defined` here.
2023-04-26 02:25:28 +02:00
Fabio Manganiello
245472a4c5
Better event hooks filters.
...
- Support for nested attributes on event hook conditions. Things like
these are now possible:
```
from platypush.event.hook import hook
from platypush.message.event.entities import EntityUpdateEvent
@hook(EntityUpdateEvent, entity={"external_id": "system:cpu"})
def on_cpu_update_event(event: EntityUpdateEvent, **_):
print(event.args["entity"]["percent"])
```
- The scoring/regex extraction/partial string match logic in
`_matches_argument` is actually only needed for
`SpeechRecognizedEvent`. Other events don't need these features, and
event hooks may be actually triggered unexpectedly in case of partial
matches. Therefore, the "complex" `_matches_argument` has been moved
as an override only for `SpeechRecognizedEvent`, and all the other
events will perform simple key-value matching.
2023-04-26 01:45:58 +02:00
Fabio Manganiello
ee54e0edbf
Use a font-awesome spinner instead of an animated gif when loading entities
2023-04-25 16:42:01 +02:00
Fabio Manganiello
cb288deb71
Exclude more noisy BLE beacons.
...
Excluding Apple iBeacons and devices with no name and no services.
2023-04-25 16:19:11 +02:00
Fabio Manganiello
dd60b8924d
Wrap the `PRAGMA` statement in `sqlalchemy.text`.
...
SQLAlchemy 2 no longer supports raw strings passed to `.execute()`
methods.
2023-04-25 10:41:37 +02:00
Fabio Manganiello
440d70d9cf
LINT/format fixes.
2023-04-25 10:36:27 +02:00
Fabio Manganiello
4cc88fcf5f
Rewritten the `variable` plugin to use SQLAlchemy's ORM.
...
This removes the need for raw SQL statements and CREATE TABLE statements
that may be engine-specific.
2023-04-25 10:35:12 +02:00
Fabio Manganiello
e1cd22121a
Removed `connection.begin()` pattern from the `db` plugin.
...
SQLAlchemy should automatically begin a transaction on
connection/session creation. Plus, `.begin()` messes up things with
SQLAlchemy 2, which has `autobegin` enabled with no easy way of
disabling it.
2023-04-25 10:31:49 +02:00
Fabio Manganiello
37722d12cd
No need for `session.begin` in `db.create_all`.
2023-04-24 23:55:50 +02:00
Fabio Manganiello
6fa179e769
LINT fixes
2023-04-24 23:49:31 +02:00
Fabio Manganiello
91df18f7b5
Better way to import `declarative_base` from SQLAlchemy.
...
Import `declarative_base` in a way that is compatible with any
SQLAlchemy version between 1.3 and 2.x.
2023-04-24 23:21:39 +02:00
Fabio Manganiello
87889142e0
Fixed compatibility with SQLAlchemy >= 2.0 in the `db` plugin.
2023-04-24 22:52:17 +02:00
Fabio Manganiello
8478245cde
Removed `Mapped[Entity]` type annotation.
...
`Mapped` has been introduced only in SQLAlchemy 1.4, while Debian stable
still ships 1.3.
Removing the type annotation doesn't come with a big cost, but it keeps
Platypush compatible with Debian stable.
2023-04-24 21:48:52 +02:00
Fabio Manganiello
e955ffc018
Be more resilient in DateTimeWeather widget about custom temperature/humidity names or non-numeric data
2023-04-24 12:48:51 +02:00
Fabio Manganiello
5638c567ff
Show temperature and humidity on the DateTimeWeather widget upon sensor events only if the sensor data is numeric.
2023-04-24 10:59:45 +02:00
Fabio Manganiello
bfa296e7c5
Fixed dataclass JSON serialization
2023-04-24 01:18:33 +02:00
Fabio Manganiello
9c03b028d7
Be a bit more resilient if an upstream integration sent some empty entities
2023-04-24 00:44:16 +02:00
Fabio Manganiello
6711b26137
Support dataclass serialization in the standard message serializer.
2023-04-24 00:43:06 +02:00
Fabio Manganiello
dc3392c11d
Disk I/O stats are not always available and should therefore be optional.
2023-04-23 22:25:24 +02:00
Fabio Manganiello
0cd28f1040
libbluetooth-dev is a required dependency to build pybluez on Debian-derived distros
2023-04-23 18:59:37 +02:00
Fabio Manganiello
9c1855e4c0
Fixed docstring for `zigbee.mqtt` plugin.
2023-04-23 13:03:10 +02:00
Fabio Manganiello
512ced3e94
Updated dist files
2023-04-23 02:13:48 +02:00
Fabio Manganiello
6439e235d2
Updated caniuse dependency
2023-04-23 02:11:21 +02:00
Fabio Manganiello
27b1048789
Converted `system.processes` to the new data model.
2023-04-23 02:08:43 +02:00
Fabio Manganiello
387616ea96
Convert `system.connected_users` to the new data model.
2023-04-23 01:12:07 +02:00
Fabio Manganiello
259b42bdd6
Removed legacy `backend.sensor.battery`.
2023-04-23 00:44:03 +02:00
Fabio Manganiello
763d9e06ec
Increased default `poll_interval` for `system` plugin to 60 seconds.
2023-04-23 00:42:44 +02:00
Fabio Manganiello
a72c32cb00
Added battery entity support to `system` plugin.
2023-04-23 00:41:21 +02:00
Fabio Manganiello
b3440ab96b
Added support for fan sensors on the `system` plugin.
2023-04-23 00:08:27 +02:00
Fabio Manganiello
45d5f439be
Added support for system temperature sensor entities.
2023-04-22 22:42:11 +02:00
Fabio Manganiello
1b048e1952
s/net_connections/network_connections/g
2023-04-22 17:19:24 +02:00
Fabio Manganiello
374f936c1f
Merged `network_stats` into `NetworkInterface` model.
2023-04-22 17:19:24 +02:00
Fabio Manganiello
f4036be52b
Extracted and refactored more common elements of the Entity components.
2023-04-22 17:19:23 +02:00
Fabio Manganiello
e213941791
s/net_io_counters/network_info/g
2023-04-22 17:19:23 +02:00
Fabio Manganiello
977b55dea9
Merged network addresses into `NetworkInterface` model.
2023-04-22 17:19:23 +02:00
Fabio Manganiello
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
Fabio Manganiello
2d618188c8
Print the full exception stack trace if `.status` fails.
2023-04-22 17:19:23 +02:00
Fabio Manganiello
b3a0896485
Converted `NetworkConnection` schema/response.
2023-04-22 17:19:22 +02:00
Fabio Manganiello
d473b5d836
Make the recursive entity merger/column set logic more resilient against ObjectDeletedError
2023-04-22 10:40:30 +02:00
Fabio Manganiello
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
Fabio Manganiello
44b8fd4b34
Support for `disk` entities in the `system` integration.
2023-04-20 16:26:51 +02:00
Fabio Manganiello
6b03451386
Better responsive alignment for the collapse toggler.
2023-04-20 16:26:05 +02:00
Fabio Manganiello
e8c96ad35d
Added `convertTime` utility function
2023-04-20 02:27:58 +02:00
Fabio Manganiello
153d03d43f
Moved CPU percentage on the level of the CPU entity instead of a child entity.
2023-04-19 01:48:05 +02:00
Fabio Manganiello
4ebfbf3851
Added memory stats entities.
2023-04-19 01:31:11 +02:00
Fabio Manganiello
0073239a40
Support for CPU `load_average` entity.
2023-04-18 18:26:02 +02:00
Fabio Manganiello
1cee0459cf
Added `CpuFrequency` entity to `system`.
2023-04-18 01:49:36 +02:00
Fabio Manganiello
a5b0a524f6
Added `CpuStats` entity to `system`.
2023-04-18 01:19:06 +02:00
Fabio Manganiello
b4fbd3e915
Added `percent` entity to `cpu`.
2023-04-17 02:25:04 +02:00
Fabio Manganiello
711cc2b239
Removed (now unused) `CpuTimesResponse`.
2023-04-17 02:25:03 +02:00
Fabio Manganiello
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
Fabio Manganiello
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
Fabio Manganiello
6e65783feb
Added schemas for `CpuTimes`.
2023-04-17 02:25:03 +02:00
Fabio Manganiello
e810025a6d
Added `Cpu` and `CpuTimes` entities.
2023-04-17 02:25:03 +02:00
Fabio Manganiello
65481dc6b4
Added `PercentSensor` entity type.
2023-04-17 02:25:02 +02:00
Fabio Manganiello
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
Fabio Manganiello
b43017ef01
Refactoring the `system` plugin to support entities.
2023-04-17 02:25:02 +02:00
Fabio Manganiello
3e3c48d779
Defined new entity and schema for CpuInfo.
2023-04-17 02:25:02 +02:00
Fabio Manganiello
186a21f715
Added CpuInfo entity frontend components.
2023-04-17 02:25:01 +02:00
Fabio Manganiello
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
Fabio Manganiello
4c19535612
A more resilient logic on entity copy/serialization to prevent ObjectDeletedError
2023-04-13 17:16:21 +02:00
Fabio Manganiello
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
Fabio Manganiello
10955dad72
Fixed some documentation glitches in `switchbot`.
2023-04-03 01:36:12 +02:00
Fabio Manganiello
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
Fabio Manganiello
8852cb8db4
Fixed new class name for `sensor.mcp3008` plugin.
2023-04-03 01:36:12 +02:00
Fabio Manganiello
d5ddc0c65e
Migrated `arduino` integration to the new `SensorPlugin` API.
2023-04-03 01:36:12 +02:00