Here is a small contribution to the DreamScreen community with another DreamScreen Client, this time written in Java. It also comes with an optional CLI interface, a DreamScreen (HD, 4K and SideKick) Emulator and Network Debugger.
This project was born in order for me to understand the communication protocol between a DreamScreen HD and a SideKick device and be able to emulate a SideKick to grab the screen colors and forward it to a home made LED device. The emulator is still work in progress, all of the emulators so far seem to work quite well with the DreamScreen mobile app, but I'm stalled trying to figure out the communication between the DreamSceen HD device and a SideKick when grouped, as the DreamScreen is sending out some message and waiting for a reply from the SideKick device, but I'm unable to figure out what it is expecting as I don't have a real SideKick. It would be really awesome if the DreamScreen devs or somebody with a SideKick could help with this step.
Feel free to use this in your projects. Any help and contributions to the library are highly appreciated.
The SideKick emulator is finally able to subscribe to a Screen stream session. And as a bonus I also added the possibility to configure the screen sections in the Emulator right from the DreamScreen app.
The SideKick emulator now includes two easy to use functions to grab the colors from the screen. setColor -> Is the final color, with the average color of the configured screen sections as also the ambient color if in ambient mode (Represents the final LED color basically). setScreenColors -> Is a lower level function, but in it you can grab the colors of every section of the screen and use it whenever you want (Might be separate devices for example).
The best way to start using it is to have a look at the example implementation in com.robertkoszewski.dsce.emulator.variantSwingSideKickEmulator where I'm simulation a light device in a Swing window.
I'm excited to try this out with some DIY projects I have in mind. I have to say that I was very sceptical about the update performance that could be achieved event trough UDP, but after finishing this I have to say that the updates are butter smooth, the DreamScreen is really an outstanding device!!
DreamScreen dev's should really consider adding a DIY Pseudo Device to DreamScreen protocol, with selected functionality for the community. But that's just a suggestion.
Changes: - Modes are honored now properly in the SideKick emulator. (Before if you would switch to ambient mode while previously in Video mode, it would process both modes) - Basic Ambient Modes (Just a color and does not animate, can be extended to add animation though.)
I think that with this I can say that the SideKick emulator is complete unless otherwise proven.
Changes: - Added ability for the DreamScreen HD/4K Emulator to capture the screen by using the ScreenGrabber class, which can be extended to make your own color provider can be sent up to 60FPS to all your SideKick devices (Both Emulated and the real SideKicks should work with this). A default Robot class based implementation is also provided. You can test it out right away from the DSEmu command line by starting the DREAMSCREENHD emulator.