Sonoff DIY Mini R3

Après l’échec de vouloir passer le tout dernier Sonoff POW R3 en DIY Mode (confirmé depuis par le support Sonoff que j’ai questionné), je me suis lancé sur l’intégration du Sonoff Mini R3.

Deux bonnes et deux mauvaises nouvelles.

  • La première bonne nouvelle, le Mini R3 peut passer en DIY Mode
  • La première mauvaise nouvelle, c’est que l’API DIY a changé, ce n’est pas la même que le R2 par exemple
  • La seconde mauvaise nouvelle, c’est que Sonoff n’a pas encore documenté les modifications sur sa page développeurs
  • La seconde bonne nouvelle, c’est que j’y ai passé mon samedi mais j’ai cherché et trouvé quelques commandes et le Sonoff Mini R3 est fonctionnel et implémenté dans le plugin Sonoff-DIY, c’est fait :+1:

Et comme je le fais toujours, j’ai écrit la doc en parallèle :
http://jeedom.sigalou-domotique.fr/integration-jeedom-du-sonoff-mini-r3

Je vais pousser une beta ce soir !
J’attends vos retour avec impatience.

Qui a un Sonoff Mini R3 ???
Utilisons cette discussion pour tester la nouvelle Beta qui intègre le Sonoff Mini R3

6 « J'aime »

OK, personne n’a de Mini R3.
J’ai parfois l’impression d’un long monologue ici… l’esprit communautaire a disparu au profit d’un support technique à la Darty…bientôt on va nous faire des tickets support… pas grave, je garde la foi. :crazy_face:

Bonjour Sigalou …
Un an après … j’utilise des Mini R3 depuis quelques semaines (pour faire des fils pilotes) et le plugin sonoffdiy.
ça marche bien, mais … (il y a toujours un mais :slight_smile: ) lorsque j’utilise la commande « on » ou « off », celle-ci fonctionne, mais ne met pas à jour la commande info « Etat du relais ». Il faut manuellement faire un « refresh » pour que cela devienne visible. Comme de mon côté je voulais monitorer « Etat du relais » pour synchroniser une action cela me pose problème.
J’ai déjà jeté un oeil rapide au code, mais pas encore dans le détail. Je ferai quelques tests et je te dirai ce que je vois de possible.
Je vais aussi regarder la commande pour configurer le mode au démarrage du MiniR3 (on, off ou dernière valeur configurée) c’est assez pratique en cas de coupure de courant non attendue.
Merci !
Vincent

Salut Vincent

Je ne me souviens plus, ça date un peu.

En principe je bascule l’équipement au moment de la commande ou je lance un refresh, je ne sais plus
Ca te fait quoi ? Quand tu fais rafraichir, c’est ok ?

Pour l’etat de mise sous tension, c’est startup?state=#select# ou un truc du genre, il faut le lancer une seule fois quand tu mets en place le module et cela reste programmé. C’est surtout pas un truc à lancer régulièrement.

A ta dispo si besoin, ici ou sur le slack
a+

Merci pour ta réponse !
Je comprends pour

Je ne me souviens plus, ça date un peu

:smile:
J’ai compris les principes de ton code globalement.
Pour le « startup » tu avais retiré la commande pour les miniR3, car en effet l’API est différente, il faut un « startup » par switch, et sur le R3 il y en a 4 de définis (même si un seul d’accessible).
Bref je vais regarder cela car la commande API à générer n’est plus aussi simple, mais similaire à « switch ».
Pour le refresh, il fonctionne quand on le lance manuellement, mais il n’est pas appelé automatiquement après un changement d’état. Je vais voir aussi ce que je peux proposer.
AUssi à chaque refresh tu fais une demande du niveau du signal wifi, à mon avis doublon, car la commande zeroconf/info contient déjà la valeur (en tout cas pour un miniR3). Mais là c’est une détail.
Je te tiens au courant.
VB-)

OK j’ai ajouté la mise à jour de l’état suite à l’action on/off.
J’ai aussi rajouté les commandes sur l’état au démarrage qui n’étaient pas activées pour le R3.
ça marche sur mon jeedom de test, je vais le tester un peu sur le jeedom de prod.
Il faut aussi que j’ajoute les commandes dans la fonction d’update pour ne pas avoir à recréer les objets.
On doit pouvoir aussi rajouter les commandes de pulse mais dans un second temps.
Je te tiens au courant et t’envoi les fichiers en message privé (ou un github push ?).
VB-)

