FlyingDomotic / domoticz-airsend-plugin

AirSend (https://devmel.com/) Domoticz plug-in/Plug-in Domoticz pour Airsend
GNU General Public License v3.0
2 stars 0 forks source link

Callback set_up Help #8

Closed rezzalex closed 1 year ago

rezzalex commented 1 year ago

Bonjour, je ne parviens pas à installer le callback. Rappel de ma config : . Domoticz dans un container en mode Host, PHP non installé . Airsend webservice dans un Autre container en mode host, PHP non installé . Host qui a PHP installé

le plugin dit qu'il ne peut pas écrire le "callback.php" : Error: AirSend: Can't write /opt/domoticz/userdata/plugins/Airsend/airsend.php

Voici mon json de configuration :

{
    "parameters": {
        "domoticzRootUrl": "http://xxx.xxx.xxx.xxx:DZ_Local_Port/",
        "yamlConfigurationFile": "configuration.yaml",
        "webServerFolder": "/opt/domoticz/userdata/plugins/Airsend/",
        "webServerUrl": "_adresse IP locale du Host_/",
        "webServiceUrl": "http://127.0.0.1:33863/",
        "protocolToListen" : "pfx",
        "authorization" : "sp://xxxxxxxxxxxxx"
    }
}

Les lignes qui ne concernent pas le callback fonctionnent: A noter que le webServiceUrl indique ( ou du moins tente d'indiquer) mon Host (ou PHP est installé), alors que webServerFolder indique un chemin propre au container dans lequel s'éxecute DZ.

rezzalex commented 1 year ago

J'ai progressé et mon fichier airsend.php est créé dans mon Host, (depuis mon container via un path "bindé") à l'endroit ou les fichier PHP s'exécutent sur mon Host. Quand on l'appelle depuis un browser depuis l'URL que j'ai indiquée dans le fichier de conf Json, une page blanche s'affiche, sans message d'erreur, j'ai pensé que c'était bon signe.

Dans DZ j'ai eu un mess d'erreur une fois ("decode Json" qq chose, impossible de remettre la main sur le log), puis plus du tout.

Mais le "text" DZ "AirSend event data" n'affiche rien et ne se met pas à jour quand je joue avec les télécommandes physiques du protocole spécifié... :-(

rezzalex commented 1 year ago

Dernière MAJ :

j'ai maintenant des remontées de valeurs dans "AirSend event data". J'ai tenté de réaliser mon 1er mapping, comme ceci :

{ "parameters": { "domoticzRootUrl": "http://XXX.XXX.XX.XX:Port-local-DZ", "yamlConfigurationFile": "configuration.yaml", "webServerFolder": "/var/www/html/", "webServerUrl": "http://127.0.0.1:8080/", "webServiceUrl": "http://127.0.0.1:33863/", "protocolToListen" : "25455", "authorization" : "sp://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, "mapping": [ {"Additional remote": {"remoteId": 25457, "remoteSource": 11944393, "deviceId": 25455, "deviceSource": 127079}, ] }

et j'ai les messages d'erreur suivants au démarrage du Plugin :

2023-01-23 17:37:14.168 Error: AirSend: parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
2023-01-23 17:37:14.168 Error: AirSend: File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
2023-01-23 17:37:14.168 Error: AirSend: return _default_decoder.decode(s)
2023-01-23 17:37:14.168 Error: AirSend: File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
2023-01-23 17:37:14.173 Error: AirSend: obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2023-01-23 17:37:14.173 Error: AirSend: File "/usr/lib/python3.7/json/decoder.py", line 353, in raw_decode
2023-01-23 17:37:14.173 Error: AirSend: obj, end = self.scan_once(s, idx)
2023-01-23 17:37:14.173 Error: AirSend: File "/usr/lib/python3.7/json/decoder.py", line 35, in __init__
2023-01-23 17:37:14.173 Error: AirSend: ValueError.__init__(self, errmsg)
2023-01-23 17:37:14.173 Error: AirSend: NameError: name 'ValueError' is not defined
2023-01-23 17:37:17.144 Status: dzVents: Info: consommation réelle maison: ------ Start internal script: Calcul conso réelle maison: Device: "Enphase kWh Consumption (Panneaux solaires)", Index: 1617
2023-01-23 17:37:17.145 Status: dzVents: Info: consommation réelle maison: ------ Finished Calcul conso réelle maison
2023-01-23 17:37:17.146 Status: dzVents: Info: icone batterie: ------ Start internal script: icone batteries: Device: "Jauge Batteries (Panneaux solaires)", Index: 2186
2023-01-23 17:37:17.146 Status: dzVents: Info: icone batterie: ------ Finished icone batteries
2023-01-23 17:37:17.147 Status: EventSystem: Script event triggered: /opt/domoticz/dzVents/runtime/dzVents.lua
2023-01-23 17:37:17.174 Status: EventSystem: reset all device statuses...
FlyingDomotic commented 1 year ago

J'ai créé une nouvelle version pour améliorer la trace en cas d'erreur.

Sinon, en ajoutant un } après "deviceSource": 127079}, ça devrait aller mieux

rezzalex commented 1 year ago

Bonjour,

merci pour le } , qu il faudrait peut être ajouté à l'exemple dans le read.me

J'ai plein de messages d'erreur sur des appareils / protocoles non spécifiés dans la conf :

2023-01-24 08:58:17.268 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file 2023-01-24 09:00:38.492 Error: AirSend: Can't find 14177/1513505536 in YAML configuration file 2023-01-24 09:00:40.251 Error: AirSend: Can't find 14177/2201174785 in YAML configuration file 2023-01-24 09:06:01.140 Error: AirSend: Can't find 14177/1513505536 in YAML configuration file 2023-01-24 09:10:21.413 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file 2023-01-24 09:15:24.216 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file 2023-01-24 09:15:38.346 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file

Lorsque j'actionne la télécommande d'un VR; spécifié dans la partie mapping du fichier de conf json, le VR ne change pas d'état dans DZ, DZ devient lent pour qq secondes et voici les logs :

2023-01-24 12:00:11.275 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.275 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:09","reliability":192,"channel":{"id":25457,"source":11944393,"counter":962496211,"mac":962496211},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1674558009328,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.275 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.276 AirSend: Device Volet est, method 1, type 1, value 8

2023-01-24 12:00:11.276 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 8 for Volet est

2023-01-24 12:00:11.276 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.276 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:09","reliability":192,"channel":{"id":25457,"source":11944393,"counter":962496211,"mac":962496211},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1674558009328,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.276 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.276 AirSend: Device Volet est, method 1, type 1, value 8

2023-01-24 12:00:11.276 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 8 for Volet est

2023-01-24 12:00:11.277 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.279 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:09","reliability":192,"channel":{"id":25457,"source":11944393,"counter":962496211,"mac":962496211},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1674558009328,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.280 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.280 AirSend: Device Volet est, method 1, type 1, value 8

2023-01-24 12:00:11.280 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 8 for Volet est

2023-01-24 12:00:11.280 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.281 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:10","reliability":0,"channel":{"id":25457,"source":11944393,"counter":3721451280,"mac":3721451280},"thingnotes":{"notes":[{"method":1,"type":1,"value":4,"value_binsize":4}]},"original_timestamp":1674558010382,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.281 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.281 AirSend: Device Volet est, method 1, type 1, value 4

2023-01-24 12:00:11.281 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 4 for Volet est

2023-01-24 12:00:11.337 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.337 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:10","reliability":0,"channel":{"id":25457,"source":11944393,"counter":1817664203,"mac":1817664203},"thingnotes":{"notes":[{"method":1,"type":1,"value":2,"value_binsize":4}]},"original_timestamp":1674558010738,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.338 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.338 AirSend: Device Volet est, method 1, type 1, value 2

2023-01-24 12:00:11.338 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 2 for Volet est

2023-01-24 12:00:11.339 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.339 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:10","reliability":0,"channel":{"id":25457,"source":11944393,"counter":1817664203,"mac":1817664203},"thingnotes":{"notes":[{"method":1,"type":1,"value":2,"value_binsize":4}]},"original_timestamp":1674558010738,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.339 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.339 AirSend: Device Volet est, method 1, type 1, value 2

2023-01-24 12:00:11.340 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 2 for Volet est

2023-01-24 12:00:11.340 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:11.340 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:10","reliability":0,"channel":{"id":25457,"source":11944393,"counter":1817664203,"mac":1817664203},"thingnotes":{"notes":[{"method":1,"type":1,"value":2,"value_binsize":4}]},"original_timestamp":1674558010738,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:11.340 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:11.340 AirSend: Device Volet est, method 1, type 1, value 2

2023-01-24 12:00:11.341 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 2 for Volet est

2023-01-24 12:00:14.418 AirSend: onDeviceModified 001/AirSend - AirSend event data

2023-01-24 12:00:14.418 AirSend: Received event {"type":3,"timestamp":"2023-01-24 11:00:14","reliability":64,"channel":{"id":25457,"source":11944393,"counter":1817664203,"mac":1817664203},"thingnotes":{"notes":[{"method":1,"type":1,"value":2,"value_binsize":4}]},"original_timestamp":1674558014284,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"}

2023-01-24 12:00:14.419 AirSend: Mapping 25457/11944393 to 25455/127079

2023-01-24 12:00:14.419 AirSend: Device Volet est, method 1, type 1, value 2

2023-01-24 12:00:14.419 AirSend: Ignoring change airSend cover type 4098 with event type 1 and event value 2 for Volet est

rezzalex commented 1 year ago

On dirait que le plugin n'arrive pas à mapper les ordres pour le VR ...

FlyingDomotic commented 1 year ago

Bonjour,

merci pour le } , qu il faudrait peut être ajouté à l'exemple dans le read.me

J'ai modifié la doc et le fichier d'exemple avec la } manquante. Merci de m'avoir signalé l'erreur.

