Start at the temple of the ancient Mother Goddess, then walk past rock-cut shrines made by her devotees. See a cave in which a group was put under a spell and slept for centuries. End at this Korinthian port city with its markets and many temples. #travel#historyhttps://cromwell-intl.com/travel/turkey/ephesus/walk.html?s=mc
At a certain point in time your stuff is geeky high-tech, the next moment you walk into the „early telecommunications“ exhibition in a museum and there‘s your old mobile phone. 😆
(Museo nazionale della scienza e della tecnologia Leonardo da Vinci, Milano) #tech#history#retrocomputing
The past few months have been quite hectic and I have nearly rewritten the whole codebase, but I feel like the software is now at a stage where it’s mature and stable enough to be used by a larger audience.
The changelog is quite big, but it doesn’t even cover all the changes, as many integrations have been completely rewritten.
The biggest (breaking) change is the merge between plugins and backends. Now, except for those integrations that actually listen for messages and execute them (like HTTP and Redis), all the other integrations are plugins. This greatly simplifies the configuration and removes a lot of confusion for new users.
The Docker support has been greatly improved too. There are now officially supported multi-arch images for Alpine, Debian, Ubuntu and Fedora, an official docker-compose.yml file, and both the platydock and platyvenv utilities have been almost completely rewritten to seamlessly automate the creation and configuration of containers and virtual environments (respectively) starting from a single config.yaml.
And the Python API has become much simpler and consistent. No more __init__.py files that the user had to manually create in each subfolder of scripts, just drop a .py file with your automation in the scripts dir and it’ll be picked up. Moreover, the most common imports are now available on top level as well, and there’s no more need to create procedures/hooks/crons with varargs:
from platypush import run, when
from platypush.events.sun import SunsetEvent
@when(SunsetEvent)
def sunset_lights_on():
run('light.hue.on')
There’s also a revamped documentation portal, which now includes both the wiki and the plugin reference.
Most of the integrations have been rewritten at different degrees, and in the process many bugs have been squashed, many features added and many APIs updated to be more consistent, so make sure to check the documentation pages of your integrations in order to migrate.