"No Implementation" error?

I’m trying to send a UPnP action through the UI from a child device (i.e. through the device properties page), but I’m getting “No Implementation” error. I’ve done this before on other plugins I’ve written (e.g. the One-Wire plugin), so I’m a little confused as to what’s going on.

The child device seems to be working ok - it’s a standard device using standard xml files, and the command is getting through into Vera. In the log, I get the correct serviceId and action name logged, but I get the error “failed with 501/No implementation”. The serviceId is exactly the same (as in I’ve cut and pasted the text) as I have in the area of the I_Device.xml file, and I have UPnP actions working with commands from the parent device (which is a custom device with a custom service file).

Is there anything else that can stop the action getting called? I’m sure I must be doing something obviously stupid as I’ve done this a number of times previously, but I just can’t get this one working.

Thanks
Chris

Ok - so I’ve now moved the same JSON “button” with the same serviceId/name action into the parent device’s static JSON, and the action gets called correctly. So, the implementation seems to be there, but it doesn’t work from the child device.

I’ve assumed that any child devices link their implementation to the parents Lua file though the I_parentdevice.XML file (unless possibly there’s an directive in the child devices D_childdevice.XML file? which there isn’t in this case). Is this a correct assumption, or is there more to it than this?

Basically, what happens under the hood when a UPnP action gets called, to find the implementation in an I_device.XML file?

Thanks
Chris

I always forget to put the deviceType field into the static JSON file. See if you have one in your child D_*.json file.

See also that your parent’s D_.xml (or is it I_.xml? I’m not near a web browser to check) has the “handle children” flag turned on. I think this is what tells the Luup engine to look in the parent’s Lua context for the function to call.

@futzle - you’re a star! It was indeed the handleChildren flag. I’d not noticed that before, and I’d obviously used a D_xml file with it already in, and didn’t this time…

Cheers
Chris