2023-01-24 08:58:17.268 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file

Ce message indique que le plug-in reçoit un message d'un équipement qui n'est ni dans la partie mapping, ni dans configuration.yaml. Du coup, on ne sait pas à quel dispositif Domoticz le relier, et on l'ignore.

Si le fichier .yaml est récent et en ligne avec les éléments à gérer, c'est probablement qu'il manque un mapping.

En fonction de ce qui coince, il faut soit le définir dans l'appli AirSend, et régénérer un fichier configuration.yaml, soit ajouter le mapping vers un volet existant manquant.

2023-01-24 12:00:11.276 AirSend: Device Volet est, method 1, type 1, value 8

La doc DevMel n'indique rien pour ce type de message. Je vais leur poser la question. Le type 2 par contre est PROG et 4 RESET. Ca pourrait être la gestion d'un équipement non encore existant ajouté manuellement dans l'appli AirSend. Est-ce le cas ?

rezzalex commented 1 year ago

Merci.

Possible de passer les messages radio ignorés en message plutôt qu'en erreur, cela me permettrai de ne pas les recevoir par mail.

Pour le reste, je suis un peu perdu...

rezzalex commented 1 year ago

2023-01-24 12:00:11.276 AirSend: Device Volet est, method 1, type 1, value 8

La doc DevMel n'indique rien pour ce type de message. Je vais leur poser la question. Le type 2 par contre est PROG et 4 RESET. Ca pourrait être la gestion d'un équipement non encore existant ajouté manuellement dans l'appli AirSend. Est-ce le cas ?

