Feature #92

Z-Wave support for inclusion/ configuration

Added by j.hoekstra 4 months ago. Updated 27 days ago.

Status:Closed Start date:01/20/2012
Priority:Normal Due date:
Assignee:- % Done:

0%

Category:-
Target version:-
Resolution:

Description

After just adding a few new modules to domotiga I miss being able to include them from domotiga itself as well as setting parameters to set them up in the desired way.
Modules: FGD211 and EZMotion 3-in-1 sensor.
These modules have configurable parameters which can alter the behaviour.

(PDF)Manual for FGD211: http://materialy.fibaro.com/instrukcje/Dimmer%20FGD211%20v1_4%20eng.pdf
(PDF)Manual for EZMotion: http://downloads.ezhome.nl/en/EXP/EXP_EZM_in_en.pdf

As far as I can tell the openzwave wrapper at least has support for inclusion/exclusion which would need to be tapped into somehow.
Sending parameters to devices isn't found in documentation, so status unknown.

As a workaround LinuxMCE can be used to set parameters, or maybe even a trial version of homeseer.

History

Updated by rdnzl 4 months ago

Are you sure Manager::Get()->BeginAddNode and Manager::Get()->EndAddNode or something similar are still in the open-zwave api?
I seems it's not anymore, it was in revision 94 or so, but not in latest.
The more I look into the open-zwave project the weirder it looks... my patch for compiling on 64 bits os isn't even committed yet.
My fix was posted in May 2011... http://code.google.com/p/open-zwave/issues/detail?id=25

Updated by rdnzl 4 months ago

Are you sure Manager::Get()->BeginAddNode and Manager::Get()->EndAddNode or something similar are still in the open-zwave api?
I seems it's not anymore, it was in r94 or so, but not in latest.
The more I look into the open-zwave project the weirder it looks... my patch for compiling on 64 bits os isn't even committed yet.
My fix was posted in May 2011... http://code.google.com/p/open-zwave/issues/detail?id=25

Can you sent me some more info on how and which parameters to set for those devices, what do you select/fill in in homeseer or example?

Updated by j.hoekstra 4 months ago

As far as I can tell there's still a function to add nodes to the network, however resposibility seems to have moved to driver.cpp.
If I'm reading this correctly:

/-----------------------------------------------------------------------------
// <Manager::RefreshNodeInfo>
// Fetch the data for a node from the Z-Wave network
//-----------------------------------------------------------------------------
bool Manager::RefreshNodeInfo
(
uint32 const _homeId,
uint8 const _nodeId
) {
if( Driver* driver = GetDriver( _homeId ) ) {
// Cause the node's data to be obtained from the Z-Wave network
// in the same way as if it had just been added.
driver->AddNodeInfoRequest( _nodeId );
return true;
}

return false;
}

Points to:

//-----------------------------------------------------------------------------
// <Driver::HandleAddNodeToNetworkRequest>
// Process a request from the Z-Wave PC interface
//-----------------------------------------------------------------------------
void Driver::HandleAddNodeToNetworkRequest
(
uint8* _data
)
//Long method...

If I read it correctly the driver handles adding a node and has methodes as well for removing:
//-----------------------------------------------------------------------------
// <Driver::HandleRemoveNodeFromNetworkRequest>
// Process a request from the Z-Wave PC interface
//-----------------------------------------------------------------------------
void Driver::HandleRemoveNodeFromNetworkRequest

I don't know how it should be called however....

As a reference for setting parameters I used a VM of linuxMCE and used this as a guide:

http://wiki.linuxmce.org/index.php/Tweak_advanced_ZWave_settings

As for the open-zwave project: I'm astounded as well and it seems to repeatedly stop people from compiling succesfully on a 64bit system...

Updated by rdnzl 4 months ago

