telemetry
Quoi de neuf

Fhem

  • Forum Electricité - Domotique
  • Auteur du sujet Auteur du sujet jcoenen
  • Date de début Date de début
  • #662
Bon, ça fonctionne: il a découvert mon screen.

Je le passe live (le screen), et j'essaie de l'abaisser, et là il me retourne une erreur, je pense que c'est deux fois rien:

Code:
2025-01-19 14:36:15,532 - ERROR    - fhempy.lib.fhem_pythonbinding: Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 208, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 340, in handle_set
    return await fct_call(hash, final_params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/motionblinds/motionblinds.py", line 125, in set_up
    blind = gw.device_list[self.mac]
            ^^
NameError: name 'gw' is not defined
 with hash: {'id': 49352714, 'FHEMPYTYPE': 'motionblinds', 'argsh': {}, 'defargs': ['motionblinds_10XXXX002', 'fhempy', 'motionblinds', '172.19.3.22', 'XXXX-XX-X', '1XXXXXXXXXX2', '10000000'], 'defargsh': {}, 'args': ['motionblinds_10XXXX2', 'up'], 'msgtype': 'function', 'function': 'Set', 'NAME': 'motionblinds_10XXXXXX2', 'PYTHONTYPE': 'motionblinds'}
Je sens qu'on y est presque !
 
  • #663
Pour éviter les mises à jour via l'interface web gihub tt copy paste et autres merdouillages, j'ai réorganisé mes fichiers, cela devrait être plus streamline maintenant.

Donc mes deux modules sont pompés directement de GitHub (comme tu l'avais fait), et j'édite avec VC (microproute Visual Code) directement dans les modules, comme VC est connecté avec github cela me permet du faire le push directement et mes modules correspondent avec leur version github.

Alors, j'ai procrastiné avec les noms de classes et de directory, il vaudrait mieux effacer les deux modules de la librairie fhempy et refaire un pull de motiongw et de motionblinds (C'est ce que j'ai fait).

A ce moment nous aurons le même code.
 
  • #664
Aïe j'ai pas vu tes messages précédents, ouf, je me disais bien que c'était bizarre comme erreur.

Oui si on bricole les librairies il faut recharger le serveur car il doit les cacher (heuuu pas très français ça) et donc ...

Oui on s'approche car l'appel au GetDeviceList a bien fonctionné.

Je deviens vieux et myope, car la typo a encore frappé (enfin c'était pareil avant, donc ce n'est pas une excuse valable).

la variable gw devrait être self.gw

J'ai corrigé dans le code ==> poulez donc moi ça (restons dans le français correct).

Si ça maerche une fwa, j'encoderai les lecture de position, batterie et autre truc qu'on ne lit jamais mais que c'est quant même bien d'avoir.
 
  • #665
Victoire !

Ça marche, le screen monte et descend depuis FHEM !

J'ai tout recréé sur ma VM, juste un stuud avec le nom du répertoire motionblinds qui en fait se crée en motionblind quand je le prends depuis github (il manque un "s" quelque part, j'ai dû le renommer sinon ça ne fonctionne pas).

Sinon, tout fonctionne, maintenant il reconnaît la key direct depuis le define.

Et puis il détecte le screen et on peut le faire bouger.

Super !

MERCI !

(et tout ça sans bougie)
 
  • #666
Pour la petite histoire, je suis dans mon bureau, et je dois regarder le screen via une caméra extérieure pour voir s'il bouge ou pas.
 
  • #667
Formidable :eek:
J'en suis tout chose, pour le répertoire, oui c'est ce que j'ai eu aussi cet après midi, plus rien ne fonctionnait et ça me donnait des erreurs cryptiques un peu partout, donc j'ai tout remis au net et sur GitHub il y a deux modules

  • motionblinds
  • motiongw

Je vais donc maintenant encoder la lecture des paramètres retournés par les appel. Pour l'instant c'est du pull, mais j'ai vu un truc sur la possibilité de faire des mise à jour via des messages UDP et des callback dans le code, ce serait bien car en ce cas on est notifié par le HUB que quelque chose a changé.

Joli le setup geek pour voir le screen, ca me plait bien ça.

Donc pas eu besoin d'intervention divine cette fois-ci, pas plus mal ...
 
  • #668
@Alex,

Je viens d'encoder la lecture des valeurs retournées par les blinds, maintenant ca ne plante plus chez moi, pourrais tu faire un essai ?

Tout est sur GitHub, comme d'hab.
 
  • #669
J'ai tout poullé (aucun changement dans le gw, uniquement dans le blind)

Quand je passe en live, je vois bien les nouveaux status:
upload_2025-1-21_21-42-38.png


Par contre, quand je fait un SET Status (je suppose pour lire les readings ?), il me retourne une erreur:

upload_2025-1-21_21-43-43.png


upload_2025-1-21_21-43-38.png
 
  • #670
Ok, merci pour la trace, ça va me permettre de bosser sur le live.

Et le scan.
 
  • #671
Au fait et un up ou down en mode live ?

Ca donne quoi ?
 
  • #672
Ca ne marche plus :sob:

Failed to execute function Set: Traceback (most recent call last):
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
ret = await asyncio.wait_for(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 208, in Set
return await utils.handle_set(self._conf_set, self, hash, args, argsh)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 340, in handle_set
return await fct_call(hash, final_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/motionblinds/motionblinds.py", line 163, in set_down
self.blind.Close()
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 1360, in Close
response = self._write(data)
^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 983, in _write
response = self._gateway._write_subdevice(self.mac, self._device_type, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 564, in _write_subdevice
return self._send(msg)
^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 526, in _send
log_hide(message),
^^^^^^^^^^^^^^^^^
File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 142, in log_hide
mess_copy["AccessToken"] = re.sub(hide_pattern, "x", mess_copy["AccessToken"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/__init__.py", line 185, in sub
return _compile(pattern, flags).sub(repl, string, count)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'NoneType'
 
  • #673
Code:
Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 208, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 340, in handle_set
    return await fct_call(hash, final_params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/motionblinds/motionblinds.py", line 163, in set_down
    self.blind.Close()
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 1360, in Close
    response = self._write(data)
               ^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 983, in _write
    response = self._gateway._write_subdevice(self.mac, self._device_type, data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 564, in _write_subdevice
    return self._send(msg)
           ^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 526, in _send
    log_hide(message),
    ^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 142, in log_hide
    mess_copy["AccessToken"] = re.sub(hide_pattern, "x", mess_copy["AccessToken"])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/re/__init__.py", line 185, in sub
    return _compile(pattern, flags).sub(repl, string, count)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'NoneType'
 
  • #674
OK merci, ca ne m'étonne pas trop, le code avant fonctionnait, mais ne faisait pas grand chose, normalement après un Up/Down on peut extraire les données retournées par la librairies, mais apparemment mon interprétation des appels à effectuer et leur paramètrage n'est pas correcte.

Au vu du Access_token dans le message, je vais refaire un update du gateway, que j'ai enlevé après avoir pris connaissance des blinds définis dans celui-ci.
La librairie n'est pas très locale sur le fonctionnement du bidule.

Bon je retravaille ça demain.

Bonne nuit.
 
  • #675
Bon, je viens de reluquer le code, et il y avait des trucs pas très bien initialisés, mais ça fonctionnait quant même jusqu'aux demandes vers les blinds.

Je viens de changer la chose. A l'occasion peux tu essayer ?

J'ai aussi mis par défaut le verbose à 5 sur les blinds pour pouvoir obtenir les info de debug

Ces info sont écrite dans un fichier log accessible via fhem
le nom du device Log; fhempy-2025-01-24.log
Il en fait un par jour.
 
Dernière édition:
  • #676
Pour rester dans le sujet, je veis qu’ils proposent des kits d’adaptation pour rollos dans l’enseigne homonyme de ce forum, pour l’interfaçage ils n’ont que le bridge mais d’après ce que je vois l’api est compatible … hmmmm ….

Bon je venins de commander un kit pour store et un bridge Wifi (CMD-01), malheureusement mon RFXtrx 433 E n'a pas le EMC qui permet de piloter le motionbridge. Il. me reste un tout vieux RFXtrx433 de première génération et je leur ai demandé je peux faire un trade in. En attendant le bridge et le moteur seront livrés demain, ce sera plus facile pour teste le module, et comme j'ai deux store dans mon bureau, pas besoin de caméra ;)
 
Dernière édition:
  • #677
Heu, je ne comprends pas tout. Chez moi, c'est du Brel. Est-ce donc la même chose que Motionblinds ? En fait, je viens de m'apercevoir que Motionblinds était une marque, je pensais que c'était un nom que tu avais choisi pour le code...
 
  • #678
Heu, je ne comprends pas tout. Chez moi, c'est du Brel. Est-ce donc la même chose que Motionblinds ? En fait, je viens de m'apercevoir que Motionblinds était une marque, je pensais que c'était un nom que tu avais choisi pour le code...

En fait d'après ce que j'en ai vu, Coulisse BV est une société hollandaise qui a fait motionblind, Brel utilise leur API, d'ailleurs sur HA il utilisent l'intégration motionblind pour les Brel, et je ne serait pas surpris que les moteur soient aussi compatible sur la RF.
 
  • #679
Ah OK, je n'avais pas creusé si loin...
 
  • #680
Alors, résultats des tests

  • Set Status: erreur
  • Set slider pour position: rien ne se passe
  • Set Down: erreur

Set Down:
Code:
Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 208, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 340, in handle_set
    return await fct_call(hash, final_params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/motionblinds/motionblinds.py", line 177, in set_down
    self.blind.Close()
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 1360, in Close
    response = self._write(data)
               ^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 983, in _write
    response = self._gateway._write_subdevice(self.mac, self._device_type, data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 564, in _write_subdevice
    return self._send(msg)
           ^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 526, in _send
    log_hide(message),
    ^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 142, in log_hide
    mess_copy["AccessToken"] = re.sub(hide_pattern, "x", mess_copy["AccessToken"])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/re/__init__.py", line 185, in sub
    return _compile(pattern, flags).sub(repl, string, count)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'NoneType'

Set status:

Code:
Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/tasks.py", line 479, in wait_for
    return fut.result()
           ^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 208, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 340, in handle_set
    return await fct_call(hash, final_params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/motionblinds/motionblinds.py", line 196, in set_status
    self.blind.Update()
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 1305, in Update
    self.Update_trigger()
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 1280, in Update_trigger
    response = self._write(self.QUERY_DATA)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 983, in _write
    response = self._gateway._write_subdevice(self.mac, self._device_type, data)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 564, in _write_subdevice
    return self._send(msg)
           ^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 526, in _send
    log_hide(message),
    ^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/motionblinds/motion_blinds.py", line 142, in log_hide
    mess_copy["AccessToken"] = re.sub(hide_pattern, "x", mess_copy["AccessToken"])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/re/__init__.py", line 185, in sub
    return _compile(pattern, flags).sub(repl, string, count)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'NoneType'
 

Sujet semblables

Réponses
5
Affichages
3K
@lex
Réponses
21
Affichages
3K
RobBZ
Réponses
2K
Affichages
208K
jcoenen
Réponses
3
Affichages
7K
pidgin

Nos articles

On a aimé dans le forum

Retour
Haut