il s'agit d'une télécommande de VR profalux, à partir de laquelle un apprentissage Airsend à été effectué, donnant lieu à la télécommande virtuelle Airsend à laquelle j'ai tenté de le mapper ici...

rezzalex commented 1 year ago

2023-01-24 08:58:17.268 Error: AirSend: Can't find 14177/1513505537 in YAML configuration file

Ce message indique que le plug-in reçoit un message d'un équipement qui n'est ni dans la partie mapping, ni dans configuration.yaml. Du coup, on ne sait pas à quel dispositif Domoticz le relier, et on l'ignore.

Ce ne semble pas être le protocole que j'ai paramétré pour écoute... comment est-ce possible ?

FlyingDomotic commented 1 year ago

Possible de passer les messages radio ignorés en message plutôt qu'en erreur, cela me permettrai de ne pas les recevoir par mail.

C'est fait.

il s'agit d'une télécommande de VR profalux, à partir de laquelle un apprentissage Airsend à été effectué, donnant lieu à la télécommande virtuelle Airsend à laquelle j'ai tenté de le mapper ici...

Je pense que c'est la raison pour laquelle DevMel n'a pas trop documenté cette partie.

Ce ne semble pas être le protocole que j'ai paramétré pour écoute... comment est-ce possible ?

Il est possible que DevMel envoie d'autres choses dans le callback que les écoutes de protocole. Là encore, la doc DevMel n'est pas très causante, vu que je n'en ai pas ;-) Juste des exemples d'adaptation pour d'autres gestionnaires domotique.

rezzalex commented 1 year ago
il s'agit d'une télécommande de VR profalux, à partir de laquelle un apprentissage Airsend à été effectué, donnant lieu à la télécommande virtuelle Airsend à laquelle j'ai tenté de le mapper ici...

Je pense que c'est la raison pour laquelle DevMel n'a pas trop documenté cette partie.

