With the rash of problems I am experiencing with the macro handling, I decided that I needed to fix them once and for all. Previously a Macro was a Device, the device level giving the command to respond to (ie 100% respond to an on, or 0 to respond to an off). During the re-architecture of this area, I have removed the izza relationship with Device, and have added a hazza relationship with a Command, this command is the trigger for the Macro.
I changed the few things that referred to the Macro as a device, mostly migrating the calls to the trigger Command, and built it and run it. At runtime plcd crashed when parsing the Macro section of the configuration, it tried to get the trigger command from the factory and failed then dereferenced the null pointer. Easy to fix, but now I need to determine what it was actually trying to instantiate.