For those of you who have not been able to use their X10 devices, the time is soon coming!
If you want to download the source code, please visit the Trac ticket page here:
http://svn.charonmedia.com/trac.cgi/ticket/8I'm not sure exactly what needs to be done to get this included in the next LinuxMCE, but I'm hoping someone in the know will see this and get the ball rolling for us.
Now for a copy and paste detailing what was fixed, and how to test the new fixes:
Here is the latest version we are calling "release ready". Please test it. We are going to try to get this into the next version, so we are calling it complete for now. However, please send any bug reports you find, as we are still going to add more to this. This is the current state:
- infamous "checksum" bug fixed
- New routines implemented to fix improper handling of reading incoming data
- Added support for updating the floorplan icons when external remotes are used
- Added Dim/Bright EVENT system into Lighting_Plugin, to include updating of floor plans here too
- Countless bugs fixed in the x10 protocol implementation
- Added support for security devices (x10 motion sensors) and security events
Need to do:
- Nosilla99a is going to find a better, more reliable way to implement IsReadEmpty() in Serial.cpp. Currently, on a fresh reboot, the floorplan will not update when an external remote is used to control an x10 device, until LinuxMCE sends a lighting command. Once this is done though, everything is smooth running. This is looking to be a bug at the kernel level.
-Need to add support to update floorplans when All_Devices_On, All_Devices_Off, and All_Units_Off functions are sent from external remotes. (these functions are normally not available on external remotes anyways)
- Add support for 2-way devices that report their status
- I'm going to thoroughly comment the source code to make it easier for people to update and follow
Also, I'd like to thank the following people, as they were all instrumental in getting this issue fixed:
Nosilla99a - Various code snippets, Checksum bug fix, serial comm stuff, and helped tremendously also by kicking around ideas and figuring out solutions
ddamron - helped out a lot as he had good knowledge of the Lighting_Plugin as he had to learn it for Insteon. Also offered great advice
tkmedia & posde - they were great beta testers and helped test the changes and iron out bugs
hari - helped me get a dev environment set up and gave useful advice
TSCHAK - the guy is a wizard, he saved me countless hours of research by helping me get things accomplished in c++ that I had no idea of how to do
Thanks everyone for the help - I'm going to go to work now on getting this submitted for the next release of LinuxMCE!
If you want to compile the latest versions, all the files needed are in the srcCM11A.tar.gz
/src/CM11A/devicepoll.cpp
/src/CM11A/devicepoll.h
/src/Lighting_Plugin/Lighting_Plugin.cpp
/src/Lighting_Plugin/Lighting_Plugin.h
/src/pluto_main/Define_EventParameters.h
/src/Serial/SerialPort.cpp
/src/Serial/SerialPort.h
To compile: (AT YOUR OWN RISK IF YOU ARE NOT SURE WHAT YOU ARE DOING)
>From CM11A directory:
make bin
sudo rm /usr/pluto/bin/CM11A
sudo cp CM11A /usr/pluto/bin/CM11A
>From Serial directory
make
sudo rm /usr/pluto/lib/libSerial.so
sudo cp libSerial.so /usr/pluto/lib/libSerial.so
>From Lighting_Plugin
make so
sudo rm /usr/pluto/bin/Lighting_Plugin.so
sudo cp Lighting_Plugin.so /usr/pluto/bin/Lighting_Plugin.so
do a force reload router and you're in business.