C'est pourtant bien le même principe de retour d'état décrit dans le plugin pour jeedom (développée par Devmel je crois)...

FlyingDomotic commented 1 year ago

J'ai relu le plug-in Jeedom, je n'ai rien trouvé pour les codes 8, 4 et 2 ....

rezzalex commented 1 year ago

Bonjour Réponse de DevMel :

La telecommande profalux ne peut pas etre décodée, seul klq868 peut s'afficher, le mapping des boutons n'est donc pas disponible il faut le faire a partir des données binaires 8 4 et 2. Il faudrai voir ceci avec le développement du plugins domoticz pour emettre une issue github.

Une fois le channel sélectionné toutes les trames décodées sont affichées il faut les filtrer ensuite.

Cela vous parle ?

FlyingDomotic commented 1 year ago

J'ai ouvert un ticket chez DevMel hier pour avoir des infos sur les codes 8, 4 et 2. J'attends leur réponse.

J'ai dans l'idée que ces codes sont associés aux touches enregistrées manuellement. On peut imaginer que ça correspond aux touches up/down/stop, probablement dans l'ordre où elles ont été apprises.

rezzalex commented 1 year ago

Dans les tests effectués j'avais toujours fait en premier descente, puis stop, puis monter

FlyingDomotic commented 1 year ago

La dernière version du plug-in ajoute une section "settings" optionnelle, qui permet : 1) de spécifier finement les paramètres du dispositif Domoticz, 2) de spécifier des commandes non standard, qui devrait permettre de mapper les commandes Domoticz sur un triplet method/type/value, et de mapper ce même triplet sur des nValue et/ou sValue Domoticz.

Avec ça, il devient possible d'interpréter les codes 6, 4 et 2 précédents.

Je suis preneur de retours/propositions/remarques.

rezzalex commented 1 year ago

Bonjour, merci pour le travail. Pour le fichier de conf, Il n'est pas clair pour moi si la partie "mapping" est toujours nécessaire même si je spécifie plus loin dans la partie "settings" ? Dans la partie settings, où se fait la correspondance entre le device écouté et le device du fichier de conf sur la partie "Source" et "ID" ?

Après tentative de conf, j'obtiens le message d'erreur suivant : AirSend: Can't find 25457/11944393 in YAML configuration file (ligne 659 du code du plugin)

Sachant que lors de l'apprentissage de ma télécommande Airsend pour ce Volet Roulant; le deviceId reconnu à été "25455" alors que l'écoute de cette même télécommande physique donne un "25457" .... bizarre.

Dans le code, entre les lignes 650 et 664, on dirait que mon écart d' 'ID" , spécifié plus haut, n'est pas pris en compte.

Voici donc la partie mapping et settings de mon fichier de conf :

image

et l'extrait concerné du fichier configuration.yaml :

image

rezzalex commented 1 year ago

Pardon, il se peut que j'ai raté qqchose précédemment, ou utilisé un mauvais fichier de conf .

Nouvel essai et nouveau message d'erreur :

