Commit Graph

3194 Commits

Author SHA1 Message Date
Fabio Manganiello 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
Fabio Manganiello 6f237a1500
Support the deprecated `poll_seconds` option on `RunnablePlugin` 2023-04-01 22:02:59 +02:00
Fabio Manganiello c23e8867e2
Added `enabled_sensors` to the `sensor` plugin 2023-04-01 21:56:56 +02:00
Fabio Manganiello 7912a59ff8
`vl53l1x` plugin migrated to the new `SensorPlugin` interface. 2023-04-01 19:31:13 +02:00
Fabio Manganiello 6a5a5de03e
`serial` plugin migrated to the new `SensorPlugin` interface. 2023-04-01 19:29:56 +02:00
Fabio Manganiello bf4db76830
Legacy `sensor` backend replaced by an extended `sensor` runnable plugin. 2023-04-01 19:24:35 +02:00
Fabio Manganiello bf75eb73ac
Added an abstract base `SensorDataEvent` for sensor events. 2023-03-31 22:51:35 +02:00
Fabio Manganiello 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
Fabio Manganiello 42d468c895
`get_lock` should raise a TimeoutError if `lock.acquire` is False 2023-03-31 22:31:32 +02:00
Fabio Manganiello 9693becb9e
Removed LGTM badges from the README.
LGTM is now merged into Github and the badges are no longer available.
2023-03-31 14:31:45 +02:00
Fabio Manganiello 7bdd877e49
Support the `binary` flag both on `serial.read` and `serial.write`. 2023-03-31 14:31:45 +02:00
Fabio Manganiello 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
Fabio Manganiello 4f15758de9
black fixes 2023-03-31 14:31:38 +02:00
Fabio Manganiello 2a8a3f4394 Removed legacy sensor.distance.vl53l1x backend 2023-03-31 14:26:14 +02:00
Fabio Manganiello a3e8c7c155 Rewritten vl53l1x integration as a runnable plugin with entity support 2023-03-31 14:25:05 +02:00
Fabio Manganiello 226034946f Added `distance_sensor` entity 2023-03-31 14:22:28 +02:00
Fabio Manganiello 6fb362a6fb gpio.sensor.distance.vl53l1x -> sensor.distance.vl53l1x 2023-03-31 14:21:48 +02:00
Fabio Manganiello 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
Fabio Manganiello c2f9ebf4ed
Updated dist files 2023-03-27 01:47:29 +02:00
Fabio Manganiello 2781eb1fb1
Merge branch 'master' into 29-generic-entities-support 2023-03-27 00:36:50 +02:00
Fabio Manganiello 792a65df8b Merge pull request '[#240] Migrated `clipboard` plugin from `pyperclip` to `pyclip`' (#241) from 240-migrate-clipboard-integration-to-pyclip into master
Reviewed-on: #241
2023-03-26 23:56:51 +02:00
Fabio Manganiello 7a368ebbb8
[#240] Migrated `clipboard` plugin from `pyperclip` to `pyclip`.
Closes: #240
2023-03-26 23:52:15 +02:00
Fabio Manganiello bce2fdee25
Replaced deprecated `asyncio.wait([])` with `asyncio.gather(*[])`. 2023-03-26 23:15:53 +02:00
Fabio Manganiello cf91ab90df
Increased default width of `nav` on desktop+ 2023-03-26 23:10:46 +02:00
Fabio Manganiello 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
Fabio Manganiello efe400f921
Fixed `maxdepth` attribute in generate docs. 2023-03-26 22:55:22 +02:00
Fabio Manganiello 6d674fef21
Fixed small JSON syntax error in the docstring of `ntfy.send_message`. 2023-03-26 22:53:42 +02:00
Fabio Manganiello 30124e7cef
Fixed docstring of `Event.__init__`. 2023-03-26 22:53:11 +02:00
Fabio Manganiello 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
Fabio Manganiello 3bb2336b3a
Updated docs 2023-03-26 15:13:48 +02:00
Fabio Manganiello 89bc54da22
Updated dist files 2023-03-26 12:30:46 +02:00
Fabio Manganiello 295758bb20
Added frontend components for cloud instances. 2023-03-26 12:27:17 +02:00
Fabio Manganiello 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
Fabio Manganiello 4b9c5a0203
Support for schema `EnumField`. 2023-03-26 03:48:32 +02:00
Fabio Manganiello 026662f6b6
Added base schema for Marshmallow dataclasses. 2023-03-26 03:47:44 +02:00
Fabio Manganiello 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
Fabio Manganiello f5d9895521
Added `marshmallow_dataclass` to the requirements. 2023-03-26 03:44:57 +02:00
Fabio Manganiello 89d85baa6d
Support for implicit serialization of Enum values in JSONAble. 2023-03-26 03:43:04 +02:00
Fabio Manganiello a71017df33
Updated web app files 2023-03-24 16:45:55 +01:00
Fabio Manganiello 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
Fabio Manganiello 3c355352c5
Using the new `StoppableThread` API. 2023-03-24 16:39:30 +01:00
Fabio Manganiello 5ebf4e912e
Added `wait_stop` and `shoud_stop` methods to `StoppableThread`. 2023-03-24 16:05:18 +01:00
Fabio Manganiello 998793e94f
Added `OBEX_FILE_TRANSFER` constant to `directory` stub. 2023-03-24 15:41:20 +01:00
Fabio Manganiello 4b4db5b3c7
Added `StoppableThread` common interface. 2023-03-24 15:40:16 +01:00
Fabio Manganiello 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
Fabio Manganiello 913ef6f8cd
Refresh `BluetoothDevice.reachable` when a device is found/lost. 2023-03-24 01:56:19 +01:00
Fabio Manganiello d46d4e2300
Added support for Bluetooth devices blacklist.
Based on device address, name or manufacturer.
2023-03-24 01:52:39 +01:00
Fabio Manganiello 0cebcf4f9b
`switchbot.bluetooth` integration migrated to a `bluetooth` plugin. 2023-03-23 17:46:54 +01:00
Fabio Manganiello 4fac110bb8
Added `bluetooth.set` method, whose execution is delegated to the plugins. 2023-03-23 17:45:02 +01:00
Fabio Manganiello cd219f44c4
Pass the list of plugins when creating Bluetooth managers. 2023-03-23 17:42:16 +01:00