Hi dlb,
Welcome to the forums!
In the log you provided, I see one thing that is a potential problem (but probably isn’t) and two things that are certainly problems.
The potential problem is that the device is returning messages with a hop count of 0 in at least one response. This can mean that your device is far enough away from the PLM that you may occasionally have problems. That said, the device responds to every request that is being sent by Altsteon. So while it is a potential problem, right now it isn’t one that is causing the issues you see.
The next problem is with the engine version of the device. From the log :
[6/5/2012 - 16:54:52] - Got engine version 0.
There are three different engine versions that have existed. When the value returns 0, it is an i1 device. When it returns 1, it is an i2 device, and when it returns 2 it is an i2cs device. (i2cs devices have only been available in the last few months, so there aren’t a ton of them out there yet. Unlike the i1 devices, I have a few i2cs devices and know that they work.)
So, why is this a problem? The old i1 devices liked to use PEEKs and POKEs to get some of the information out of them. Altsteon doesn’t implement those calls because I don’t own any devices that I can test against. However, the only thing that Altsteon is using that would use PEEKs and POKEs is the ALDB. In i2 devices, there was a command introduced that dumps the ALDB directly. You can see this from one of your devices that is working with the command “aa.bb.cc dump_aldb”.
Altsteon wants to know the information in the ALDB so that it can do its own internal updates of devices. Based on how the Vera works, I am not sure that these updates are needed, rather it is leftover code from what Altsteon was originally intended to be. So, I’ll need to decide how best to handle this. I can either disable that functionality for i1 devices, or spend the time to figure out if it really breaks anything if I disable it for all devices. So, that is one of the issues you are hitting.
The other issue you are hitting is a genuine bug. (In my code? Say it ain’t so Joe!
For some reason, the daemon believes that it should treat your i1 device as an i2cs device. This is probably what is creating all of the non-response issues you are seeing. In a nutshell, with Insteon there are two different lengths of commands. The SD and the ED commands. (Though there are variations on those for things like broadcast, but that isn’t important for this discussion.) With i2cs devices, some commands that were previously SD commands have become ED commands with a checksum at the end. (The checksum is the ‘cs’ in ‘i2cs’.
As a result, your i1 devices are being sent commands that they have no idea how to handle. So, they will usually discard the commands and just not respond. Altsteon handles this by putting the command back at the end of the queue and trying again later. (It is a vicious cycle at that point.)
So, by far, the most important question of this e-mail is, “What can I do to make it work?” Unfortunately, the answer is “Nothing but wait.” I’ll put these issues high on my bug list and try to get them fixed an in a release within the next month, but I promise nothing. (I had a big load dropped on me at work yesterday, so some of my Altsteon time will likely go to getting the work done so the product can ship.)
For completeness sake, let me address the “DevCat FF” complaint you saw. It really isn’t intended to be a complaint, as much as it is an informational message to help me in debugging. When Altsteon gets an “add_device” command it can be just an address, or an address followed by the DevCat and SubCat numbers. (In the case of wireless devices like the 2420M, you have to include the DevCat and SubCat numbers because the device can’t be polled.) When the command comes in, Altsteon creates an internal representation of the device, and assigns it some default values. One of the defaults is that the DevCat and SubCat both are set to FF, which is an invalid Insteon DevCat and SubCat. When Altsteon’s work loop comes around to a device that has this invalid setting, it stuffs a command in the devices command queue that is used to go out and ask for those values. Those values are then used internally to know which commands can be sent to which devices. Once Altsteon gets an answer, it adjusts how the in-memory representation looks so that it is now aware of commands that are valid for the device. As an example, if the DevCat is showing FF, and you manage to get a command like “aa.bb.cc get_devopts” in the queue before the command to determine what the device is, you will get an error that the command is invalid. In reality, you may know the command is perfectly valid, but Altsteon doesn’t know that until it has figured out what type of device it is. When the DevCat is FF, there is just a tiny subset of commands that will work. Most of the commands are used to figure out what the device is.