2023-01-31 12:18:12.215 AirSend: onDeviceModified 001/AirSend - AirSend event data 2023-01-31 12:18:12.215 AirSend: Received event {"type":3,"timestamp":"2023-01-31 11:18:12","reliability":0,"channel":{"id":25457,"source":11944393,"counter":2945771049,"mac":2945771049},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1675163892116,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"} 2023-01-31 12:18:12.224 AirSend: Mapping 25457/11944393 to 25455/127079 2023-01-31 12:18:12.224 AirSend: Device Volet est, method 1, type 1, value 8 2023-01-31 12:18:12.224 AirSend: Setting Volet est nValue to 1, sValue to 0 2023-01-31 12:18:12.225 Error: AirSend: (CDevice_update) Volet est: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2023-01-31 12:18:12.225 Error: AirSend: Call to function 'CDevice_update' failed, exception details: 2023-01-31 12:18:12.225 Error: AirSend: Exception: 'TypeError'. No traceback available. 2023-01-31 12:18:13.129 AirSend: onDeviceModified 001/AirSend - AirSend event data 2023-01-31 12:18:13.129 AirSend: Received event {"type":3,"timestamp":"2023-01-31 11:18:13","reliability":64,"channel":{"id":25457,"source":11944393,"counter":3080032549,"mac":3080032549},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1675163893102,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"} 2023-01-31 12:18:13.129 AirSend: Mapping 25457/11944393 to 25455/127079 2023-01-31 12:18:13.130 AirSend: Device Volet est, method 1, type 1, value 8 2023-01-31 12:18:13.130 AirSend: Setting Volet est nValue to 1, sValue to 0 2023-01-31 12:18:13.130 AirSend: onDeviceModified 001/AirSend - AirSend event data 2023-01-31 12:18:13.130 AirSend: Received event {"type":3,"timestamp":"2023-01-31 11:18:13","reliability":64,"channel":{"id":25457,"source":11944393,"counter":3080032549,"mac":3080032549},"thingnotes":{"notes":[{"method":1,"type":1,"value":8,"value_binsize":4}]},"original_timestamp":1675163893102,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"} 2023-01-31 12:18:13.130 AirSend: Mapping 25457/11944393 to 25455/127079 2023-01-31 12:18:13.131 AirSend: Device Volet est, method 1, type 1, value 8 2023-01-31 12:18:13.131 AirSend: Setting Volet est nValue to 1, sValue to 0 2023-01-31 12:18:13.130 Error: AirSend: (CDevice_update) Volet est: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2023-01-31 12:18:13.130 Error: AirSend: Call to function 'CDevice_update' failed, exception details: 2023-01-31 12:18:13.130 Error: AirSend: Exception: 'TypeError'. No traceback available. 2023-01-31 12:18:13.131 Error: AirSend: (CDevice_update) Volet est: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2023-01-31 12:18:13.131 Error: AirSend: Call to function 'CDevice_update' failed, exception details: 2023-01-31 12:18:13.131 Error: AirSend: Exception: 'TypeError'. No traceback available. 2023-01-31 12:18:14.436 AirSend: onDeviceModified 001/AirSend - AirSend event data 2023-01-31 12:18:14.436 AirSend: Received event {"type":3,"timestamp":"2023-01-31 11:18:14","reliability":0,"channel":{"id":25457,"source":11944393,"counter":2250662126,"mac":2250662126},"thingnotes":{"notes":[{"method":1,"type":1,"value":4,"value_binsize":4}]},"original_timestamp":1675163894413,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"} 2023-01-31 12:18:14.437 AirSend: Mapping 25457/11944393 to 25455/127079 2023-01-31 12:18:14.437 AirSend: Device Volet est, method 1, type 1, value 4 2023-01-31 12:18:14.437 AirSend: Setting Volet est nValue to 17, sValue to 100 2023-01-31 12:18:14.437 Error: AirSend: (CDevice_update) Volet est: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2023-01-31 12:18:14.437 Error: AirSend: Call to function 'CDevice_update' failed, exception details: 2023-01-31 12:18:14.437 Error: AirSend: Exception: 'TypeError'. No traceback available. 2023-01-31 12:18:15.141 AirSend: onDeviceModified 001/AirSend - AirSend event data 2023-01-31 12:18:15.141 AirSend: Received event {"type":3,"timestamp":"2023-01-31 11:18:15","reliability":64,"channel":{"id":25457,"source":11944393,"counter":2250662126,"mac":2250662126},"thingnotes":{"notes":[{"method":1,"type":1,"value":4,"value_binsize":4}]},"original_timestamp":1675163895077,"localip":"FE80000000000000DCF6E5FFFE8D2E9A"} 2023-01-31 12:18:15.142 AirSend: Mapping 25457/11944393 to 25455/127079 2023-01-31 12:18:15.142 AirSend: Device Volet est, method 1, type 1, value 4 2023-01-31 12:18:15.143 AirSend: Setting Volet est nValue to 17, sValue to 100 2023-01-31 12:18:15.143 Error: AirSend: (CDevice_update) Volet est: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2023-01-31 12:18:15.143 Error: AirSend: Call to function 'CDevice_update' failed, exception details: 2023-01-31 12:18:15.143 Error: AirSend: Exception: 'TypeError'. No traceback available.

fichier de conf :

image

FlyingDomotic commented 1 year ago

Pour le fichier de conf, Il n'est pas clair pour moi si la partie "mapping" est toujours nécessaire même si je spécifie plus loin dans la partie "settings" ?

Mapping permet de transférer les message d'une télécommande sur une autre, dans le cas où on en a plusieurs, quelles soient physiques ou virtuelles.

L'idée est de considérer que la télécommande présente dans configuration.yaml est la base, et que c'est elle qui doit être spécifiée en tant que deviceId/source dans mapping et dans settings. Les autres télécommandes seront spécifiées dans remoteId/remoteSource dans les lignes de mapping.

