Klf 200 - dexxo smart io

Bonjour Lunarok

Je viens de me faire installer une porte de garage avec moteur dexxo smart io.

klf200 reconnait 3 nouveaux accessoires: Porte de garage/Lumières et interrupteur.

Dans jeedom/plugin klf200, le scan ne les remonte pas.

Est-ce que le plugin supporte ce matériel (c’est du io-homecontrol)?

Si non est-il prévu de le supporter?

Merci d’avance.

Voici le log que j’ai

[2020-01-27 22:07:22][INFO] : Arrêt du service klf200

[2020-01-27 22:07:22][INFO] : Lancement démon klf200 : /usr/bin/python3 /var/www/html/plugins/klf200/resources/klf200d.py 192.168.0.6 Z6LgXA9BwQ

Connecting to KLF 200.

Connected to: KLF 200: Software version: 0.2.0.0.71.0, hardware version: 6, protocol version: 3.14

Exception in callback _SelectorSocketTransport._read_ready()

handle: <Handle _SelectorSocketTransport._read_ready()>

Traceback (most recent call last):

File « /usr/lib/python3.5/asyncio/events.py », line 126, in _run

self._callback(*self._args)

File « /usr/lib/python3.5/asyncio/selector_events.py », line 730, in _read_ready

self._protocol.data_received(data)

File « /usr/lib/python3.5/asyncio/sslproto.py », line 515, in data_received

self._app_protocol.data_received(chunk)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/connection.py », line 52, in data_received

frame = frame_from_raw(raw)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py », line 40, in frame_from_raw

frame.from_payload(payload)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py », line 127, in from_payload

self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])

File « /usr/lib/python3.5/enum.py », line 241, in call

return cls.new(cls, value)

File « /usr/lib/python3.5/enum.py », line 476, in new

raise ValueError("%r is not a valid %s" % (value, cls.name))

ValueError: 378 is not a valid NodeTypeWithSubtype

Exception in callback _SelectorSocketTransport._read_ready()

handle: <Handle _SelectorSocketTransport._read_ready()>

Traceback (most recent call last):

File « /usr/lib/python3.5/asyncio/events.py », line 126, in _run

self._callback(*self._args)

File « /usr/lib/python3.5/asyncio/selector_events.py », line 730, in _read_ready

self._protocol.data_received(data)

File « /usr/lib/python3.5/asyncio/sslproto.py », line 515, in data_received

self._app_protocol.data_received(chunk)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/connection.py », line 52, in data_received

frame = frame_from_raw(raw)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py », line 40, in frame_from_raw

frame.from_payload(payload)

File « /usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py », line 127, in from_payload

self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])

File « /usr/lib/python3.5/enum.py », line 241, in call

return cls.new(cls, value)

File « /usr/lib/python3.5/enum.py », line 476, in new

raise ValueError("%r is not a valid %s" % (value, cls.name))

ValueError: 378 is not a valid NodeTypeWithSubtype

Number of received scenes does not match expected number

NodeTypeWithSubtype.LIGHT_ON_OFF not implemented

NodeTypeWithSubtype.LIGHT_ON_OFF not implemented

[2020-01-27 22:08:02][DEBUG] : Send http://localhost:9123/devices

[2020-01-27 22:08:02][DEBUG] : Result {« result »: « fail »}

[2020-01-27 22:09:02][DEBUG] : Send http://localhost:9123/devices

[2020-01-27 22:09:02][DEBUG] : Result {« result »: « fail »}

Si tu veut que @lunarok soit notifier il faut utiliser le @ suivi de son pseudo comme je viens de le faire !
Si non il risque fort de ne pas voir ton message.

merci @olive

@lunarok pas de réponse ?

Hello
sans y croire moi même :wink: j’imagine que l’installation du plugin était ok et démon marqué OK ?
Autre point aussi au cas où : la première fois que j’ai fait un scan je n’ai vu mes volets qu’après un f5 dans mon navigateur. La deuxième fois suite à raz des données klf puis recopie de clé sur le klf, f5 après scan n’a pas suffit et j’avais relancé le démon.
À voir si utile car à priori c’est plus une erreur qu’un OK sans affichage votre souci…
désolé si inutile.

