Page 17 sur 20

Re: Plugin Rfplayer Rfp1000

Publié : 06 janv. 2019, 10:37
par ogulf
Il ne faut pas modifier le device une fois créé par le plugin (ce dernier utilise une colonne en base qui contient des informations spécifiques au device, mais cette colonne est écrasée par Domoticz dès qu'on modifie le device).
Deux solutions :
- modifier le plugin pour qu'il crée le bon type de device
- laisser le plugin en l'état, et modifier directement en base le type et sous-type de device
Dans les deux cas il faut savoir ce qu'on fait !...

Re: Plugin Rfplayer Rfp1000

Publié : 06 oct. 2019, 01:41
par Damien
oredin a écrit : 31 août 2018, 19:47 Attention, les deux commandes sont possibles, en fait. Cela dépend de la forme de l'identifiant utilisé.

Si l'identifiant est un entier (0-255), il faut utiliser ZIA++ON ID XXX
Si l'identifiant est de la forme A-P 1-16 (Pseudo X10), il faut utiliser ZIA++ON XX
Merci! c'est ce qu'il me manquait pour faire marcher mes volets France Fermeture Well'com X3D qui utilisent X2D SHUTTER sous l'infoType 11.
Image
J'avais deux problèmes, le premier était que seulement un unique volet pouvait être commandé (A1) même si j’indiquais A2 ou A3 dans la config web (hardware, rfplayer, ligne "devices id").
Et l'autre problème était le mauvais selector quand j'actionnais un switch: quand j'appuyais sur:
On -> le volet monte ok pas de problème
Off -> rien ne se passe
Stop -> le volet descend, problème!

Pour corriger j'ai modifié ~/domoticz/plugins/rfplayer/plugin.py (version="1.1.0")
à partir de la ligne 569:
original:

Code : Tout sélectionner

	if infoType == "11" :
		subType=Options['subType']
		if subType == "1" :
			id=Options['id']
			if Level == 10 :
				lineinput='ZIA++' + str("ON " + protocol + " ID " + id )#+ " QUALIFIER " + qualifier)
			if Level == 20 :
				lineinput='ZIA++' + str("OFF " + protocol + " ID " + id ) #+ " QUALIFIER " + qualifier)
			if Level == 30 :
				lineinput='ZIA++' + str("ASSOC " + protocol + " ID " + id ) #+ " QUALIFIER " + qualifier)
			SerialConn.Send(bytes(lineinput + '\n\r','utf-8'))
			Devices[Unit].Update(nValue =0,sValue = str(Level))
Modifié par:

Code : Tout sélectionner

	if infoType == "11" :
		subType=Options['subType']
		if subType == "1" :
			id=Options['id']
			if Level == 10 :
				lineinput='ZIA++' + str("ON " + protocol + id )#+ " QUALIFIER " + qualifier)
			if Level == 0 :
				lineinput='ZIA++' + str("OFF " + protocol + id ) #+ " QUALIFIER " + qualifier)
			if Level == 20 :
				lineinput='ZIA++' + str("ASSOC " + protocol + id ) #+ " QUALIFIER " + qualifier)
			SerialConn.Send(bytes(lineinput + '\n\r','utf-8'))
			Devices[Unit].Update(nValue =0,sValue = str(Level))

J'espère que ça ne posera pas de problème si la variable protocol est un jour utilisée, ça risque de foirer la syntaxe il manquera un espace entre protocol et id...

Re: Plugin Rfplayer Rfp1000

Publié : 08 oct. 2019, 17:21
par ogulf
Intéressant... car tu as fait une autre modif sur le test du level....
En fait le Off d'un selector switch est toujours sur le level 0.
J'en déduis qu'il faudrait aussi corriger la création du device, que ce soit en manuel ou en automatique ?

Et pour sécuriser l'appel avec ou sans la chaîne ID, peut être tester si la variable id est numérique ou pas ? Et en fonction prévoir l'un ou l'autre des appels ?

Re: Plugin Rfplayer Rfp1000

Publié : 09 oct. 2019, 10:08
par oredin
ogulf a écrit : 08 oct. 2019, 17:21 Et pour sécuriser l'appel avec ou sans la chaîne ID, peut être tester si la variable id est numérique ou pas ? Et en fonction prévoir l'un ou l'autre des appels ?
C'est une solution de ce type que j'avais en tête mais je n'ai pas encore trouvé le temps de la mettre en place... C'est le problème quand on a une solution qui fonctionne :lol:

Re: Plugin Rfplayer Rfp1000

Publié : 15 oct. 2019, 23:48
par Damien
Je viens de modifier le script pour régler plusieurs choses:

Intégrer l'utilisation des ID rfplayer (A1, B16) en parallèle des ID appareil (123, 119, ou 2128786043), ça posait problème pour les volets X2D dont j'avais fait l'apprentissage/association avec l'appli rfplayer java. Ca permet aussi d'utiliser la commande PARROT si besoin...

Code : Tout sélectionner

if str(Options['id'])[0].isdigit() : fulltextid = " ID "+ Options['id']
else : fulltextid = " " + Options['id']
Régler mon problème d'ajout d'appareil non reconnu (infotype0 et infotype1 pour prise chacon et télécommande DiO), je recevais le log "Error while decoding Infotype0 frame", à cause d'une valeur dans DOptions à LevelOffHidden:undefined. J'ai donc ajouté ceci pour vérifier que la valeur recherchée "protocol" soit bien présente dans le tableau "DOptions".

Code : Tout sélectionner

if "protocol" in DOptions :	
Si quelqu'un veut tester, voici le script à copier dans domoticz/plugins/rfplayer/plugin.py
plugin.py
(80.48 Kio) Téléchargé 270 fois

Re: Plugin Rfplayer Rfp1000

Publié : 16 oct. 2019, 08:08
par ogulf
Je vais tester ce WE si j'ai le temps avec une sonnette Chacon : on verra bien :mrgreen:

En tout cas, si pas de régression (je testerai aussi mes récepteurs de chauffage X2D RF660FP pour l'infotype10 de mémoire) faudrait pousser ta modif sur le github ;)

Re: Plugin Rfplayer Rfp1000

Publié : 16 oct. 2019, 09:15
par Damien
Excellent, merci Ogulf, on se sent moins seul :)
oui c'est bien l'infotype 10 pour le chauffage, je n'ai rien modifié de ce coté.

Re: Plugin Rfplayer Rfp1000

Publié : 21 oct. 2019, 08:25
par ogulf
Damien a écrit : 16 oct. 2019, 09:15 Excellent, merci Ogulf, on se sent moins seul :)
oui c'est bien l'infotype 10 pour le chauffage, je n'ai rien modifié de ce coté.
Pas de régression de mon côté :)