Pour l'erreur, j'ai fait une modif en 1.0.1 pour tenter de la corriger.

rezzalex commented 1 year ago

Message d'erreur au lancement du plugin 1.0.1 :

2023-01-31 14:59:57.024 Error: AirSend: (AirSend) failed to load 'plugin.py', Python Path used was '/opt/domoticz/userdata/plugins/AirSend/:/usr/lib/python37.zip:/usr/lib/python3.7:/usr/lib/python3.7/lib-dynload:/usr/local/lib/python3.7/dist-packages:/usr/lib/python3/dist-packages:/usr/lib/python3.7/dist-packages'. 2023-01-31 14:59:57.038 Error: AirSend: Exception: 'SyntaxError'. No traceback available.

FlyingDomotic commented 1 year ago

Voilà ce qui arrive quand on fait des modifs à la volée ... Ca devrait être corrigé en 1.0.2

rezzalex commented 1 year ago

Merci, ca va mieux, lors du démarrage de la dernière version du plug-in (1.0.2), les logs de DZ affichent 1.0.1 .... ?

Alors, pour le seul VR testé en retour d'état pour le moment :

Enfin, il arrivent que l'Airsend "n'entende pas" l'ordre depuis la télécommande physique. cela marche de manière plus fiable j'appuye plrs secondes sur la télécommande physique

FlyingDomotic commented 1 year ago
  • les états Open et Close sont inversés lors de l'usage de la télécommande physique mappée (je suis sur des codes et ils sont bons dans le fichier de conf).

L'avantage de la partie settings est qu'on peut tout paramétrer. Du coup, en échangeant "Open" et "Close" dans le .json, on réaligne le tout.

  • Un ordre envoyé depuis la télécommande virtuelle du plugin depuis DZ ne donne plus lieu à un chgmt d'état dans DZ.

Je pige pas ... On parle d'un élément dans mapping ? Est-il possible de détailler un peu ? De m'envoyer la partie des logs qui correspondent à une action sur cette télécommande ?

rezzalex commented 1 year ago

L'avantage de la partie settings est qu'on peut tout paramétrer. Du coup, en échangeant "Open" et "Close" dans le .json, on réaligne le tout.

mes 2 1eres remarques précédentes n'étaient pas tout à fait justes. Je suis certain des codes Open et Close reçu par le Airisend. Si on les mets au bon endroit dans "mappings", les retours d'état lors de l'utilisation de la télécommande physique mappée sont inversés. Si on inverse les codes Open et Close dans "settings", les retours d'état lors de l'utilisation de la télécommande physique mappée sont corrects mais les ordres envoyés depuis DZ sont alors inversés...

Aucun des deux n'est satisfaisant et cohérent avec les autres VR non mappés.

Un ordre envoyé depuis la télécommande virtuelle du plugin depuis DZ ne donne plus lieu à un chgmt d'état dans DZ. Je pige pas ... On parle d'un élément dans mapping ? Est-il possible de détailler un peu ? De m'envoyer la partie des logs qui correspondent à une action sur cette télécommande ?

concernant le seul VR mappé dans la conf partagée précédemment, les ordres envoyés depuis DZ ne donne plus lieu à un changement d'état du VR dans DZ (le VR bouge bien physiquement) alors que ceux qui ne sont pas mappés se comportent normalement à ce niveau la. Voici les logs lors de l'utilisation de ce VR depuis DZ :

2023-01-31 16:35:21.885 AirSend: 008/Volet est, 25455/127079: Command: 'Close', Level: 0, Color: 2023-01-31 16:35:21.886 AirSend: Sending notes method=1, type=1, value=2 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:25.788 AirSend: 008/Volet est, 25455/127079: Command: 'Stop', Level: 100, Color: 2023-01-31 16:35:25.788 AirSend: Sending notes method=1, type=1, value=4 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:28.671 AirSend: 008/Volet est, 25455/127079: Command: 'Open', Level: 100, Color: 2023-01-31 16:35:28.671 AirSend: Sending notes method=1, type=1, value=8 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:33.103 AirSend: 008/Volet est, 25455/127079: Command: 'Close', Level: 0, Color: 2023-01-31 16:35:33.103 AirSend: Sending notes method=1, type=1, value=2 to channel Id=25455, source=127079 (settings)

Pour l'envoi d'ordres depuis un autre VR (Airsend, mais non mappé) dans DZ, les logs :