Cool, tu as bien avancé, je n’ai pas de R3 sous la main pour travailler en parallèle de toi, je testerai un jour, quand je connecterai un R3

Si tu te sens, le top c’est que tu fasses un PR sur Github si tu sais le faire.

Merci a+

Je dois pouvoir y arriver, je le fais sur mes repository, pas encore trop de pratique sur un repository tiers, mais c’est l’occasion d’apprendre. Il faut par contre que tu me donnes le lien vers ton repository github pour faire un clone.

J’ai aussi modifié quelques petits trucs :

  • je pense que la commande info « startup » est mal configurée en subtype « binary » alors que ça devrait être « string » . Idem pour la commande info « pulse ».(sinon elles restent toujours à 0, alors que le log montre bien que l’info remontée est une chaine de caractère)
  • changé l’affichage des valeurs des commandes info dans la configuration de l’objet. En effet l’affichage actuel ne se mettait pas à jour en temps réel. (peut être du au passage en 4.x ?)
  • je vais aussi rajouter les commandes pulse pour le R3, car pas de raison que cela ne fonctionne pas et ce sera fait si quelqu’un est intéressé.
  • j’ai aussi testé un Mini-R2 pour voir
    A suivre
    VB-)

Regarde si c’est bien ça ?

Oui ça semble bien être cela.

Bonsoir,
J’ai fait un PR vers ton github avec mes modifications (user phpconcept). Au final je suis allé plus loin que simplement la mise à jour « en temps réel » de l’état du commutateur après l’action. En regardant le code, j’ai vu qu’il n’était pas compliqué d’ajouter les commandes de « startup » sur le MiniR3 (qui me manquaient beaucoup), et de même pour les commandes « pulse ». J’ai donc ajouté ces commandes, c’est à dire dans la plupart des cas, retiré la condition que faisait que pour un MiniR3 elles n’étaient pas créées et modifié ce qui devait l’être pour que ça marche.
J’ai vu aussi que l’on pouvait supporter un MiniR3 sans connaitre le « deviceid », ce qui est assez pratique, j’ai donc ajouté cette possibilité.
J’ai aussi vu que le plugin crée des commandes automatiquements pour « signalStrenght » au lieu d’utiliser la commande RSSI qui est créé pour l’objet, idem pour « deviceid » qui correspond à la commande « ID », j’ai donc mis un bout de code pour adapter cela.
Enfin j’ai fait quelques modifications d’affichage du tableau des commandes. D’abord pour que les valeurs soient affichées dynamiquement lors de la commande « refresh ». Mais aussi pour ajouter la propriété de retour d’état du mode pulse qui existe sur un MiniR3 (mais pas sur un MiniR2 par exemple).
Et aussi fait le code dans la fonction d’update pour ajouter les commandes maquantes sur les objets déjà créés.
J’ai normalement fait attention de faire des modifications dédiées au MiniR2 et MiniR3 puisque j’en avais pour tester, mais de ne pas avoir d’impact pour les autres. Mais on n’est jamais à l’abris d’une erreur …
J’ai testé au max et j’ai mis en prod sur mon installation pendant un moment et cela se passe bien.
A ta disposition pour des commentaires/corrections.
Si j’ai du temps je pense que je te proposerai d’autres modifications/optimisations.
Merci en tout cas !
VB-)

Merci 1000 fois à toi surtout.
J’espère que tu as compris mon code, je commente pas mal et je laisse les debugs commentés également pour les tests.
Il y a un petit moment que je ne me suis pas remis sur ce plugin, je testerai tout cela un de ces jours, mais super tes modifs, je vais les récupérer pour essayer.
Je ne sais plus où sont mes MiniR2 et MiniR3 mais j’en ai quelque part.
N’hésite pas à utiliser le slack de l’équipe de beta testeurs, on est plus sur Alexa-API et on parle de bien d’autres choses mais t’es le bienvenu.
https://join.slack.com/t/alexaapi/shared_invite/zt-1n6dh7g52-395Gy3YCAwpTsyYMXZp6BQ