So how does the bidirectional stuff work? I understand the concept as it relates to a thermostat: if you change the temperature locally, the controller knows it (right?) But what about a lamp? If I hit the (local) switch on the lamp, the controller I guess knows it's off, but it can't turn it on again, right?
If you switch the 'normal' switch on a table lamp to off then the z-wave can know there is no load on the z-wave appliance controller and therefore sense the light is 'off'. However z-wave cannot change the state of this physical switch to 'on'.
In a z-wave installation where we have installed z-wave enabled wall switches that replace the old mechanical switches (ie light switch next to the door of a room) then we have the ability to remotely change the state of that switch to 'on' or 'off' or to a 'level' and the system can get continuous state information from all the switches in the z-wave network as to there state and then this state can be reflected by LinuxMCE in the floor plan for example.
The same basic 'state' information can be fed back from PIR's, window open/close sensors, door open/close sensors, floor pressure sensors etc etc.