2023-01-31 16:37:10.674 AirSend: 003/Volet Porte-Fenêtre Ouest, 25455/233575: Command: 'Close', Level: 0, Color: 2023-01-31 16:37:10.674 AirSend: Sending notes method=1, type=0, value=34 to channel Id=25455, source=233575 (standard) 2023-01-31 16:37:14.471 AirSend: 003/Volet Porte-Fenêtre Ouest, 25455/233575: Command: 'Stop', Level: 100, Color: 2023-01-31 16:37:14.471 AirSend: Sending notes method=1, type=0, value=17 to channel Id=25455, source=233575 (standard) 2023-01-31 16:37:17.312 AirSend: 003/Volet Porte-Fenêtre Ouest, 25455/233575: Command: 'Open', Level: 100, Color: 2023-01-31 16:37:17.313 AirSend: Sending notes method=1, type=0, value=35 to channel Id=25455, source=233575 (standard)

FlyingDomotic commented 1 year ago

Si on inverse les codes Open et Close dans "settings", les retours d'état lors de l'utilisation de la télécommande physique mappée sont corrects mais les ordres envoyés depuis DZ sont alors inversés...

Alors il faut revenir à la configuration précédente, et inverser les nValues et sValue des 2 lignes.

Voici les logs lors de l'utilisation de ce VR depuis DZ :

2023-01-31 16:35:21.885 AirSend: 008/Volet est, 25455/127079: Command: 'Close', Level: 0, Color: 2023-01-31 16:35:21.886 AirSend: Sending notes method=1, type=1, value=2 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:25.788 AirSend: 008/Volet est, 25455/127079: Command: 'Stop', Level: 100, Color: 2023-01-31 16:35:25.788 AirSend: Sending notes method=1, type=1, value=4 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:28.671 AirSend: 008/Volet est, 25455/127079: Command: 'Open', Level: 100, Color: 2023-01-31 16:35:28.671 AirSend: Sending notes method=1, type=1, value=8 to channel Id=25455, source=127079 (settings) 2023-01-31 16:35:33.103 AirSend: 008/Volet est, 25455/127079: Command: 'Close', Level: 0, Color: 2023-01-31 16:35:33.103 AirSend: Sending notes method=1, type=1, value=2 to channel Id=25455, source=127079 (settings)

J'ai trouvé le souci : j'ai juste "oublié" de mettre à jour Domoticz en cas d'envoi de ce type de commandes :-(

Je vais modifier le code, il sera dispo dans la soirée.

Désolé ...

rezzalex commented 1 year ago

Alors il faut revenir à la configuration précédente, et inverser les nValues et sValue des 2 lignes.

C'était la configuration précédente ?

FlyingDomotic commented 1 year ago

C'était la configuration précédente ?

Oui, celle depuis le répertoire examples.

La dernière version ajoute la mise à jour du status pour les télécommandes qui n'ont pas de retour (ce qui n'est pas le cas de mes volets Bubbendorf, d'où le fait que je ne l'ai pas vu).

rezzalex commented 1 year ago

Version 1.0.2 , en essaynt d'actionner le VR mappé depuis DZ :

2023-01-31 21:51:13.833 Error: AirSend: Call to function 'onCommand' failed, exception details: 2023-01-31 21:51:13.835 Error: AirSend: Traceback (most recent call last): 2023-01-31 21:51:13.835 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 787, in onCommand 2023-01-31 21:51:13.835 Error: AirSend: _plugin.onCommand(Unit, Command, Level, Color) 2023-01-31 21:51:13.835 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 532, in onCommand 2023-01-31 21:51:13.835 Error: AirSend: valueKey = device.DeviceID+'/'+str(commandMethod)+'/'+str(commandType)+'/'+str(commandValue) 2023-01-31 21:51:13.835 Error: AirSend: NameError: name 'commandMethod' is not defined 2023-01-31 21:51:19.868 Error: AirSend: Call to function 'onCommand' failed, exception details: 2023-01-31 21:51:19.868 Error: AirSend: Traceback (most recent call last): 2023-01-31 21:51:19.868 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 787, in onCommand 2023-01-31 21:51:19.869 Error: AirSend: _plugin.onCommand(Unit, Command, Level, Color) 2023-01-31 21:51:19.869 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 532, in onCommand 2023-01-31 21:51:19.869 Error: AirSend: valueKey = device.DeviceID+'/'+str(commandMethod)+'/'+str(commandType)+'/'+str(commandValue) 2023-01-31 21:51:19.869 Error: AirSend: NameError: name 'commandMethod' is not defined 2023-01-31 21:51:24.287 Error: AirSend: Call to function 'onCommand' failed, exception details: 2023-01-31 21:51:24.288 Error: AirSend: Traceback (most recent call last): 2023-01-31 21:51:24.288 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 787, in onCommand 2023-01-31 21:51:24.288 Error: AirSend: _plugin.onCommand(Unit, Command, Level, Color) 2023-01-31 21:51:24.288 Error: AirSend: File "/opt/domoticz/userdata/plugins/AirSend/plugin.py", line 532, in onCommand 2023-01-31 21:51:24.288 Error: AirSend: valueKey = device.DeviceID+'/'+str(commandMethod)+'/'+str(commandType)+'/'+str(commandValue) 2023-01-31 21:51:24.288 Error: AirSend: NameError: name 'commandMethod' is not defined