La lib ne supporte que les ouvrant : fenetre, VR, stores

Bonjour @lunarok
J’ai vu un pull request sur la lib pyvlx qui inclut dexxo io
https://github.com/Julius2342/pyvlx/pull/29
J’ai regardé le plugin klf 200 installé dans mon jeedom et il contient le code dessus.
C’est dommage, car sur Home-Assistant c’est supporté, et qui se base sur la même lib je pense.

C’est pas la porte de garage qui fait bugger, mais lumières et inter

J’ai ajouter du code pour les « ON/OFF », mais je suis incapable de le tester de mon côté.
Du coup je vérifie juste que ca n’a pas d’impact sur les ouvrants avant de faire la release

Bonjour @lunarok
S’il y a des choses à tester, n’hesitez pas, je suis preneur !

Bonjour,
J’ai mis à jour le plugin klf 200, mais le scan ne trouve pas les porte garages.
Au ca ou ça peut aider, voici le log:

======== Running on http://localhost:9123 ========

Connecting to KLF 200.
Connected to: KLF 200: Software version: 0.2.0.0.71.0, hardware version: 6, protocol version: 3.14
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Number of received scenes does not match expected number
NodeTypeWithSubtype.LIGHT_ON_OFF not implemented
NodeTypeWithSubtype.LIGHT_ON_OFF not implemented
[2020-02-15 21:56:03][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 21:56:03][DEBUG] : Result {"result": "fail"}
[2020-02-15 21:57:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 21:57:02][DEBUG] : Result {"result": "fail"}
[2020-02-15 21:58:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 21:58:02][DEBUG] : Result {"result": "fail"}
[2020-02-15 21:59:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 21:59:02][DEBUG] : Result {"result": "fail"}
[2020-02-15 22:00:04][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 22:00:04][DEBUG] : Result {"result": "fail"}
[2020-02-15 22:01:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 22:01:02][DEBUG] : Result {"result": "fail"}
[2020-02-15 22:02:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 22:02:02][DEBUG] : Result {"result": "fail"}
[2020-02-15 22:02:29][DEBUG] : Send http://localhost:9123/devices
[2020-02-15 22:02:29][DEBUG] : Result {"result": "fail"}

A nouveau, pourquoi tu parles de ta porte de garage ? C’est pas ça dont il se plaint là

En fait le boitier pour commander les portes de garage apporte 3 nouveaux accessoires dans l’interface klf, et aucun n’est remonté dans jeedom et sont inutilisables.
« porte de garage » c’était un raccourci de l’ensemble :wink:

Dont des lampes ou interrupteurs de type relais ? Car là il y a du ON/OFF qui pose le soucis

Hello,
je ne saurais pas te dire. Il y a un led, mais je ne vois pas d’interrupteur.
Par contre, je me suis rendu compte que mes scenario des volets avec kfl ne marchent plus.
C’est lié à la dernière mis à jour du plugin ?

Voici le logs

Connecting to KLF 200.
Connected to: KLF 200: Software version: 0.2.0.0.71.0, hardware version: 6, protocol version: 3.14
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 136, in from_payload
self.target = Parameter(payload[87:89])
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 20, in __init__
self.raw = self.from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/parameter.py", line 61, in from_raw
raise PyVLXException("parameter::raw_exceed_limit", raw=raw)
pyvlx.exception.PyVLXException: <PyVLXException description="parameter::raw_exceed_limit" raw="b'\xd1\x00'"/>
Number of received scenes does not match expected number
NodeTypeWithSubtype.LIGHT_ON_OFF not implemented
[2020-02-18 06:46:01][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:46:01][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:47:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:47:02][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:48:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:48:02][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:49:01][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:49:01][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:50:04][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:50:04][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:51:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:51:02][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:52:01][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:52:01][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:52:44][DEBUG] : Action /set/1/100
[2020-02-18 06:52:44][DEBUG] : Send http://localhost:9123/set/1/100
[2020-02-18 06:52:44][DEBUG] : Result {"result": "fail", "reason": "device unknown"}
[2020-02-18 06:52:48][DEBUG] : Action /set/3/100
[2020-02-18 06:52:48][DEBUG] : Send http://localhost:9123/set/3/100
[2020-02-18 06:52:48][DEBUG] : Result {"result": "fail", "reason": "device unknown"}
[2020-02-18 06:52:51][DEBUG] : Send http://localhost:9123/position/3
[2020-02-18 06:52:51][DEBUG] : Result {"result": "fail", "reason": "device unknown"}
[2020-02-18 06:52:51][DEBUG] : Update storejardin2 at %
[2020-02-18 06:53:02][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:53:02][DEBUG] : Result {"result": "fail"}
[2020-02-18 06:54:03][DEBUG] : Send http://localhost:9123/devices
[2020-02-18 06:54:03][DEBUG] : Result {"result": "fail"}

