Commit graph

1656 commits

Author SHA1 Message Date
c7c31fb48d
Log the canonical name of plugins when starting them. 2024-02-27 00:02:30 +01:00
e58f5d2fa1
[Camera] The wait_for_either barrier should be enabled on streaming by default.
`camera.pi*` plugins are an exception, as they handle the lifecycle of
the camera streaming process through the `picamera*` libraries.

Otherwise, the streaming thread should explicitly wait on either the
plugin stop or streaming stop events and exit accordingly, or the camera
thread may be streaming indefinitely.
2024-02-26 01:28:25 +01:00
1c14450781 FIX: Remove wait_for_either barrier from the streaming thread.
The `_accept_client` logic will be executed anyway at the next
iteration, unless the server socket is closed - in that case, the thread
will fail and exit anyway.

The `wait_for_either` barrier in the streaming thread may instead
prevent other connections from being established after the first one is
closed.
2024-02-25 16:02:52 +01:00
4c92bdd11c
FIX: Handle stop_streaming exceptions in the main loop of the camera plugin.
Otherwise camera process teardown errors may bubble up and prevent the
plugin from restarting the streaming.
2024-02-24 21:36:08 +01:00
8999a226b1
[WIP] Updated documentation for camera.pi. 2024-02-24 21:16:43 +01:00
e46704010b
[WIP] Rewritten camera.pi.legacy plugin. 2024-02-24 14:07:07 +01:00
9ad9bd20e4
Added stream_on_start argument to camera plugins.
It replaces the functionalities of the deprecated `camera` backends.
2024-02-24 01:31:05 +01:00
9cf95125a6 [WIP] Added streaming support to camera.pi using new picamera2 API 2024-02-22 22:52:52 +01:00
659c33837e [WIP] Using new picamera2 module for camera.pi, and moved old picamera integration to camera.pi.legacy 2024-02-19 00:07:29 +00:00
c59446fdb1
Fixed setting of output_file on FfmpegWriter.
Also, fixed parameters passed to camera
writer objects.
2024-02-17 00:01:47 +01:00
a38ef6bc7a Workaround for possible multiple camera parameter error. 2024-02-15 00:51:04 +00:00
8f7aad2af7
google-assistant-sdk is no longer a dependency for the Google Assistant integration 2024-02-06 20:08:57 +01:00
2b595623b3
[#348] Converted gps backend into a plugin.
Closes: #348
2024-02-05 02:16:02 +01:00
c8944feca4 [#348] Merge + refactor for the mail backend/plugin (#362)
Closes: #348

Reviewed-on: platypush/platypush#362
2024-02-03 22:09:40 +01:00
746423a113 [#356] Merged adafruit.io plugin and backend. 2024-01-19 20:58:35 +00:00
eb47f9ded0 [#351] Merged google.pubsub plugin and backend.
Closes: #351
2024-01-19 02:14:49 +00:00
1323156838
Fixed google.credentials script order of arguments in the docstring. 2024-01-19 01:48:33 +01:00
6775208b2e Fixed minor docstring typo. 2024-01-18 23:31:27 +00:00
f9bd5b3abc [#350] Merge google.fit backend and plugin.
Closes: #350.
2024-01-18 23:31:27 +00:00
e3c04d9316 Fixed bullet points indentation in Google plugins docstrings. 2024-01-18 23:31:27 +00:00
e022712b7b [Google] Updated authorization flow for Google plugins.
The new authorization flow also requires the user to input a code
returned on the browser's authorization page.

Since the Google authentication libraries seem to use a simple `input()`
to read this code, things are likely to fail quite badly if Platypush is
run in non-interactive mode - e.g. through a systemd service or in a
Docker container.

Thus we need to go with Google's automatic flow only if `DISPLAY` or
`BROWSER` are set (thus the interactive flow can proceed), and throw an
`AssertionError` with the command to execute if no display/browser are
detected.
2024-01-18 23:31:27 +00:00
31de917631 [Google] Updated documentation of Google plugins.
Expanded explanation of the desktop vs. headless authentication process
and where the credential files are supposed to be copied if the user
opts for a non-automatic authentication flow.
2024-01-18 23:31:27 +00:00
998b7be7b8
[media.vlc] Always add --play-and-exit to args.
Without this option VLC seems to hang in the background, and it may
cause PulseAudio failures or memory issues after several videos have
been played - each in its own session.
2024-01-18 21:21:15 +01:00
95c15f3f5f [#347] Merge kafka backend and plugin.
Closes: #347
2024-01-18 01:28:56 +00:00
1c5956c38b
Fixed some docstring warnings. 2024-01-18 00:26:22 +01:00
85db77bb7b
[#298] Merged nextcloud backend and plugin.
Closes: #298
2024-01-18 00:26:22 +01:00
dd5bc7639b
Added disable_monitor flag to RunnablePlugin.
This is useful when users want to use a runnable plugin in a stateless
way. In some cases (for example systems with high latency or limited
quotas for API calls) the user may want to leverage the actions of a
plugin, but without running monitoring/polling logic nor generating
events.
2024-01-18 00:26:22 +01:00
e9d91471ce
[media.mplayer] Plugin rewrite.
Too many things were falling apart, and many others of MPlayer's "API
smells" had never been addressed.

The plugin has now largely been rewritten, and some workarounds (like
accessory monitoring processes) have been added to deal with the fact
that events like end-of-file aren't published by the player, and some
polling is required.
2024-01-16 00:41:01 +01:00
6fe1ed44ad
[media] Fixed base interface of media.seek and media.set_position. 2024-01-13 22:39:33 +01:00
cf314f2615
[mpv] Refactored plugin.
I hadn't paid attention to this plugin in a while and the newest mpv API
has diverged so much that it was entirely incompatible with recent mpv
versions.
2024-01-13 22:36:42 +01:00
641a2fd135
Renamed parameter of volup/voldown for music plugins.
To be consistent with all other media plugins, the parameter name should
be `step`, not `delta`.

A back-compatibility layer has however been introduced for plugins
(namely `music.mpd` and `music.spotify`) that already exposed the old
interface.
2024-01-13 22:35:18 +01:00
f0dcb94862
[pushbullet] Fixed on_error callback on the listener.
The `Listener` class from the `pushbullet.py` library is a mess, and it
has two internal functions to handle errors.
2024-01-13 13:24:47 +01:00
9fa5989e21 [#302] Merged pushbullet backend and plugin.
Also, added support for more granular Pushbullet events.

Closes: #302
2024-01-09 23:46:07 +00:00
4505c46071
[Sound] Don't override device index if it's already defined in the info. 2024-01-08 23:03:08 +01:00
3d2ee5d6bb
Replaced some new typing | notations with Union.
The `|` notation breaks on Python < 3.10.
2024-01-07 00:52:24 +01:00
edd92b8467
Fix: Ensure that components cache keys are ordered before dumping to file.
Reason: The CI/CD automation regenerates the cache file, and commits
the changes if it differs from the previous version.

The only way to ensure semantic equivalence is to sort the keys upon
dump.
2024-01-06 22:50:34 +01:00
771ecd9a5b
Fixed typo in the package name of the Github manifest. 2024-01-06 22:41:24 +01:00
6e1ab92298
New components cache management.
The cache is no longer generated at runtime when the application runs -
which may take quite a while, especially on fresh installations.

A `components.json.gz` file is instead generated by the CI/CD process on
every commit to the main branch, and distributed with the package.

The application will read this file when the `inspect` plugin is first
initialized.

This also means that we can no longer cache the `install_cmds`, as they
change depending on the target OS. A new
`application.get_install_commands` action has now been made available to
the UI, so it can get the correct installation commands at runtime.
2024-01-06 22:21:59 +01:00
ef885e096f
Added inspect.get_pkg_managers internal action.
It will be used by the UI to put together the installation commands.
2024-01-06 03:02:31 +01:00
8fd5009553
[foursquare] Proper cast to number for db variables which may be strings. 2024-01-05 02:56:10 +01:00
4aeff10a5d
[#286] Merge Foursquare backend and plugin.
Closes: #286
2024-01-01 22:54:18 +01:00
7f13e02803
Fixed docstring 2023-12-31 04:34:42 +01:00
2701f69d17
[#287] Migrated github from a backend to a runnable plugin.
Closes: #287
2023-12-30 16:28:12 +01:00
171ed7f743
[Entities UI] Better refresh logic. 2023-12-29 03:45:17 +01:00
0de322fb95
[assistant.google] Propagate plugin name as a string to events.
This also makes it easier to programmatically stop conversations on
`SpeechRecognizedEvent` with a matched phrase.
2023-12-21 00:28:27 +01:00
cfc7a5a6a0
[alarm] Added media_repeat configuration. 2023-12-18 13:46:45 +01:00
52fd64a162
[alarm] Added dismiss_interval configuration. 2023-12-18 03:01:27 +01:00
aff02e0732
[alarm] Include type='alarm' in Alarm.to_dict().
This is for compatibility with other backend/frontend components who
expect valid entities on events or responses, and hence may break if
`type` is not specified.
2023-12-18 01:13:46 +01:00
e617a9fe82
[alarm] Added alarm.delete. 2023-12-18 00:05:34 +01:00
430a111303
[alarm] Better default actions inference in alarm.edit. 2023-12-17 17:53:08 +01:00