Par contre... ma sonnette Chacon n'est pas plus reconnue... mais c'est parce que le Rfplayer ne reconnaît pas la trame...
A noter : j'avais rajouté une instruction à l'initialisation pour que le Rfplayer serve de passerelle au Rflink (c'est évoqué dans leurs spec) : même si je ne suis pas persuadé du bien fondé de cette commande, peut-être faudrait-il la rajouter et pousser ta version sur le github ? ==> je la fournira d'ici 2 jours.

Bien penser à incrémenter le numéro de version (1.1.1 par exemple).

Re: Plugin Rfplayer Rfp1000

Publié : 21 oct. 2019, 12:43
par oredin
ogulf a écrit : 21 oct. 2019, 08:25 Par contre... ma sonnette Chacon n'est pas plus reconnue... mais c'est parce que le Rfplayer ne reconnaît pas la trame...
Bonjour,

J'ai réussi à faire reconnaître mes deux sonnettes de mon côté mais j'ai souvenir que j'avais pas mal galéré. Actuellement, elles sont déclaré comme Lighting 1 / X10. Les notifications sont déclenchés sur l’événement OFF du switch correspondant.

Je ne sais plus si j'avais dû touché au code du plugin pour les faire reconnaître... Comme je ne repasse pas sur place avant quelques temps, je ne peux pas m'en assurer. J'essaierai d'y penser quand je repasserai chez moi pour vous faire un retour.

Bon courage.

Re: Plugin Rfplayer Rfp1000

Publié : 21 oct. 2019, 13:34
par Damien
Pour la sonnette j'arrive voir l'état d'une Chacon DiO 84210/54730, donc à m'envoyer un message quand quelqu'un sonne.
Mais je n'arrive pas à envoyer la commande depuis domoticz pour faire sonner à distance, c'est pas très grave et ça peut être réalisé avec la fonction parrot...

Voila comment j'ai ajouté la sonnette :
-afficher la page des logs domoticz et appuyer le bouton de la sonnette
-une trame s'affiche, trouver l'id sous forme 2113619748, vérifier qu'il est bien en infotype 1 et protocol 4
-sur la page domoticz, Setup-Hardware-RFPlayer menu "Manual Create devices" choisir CHACON et renseigner le champ "devices ID" avec l'id de la sonnette
-cliquer sur Update et retrouver le nouvel appareil dans Setup-Devices en tant que X10 Lighting
-appuyer sur le bouton de la sonnette et voir dans domoticz l'heure "Last seen" correctement mise à jour.

Après avoir ajouté l'équipement j'arrive bien à changer l'icone et le type (Doorbell), mais les notifications ne fonctionnent pas alors j'ai fait l'alerte sms avec un script blocky qui fonctionne très bien :P