Si tu peux tester la dernière version du market et me mettre le log du scan stp

Salut,
Je viens de mettre à jour le plugin mais il n’arrive toujours pas à remonter les porte de garage.
Pour info, entre temps, je suis passé à la version 4.0.43 avant de finaliser mon install.
Pour les logs:

  • dans klf200, c’est vert mais il y a des exceptions

  • dans http.error, c’est rouge et j’ai des messages en lien avec klf200

Sinon, j’ai testé cette lib MiSchroe / klf-200-api et il permet de reconnaitre et piloter mes portes de garage, ainsi que mes stores io homecontrol. Par contre c’est du nodejs, mais mieux implémenté que pyvlx je pense.

Merci pour tes investigations.

Log http.error

0 /var/www/html/plugins/klf200/core/ajax/klf200.ajax.php(28): klf200::scanDevices()
#1 {main}
  thrown in /var/www/html/plugins/klf200/core/class/klf200.class.php on line 161, referer: https://jeedom.mondomaine.org/index.php?v=d&m=klf200&p=klf200&id=klf200
[Sun Mar 15 23:13:27.343314 2020] [:error] [pid 2575] [client 192.168.0.25:49238] PHP Fatal error:  Uncaught Error: Using $this when not in object context in /var/www/html/plugins/klf200/core/class/klf200.class.php:161
Stack trace:
#0 /var/www/html/plugins/klf200/core/ajax/klf200.ajax.php(28): klf200::scanDevices()
#1 {main}
  thrown in /var/www/html/plugins/klf200/core/class/klf200.class.php on line 161, referer: https://jeedom.mondomaine.org/index.php?v=d&m=klf200&p=klf200&id=klf200
[Sun Mar 15 23:13:28.669938 2020] [:error] [pid 834] [client 192.168.0.25:49240] PHP Fatal error:  Uncaught Error: Using $this when not in object context in /var/www/html/plugins/klf200/core/class/klf200.class.php:161

Log klf200

