OpenZWave / python-openzwave

Python wrapper for openzwave
Other
200 stars 141 forks source link

Discussion for libopenzwave redesign based on pybind11 #59

Closed NotTheEvilOne closed 3 years ago

NotTheEvilOne commented 7 years ago

Hi folks,

I would like to start a discussion about a rework of the libopenzwave integration based on pybind11 which I started as a experiment on this branch.

Main advantages I see so far are:

Disadvantages:

I would like to continue contributing changes for the Home Assistant project based on ArchLinux AUR. Therefore a dynamic linking build including the possibility to use "make DESTDIR=.. install" would be required to create packages. Furthermore maintenance is easier if a platform /usr/lib/libopenzwave.so can be used with /etc/openzwave no matter if C++ or the Python integration is used and build. This was somehow added as DEBIAN_PACKAGE before.

There are currently a number of open issues like broken src-api implementation which I continue to fix while this discussion takes place.

I would highly appreciate your input about the route taken and if the upstream project would be interested in taking advantage of these changes.

bibi21000 commented 7 years ago

Hi folks,

Hi

I would like to start a discussion about a rework of the libopenzwave integration based on pybind11 which I started as a experiment on this branch.

I'm Ok with that. Cython causes a lot of troubles. I've look at cffi in the past but need a lot of work ...

Main advantages I see so far are:

Significantly smaller code base required for the C++ integration (1885 to 5534 lines). Added functionality for openzwave structs (like Driver and Node statistics) Replaced magic numbers with there enum equivalents Fixes to some Manager methods like underlining the meaning of "getValueListSelectionItem" and "getValueListSelectionValue" as well as getValueList equivalents. Fixes for some bugs like destroy methods not being static or create singleton methods hidden behind a Python constructor Minimal breakage (but major version update would be needed) of existing API accessing libopenzwave directly

Keep in mind that some Home automation projects use the api (home-assistant, jeedom) but other the lib (domogik). It should be nice to minimize the update process for all. And of course document it. Disadvantages:

C++11 is required but should be available on all current platforms by now anyway Actually supported plateforms are Ubuntu (and others linuxes), OSX, Windows and raspberry under python 2.7 and python3. Code relying on somehow broken libopenzwave PyManager and PyOptions constructors (which are not underlining the underlying singleton implementation) are doomed and would need changes including the class names being changed. This can be discussed of course. enums are not iteratable. openzwave must redefine them as dicts or classes if needed I would like to continue contributing changes for the Home Assistant project based on ArchLinux AUR. Therefore a dynamic linking build including the possibility to use "make DESTDIR=.. install" would be required to create packages. Furthermore maintenance is easier if a platform /usr/lib/libopenzwave.so can be used with /etc/openzwave no matter if C++ or the Python integration is used and build. This was somehow added as DEBIAN_PACKAGE before. But there is a problem with cython, what about pybind :https://github.com/OpenZWave/python-openzwave/issues/54

There are currently a number of open issues like broken src-api implementation which I continue to fix while this discussion takes place.

I would highly appreciate your input about the route taken and if the upstream project would be interested in taking advantage of these changes.

As mentioned before, cython causes me a lot of trouble so it should be a good thing to remove it. But python-openzwave is used in a lot of project (about 1700 unique cloners for 15 days in github statistics), so there will be a lot of people impacted with these modifications on many plateforms. There is a testsuite in python-openzwave (look at makefile), it can be helpfull An other point : cython can create a cpp file that can be embeded in the archive with the static lib (.la). Can pybind do the same. This is really usefull on a raspberry (divide installation process by 5)

NotTheEvilOne commented 7 years ago

But there is a problem with cython, what about pybind :#54

I have not seen this issue with pybind11.

There is a testsuite in python-openzwave (look at makefile), it can be helpfull

Good to know. I tried to get PyOzwWeb running over the last few days (and found an issue with callbacks in that process) but now I'm stuck. The code is executed successfully but everything on the interface just prints "unknown". I need to have a deeper look here I guess.

Btw.: It seems that pydispatch is basically abandoned. Any favorites? Otherwise I would just add a simple callback handler myself.

An other point : cython can create a cpp file that can be embeded in the archive with the static lib (.la). Can pybind do the same. This is really usefull on a raspberry (divide installation process by 5)

I'm not sure if I got this question right. Right now libopenzwave can be compiled dynamically linked or statically based on the openzwave git version. As there is no pyx code at all no cpp file is generated on the fly.

bibi21000 commented 7 years ago

But there is a problem with cython, what about pybind :#54 I have not seen this issue with pybind11.

Did you try on python 2.7 and 3 ?

There is a testsuite in python-openzwave (look at makefile), it can be helpfull Good to know. I tried to get PyOzwWeb running over the last few days (and found an issue with >callbacks in that process) but now I'm stuck. The code is executed successfully but everything on the >interface just prints "unknown". I need to have a deeper look here I guess.

The web app is just an example. There is a problem when starting flask in debug mode : it starts twice and some times try to instanciate 2 managers So you can leave it at broken state. If someone use it, he can help. The command line manager is mandatory and it allows you to tests all commands on your network

Btw.: It seems that pydispatch is basically abandoned. Any favorites? Otherwise I would just add a simple callback handler myself.

This choice was made for home-assistant in the past. I prefer using a third party one.

An other point : cython can create a cpp file that can be embeded in the archive with the static lib (.la). >>Can pybind do the same. This is really usefull on a raspberry (divide installation process by 5) I'm not sure if I got this question right. Right now libopenzwave can be compiled dynamically linked or >statically based on the openzwave git version. As there is no pyx code at all no cpp file is generated on >the fly.

In the archive files (/archives), there is a copy of the cpp generated by cython. This allows installation without installing cython. At first, this was an optimisation of the building process for tiny machines (ie raspberry). This can take more than one hour, and cython take a lot of this time. Maybe pybind is faster. I'll try it in the next week. I've take a look in your branch and I've been impressed by the quality of your code. It's not the most common case on github ;) What os do you use ? On what kind of computer can you make tests ? I can make tests on ubuntu 16.04 and raspberry in some weeks. Sorry for my english ;)

NotTheEvilOne commented 7 years ago

Did you try on python 2.7 and 3 ?

First I didn't but that changed today. Works for me on 2.7 and 3.

The command line manager is mandatory and it allows you to tests all commands on your network

Ok, got that working today and fixed a bunch of issues with unittests. But something strange happens with my Z-Wave.Me UZB USB stick: It seems to get disconnected after running test_controller.py. Running most of the tests standalone works as expected.

What os do you use ? On what kind of computer can you make tests ?

I have ArchLinux on x86_64 here to test. Compilation time is fine but of course it's not comparable to a raspberry anyway.

I got homeassistant working after changing the initialisation.

I guess that would be the main reason to add an openzwave specific dispatcher by the way. It allows you to abstract from whatever other projects use for their event delivery. I do have some strange issues like "ValueError: is not a recognized temperature unit." and " File "/opt/homeassistant/.local/lib/python3.5/site-packages/homeassistant/components/climate/zwave.py", line 152, in update_properties round((float(self._current_temperature)), 1)) TypeError: float() argument must be a string or a number, not 'NoneType'" with it.

Transitioning to the incompatible version was easy and I was even able to add most code to be backwards compatible. I guess I will clean up the homeassistant code base and add another branch for experiments to my github account ...

NotTheEvilOne commented 7 years ago

Hi,

Just wanted to let you know that I now forked (and pushed the changes to) the homeassistant code base as mentioned before.

Have you found some time to review/test/comment the changes proposed?

robbiet480 commented 7 years ago

@NotTheEvilOne Just noticed your comment about making the Home Assistant changes, please submit these as a PR to us, they look great!!!

As for the rest of this conversation, we at Home Assistant are trying to cut down the long install time necessary for building open-zwave as well as python-openzwave, at least in our Raspberry Pi images to start (which are based on Raspbian Jessie). Currently, we are looking at ways to precompile everything into a standard image that can be used on an SD card. We expect to start generating builds much more frequently.

However, we would absolutely prefer to have a stable .deb that doesn't require such an intense compilation process, along with a more stable python-openzwave. We can help contribute resources (developers with time) to accomplish this project, just give us a direction and we can get going.

Thanks for your work so far @NotTheEvilOne and your thoughts (and this great library!) @bibi21000!

NotTheEvilOne commented 7 years ago

Hi @robbiet480. Thanks for your feedback. I'm not sure (and this discussion might get off-topic unfortunately) if the changes of the library are final yet. The HA changes are just an example to illustrate some of the changes needed. I just activated the issues functionality from github for my forked python-openzwave repository. I'll open another issue there to continue the discussion.

I additionally opened some other issues there to start discussions about changes I would like to merge back once they are complete and if you agree @bibi21000.

bibi21000 commented 7 years ago

Hi, I've made some tests with your code, look at the end of the message to get the console output. Some tests fails because of the script themself. So I've made some updates on the repository to fix some of them. Could you please resync your repositiory and post the "make venv-tests" console output ? Could you also add some infos about your zwave controller and nodes ?

I've got some questions :

The following tests were made using an aeotec usb z-stick and a greenwave multi-switch.

The tests with the cython version :