These are the one I couldn't find anymore in Manager.cpp, they are also in Driver.cpp
//-----------------------------------------------------------------------------
// Controller commands
//-----------------------------------------------------------------------------
public:
void ResetController();
void SoftReset();
void RequestNodeNeighborUpdate( uint8 _nodeId );
void AssignReturnRoute( uint8 _srcNodeId, uint8 _dstNodeId );
void BeginAddNode( bool _bHighpower = false );
void BeginAddController( bool _bHighpower = false );
void EndAddNode();
void BeginRemoveNode();
void EndRemoveNode();
void BeginReplicateController();
void EndReplicateController();
void RequestNetworkUpdate();
void ControllerChange();

Will investigate, thanks.

Updated by j.hoekstra 4 months ago

I looked in it some more, configuration parameters can be set in:
// <Manager::SetConfigParam>
// Set the value of one of the configuration parameters of a device
Which points to Driver.cpp as well:
/-----------------------------------------------------------------------------
// <Driver::SetConfigParam>
// Set the value of one of the configuration parameters of a device

After looking at the corresponding Driver.h and Manager.h files it becomes clearer, these methods are public and can be tapped in to.

Updated by rdnzl 4 months ago

I have added inclusion/exclusion support to r810, can you please test? It's called add/remove device in commander.
Not sure if removing works 100% ok, it didn't one time, but then I didn't had the Cancel controller button available to cancel any pending commands.
Will now look into adding setvalue support.

Updated by rdnzl 4 months ago

You can also set parameter values now, download and compile r811.
I also tried to get RequestAllConfigParams or GetConfigParam to work, but didn't succeed yet..
Next task is to get metering and multi-instance switching to work.

Updated by j.hoekstra 4 months ago

Somehow my database didn't get upgraded properly and by starting DomotiGa via Gambas ide produces an error about the setting polltime not being found in zwave-settings table.
I've added a field polltime with the value of 0 and type int(11), it seems to work.

Adding and removing nodes works, they get assigned a different nodenumber and all. AFAIK there“s no way to change the nodenumber, so one of my devices switfched from 2 to 6. Small price to pay ;)

Setting a parameter seems to work as well, using a FGD211 from Fibaro I can switch the dimming-level on and off and dim or switch the module as intended, no more hassle with linuxmce.

As for requesting parameters:

/**
  • \brief Request the value of a configurable parameter from a device.
  • Some devices have various parameters that can be configured to control the device behaviour.
  • These are not reported by the device over the Z-Wave network, but can usually be found in
  • the device's user manual.
  • This method requests the value of a parameter from the device, and then returns immediately,
  • without waiting for a response. If the parameter index is valid for this device, and the
  • device is awake, the value will eventually be reported via a ValueChanged notification callback.
  • The ValueID reported in the callback will have an index set the same as _param and a command class
  • set to the same value as returned by a call to Configuration::StaticGetCommandClassId.
  • \param _homeId The Home ID of the Z-Wave controller that manages the node.
  • \param _nodeId The ID of the node to configure.
  • \param _param The index of the parameter.
  • \see SetConfigParam, ValueID, Notification
    */
    void RequestConfigParam( uint32 const _homeId, uint8 const _nodeId, uint8 const _param );
/**
  • \brief Request the values of all known configurable parameters from a device.
  • \param _homeId The Home ID of the Z-Wave controller that manages the node.
  • \param _nodeId The ID of the node to configure.
  • \see SetConfigParam, ValueID, Notification
    */
    void RequestAllConfigParams( uint32 const _homeId, uint8 const _nodeId );

These methods won't return anything, to get the parameter-values you'll have to wait until it's pushed on to network(AFAICT).

I'm really happy for these additions, they make adding nodes a bit simpler in domotiga :)

Updated by rdnzl 3 months ago

One request, can you try DomotiGa r817 together with the new open-zwave wrapper and check if you EZMotion 3-in-1 sensor is reporting values to DomotiGa?
I have added support for logging Luminance, Temperature and Battery level.
Couldn't find any example for Motion, but if you enable ZWave debug log and e-mail (to keep it private) me the log I can add it I think.
Thanks!

Updated by rdnzl 27 days ago

  • Status changed from New to Closed

Also available in: Atom PDF