Connecting to KLF 200.
Connected to: KLF 200: Software version: 0.2.0.0.71.0, hardware version: 6, protocol version: 3.14
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Exception in callback _SelectorSocketTransport._read_ready()
handle: <Handle _SelectorSocketTransport._read_ready()>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/events.py", line 126, in _run
self._callback(*self._args)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 730, in _read_ready
self._protocol.data_received(data)
File "/usr/lib/python3.5/asyncio/sslproto.py", line 515, in data_received
self._app_protocol.data_received(chunk)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/connection.py", line 52, in data_received
frame = frame_from_raw(raw)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frame_creation.py", line 40, in frame_from_raw
frame.from_payload(payload)
File "/usr/local/lib/python3.5/dist-packages/pyvlx/frames/frame_get_all_nodes_information.py", line 127, in from_payload
self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
File "/usr/lib/python3.5/enum.py", line 241, in __call__
return cls.__new__(cls, value)
File "/usr/lib/python3.5/enum.py", line 476, in __new__
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 378 is not a valid NodeTypeWithSubtype
Number of received scenes does not match expected number
NodeTypeWithSubtype.LIGHT_ON_OFF not implemented
NodeTypeWithSubtype.LIGHT_ON_OFF not implemented
[2020-03-15 23:13:25][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:13:25][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:13:26][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:13:26][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:13:27][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:13:27][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:13:28][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:13:28][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:13:28][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:13:28][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:14:02][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:14:02][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:14:02][ERROR] : Erreur sur la fonction cron du plugin : Using $this when not in object context
[2020-03-15 23:15:03][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:15:03][DEBUG] : Result {"devices": [{"type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"type": "RollerShutter", "id": 4, "name": "storepissou"}, {"type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:15:03][ERROR] : Erreur sur la fonction cron du plugin : Using $this when not in object context
[2020-03-15 23:16:02][DEBUG] : Send http://localhost:9123/devices
[2020-03-15 23:16:02][DEBUG] : Result {"devices": [{"position": 100, "type": "RollerShutter", "id": 0, "name": "storesalonfacade"}, {"position": 100, "type": "RollerShutter", "id": 1, "name": "storesalonjardin1"}, {"position": 0, "type": "RollerShutter", "id": 2, "name": "storecuisine"}, {"position": 100, "type": "RollerShutter", "id": 3, "name": "storesalonjardin2"}, {"position": 100, "type": "RollerShutter", "id": 4, "name": "storepissou"}, {"position": 100, "type": "RollerShutter", "id": 5, "name": "storenouchi"}, {"position": 100, "type": "RollerShutter", "id": 6, "name": "storeaina"}, {"type": "OnOffSwitch", "id": 8, "name": "interrupteurtouran"}, {"type": "OnOffSwitch", "id": 12, "name": "interrupteurpolo"}], "result": "ok"}
[2020-03-15 23:16:02][ERROR] : Erreur sur la fonction cron du plugin : Using $this when not in object context

Le http error he vais regarder c’est trois fois rien.
Les stores et interrupteurs, il te les a créer quand même oui ? Ils marchent les onoff ?
Et ta porte de garage apparaît pas dans la liste c’est bien ça ? On voit que des rollershutter et onoffswitch. Alors que pourtant le type garage door existe dans la lib pyvlx

Pour le nodejs, je l’avais testé, mais il apportait rien pour moi et moins transparent d’utilisant. La on va voir car si c’est pour un type qui marche mal alors qu’il est listé, ça vaut le coup de le remonter a pyvlx.

Faut que je mette un boutons forçant la mise a jour de pyvlx justement car il y a des nouveautés

hello

  • Oui il a crée les stores et interrupteurs après scan
  • Les stores marchent nickel. Les interrupteurs ne marchent pas (voir logs plus bas)
  • Les portes de garage n’apparaissent pas dans la liste.

Voici le log quand je fais « test » dans les commandes d’un interrupteur:

[2020-03-16 21:19:35][DEBUG] : Action /on/12
[2020-03-16 21:19:35][DEBUG] : Send http://localhost:9123/on/12
[2020-03-16 21:19:35][DEBUG] : Result {"reason": "node or position not provided", "result": "fail"}
[2020-03-16 21:19:48][DEBUG] : Send http://localhost:9123/status/12
[2020-03-16 21:19:48][DEBUG] : Result {"device": 12, "status": false, "result": "ok"}
[2020-03-16 21:19:48][DEBUG] : Update interrupteur polo at %
[2020-03-16 21:19:52][DEBUG] : Action /off/12
[2020-03-16 21:19:52][DEBUG] : Send http://localhost:9123/off/12
[2020-03-16 21:19:52][DEBUG] : Result {"reason": "node or position not provided", "result": "fail"}
[2020-03-16 21:19:55][DEBUG] : Action /on/12
[2020-03-16 21:19:55][DEBUG] : Send http://localhost:9123/on/12
[2020-03-16 21:19:55][DEBUG] : Result {"reason": "node or position not provided", "result": "fail"}

Bonjour @otokarl, est-ce que tu as réussi à faire fonctionner le moteur DEXXO SMART io depuis la Jeedom finalement? Je viens de me faire installer une porte de garage avec ce moteur et j’hésite entre l’achat d’une KLF 200 ou une Tahoma pour la domotiser avec ma Jeedom… Merci!