Open
Conversation
(TL;DR: use Lunatone's DALI Cockpit SW to talk to your python-dali using
an emulated protocol.)
My USB-to-DALI interface is connected to a tiny headless Pi Zero, which
is running some Python code (built on top of python-dali) for stuff like
circadian color temperature control, automatic blinds, automatic light
based on movement, etc. This all works well, but every now and then I
have a need to run Lunatone's DALI Cockpit to perform some changes in my
devices' configuration.
That's a Windows application, so I would usually fire up a VM with
Windows and the DALI Cockpit, stop my automation, and then use usb-ip to
export the USB device over network from my embedded server, e.g.:
ssh root@private.example.org systemctl restart usbip-bind@17b5\:0020.service
...then import that at my desktop, e.g.:
usbip attach -r private.example.org -b $(usbip list -p -r private.example.org | grep 17b5:0020 | cut '-d:' -f1 | awk '{print $1}')
...and finally attach that to the VM:
echo "<hostdev mode='subsystem' type='usb' managed='yes'><source><vendor id='0x17b5'/><product id='0x0020'/></source><address type='usb' bus='0' port='3'/></hostdev>" | virsh attach-device win10 /dev/stdin
That works, but it's a pain, and the automatic lights at the WC won't
react to movement, and it's not great if it's dark in there.
So I got fed up and wrote this tiny emulator of the Lunatone DALI-2 IoT
Gateway. The idea is that you can run this on the Linux machine which
has the USB-to-DALI interface already connected, and you can let your
Windows VM connect to that over IP, using the device's emulated
Websocket entry point. It's possible to run this either as a standalone
application, or you can simply put it into your application code.
Owner
|
I'm happy to take this, but I think it should be in I've pushed an update to the CI configuration that removes Python 3.7 and adds Python 3.12 — maybe move the file and rebase on that so the tests don't fail? |
Contributor
Author
I tend to agree, but then files below Is there a solution to that? If not, I'll respin this patch targeting |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I wrote a small emulator which enables Lunatone's Windows GUI, the DALI Cockpit SW, to talk to an app which uses
python-dali. As was suggested in #139, let's move this into upstream's git. Also, my goal is to make this usable from my application, so putting stuff intoexamples/(which is not packaged by default) wouldn't help me much. Let's stick this right belowdali/unless there's some better place.My USB-to-DALI interface is connected to a tiny headless Pi Zero, which is running some Python code (built on top of python-dali) for stuff like circadian color temperature control, automatic blinds, automatic light based on movement, etc. This all works well, but every now and then I have a need to run Lunatone's DALI Cockpit to perform some changes in my devices' configuration.
That's a Windows application, so I would usually fire up a VM with Windows and the DALI Cockpit, stop my automation, and then use usb-ip to export the USB device over network from my embedded server, e.g.:
...then import that at my desktop, e.g.:
...and finally attach that to the VM:
That works, but it's a pain, and the automatic lights at the WC won't react to movement, and it's not great if it's dark in there.
So I got fed up and wrote this tiny emulator of the Lunatone DALI-2 IoT Gateway. The idea is that you can run this on the Linux machine which has the USB-to-DALI interface already connected, and you can let your Windows VM connect to that over IP, using the device's emulated Websocket entry point. It's possible to run this either as a standalone application, or you can simply put it into your application code.