FlyingDomotic commented 1 year ago

J'ai corrigé (mais je ne peux pas tester, je n'ai pas de télécommande apprise).

rezzalex commented 1 year ago

Merci bcp.

C'est bcp mieux, mais encore tt a fait ca :

retour d'état par télécommande mappé presque OK : OK pour Stop et Descente, mais je recois maintenant la valeur 8 pour les montées ET pour les descentes !!!

Pour la commande du VR par DZ, marche mais les commandes sont inversées, contrairement aux autres VR non mappés qui restent "droits"

A plus tard et encore merci

FlyingDomotic commented 1 year ago

retour d'état par télécommande mappé presque OK : OK pour Stop et Descente, mais je recois maintenant la valeur 8 pour les montées ET pour les descentes !!!

Là, il faut voir avec DevMel, ce sont eux qui envoient les évènements ...

Pour la commande du VR par DZ, marche mais les commandes sont inversées, contrairement aux autres VR non mappés qui restent "droits"

Les nValue et sValue ont bien été inversés dans la partie settings (par rapport à la version dans example) ?

rezzalex commented 1 year ago

J'ai oublié l'insertion. Je corrigerai la partie settings demain et re-testerai.

rezzalex commented 1 year ago

Bonjour, les retours d'états sont OK mais les commandes depuis DZ sont toujours inversées, que pour le VR mappé, et quel que soit les Svalue et Nvalue dans "settings"

FlyingDomotic commented 1 year ago

J'ai mis à jour la doc avec le paragraphe suivant :

Le fonctionnement est le suivant : quand l'utilisateur clique sur l'interface graphique de Domoticz (ou qu'un script envoie une commande), le plug-in envoie method, type et value associé à cette commande à AisSend, qui à son tour, envoie le message radio. Dans l'autre sens, quand le callback envoie un évènement, method, type et value sont extraits du message et les nValue et/ou sValue associés sont envoyés à Domoticz.

Donc pour construire une ligne command, on part de la commande (open par exemple), on cherche les method, type et value à envoyer pour que le dispositif réagisse dans le bon sens, puis on indique les nValue et/ou sValue qu'il faut envoyer à Domoticz pour que l'état soit le bon. Le plug-in n'interprète rien, il se contente d'envoyer ce qu'on lui indique. C'est donc une intelligence artificielle basée sur l'utilisateur ;-)

Là, il faut trouver la valeur de value correspondant à open et celle de close (2, 4 ou 8), les insérer dans la bonne commande, puis un nValue = 0 pour close et 1 pour open.

rezzalex commented 1 year ago

Merci pour l'élégance de la formule " intelligence artificielle basée sur l'utilisateur"

j'ai inversé mes "values" dans "settings" et maintenant tout fonctionne correctement... Ce que je ne comprends pas est que mes valeurs reçues 8 et 2 semblent inversées par rapport aux jours précédents....

Mais bon cela fonctionne plutôt bien, un appuie trop bref sur la télécommande physique ne permet pas toujours à l'Airsend d'intercepté.

Merci encore. Je vais répliquer sur toutes les télécommandes physiques individuelles et sur la télécommande Noé (qui fonctionne par groupe/zone de plrs télécommandes). Donc, j'aurai :

FlyingDomotic commented 1 year ago

Ce que je ne comprends pas est que mes valeurs reçues 8 et 2 semblent inversées par rapport aux jours précédents....

C'est peut être lié aux inversions successives des commandes et valeurs ...

Merci pour l'élégance de la formule " intelligence artificielle basée sur l'utilisateur"

Je ne désespère pas de m'en faire greffer un bout quand ça sera au point ;-)