python-openzwave$ make venv-tests make PYTHON_EXEC=venv2/bin/python install >/dev/null make PYTHON_EXEC=venv3/bin/python install >/dev/null Files installed in venv make PYTHON_EXEC=venv2/bin/python NOSE_EXEC=venv2/bin/nosetests tests make[1] : on entre dans le répertoire « /home/sebastien/devel/python-openzwave »

export NOSESKIP=False && venv2/bin/nosetests --verbosity=2 tests/ --with-progressive; unset NOSESKIP

export NOSESKIP=False && venv2/bin/nosetests --verbosity=2 tests/lib tests/api tests/manager ; unset NOSESKIP test_000_init (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit) ... ok test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit) ... ok test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_string (tests.lib.autobuild.test_lib.TestOptions) ... ok test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions) ... ok test_030_options_int (tests.lib.autobuild.test_lib.TestOptions) ... ok test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions) ... ok test_100_start (tests.lib.test_driver.TestDriver) ... ok test_100_controller_name (tests.lib.test_node.TestNode) ... ok test_101_controller_name_accent (tests.lib.test_node.TestNode) ... ERROR test_000_api_network (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_900_api_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_905_network_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_010_battery_item (tests.api.test_battery.TestBattery) ... ok test_010_controller (tests.api.test_controller.TestController) ... ok test_020_controller_capabilities (tests.api.test_controller.TestController) ... ok test_030_controller_send_queue (tests.api.test_controller.TestController) ... ok test_040_controller_stats (tests.api.test_controller.TestController) ... ok test_110_controller_soft_reset (tests.api.test_controller.TestController) ... ok test_310_controller_node (tests.api.test_controller.TestController) ... ok test_320_controller_node_capabilities (tests.api.test_controller.TestController) ... ok test_330_controller_node_neighbors (tests.api.test_controller.TestController) ... ok test_340_controller_node_baud_rate (tests.api.test_controller.TestController) ... ok test_410_controller_node_product (tests.api.test_controller.TestController) ... ok test_420_controller_node_name (tests.api.test_controller.TestController) ... ok test_430_controller_node_product_location (tests.api.test_controller.TestController) ... ok test_440_controller_node_product_name (tests.api.test_controller.TestController) ... ok test_510_controller_node_group (tests.api.test_controller.TestController) ... ok test_610_controller_node_command_class (tests.api.test_controller.TestController) ... ok test_710_controller_node_manufacturer_name (tests.api.test_controller.TestController) ... ok test_760_controller_stats_label (tests.api.test_controller.TestController) ... ok test_810_controller_node_values (tests.api.test_controller.TestController) ... ok test_820_controller_node_generic (tests.api.test_controller.TestController) ... ok test_830_controller_node_refresh (tests.api.test_controller.TestController) ... ok test_910_controller_stats_poll (tests.api.test_controller.TestController) ... ok test_005_request_controller_status (tests.api.test_controller_command.TestControllerCommand) ... ok test_010_command_send_node_information_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_015_command_send_node_information_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_020_command_request_node_neighbor_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... SKIP: Work in progress test_025_command_request_node_neighbor_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_030_command_request_network_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_035_command_request_network_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_040_command_delete_all_return_routes_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_045_command_delete_all_return_routes_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_050_command_assign_return_route_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_055_command_assign_return_route_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_060_command_has_node_failed_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_070_command_remove_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_080_command_replace_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_100_command_add_node_secure_off_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_110_command_add_node_secure_on_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_150_command_remove_node_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_200_command_create_new_primary (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_010_dimmer_level (tests.api.test_dimmer.TestDimmer) ... ok test_110_dimmer_on_off (tests.api.test_dimmer.TestDimmer) ... ok test_000_network_awake (tests.api.test_network.TestNetwork) ... ok test_010_network_ready (tests.api.test_network.TestNetwork) ... ok test_100_network_test (tests.api.test_network.TestNetwork) ... ok test_110_network_heal (tests.api.test_network.TestNetwork) ... ok test_120_network_poll (tests.api.test_network.TestNetwork) ... ok test_200_network_to_dict (tests.api.test_network.TestNetwork) ... ok test_220_network_nodes_to_dict (tests.api.test_network.TestNetwork) ... ok test_300_network_kvals_nodes (tests.api.test_network.TestNetwork) ... ok test_310_network_kvals_controller (tests.api.test_network.TestNetwork) ... ok test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ok test_010_network_start_stop_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ok test_100_network_start_stop_singleton (tests.api.test_network_start.TestNetworkStartStop) ... SKIP: Work in progress test_020_node_capabilities (tests.api.test_node.TestNode) ... ok test_310_node (tests.api.test_node.TestNode) ... ok test_330_node_neighbors (tests.api.test_node.TestNode) ... ok test_340_node_baud_rate (tests.api.test_node.TestNode) ... ok test_410_node_product (tests.api.test_node.TestNode) ... ok test_420_node_name (tests.api.test_node.TestNode) ... ok test_421_node_name_accent (tests.api.test_node.TestNode) ... ok test_430_node_location (tests.api.test_node.TestNode) ... ok test_431_node_location_accent (tests.api.test_node.TestNode) ... ok test_440_node_product_name (tests.api.test_node.TestNode) ... ok test_441_node_product_name_accent (tests.api.test_node.TestNode) ... ok test_450_node_manufacturer_name (tests.api.test_node.TestNode) ... ok test_451_node_manufacturer_name_accent (tests.api.test_node.TestNode) ... ok test_510_node_group (tests.api.test_node.TestNode) ... ok test_520_node_group_associations (tests.api.test_node.TestNode) ... ok test_530_node_group_associations_instances (tests.api.test_node.TestNode) ... ok test_550_request_all_config_params (tests.api.test_node.TestNode) ... ok test_580_node_command_class (tests.api.test_node.TestNode) ... ok test_610_node_is_awake (tests.api.test_node.TestNode) ... ok test_615_node_is_ready (tests.api.test_node.TestNode) ... ok test_620_node_is_failed (tests.api.test_node.TestNode) ... ok test_625_node_is_zwave_plus (tests.api.test_node.TestNode) ... ok test_630_node_is_info_received (tests.api.test_node.TestNode) ... ok test_680_node_query_stage (tests.api.test_node.TestNode) ... ok test_690_node_type (tests.api.test_node.TestNode) ... ok test_691_node_device_type (tests.api.test_node.TestNode) ... ok test_692_node_role (tests.api.test_node.TestNode) ... ok test_710_node_test (tests.api.test_node.TestNode) ... ok test_720_node_heal (tests.api.test_node.TestNode) ... ok test_730_node_assign_return_route (tests.api.test_node.TestNode) ... ok test_740_node_refresh_info (tests.api.test_node.TestNode) ... ok test_745_node_send_information (tests.api.test_node.TestNode) ... ok test_750_node_network_update (tests.api.test_node.TestNode) ... ok test_760_node_neighbor_update (tests.api.test_node.TestNode) ... ok test_770_node_request_state (tests.api.test_node.TestNode) ... ok test_810_node_values (tests.api.test_node.TestNode) ... ok test_000_nodes_count (tests.api.test_nodes.TestNodes) ... ok test_100_nodes_test (tests.api.test_nodes.TestNodes) ... ok test_110_nodes_heal (tests.api.test_nodes.TestNodes) ... ok test_200_nodes_to_dict (tests.api.test_nodes.TestNodes) ... ok test_210_controller_to_dict (tests.api.test_nodes.TestNodes) ... ok test_220_nodes_groups_to_dict (tests.api.test_nodes.TestNodes) ... ok test_010_protection_item (tests.api.test_protection.TestProtection) ... ok test_020_protection_set_item_no_operation (tests.api.test_protection.TestProtection) ... ok test_030_protection_set_item_unprotected (tests.api.test_protection.TestProtection) ... ok test_050_protection_items (tests.api.test_protection.TestProtection) ... ok test_005_scene_add_remove (tests.api.test_scene.TestScene) ... ok test_010_scenes_to_dict (tests.api.test_scene.TestScene) ... ok test_020_scene_to_dict (tests.api.test_scene.TestScene) ... ok test_010_sensor_bool (tests.api.test_sensor.TestSensor) ... ok test_110_sensor_byte (tests.api.test_sensor.TestSensor) ... ok test_210_sensor_short (tests.api.test_sensor.TestSensor) ... ok test_310_sensor_int (tests.api.test_sensor.TestSensor) ... ok test_410_sensor_decimal (tests.api.test_sensor.TestSensor) ... ok test_510_sensor_label (tests.api.test_sensor.TestSensor) ... ok test_010_switch_state (tests.api.test_switch.TestSwitch) ... ok test_020_switch_rgb_state (tests.api.test_switch.TestSwitch) ... ok test_110_switch_on_off (tests.api.test_switch.TestSwitch) ... ok test_120_switch_rgbbulbs (tests.api.test_switch.TestSwitch) ... ok test_010_switch_all_item (tests.api.test_switch_all.TestSwitchAll) ... ok test_015_switch_all_set_item (tests.api.test_switch_all.TestSwitchAll) ... ok test_020_switch_all_items (tests.api.test_switch_all.TestSwitchAll) ... ok test_110_switch_all_on (tests.api.test_switch_all.TestSwitchAll) ... FAIL test_120_switch_all_off (tests.api.test_switch_all.TestSwitchAll) ... ok test_200_values_to_dict (tests.api.test_value.TestValue) ... ok test_210_values_check_data (tests.api.test_value.TestValue) ... ok test_000_import (tests.manager.autobuild.test_manager.ManagerTest) ... ok

====================================================================== ERROR: test_101_controller_name_accent (tests.lib.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/lib/test_node.py", line 67, in test_101_controller_name_accent oldname = self.manager.getNodeName(self.homeid, 1) File "src-lib/libopenzwave/libopenzwave.pyx", line 2200, in libopenzwave.PyManager.getNodeName (src-lib/libopenzwave/libopenzwave.cpp:17777) cdef string c_string = self.manager.GetNodeName(homeid, nodeid) TypeError: an integer is required

====================================================================== FAIL: test_110_switch_all_on (tests.api.test_switch_all.TestSwitchAll)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/api/test_switch_all.py", line 107, in test_110_switch_all_on self.assertTrue(self.active_nodes[node].get_switch_all_state(val)) AssertionError: False is not true -------------------- >> begin captured stdout << --------------------- active nodes : {1: <openzwave.node.ZWaveNode object at 0x7f09ac1b9510>, 4: <openzwave.node.ZWaveNode object at 0x7f09ac1b9810>} Node/State : 4/False

--------------------- >> end captured stdout << ----------------------


Ran 135 tests in 640.182s

FAILED (SKIP=6, errors=1, failures=1)

Tests for ZWave network finished. make[1] : on quitte le répertoire « /home/sebastien/devel/python-openzwave » make PYTHON_EXEC=venv3/bin/python NOSE_EXEC=venv3/bin/nosetests tests make[1] : on entre dans le répertoire « /home/sebastien/devel/python-openzwave »

export NOSESKIP=False && venv3/bin/nosetests --verbosity=2 tests/ --with-progressive; unset NOSESKIP

export NOSESKIP=False && venv3/bin/nosetests --verbosity=2 tests/lib tests/api tests/manager ; unset NOSESKIP test_000_init (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit) ... ok test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit) ... ok test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_string (tests.lib.autobuild.test_lib.TestOptions) ... ok test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions) ... ok test_030_options_int (tests.lib.autobuild.test_lib.TestOptions) ... ok test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions) ... ok test_100_start (tests.lib.test_driver.TestDriver) ... ok test_100_controller_name (tests.lib.test_node.TestNode) ... ok test_101_controller_name_accent (tests.lib.test_node.TestNode) ... ERROR test_000_api_network (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_900_api_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... SKIP: Skip on Python 3 test_905_network_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... SKIP: Skip on Python 3 test_010_battery_item (tests.api.test_battery.TestBattery) ... ok test_010_controller (tests.api.test_controller.TestController) ... ok test_020_controller_capabilities (tests.api.test_controller.TestController) ... ok test_030_controller_send_queue (tests.api.test_controller.TestController) ... ok test_040_controller_stats (tests.api.test_controller.TestController) ... ok test_110_controller_soft_reset (tests.api.test_controller.TestController) ... ok test_310_controller_node (tests.api.test_controller.TestController) ... ok test_320_controller_node_capabilities (tests.api.test_controller.TestController) ... ok test_330_controller_node_neighbors (tests.api.test_controller.TestController) ... ok test_340_controller_node_baud_rate (tests.api.test_controller.TestController) ... ok test_410_controller_node_product (tests.api.test_controller.TestController) ... ok test_420_controller_node_name (tests.api.test_controller.TestController) ... ok test_430_controller_node_product_location (tests.api.test_controller.TestController) ... ok test_440_controller_node_product_name (tests.api.test_controller.TestController) ... ok test_510_controller_node_group (tests.api.test_controller.TestController) ... ok test_610_controller_node_command_class (tests.api.test_controller.TestController) ... ok test_710_controller_node_manufacturer_name (tests.api.test_controller.TestController) ... ok test_760_controller_stats_label (tests.api.test_controller.TestController) ... ok test_810_controller_node_values (tests.api.test_controller.TestController) ... ok test_820_controller_node_generic (tests.api.test_controller.TestController) ... ok test_830_controller_node_refresh (tests.api.test_controller.TestController) ... ok test_910_controller_stats_poll (tests.api.test_controller.TestController) ... ok test_005_request_controller_status (tests.api.test_controller_command.TestControllerCommand) ... ok test_010_command_send_node_information_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_015_command_send_node_information_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_020_command_request_node_neighbor_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... SKIP: Work in progress test_025_command_request_node_neighbor_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_030_command_request_network_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_035_command_request_network_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_040_command_delete_all_return_routes_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_045_command_delete_all_return_routes_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_050_command_assign_return_route_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_055_command_assign_return_route_controller (tests.api.test_controller_command.TestControllerCommand) ... ok test_060_command_has_node_failed_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_070_command_remove_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_080_command_replace_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ok test_100_command_add_node_secure_off_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_110_command_add_node_secure_on_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_150_command_remove_node_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_200_command_create_new_primary (tests.api.test_controller_command.TestControllerCommand) ... SKIP: manual test () test_010_dimmer_level (tests.api.test_dimmer.TestDimmer) ... ok test_110_dimmer_on_off (tests.api.test_dimmer.TestDimmer) ... ok test_000_network_awake (tests.api.test_network.TestNetwork) ... ok test_010_network_ready (tests.api.test_network.TestNetwork) ... ok test_100_network_test (tests.api.test_network.TestNetwork) ... ok test_110_network_heal (tests.api.test_network.TestNetwork) ... ok test_120_network_poll (tests.api.test_network.TestNetwork) ... ok test_200_network_to_dict (tests.api.test_network.TestNetwork) ... ok test_220_network_nodes_to_dict (tests.api.test_network.TestNetwork) ... ok test_300_network_kvals_nodes (tests.api.test_network.TestNetwork) ... ok test_310_network_kvals_controller (tests.api.test_network.TestNetwork) ... ok test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ok test_010_network_start_stop_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ok test_100_network_start_stop_singleton (tests.api.test_network_start.TestNetworkStartStop) ... SKIP: Work in progress test_020_node_capabilities (tests.api.test_node.TestNode) ... ok test_310_node (tests.api.test_node.TestNode) ... ok test_330_node_neighbors (tests.api.test_node.TestNode) ... ok test_340_node_baud_rate (tests.api.test_node.TestNode) ... ok test_410_node_product (tests.api.test_node.TestNode) ... ok test_420_node_name (tests.api.test_node.TestNode) ... ok test_421_node_name_accent (tests.api.test_node.TestNode) ... ok test_430_node_location (tests.api.test_node.TestNode) ... ok test_431_node_location_accent (tests.api.test_node.TestNode) ... ok test_440_node_product_name (tests.api.test_node.TestNode) ... ok test_441_node_product_name_accent (tests.api.test_node.TestNode) ... ok test_450_node_manufacturer_name (tests.api.test_node.TestNode) ... ok test_451_node_manufacturer_name_accent (tests.api.test_node.TestNode) ... ok test_510_node_group (tests.api.test_node.TestNode) ... ok test_520_node_group_associations (tests.api.test_node.TestNode) ... ok test_530_node_group_associations_instances (tests.api.test_node.TestNode) ... ok test_550_request_all_config_params (tests.api.test_node.TestNode) ... ok test_580_node_command_class (tests.api.test_node.TestNode) ... ok test_610_node_is_awake (tests.api.test_node.TestNode) ... ok test_615_node_is_ready (tests.api.test_node.TestNode) ... ok test_620_node_is_failed (tests.api.test_node.TestNode) ... ok test_625_node_is_zwave_plus (tests.api.test_node.TestNode) ... ok test_630_node_is_info_received (tests.api.test_node.TestNode) ... ok test_680_node_query_stage (tests.api.test_node.TestNode) ... ok test_690_node_type (tests.api.test_node.TestNode) ... ok test_691_node_device_type (tests.api.test_node.TestNode) ... ok test_692_node_role (tests.api.test_node.TestNode) ... ok test_710_node_test (tests.api.test_node.TestNode) ... ok test_720_node_heal (tests.api.test_node.TestNode) ... ok test_730_node_assign_return_route (tests.api.test_node.TestNode) ... ok test_740_node_refresh_info (tests.api.test_node.TestNode) ... ok test_745_node_send_information (tests.api.test_node.TestNode) ... ok test_750_node_network_update (tests.api.test_node.TestNode) ... ok test_760_node_neighbor_update (tests.api.test_node.TestNode) ... ok test_770_node_request_state (tests.api.test_node.TestNode) ... ok test_810_node_values (tests.api.test_node.TestNode) ... ok test_000_nodes_count (tests.api.test_nodes.TestNodes) ... ok test_100_nodes_test (tests.api.test_nodes.TestNodes) ... ok test_110_nodes_heal (tests.api.test_nodes.TestNodes) ... ok test_200_nodes_to_dict (tests.api.test_nodes.TestNodes) ... ok test_210_controller_to_dict (tests.api.test_nodes.TestNodes) ... ok test_220_nodes_groups_to_dict (tests.api.test_nodes.TestNodes) ... ok test_010_protection_item (tests.api.test_protection.TestProtection) ... ok test_020_protection_set_item_no_operation (tests.api.test_protection.TestProtection) ... ERROR test_030_protection_set_item_unprotected (tests.api.test_protection.TestProtection) ... ERROR test_050_protection_items (tests.api.test_protection.TestProtection) ... ok test_005_scene_add_remove (tests.api.test_scene.TestScene) ... ok test_010_scenes_to_dict (tests.api.test_scene.TestScene) ... ok test_020_scene_to_dict (tests.api.test_scene.TestScene) ... ok test_010_sensor_bool (tests.api.test_sensor.TestSensor) ... ok test_110_sensor_byte (tests.api.test_sensor.TestSensor) ... ok test_210_sensor_short (tests.api.test_sensor.TestSensor) ... ok test_310_sensor_int (tests.api.test_sensor.TestSensor) ... ok test_410_sensor_decimal (tests.api.test_sensor.TestSensor) ... ok test_510_sensor_label (tests.api.test_sensor.TestSensor) ... ok test_010_switch_state (tests.api.test_switch.TestSwitch) ... ok test_020_switch_rgb_state (tests.api.test_switch.TestSwitch) ... ok test_110_switch_on_off (tests.api.test_switch.TestSwitch) ... ok test_120_switch_rgbbulbs (tests.api.test_switch.TestSwitch) ... ok test_010_switch_all_item (tests.api.test_switch_all.TestSwitchAll) ... ok test_015_switch_all_set_item (tests.api.test_switch_all.TestSwitchAll) ... ERROR test_020_switch_all_items (tests.api.test_switch_all.TestSwitchAll) ... ok test_110_switch_all_on (tests.api.test_switch_all.TestSwitchAll) ... FAIL test_120_switch_all_off (tests.api.test_switch_all.TestSwitchAll) ... ok test_200_values_to_dict (tests.api.test_value.TestValue) ... ok test_210_values_check_data (tests.api.test_value.TestValue) ... ok test_000_import (tests.manager.autobuild.test_manager.ManagerTest) ... ok

====================================================================== ERROR: test_101_controller_name_accent (tests.lib.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/lib/test_node.py", line 67, in test_101_controller_name_accent oldname = self.manager.getNodeName(self.homeid, 1) File "src-lib/libopenzwave/libopenzwave.pyx", line 2200, in libopenzwave.PyManager.getNodeName (src-lib/libopenzwave/libopenzwave.cpp:17777) cdef string c_string = self.manager.GetNodeName(homeid, nodeid) TypeError: an integer is required

====================================================================== ERROR: test_020_protection_set_item_no_operation (tests.api.test_protection.TestProtection)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/api/test_protection.py", line 74, in test_020_protection_set_item_no_operation self.active_nodes[node].set_protection(val, new_value) File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/command.py", line 858, in set_protection self.values[value_id].data = value File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/value.py", line 292, in data self._network.manager.setValue(self.value_id, value) File "src-lib/libopenzwave/libopenzwave.pyx", line 2835, in libopenzwave.PyManager.setValue (src-lib/libopenzwave/libopenzwave.cpp:21886) type_string = string(value) TypeError: expected bytes, str found -------------------- >> begin captured stdout << --------------------- active nodes : {1: <openzwave.node.ZWaveNode object at 0x7fd0901effd0>, 4: <openzwave.node.ZWaveNode object at 0x7fd0901ef748>}

--------------------- >> end captured stdout << ----------------------

====================================================================== ERROR: test_030_protection_set_item_unprotected (tests.api.test_protection.TestProtection)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/api/test_protection.py", line 89, in test_030_protection_set_item_unprotected self.active_nodes[node].set_protection(val, new_value) File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/command.py", line 858, in set_protection self.values[value_id].data = value File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/value.py", line 292, in data self._network.manager.setValue(self.value_id, value) File "src-lib/libopenzwave/libopenzwave.pyx", line 2835, in libopenzwave.PyManager.setValue (src-lib/libopenzwave/libopenzwave.cpp:21886) type_string = string(value) TypeError: expected bytes, str found -------------------- >> begin captured stdout << --------------------- active nodes : {1: <openzwave.node.ZWaveNode object at 0x7fd0901effd0>, 4: <openzwave.node.ZWaveNode object at 0x7fd0901ef748>}

--------------------- >> end captured stdout << ----------------------

====================================================================== ERROR: test_015_switch_all_set_item (tests.api.test_switch_all.TestSwitchAll)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/api/test_switch_all.py", line 75, in test_015_switch_all_set_item self.active_nodes[node].set_switch_all(val, new_value) File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/command.py", line 396, in set_switch_all self.values[value_id].data = value File "/home/sebastien/devel/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.1-py3.5.egg/openzwave/value.py", line 292, in data self._network.manager.setValue(self.value_id, value) File "src-lib/libopenzwave/libopenzwave.pyx", line 2835, in libopenzwave.PyManager.setValue (src-lib/libopenzwave/libopenzwave.cpp:21886) type_string = string(value) TypeError: expected bytes, str found -------------------- >> begin captured stdout << --------------------- active nodes : {1: <openzwave.node.ZWaveNode object at 0x7fd09019ad30>, 4: <openzwave.node.ZWaveNode object at 0x7fd09019ae80>}

--------------------- >> end captured stdout << ----------------------

====================================================================== FAIL: test_110_switch_all_on (tests.api.test_switch_all.TestSwitchAll)

Traceback (most recent call last): File "/home/sebastien/devel/python-openzwave/tests/api/test_switch_all.py", line 107, in test_110_switch_all_on self.assertTrue(self.active_nodes[node].get_switch_all_state(val)) AssertionError: False is not true -------------------- >> begin captured stdout << --------------------- active nodes : {1: <openzwave.node.ZWaveNode object at 0x7fd09019ad30>, 4: <openzwave.node.ZWaveNode object at 0x7fd09019ae80>} Node/State : 4/False

--------------------- >> end captured stdout << ----------------------


Ran 135 tests in 612.885s

FAILED (SKIP=8, errors=4, failures=1)

Tests for ZWave network finished. make[1] : on quitte le répertoire « /home/sebastien/devel/python-openzwave »

The tests with the pybind version :

python-openzwave$ make venv-tests make PYTHON_EXEC=venv2/bin/python install >/dev/null make PYTHON_EXEC=venv3/bin/python install >/dev/null Files installed in venv make PYTHON_EXEC=venv2/bin/python NOSE_EXEC=venv2/bin/nosetests tests make[1] : on entre dans le répertoire « /home/sebastien/devel/tmp/python-openzwave »

export NOSESKIP=False && venv2/bin/nosetests --verbosity=2 tests/ --with-progressive; unset NOSESKIP

export NOSESKIP=False && venv2/bin/nosetests --verbosity=2 tests/lib tests/api tests/manager ; unset NOSESKIP test_000_init (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit) ... ERROR test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit) ... FAIL test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit) ... ERROR test_010_options_string (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_030_options_int (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions) ... FAIL 2017-02-05 16:40:53.184 Always, OpenZwave Version 1.4.2382 Starting Up 2017-02-05 16:40:54.185 Info, Setting Up Provided Network Key for Secure Communications 2017-02-05 16:40:54.185 Warning, Failed - Network Key Not Set 2017-02-05 16:40:54.185 Info, mgr, Added driver for controller /dev/ttyUSB0 2017-02-05 16:40:54.185 Info, Opening controller /dev/ttyUSB0 2017-02-05 16:40:54.185 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2017-02-05 16:40:54.188 Info, Serial port /dev/ttyUSB0 opened (attempt 1) 2017-02-05 16:40:54.188 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9 2017-02-05 16:40:54.188 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc 2017-02-05 16:40:54.188 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9 ... 2017-02-05 16:41:11.206 Always, *** 2017-02-05 16:41:11.206 Always, * Cumulative Network Statistics *** 2017-02-05 16:41:11.206 Always, * General 2017-02-05 16:41:11.206 Always, Driver run time: . . . 0 days, 0 hours, 0 minutes 2017-02-05 16:41:11.206 Always, Frames processed: . . . . . . . . . . . . . . . . . . . . 151 2017-02-05 16:41:11.206 Always, Total messages successfully received: . . . . . . . . . . 151 2017-02-05 16:41:11.206 Always, Total Messages successfully sent: . . . . . . . . . . . . 62 2017-02-05 16:41:11.206 Always, ACKs received from controller: . . . . . . . . . . . . . 62 2017-02-05 16:41:11.206 Always, * Errors 2017-02-05 16:41:11.206 Always, Unsolicited messages received while waiting for ACK: . . 0 2017-02-05 16:41:11.206 Always, Reads aborted due to timeouts: . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, Bad checksum errors: . . . . . . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, CANs received from controller: . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, NAKs received from controller: . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, Out of frame data flow errors: . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, Messages retransmitted: . . . . . . . . . . . . . . . . . 0 2017-02-05 16:41:11.206 Always, Messages dropped and not delivered: . . . . . . . . . . . 1 2017-02-05 16:41:11.206 Always, ***** 2017-02-05 16:41:13.214 Detail, Node004, Removing current message 2017-02-05 16:41:13.214 Info, mgr, Driver for controller /dev/ttyUSB0 removed test_000_api_network (tests.api.autobuild.test_api.TestNetworkApi) ... 2017-02-05 16:41:13.216 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 16:41:13.216 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 16:41:13.216 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file ok test_900_api_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_905_network_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... ok test_010_battery_item (tests.api.test_battery.TestBattery) ... ^[[Bok 2017-02-05 16:44:19.022 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 16:44:19.023 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 16:44:19.023 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_010_controller (tests.api.test_controller.TestController) ... FAIL test_020_controller_capabilities (tests.api.test_controller.TestController) ... ok test_030_controller_send_queue (tests.api.test_controller.TestController) ... FAIL test_040_controller_stats (tests.api.test_controller.TestController) ... ok test_110_controller_soft_reset (tests.api.test_controller.TestController) ... ERROR test_310_controller_node (tests.api.test_controller.TestController) ... FAIL test_320_controller_node_capabilities (tests.api.test_controller.TestController) ... ERROR test_330_controller_node_neighbors (tests.api.test_controller.TestController) ... ERROR test_340_controller_node_baud_rate (tests.api.test_controller.TestController) ... ERROR test_410_controller_node_product (tests.api.test_controller.TestController) ... ERROR test_420_controller_node_name (tests.api.test_controller.TestController) ... ERROR test_430_controller_node_product_location (tests.api.test_controller.TestController) ... ERROR test_440_controller_node_product_name (tests.api.test_controller.TestController) ... ERROR test_510_controller_node_group (tests.api.test_controller.TestController) ... ERROR test_610_controller_node_command_class (tests.api.test_controller.TestController) ... ERROR test_710_controller_node_manufacturer_name (tests.api.test_controller.TestController) ... ERROR test_760_controller_stats_label (tests.api.test_controller.TestController) ... ok test_810_controller_node_values (tests.api.test_controller.TestController) ... ERROR test_820_controller_node_generic (tests.api.test_controller.TestController) ... ERROR test_830_controller_node_refresh (tests.api.test_controller.TestController) ... ERROR test_910_controller_stats_poll (tests.api.test_controller.TestController) ... ok 2017-02-05 17:47:57.096 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 17:47:57.096 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 17:47:57.096 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_005_request_controller_status (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_010_command_send_node_information_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_015_command_send_node_information_controller (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_020_command_request_node_neighbor_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_025_command_request_node_neighbor_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_030_command_request_network_update_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_035_command_request_network_update_controller (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_040_command_delete_all_return_routes_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_045_command_delete_all_return_routes_controller (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_050_command_assign_return_route_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_055_command_assign_return_route_controller (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_060_command_has_node_failed_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_070_command_remove_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_080_command_replace_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_100_command_add_node_secure_off_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_110_command_add_node_secure_on_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_150_command_remove_node_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand) ... ERROR test_200_command_create_new_primary (tests.api.test_controller_command.TestControllerCommand) ... ERROR 2017-02-05 18:01:27.998 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 18:01:27.998 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 18:01:27.998 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_010_dimmer_level (tests.api.test_dimmer.TestDimmer) ... ok test_110_dimmer_on_off (tests.api.test_dimmer.TestDimmer) ... ok 2017-02-05 18:07:33.015 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 18:07:33.015 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 18:07:33.015 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_000_network_awake (tests.api.test_network.TestNetwork) ... FAIL test_010_network_ready (tests.api.test_network.TestNetwork) ... SKIP: network NotReady : Newtork is not ready ... but continue test_100_network_test (tests.api.test_network.TestNetwork) ... ok test_110_network_heal (tests.api.test_network.TestNetwork) ... ok test_120_network_poll (tests.api.test_network.TestNetwork) ... ok test_200_network_to_dict (tests.api.test_network.TestNetwork) ... ok test_220_network_nodes_to_dict (tests.api.test_network.TestNetwork) ... ok test_300_network_kvals_nodes (tests.api.test_network.TestNetwork) ... ok test_310_network_kvals_controller (tests.api.test_network.TestNetwork) ... ERROR test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... 2017-02-05 18:36:53.186 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 18:36:53.187 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 18:36:53.187 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file FAIL test_010_network_start_stop_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ok test_100_network_start_stop_singleton (tests.api.test_network_start.TestNetworkStartStop) ... SKIP: Work in progress test_020_node_capabilities (tests.api.test_node.TestNode) ... ERROR test_310_node (tests.api.test_node.TestNode) ... ERROR test_330_node_neighbors (tests.api.test_node.TestNode) ... ERROR test_340_node_baud_rate (tests.api.test_node.TestNode) ... ERROR test_410_node_product (tests.api.test_node.TestNode) ... ERROR test_420_node_name (tests.api.test_node.TestNode) ... ERROR test_421_node_name_accent (tests.api.test_node.TestNode) ... ERROR test_430_node_location (tests.api.test_node.TestNode) ... ERROR test_431_node_location_accent (tests.api.test_node.TestNode) ... ERROR test_440_node_product_name (tests.api.test_node.TestNode) ... ERROR test_441_node_product_name_accent (tests.api.test_node.TestNode) ... ERROR test_450_node_manufacturer_name (tests.api.test_node.TestNode) ... ERROR test_451_node_manufacturer_name_accent (tests.api.test_node.TestNode) ... ERROR test_510_node_group (tests.api.test_node.TestNode) ... ERROR test_520_node_group_associations (tests.api.test_node.TestNode) ... ERROR test_530_node_group_associations_instances (tests.api.test_node.TestNode) ... ERROR test_550_request_all_config_params (tests.api.test_node.TestNode) ... ERROR test_580_node_command_class (tests.api.test_node.TestNode) ... ERROR test_610_node_is_awake (tests.api.test_node.TestNode) ... ERROR test_615_node_is_ready (tests.api.test_node.TestNode) ... ERROR test_620_node_is_failed (tests.api.test_node.TestNode) ... ERROR test_625_node_is_zwave_plus (tests.api.test_node.TestNode) ... ERROR test_630_node_is_info_received (tests.api.test_node.TestNode) ... ERROR test_680_node_query_stage (tests.api.test_node.TestNode) ... ERROR test_690_node_type (tests.api.test_node.TestNode) ... ERROR test_691_node_device_type (tests.api.test_node.TestNode) ... ERROR test_692_node_role (tests.api.test_node.TestNode) ... ERROR test_710_node_test (tests.api.test_node.TestNode) ... ERROR test_720_node_heal (tests.api.test_node.TestNode) ... ERROR test_730_node_assign_return_route (tests.api.test_node.TestNode) ... ERROR test_740_node_refresh_info (tests.api.test_node.TestNode) ... ERROR test_745_node_send_information (tests.api.test_node.TestNode) ... ERROR test_750_node_network_update (tests.api.test_node.TestNode) ... ERROR test_760_node_neighbor_update (tests.api.test_node.TestNode) ... ERROR test_770_node_request_state (tests.api.test_node.TestNode) ... ERROR test_810_node_values (tests.api.test_node.TestNode) ... ERROR 2017-02-05 20:26:42.941 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 20:26:42.942 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 20:26:42.942 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_000_nodes_count (tests.api.test_nodes.TestNodes) ... FAIL test_100_nodes_test (tests.api.test_nodes.TestNodes) ... ok test_110_nodes_heal (tests.api.test_nodes.TestNodes) ... ok test_200_nodes_to_dict (tests.api.test_nodes.TestNodes) ... ok test_210_controller_to_dict (tests.api.test_nodes.TestNodes) ... ERROR test_220_nodes_groups_to_dict (tests.api.test_nodes.TestNodes) ... ok 2017-02-05 20:44:47.965 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 20:44:47.965 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 20:44:47.965 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file test_010_protection_item (tests.api.test_protection.TestProtection) ... ok test_020_protection_set_item_no_operation (tests.api.test_protection.TestProtection) ...

ok test_030_protection_set_item_unprotected (tests.api.test_protection.TestProtection) ... ok test_050_protection_items (tests.api.test_protection.TestProtection) ... ok ERROR ERROR ERROR ERROR ERROR test_000_import (tests.manager.autobuild.test_manager.ManagerTest) ... ok

====================================================================== ERROR: test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 64, in test_010_options_exceptions options = libopenzwave.Options.create(_configPath=fake_config_dir, _userPath=self.userpath, _commandLine=None) TypeError: create(): incompatible function arguments. The following argument types are supported:

  1. (_configPath: unicode, _userPath: unicode=u'', _commandLine: unicode=u'') -> libopenzwave.Options

Invoked with:

====================================================================== ERROR: test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 101, in test_030_options_with_command_line self.assertEqual(six.u('ozwlog.log'), six.u(options.getOptionAsString("LogFileName"))) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/six.py", line 647, in u return unicode(s.replace(r'\', r'\\'), "unicode_escape") TypeError: decoding Unicode is not supported

====================================================================== ERROR: test_110_controller_soft_reset (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 61, in test_110_controller_soft_reset self.assertTrue(self.network.controller.node.refresh_info()) AttributeError: 'NoneType' object has no attribute 'refresh_info'

====================================================================== ERROR: test_320_controller_node_capabilities (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 71, in test_320_controller_node_capabilities self.assertEqual(type(self.network.controller.node.capabilities), type(set())) AttributeError: 'NoneType' object has no attribute 'capabilities'

====================================================================== ERROR: test_330_controller_node_neighbors (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 74, in test_330_controller_node_neighbors self.assertEqual(type(self.network.controller.node.neighbors), type(set())) AttributeError: 'NoneType' object has no attribute 'neighbors'

====================================================================== ERROR: test_340_controller_node_baud_rate (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 77, in test_340_controller_node_baud_rate self.assertTrue(isinstance(self.network.controller.node.max_baud_rate, integer_types)) AttributeError: 'NoneType' object has no attribute 'max_baud_rate'

====================================================================== ERROR: test_410_controller_node_product (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 81, in test_410_controller_node_product self.assertTrue(isinstance(self.network.controller.node.product_type, string_types)) AttributeError: 'NoneType' object has no attribute 'product_type'

====================================================================== ERROR: test_420_controller_node_name (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 86, in test_420_controller_node_name self.network.controller.node.name = name AttributeError: 'NoneType' object has no attribute 'name'

====================================================================== ERROR: test_430_controller_node_product_location (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 91, in test_430_controller_node_product_location self.network.controller.node.location = location AttributeError: 'NoneType' object has no attribute 'location'

====================================================================== ERROR: test_440_controller_node_product_name (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 96, in test_440_controller_node_product_name self.network.controller.node.product_name = name AttributeError: 'NoneType' object has no attribute 'product_name'

====================================================================== ERROR: test_510_controller_node_group (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 100, in test_510_controller_node_group self.assertTrue(self.network.controller.node.num_groups >= 0) AttributeError: 'NoneType' object has no attribute 'num_groups'

====================================================================== ERROR: test_610_controller_node_command_class (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 104, in test_610_controller_node_command_class self.assertEqual(type(self.network.controller.node.command_classes), type(set())) AttributeError: 'NoneType' object has no attribute 'command_classes'

====================================================================== ERROR: test_710_controller_node_manufacturer_name (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 108, in test_710_controller_node_manufacturer_name self.assertTrue(isinstance(self.network.controller.node.manufacturer_id, string_types)) AttributeError: 'NoneType' object has no attribute 'manufacturer_id'

====================================================================== ERROR: test_810_controller_node_values (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 117, in test_810_controller_node_values self.assertEqual(type(self.network.controller.node.get_values()), type(dict())) AttributeError: 'NoneType' object has no attribute 'get_values'

====================================================================== ERROR: test_820_controller_node_generic (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 120, in test_820_controller_node_generic self.assertTrue(isinstance(self.network.controller.node.generic, integer_types)) AttributeError: 'NoneType' object has no attribute 'generic'

====================================================================== ERROR: test_830_controller_node_refresh (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 131, in test_830_controller_node_refresh self.assertTrue(self.network.controller.node.refresh_info()) AttributeError: 'NoneType' object has no attribute 'refresh_info'

====================================================================== ERROR: test_005_request_controller_status (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test_010_command_send_node_information_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_015_command_send_node_information_controller (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_020_command_request_node_neighbor_update_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_025_command_request_node_neighbor_update_controller (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_030_command_request_network_update_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_035_command_request_network_update_controller (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_040_command_delete_all_return_routes_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_045_command_delete_all_return_routes_controller (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_050_command_assign_return_route_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_055_command_assign_return_route_controller (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_060_command_has_node_failed_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_070_command_remove_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_080_command_replace_failed_node_nodes (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_100_command_add_node_secure_off_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_110_command_add_node_secure_on_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_150_command_remove_node_and_wait_for_user (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_200_command_create_new_primary (tests.api.test_controller_command.TestControllerCommand)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller_command.py", line 52, in setUp self.dispatcher.add_callback(self.ctrl_message, ZWaveNetwork.SIGNAL_CONTROLLER_COMMAND) AttributeError: 'TestControllerCommand' object has no attribute 'dispatcher'

====================================================================== ERROR: test_310_network_kvals_controller (tests.api.test_network.TestNetwork)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_network.py", line 103, in test_310_network_kvals_controller kvals=self.network.nodes[nid].kvals KeyError: None

====================================================================== ERROR: test_020_node_capabilities (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 38, in test_020_node_capabilities node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence -------------------- >> begin captured logging << -------------------- openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) openzwave: INFO: Start Openzwave network. --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test_310_node (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 42, in test_310_node node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_330_node_neighbors (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 47, in test_330_node_neighbors node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_340_node_baud_rate (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 51, in test_340_node_baud_rate node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_410_node_product (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 56, in test_410_node_product node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_420_node_name (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 61, in test_420_node_name node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_421_node_name_accent (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 68, in test_421_node_name_accent node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_430_node_location (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 74, in test_430_node_location node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_431_node_location_accent (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 81, in test_431_node_location_accent node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_440_node_product_name (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 87, in test_440_node_product_name node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_441_node_product_name_accent (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 94, in test_441_node_product_name_accent node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_450_node_manufacturer_name (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 100, in test_450_node_manufacturer_name node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_451_node_manufacturer_name_accent (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 108, in test_451_node_manufacturer_name_accent node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_510_node_group (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 114, in test_510_node_group node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_520_node_group_associations (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 119, in test_520_node_group_associations node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_530_node_group_associations_instances (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 130, in test_530_node_group_associations_instances node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_550_request_all_config_params (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 142, in test_550_request_all_config_params node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_580_node_command_class (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 146, in test_580_node_command_class node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_610_node_is_awake (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 151, in test_610_node_is_awake node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_615_node_is_ready (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 155, in test_615_node_is_ready node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_620_node_is_failed (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 159, in test_620_node_is_failed node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_625_node_is_zwave_plus (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 163, in test_625_node_is_zwave_plus node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_630_node_is_info_received (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 167, in test_630_node_is_info_received node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_680_node_query_stage (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 171, in test_680_node_query_stage node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_690_node_type (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 175, in test_690_node_type node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_691_node_device_type (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 179, in test_691_node_device_type node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_692_node_role (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 183, in test_692_node_role node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_710_node_test (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 187, in test_710_node_test node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_720_node_heal (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 191, in test_720_node_heal node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_730_node_assign_return_route (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 195, in test_730_node_assign_return_route node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_740_node_refresh_info (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 201, in test_740_node_refresh_info node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_745_node_send_information (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 207, in test_745_node_send_information node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_750_node_network_update (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 213, in test_750_node_network_update node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_760_node_neighbor_update (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 219, in test_760_node_neighbor_update node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_770_node_request_state (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 225, in test_770_node_request_state node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_810_node_values (tests.api.test_node.TestNode)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_node.py", line 231, in test_810_node_values node_id = max(self.network.nodes.keys()) ValueError: max() arg is an empty sequence

====================================================================== ERROR: test_210_controller_to_dict (tests.api.test_nodes.TestNodes)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_nodes.py", line 64, in test_210_controller_to_dict nodes = self.network.controller.to_dict() File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/controller.py", line 1012, in to_dict ret = self.node.to_dict(extras=extras) AttributeError: 'NoneType' object has no attribute 'to_dict'

====================================================================== ERROR: test suite for <class 'tests.api.test_scene.TestScene'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 209, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) ZWaveException: u'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'ZWaveException: u"Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'None\\\\n\\']"\n\']' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test suite for <class 'tests.api.test_sensor.TestSensor'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 209, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) ZWaveException: u'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'ZWaveException: u"Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'None\\\\n\\']"\n\']' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test suite for <class 'tests.api.test_switch.TestSwitch'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 209, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) ZWaveException: u'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'ZWaveException: u"Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'None\\\\n\\']"\n\']' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test suite for <class 'tests.api.test_switch_all.TestSwitchAll'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 209, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) ZWaveException: u'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'ZWaveException: u"Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'None\\\\n\\']"\n\']' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. --------------------- >> end captured logging << ---------------------

====================================================================== ERROR: test suite for <class 'tests.api.test_value.TestValue'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 209, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv2/local/lib/python2.7/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) ZWaveException: u'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv2/lib/python2.7/site-packages/libopenzwave-0.3.99-py2.7-linux-x86_64.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'ZWaveException: u"Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'None\\\\n\\']"\n\']' -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. --------------------- >> end captured logging << ---------------------

====================================================================== FAIL: test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 92, in test_020_options_without_command_line self.assertTrue(os.path.exists(os.path.join(configpath, "zwcfg.xsd"))) AssertionError: False is not true

====================================================================== FAIL: test_010_options_string (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 110, in test_010_options_string self.assertTrue(_options.addOptionString("LogFileName", 'ozwlog.log', False)) AssertionError: False is not true

====================================================================== FAIL: test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 119, in test_020_options_bool self.assertTrue(_options.addOptionBool("Logging", True)) AssertionError: False is not true

====================================================================== FAIL: test_030_options_int (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 128, in test_030_options_int self.assertTrue(_options.addOptionInt("SaveLogLevel", libopenzwave.LogLevel.Always)) AssertionError: False is not true

====================================================================== FAIL: test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 137, in test_040_options_generic self.assertTrue(_options.addOption("LogFileName", 'ozwlog.log')) AssertionError: False is not true

====================================================================== FAIL: test_010_controller (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 42, in test_010_controller self.assertTrue(isinstance(self.network.controller.name, string_types)) AssertionError: False is not true -------------------- >> begin captured stdout << --------------------- (<type 'NoneType'>, None, (<type 'basestring'>,))

--------------------- >> end captured stdout << ---------------------- -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) openzwave: INFO: Start Openzwave network. --------------------- >> end captured logging << ---------------------

====================================================================== FAIL: test_030_controller_send_queue (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 53, in test_030_controller_send_queue self.assertTrue(self.network.controller.send_queue_count >= 0) AssertionError: False is not true

====================================================================== FAIL: test_310_controller_node (tests.api.test_controller.TestController)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_controller.py", line 65, in test_310_controller_node self.assertTrue(isinstance(self.network.controller.node_id, integer_types)) AssertionError: False is not true

====================================================================== FAIL: test_000_network_awake (tests.api.test_network.TestNetwork)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_network.py", line 40, in test_000_network_awake self.assertTrue(self.network.state>=ZWaveNetwork.STATE_AWAKED) AssertionError: False is not true -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) openzwave: INFO: Start Openzwave network. --------------------- >> end captured logging << ---------------------

====================================================================== FAIL: test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_network_start.py", line 89, in test_000_network_start_stop self.assertTrue(self.driver_ready) AssertionError: False is not true -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) openzwave: INFO: Start Openzwave network. --------------------- >> end captured logging << ---------------------

====================================================================== FAIL: test_000_nodes_count (tests.api.test_nodes.TestNodes)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_nodes.py", line 40, in test_000_nodes_count self.assertTrue(self.network.nodes_count>0) AssertionError: False is not true -------------------- >> begin captured logging << -------------------- openzwave: INFO: Stop Openzwave network. openzwave: DEBUG: Wait for empty send_queue during 0 second(s). openzwave: INFO: ZWave configuration written to user directory. openzwave: DEBUG: Create network object. openzwave: DEBUG: Use sqlite version : (u'3.14.1',) openzwave: INFO: Start Openzwave network. --------------------- >> end captured logging << ---------------------


Ran 115 tests in 15360.854s

FAILED (SKIP=2, errors=77, failures=11)

Tests for ZWave network finished. make[1] : on quitte le répertoire « /home/sebastien/devel/tmp/python-openzwave » make PYTHON_EXEC=venv3/bin/python NOSE_EXEC=venv3/bin/nosetests tests make[1] : on entre dans le répertoire « /home/sebastien/devel/tmp/python-openzwave »

export NOSESKIP=False && venv3/bin/nosetests --verbosity=2 tests/ --with-progressive; unset NOSESKIP

export NOSESKIP=False && venv3/bin/nosetests --verbosity=2 tests/lib tests/api tests/manager ; unset NOSESKIP test_000_init (tests.lib.autobuild.test_lib.TestInit) ... ok test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit) ... ERROR test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit) ... FAIL test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit) ... FAIL test_010_options_string (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_030_options_int (tests.lib.autobuild.test_lib.TestOptions) ... FAIL test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions) ... FAIL 2017-02-05 20:56:54.603 Always, OpenZwave Version 1.4.2382 Starting Up 2017-02-05 20:56:55.604 Info, Setting Up Provided Network Key for Secure Communications 2017-02-05 20:56:55.604 Warning, Failed - Network Key Not Set 2017-02-05 20:56:55.604 Info, mgr, Added driver for controller /dev/ttyUSB0 2017-02-05 20:56:55.604 Info, Opening controller /dev/ttyUSB0 2017-02-05 20:56:55.604 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2017-02-05 20:56:55.604 Error, ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2 2017-02-05 20:56:55.604 Error, ERROR: Failed to open serial port /dev/ttyUSB0 2017-02-05 20:56:55.604 Warning, WARNING: Failed to init the controller (attempt 0) 2017-02-05 20:57:00.604 Info, Opening controller /dev/ttyUSB0 2017-02-05 20:57:00.604 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2017-02-05 20:57:00.604 Error, ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2 2017-02-05 20:57:00.604 Error, ERROR: Failed to open serial port /dev/ttyUSB0 2017-02-05 20:57:00.605 Warning, WARNING: Failed to init the controller (attempt 1) 2017-02-05 20:57:05.605 Info, Opening controller /dev/ttyUSB0 2017-02-05 20:57:05.605 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2017-02-05 20:57:05.605 Error, ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2 2017-02-05 20:57:05.605 Error, ERROR: Failed to open serial port /dev/ttyUSB0 2017-02-05 20:57:05.605 Warning, WARNING: Failed to init the controller (attempt 2) 2017-02-05 20:57:10.605 Info, Opening controller /dev/ttyUSB0 2017-02-05 20:57:10.605 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2017-02-05 20:57:10.606 Error, ERROR: Cannot open serial port /dev/ttyUSB0. Error code 2 2017-02-05 20:57:10.606 Error, ERROR: Failed to open serial port /dev/ttyUSB0 2017-02-05 20:57:10.606 Warning, WARNING: Failed to init the controller (attempt 3) test_100_controller_name (tests.lib.test_node.TestInit) ... ERROR test_101_controller_name_accent (tests.lib.test_node.TestInit) ... ERROR test_110_controller_name_notification (tests.lib.test_node.TestInit) ... ERROR 2017-02-05 20:57:11.624 Detail, Notification: DriverRemoved 2017-02-05 20:57:11.625 Always, *** 2017-02-05 20:57:11.625 Always, * Cumulative Network Statistics *** 2017-02-05 20:57:11.625 Always, * General 2017-02-05 20:57:11.625 Always, Driver run time: . . . 0 days, 0 hours, 0 minutes 2017-02-05 20:57:11.625 Always, Frames processed: . . . . . . . . . . . . . . . . . . . . 0 2017-02-05 20:57:11.625 Always, Total messages successfully received: . . . . . . . . . . 0 2017-02-05 20:57:11.625 Always, Total Messages successfully sent: . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, ACKs received from controller: . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, * Errors 2017-02-05 20:57:11.626 Always, Unsolicited messages received while waiting for ACK: . . 0 2017-02-05 20:57:11.626 Always, Reads aborted due to timeouts: . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, Bad checksum errors: . . . . . . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, CANs received from controller: . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, NAKs received from controller: . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, Out of frame data flow errors: . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, Messages retransmitted: . . . . . . . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, Messages dropped and not delivered: . . . . . . . . . . . 0 2017-02-05 20:57:11.626 Always, ***** 2017-02-05 20:57:11.626 Warning, WARNING: Tried to write driver config with no home ID set 2017-02-05 20:57:11.626 Info, mgr, Driver for controller /dev/ttyUSB0 removed test_000_api_network (tests.api.autobuild.test_api.TestNetworkApi) ... 2017-02-05 20:57:11.628 Error, Cannot find a path to the configuration files at , Using /usr/local/etc/openzwave/ instead... 2017-02-05 20:57:11.628 Info, Reading /usr/local/etc/openzwave/options.xml for Options 2017-02-05 20:57:11.628 Warning, Failed to Parse .tests_user_path/options.xml: Failed to open file ok test_900_api_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... SKIP: Skip on Python 3 test_905_network_singleton (tests.api.autobuild.test_api.TestNetworkApi) ... SKIP: Skip on Python 3 ERROR ERROR ERROR ERROR ERROR test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ERROR test_010_network_start_stop_start_stop (tests.api.test_network_start.TestNetworkStartStop) ... ERROR test_100_network_start_stop_singleton (tests.api.test_network_start.TestNetworkStartStop) ... SKIP: Work in progress ERROR ERROR ERROR ERROR ERROR ERROR Failure: SyntaxError (invalid syntax (test_switch_all.py, line 86)) ... ERROR ERROR test_000_import (tests.manager.autobuild.test_manager.ManagerTest) ... ok

====================================================================== ERROR: test_010_options_exceptions (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 64, in test_010_options_exceptions options = libopenzwave.Options.create(_configPath=fake_config_dir, _userPath=self.userpath, _commandLine=None) TypeError: create(): incompatible function arguments. The following argument types are supported:

  1. (_configPath: str, _userPath: str='', _commandLine: str='') -> libopenzwave.Options

Invoked with:

====================================================================== ERROR: test_100_controller_name (tests.lib.test_node.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/test_node.py", line 282, in test_100_controller_name self.manager.setNodeName(self.homeid, 1, "test lib name") TypeError: setNodeName(): incompatible function arguments. The following argument types are supported:

  1. (self: libopenzwave.Manager, arg0: int, arg1: int, arg2: str) -> None

Invoked with: <libopenzwave.Manager object at 0x7f356c234720>, None, 1, 'test lib name'

====================================================================== ERROR: test_101_controller_name_accent (tests.lib.test_node.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/test_node.py", line 287, in test_101_controller_name_accent oldname = self.manager.getNodeName(self.homeid, 1) TypeError: getNodeName(): incompatible function arguments. The following argument types are supported:

  1. (self: libopenzwave.Manager, arg0: int, arg1: int) -> str

Invoked with: <libopenzwave.Manager object at 0x7f356c234720>, None, 1

====================================================================== ERROR: test_110_controller_name_notification (tests.lib.test_node.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/test_node.py", line 294, in test_110_controller_name_notification self.nodes[1]['NodeNaming'] = False KeyError: 1

====================================================================== ERROR: test suite for <class 'tests.api.test_battery.TestBattery'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_controller.TestController'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_controller_command.TestControllerCommand'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_dimmer.TestDimmer'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_network.TestNetwork'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test_000_network_start_stop (tests.api.test_network_start.TestNetworkStartStop)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_network_start.py", line 71, in test_000_network_start_stop self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test_010_network_start_stop_start_stop (tests.api.test_network_start.TestNetworkStartStop)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_network_start.py", line 103, in test_010_network_start_stop_start_stop self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_node.TestNode'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_nodes.TestNodes'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_protection.TestProtection'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_scene.TestScene'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_sensor.TestSensor'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: test suite for <class 'tests.api.test_switch.TestSwitch'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== ERROR: Failure: SyntaxError (invalid syntax (test_switch_all.py, line 86))

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/failure.py", line 39, in runTest raise self.exc_val.with_traceback(self.tb) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/loader.py", line 418, in loadTestsFromName addr.filename, addr.module) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/importer.py", line 47, in importFromPath return self.importFromDir(dir_path, fqname) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/importer.py", line 94, in importFromDir mod = load_module(part_fqname, fh, filename, desc) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/imp.py", line 234, in load_module return load_source(name, filename, file) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/imp.py", line 172, in load_source module = _load(spec) File "", line 693, in _load File "", line 673, in _load_unlocked File "", line 669, in exec_module File "", line 775, in get_code File "", line 735, in source_to_code File "", line 222, in _call_with_frames_removed File "/home/sebastien/devel/tmp/python-openzwave/tests/api/test_switch_all.py", line 86 print "Node/State : %s/%s" % (node, self.network.nodes[node].get_switch_all_state(val)) ^ SyntaxError: invalid syntax

====================================================================== ERROR: test suite for <class 'tests.api.test_value.TestValue'>

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init raise ZWaveException(u"Can't find device %s : %s" % (device, traceback.format_exception(*sys.exc_info()))) openzwave.object.ZWaveException: "Zwave Generic Exception : Can't find device /dev/ttyUSB0 : ['NoneType: None\n']"

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 210, in run self.setUp() File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 293, in setUp self.setupContext(ancestor) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/suite.py", line 316, in setupContext try_run(context, names) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/nose/util.py", line 471, in try_run return func() File "/home/sebastien/devel/tmp/python-openzwave/tests/api/common.py", line 46, in setUpClass self.options = ZWaveOption(device=self.device, user_path=self.userpath) File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 86, in init raise ZWaveException(u"Error when retrieving device %s : %s" % (device, traceback.format_exception(sys.exc_info()))) openzwave.object.ZWaveException: 'Zwave Generic Exception : Error when retrieving device /dev/ttyUSB0 : [\'Traceback (most recent call last):\n\', \' File "/home/sebastien/devel/tmp/python-openzwave/venv3/lib/python3.5/site-packages/openzwave-0.3.99-py3.5.egg/openzwave/option.py", line 83, in init\n raise ZWaveException(u"Can\\'t find device %s : %s" % (device, traceback.format_exception(sys.exc_info())))\n\', \'openzwave.object.ZWaveException: "Zwave Generic Exception : Can\\'t find device /dev/ttyUSB0 : [\\'NoneType: None\\\\n\\']"\n\']'

====================================================================== FAIL: test_020_options_without_command_line (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 92, in test_020_options_without_command_line self.assertTrue(os.path.exists(os.path.join(configpath, "zwcfg.xsd"))) AssertionError: False is not true

====================================================================== FAIL: test_030_options_with_command_line (tests.lib.autobuild.test_lib.TestInit)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 101, in test_030_options_with_command_line self.assertEqual(six.u('ozwlog.log'), six.u(options.getOptionAsString("LogFileName"))) AssertionError: 'ozwlog.log' != 'OZW_Log.txt'

====================================================================== FAIL: test_010_options_string (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 110, in test_010_options_string self.assertTrue(_options.addOptionString("LogFileName", 'ozwlog.log', False)) AssertionError: False is not true

====================================================================== FAIL: test_020_options_bool (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 119, in test_020_options_bool self.assertTrue(_options.addOptionBool("Logging", True)) AssertionError: False is not true

====================================================================== FAIL: test_030_options_int (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 128, in test_030_options_int self.assertTrue(_options.addOptionInt("SaveLogLevel", libopenzwave.LogLevel.Always)) AssertionError: False is not true

====================================================================== FAIL: test_040_options_generic (tests.lib.autobuild.test_lib.TestOptions)

Traceback (most recent call last): File "/home/sebastien/devel/tmp/python-openzwave/tests/lib/autobuild/test_lib.py", line 137, in test_040_options_generic self.assertTrue(_options.addOption("LogFileName", 'ozwlog.log')) AssertionError: False is not true


Ran 19 tests in 18.699s

FAILED (SKIP=3, errors=19, failures=6)

Tests for ZWave network finished. make[1] : on quitte le répertoire « /home/sebastien/devel/tmp/python-openzwave »

NotTheEvilOne commented 7 years ago

Hi, I've made some tests with your code, look at the end of the message to get the console output. Some tests fails because of the script themself. So I've made some updates on the repository to fix some of them. Could you please resync your repositiory and post the "make venv-tests" console output ?

I'll and edit this post later. Please be aware that some unittests for the Options setting are supposed to fail as their API changed. Some of the errors you posted seem to be related to "SKIP: network NotReady : Newtork is not ready ... but continue". Another issue I found was related to the C++ mutex locking of the notification map. I removed that one and think it makes more sense to handle thread-safety (if required) in Python.

Could you also add some infos about your zwave controller and nodes ?

It's a zwave.me UZB with fw 4.05. The nodes are a bunch of thermostats, door sensors and LED lamps. I guess it would be useful to have a separate, spare Z-Wave controller for development to not break / stop my "smart home" installation each time I do some tests ;-)

I've got some questions :

is it possible to add some log (using python logging) in the wrapper ? It was really usefull in the past.

Yes and no. You could define some kind of static setter to provide a logging callback for the Python logger. Another solution might be to reuse the OpenZWave log facility. I'm not sure what makes more sense and has better performance.

enum class COMMAND_CLASS is mapped statically. Is there a way to "link it dynamically" maybe using CommandClasses::CommandClasses ?
same for other enums (logs, ...) ?

There are two issues here:

  1. enums like COMMAND_CLASS are not defined at all in C++. Dynamic linking is not possible therefore. If new constants are added by upstream #ifdef would be required.
  2. Some enums defined are private and not accessible therefore. Additionally pybind11 use C++ style enums and these are not iteratable at all. I guess this can not be fixed and will not change for that reason.
is it possible to add a `__version__` to the module ?

There is two static ones: Manager.getPythonLibraryVersion() / Manager.getPythonLibraryVersionNumber()

NotTheEvilOne commented 7 years ago

I revised the C++ integration to fix a deadlock issue between notifications and calls to Manager.destroy(). The unittests are running and I'll post a summary after they completed. I'm still analyzing the best solution to work around the deadlock situation.

Furthermore I can confirm that the OZW Log class can be used for debugging / informational log messages of the Python libopenzwave part. The enums can be dynamically extended with the following code snipplet: if (version_cmp(Manager::getVersion(), version(0, 8)) >= 0) { // The Device has been reset and thus removed from the NodeList in OZW notificationType.value("NodeNew", Notification::Type_NodeNew); } .

NotTheEvilOne commented 7 years ago

Here's the latest update:

The Manager and Options singletons are a bit tricky to handle within Python. Right now the code enforces that all Python references are invalidated (either by deleting the object or setting it to None) before accepting calls to Manager.destroy() or Options.destroy(). Unfortunately this still does not work very well with "tests.lib.autobuild.test_options.TestOptions".

Another change is related to limited protection against deadlocks caused by GIL. It's still not a good idea to call Manager.destroy() from within a notification callback.

Beside that small issues still show up with the unittests including but not limited to tons of issues with the current way the tests wait for state changes.

NotTheEvilOne commented 7 years ago

Dear @bibi21000,

Just wanted to let you know that the pybindbuild branch is ready to be merged. Some unit tests are still failing but 1. I guess most of them will be fixed once the changed Python code (see below) is merged and 2. some are the result of changes required for the C++ part to work correctly or because of incompatibility between cpython / pybind11.

Could you please let me know if I should open a PR or if you want to see some changes to what is currently committed there?

I already started to implement additional changes based on pybind11 C++ integration to add new features. Currently these changes are in the master branch of my repository.

Currently these changes include:

bibi21000 commented 7 years ago

I try to merge your code with but I've got a lot of problems with the pybind directory. Why ? So I need to update tests again to run them locally (can't wait for the network ready signal as I launch test with only some modules connected) Could you give me the result of the make venv-tests ?

NotTheEvilOne commented 7 years ago

Hi,

Sorry for the late reply. I'll create a fresh set of unittest results. Which one are you interested in? The ones with the pybind changes only or the master branch with additional API changes?

Best regards Tobias

NotTheEvilOne commented 7 years ago

Here are the test console outputs for Python 2 and Python 3.

I've seen four low hanging fruits and bugs:

  1. AttributeError: type object 'ZWaveController' has no attribute 'STATE_LOCKED' -> Need to check if it is deprecated or now part of "ZWaveStaticPCControllerInterface".
  2. openzwave.object.ZWaveException: 'Zwave Generic Exception : libopenzwave.Options instance has not been initialized'
  3. AttributeError: type object 'ZWaveNodeInterface' has no attribute 'to_dict'
  4. TypeError: requestNodeNeighborUpdate(): incompatible function arguments. The following argument types are supported:
    1. (self: libopenzwave.Manager, arg0: int, arg1: int) -> bool

Overall the results are not great yet but have potential: Ran 134 tests in 2117.083s

FAILED (SKIP=23, errors=34, failures=3)