Plugin Twinkly: toujours maintenu?

Oui, c’est globalement ce que je faisais avec mon code PHP, basé sur xled, mais sans les dépendances avec Python.

Le calcul du challenge/response pour l’authentification présent dans xled n’est visiblement plus compatible pour les guirlandes plus récentes que les v1, mais ce n’est pas genant, puisque l’access token est généré dès la première requête, sans avoir besoin de vérifier le challenge/response.

L’API est très bien documentée sur le site de xled.

Pour info, il est également possible de configurer le contrôleur pour qu’il communique via MQTT, et on peut passer l’ensemble des commandes par ce biais (on/off, etc.).

K.

J’ai posté sans voir tes derniers commentaires. Du coup, j’attends avec impatience ton plugin nettement plus beau que ma bidouille ! :slight_smile:

C’est dommage, c’est ultra prometteur, si j’avais eu ce que je vois sous la main plutot que le plugin jeedom ou home assistant, ca aurait été bien plus sympa à montrer dans mon test !

J’aurai même pas la possibilité de tester, je démonte le sapin demain (et oui, je suis le seul qui fait ça dans ce sens) pour passer ma guirlande à la famille ^^ J’espère qu’ils apprécieront le geste !

1 « J'aime »

Hello

Un dernier teaser avant la publication de la première version du plugin.

J’ai ajouté une fonctionnalité de découverte automatique des guirlandes sur le réseau. Il faut que celles-ci aient été configurées au préalable via l’appli mobile, mais un simple clic sur le bouton du plugin va automatiquement créer un équipement pour chaque guirlande détectée : plus besoin d’entrer l’IP ou l’adresse MAC, tout est détecté automatiquement…

Je viens de tester suite à l’installation de ma deuxième Twinkly sur mon sapin, et ça fonctionne très bien. Merci une nouvelle fois au développeur de l’api Python xled qui a tout documenté…

J’ai aussi mis en place la fonctionnalité pour changer l’animation des leds. C’est un peu plus compliqué à utiliser, parce que je n’ai pas (encore ?) trouvé de moyen simple de récupérer les séquences calculées par l’appli mobile sans utiliser un proxy HTTP pour « sniffer » l’upload de l’animation depuis l’appli vers la guirlande. J’essayerai de documenter ça proprement.

J’ai également mis en place une page pour la configuration MQTT. Ce n’est pas vraiment utilie si l’objectif est d’utiliser le plugin, donc je pense plutôt l’externaliser sous forme d’un script à coté pour activer cette fonctionnalité, et pouvoir utiliser les guirlandes sans plugin spécifique pour les utilisateurs de jMQTT. Via MQTT, les fonctionnalités on/off/luminosité sont disponibles, mais pas le changement d’animation.

A très bientôt !

K.

Merci beaucoup pour le travail que tu as effectué pour la communauté.:+1:
Il me tarde de télécharger ton plugin pour tester tout ça !!!
:pray:

Bon, j’ai encore un peu de boulot, mais pour ne pas faire attendre les plus téméraires qui voudraient tester, vous pouvez récupérer une première version directement sur mon github
dans la branche « unstable » : https://github.com/kimagurefr/jeedom_kTwinkly/tree/unstable

Pas encore de doc, mais à part la partie animation, le reste coule de source, donc vous aurez déjà accès à on/off/niveau de luminosité.

N’hésitez pas à me faire vos retours, j’essayerai de corriger les éventuels soucis avant une première publication officielle en bêta.

Déposer les sources téléchargées de github dans un sous-dossier kTwinkly de votre dossier plugins (/var/www/html/plugins/kTwinkly).

Après avoir activé le plugin, il se trouvera dans la section « objects connectés ».

Il suffit de cliquer sur le bouton « Rechercher » pour créer les équipements automatiquement.
S’ils ne sont pas trouvés, il faudra entrer l’IP et l’adresse MAC à la main (ces informations se trouvent dans la page d’informations des équipements sur l’appli mobile).

Il est évidemment nécessaire que l’IP soit fixe, sinon, il faudra corriger l’adresse dans les paramètres de l’équipement à chaque changement…

K.

2 « J'aime »

:wave: :wave: :wave: :wave: :wave: :wave:
Bonjour
Mon 1er retour est plus bon, c’est génial. Je viens de l’installer, configurer c’est top
Juste le conseil de désactiver l’ancien plugin Twinkly sinon ca plante tout :roll_eyes:
Encore Bravo

Oui effectivement. C’est une limitation de l’API, il ne peut y avoir qu’un utilisateur authentifié à la fois sur le contrôleur… C’est précisé dans la FAQ de Twinkly d’ailleurs, on ne peut pas non plus utiliser l’appli sur 2 mobiles simultanément…

Du coup, Il risque aussi d’y avoir conflit si on utilise l’appli mobile en meme temps d’ailleurs, il faut que je regarde comment se protéger de ça, surtout depuis que j’ai implémenté l’auto refresh, ça risque de déconnecter l’appli mobile.

Donc si besoin d’utiliser l’app, je pense qu’il faut temporairement désactiver le plugin,…

K.

Hello !

Ramené ici grâce à @iPapy, je confirme que le plugin fonctionne (j’ai une Guirlande V2 250 leds)

Comme je ne sais pas ce qui est sensé fonctionner ou pas voici quelques retours

Pas eu de détection automatique, pourtant renseignée manuellement (ip et mac) tout fonctionne
Je n’ai pas le numéro de version PRODUIT qui remonte (mais bien la version matériel)
La partie animation ne me montre rien, ajouter permet de charger un fichier, supprimer tourne en boucle (normal y a rien dans la liste :))

Côté Widget, cela fonctionne sauf la playlist active qui ne s’affiche pas (et qui est pourtant en cours dans la Twinkly)

Encore merci pour votre super boulot !


1 « J'aime »

Merci pour les retours.

Les playlists ne sont pas encore gérées pour l’instant, ça va venir.

Pour l’instant, la partie « animation » est à gérer manuellement en chargeant les fichiers binaires correspondant. Je suis en train de travailler sur un process de capture simplifié (merci à @mguyard pour les pistes)

Je n’ai pas non plus retravaillé le widget par défaut, je m’en occupe ensuite (il y a eu quelques ajouts ce matin pour remonter correctement le niveau de luminosité et le mode courant).

Les informations affichées sur l’équipement (versions, etc.) sont un peu en vrac. J’ai le numéro de version produit sur ma v1, mais pas ma v2, je vais voir ce qui est pertinent ici (nom du wifi, version de firmware).

J’essaye d’ajouter un maximum de choses avant de passer en bêta.

K.

1 « J'aime »

Bonjour,

Je n’ai fait que t’orienter vers l’excellent travail fait par @kimagure et que même si je n’est plus de petit enfant à la maison en cette période de fête j’aimerais que @kimagure puisse débuguer au max son plugin afin que tous les utilisateurs de Twinkly soit content et passe de très belle fêtes de fin d’année.

Bravo à toi @kimagure pour cette belle initiative ainsi qu’a @mguyard qui semble aussi t’aider.

1 « J'aime »

Le sapin, c’est pas pour les « petits enfants »: tout le monde y a droit s’il en a envie :grin:
Pas de raison que les adultes, qui ne restent pas moins que des grand enfants, n’aient pas aussi les yeux pleins qui brillent ! :wink:

2 « J'aime »

Tu as tout a fait raison :slight_smile:

@kimagure , merci, cela fonctionne très bien, et surtout, il faut désactiver l’ancien plugin avant, sinon cela plante l’objet dans lequel on le place (Salon par exemple).
Nickel, car c’était dommage de ne plus pouvoir utiliser Agenda et la planification On/Off que j’avais mise en place (plus complète avec Jeedom pour jour de semaine, jour férié, we…)
Encore merci et tiens nous au jus pour une stable, car je ne suis pas fan du beta sur ma machine de prod :wink:

Et je confirme, si tu reprends la main avec l’apps Twinkly, tu perds celle de jeedom. Pour la récupérer, il faut faire recherche dans le plugin.

Tu entend quoi par recherche ?
Le refresh ne reprend pas la main automatiquement ?

Il n’y aura pas de solution miracle pour que l’app mobile et le plugin cohabitent.
Même Twinkly prévient qu’on ne peut utiliser l’application sur 2 smartphones simultanément…

En fait, le contrôleur ne gère qu’une seule authentification simultanée. Dès qu’un nouvel access token est généré, l’ancien est invalidé, donc c’est la dernière application qui se connecte qui « a raison ».

De mon point de vue, une fois les guirlandes configurées et les animations capturées, on pourra tout faire depuis Jeedom, donc l’appli n’est pas indispensable. Il est toujours possible de désactiver temporairement le plugin le temps de faire une opération particulière sur l’app (upgrade du firmware, nouvelle analyse, etc.)

Voici comment je vois les choses:

  • il faut que je gère un peu mieux les codes retour de l’API, et en cas d’erreur d’authentification lors de l’appel de l’une des APIs, je regénère un nouveau token (ce qui invalide les éventuels autres clients connectés)
  • pour éviter les conflits pour les personnes qui veulent garder l’app mobile utilisable sans trop de soucis, je rend optionnel le refresh automatique (fonction pas encore dispo sur github, juste sur ma dev locale pour l’instant) pour ne pas générer un nouveau token toutes les x secondes et donc déconnecter l’app. Du coup, j’ajoute aussi une nouvelle commande « refresh » pour le faire à la demande (par exemple dans un scénario).
    => Question : faut-il que la désactivation du refresh se fasse par équipement (checkbox dans la page de l’équipement) ou pour le plugin complet (checkbox dans la page de configuration générale du plugin) ?

Pour les animations, je me suis rendu compte que les API étaient différentes entre mes guirlandes v1 et v2. La v1 n’a pas l’air de gérer la partie « playlist » (probablement à cause d’une mémoire insuffisante sur le controleur). Ca dépend peut être de la version du firmware aussi, je ne crois pas que les playlists existaient sur ma v2 l’année dernière. Il faut que je regarde comment pouvoir gérer les 2 cas, donc ça va me prendre un peu plus de temps.

J’avance aussi sur la fonctionnalité de capture des animations, avec une idée proposée par @mguyard. Si je m’en sors comme prévu, la mise en place du proxy pour la capture sera faite depuis l’application, il faudra juste temporairement paramétrer le smartphone avec l’adresse et le port du proxy sur la machine Jeedom.

Edit: j’ai effectivement trouvé dans l’APK les versions minimales de firmware supportées pour les différentes fonctionnalités, et notamment:

  • version minimale 2.3.0 pour le réglage de la luminosité
  • version minimale 2.5.5 pour la gestion des playlists (et donc le nouveau mode d’upload)

Ma guirlande v1 est en 2.3.8, donc effectivement pas de support des playlists.

K.

Très bonne idée.

Optionnel c’est bien. Idéalement choisir le délais entre 2 refresh serait top, comme ca on peut espacer si on le souhaite et ca laisse le temps de faire un truc par l’application avant que Jeedom reprenne la main.

Top

Pour plus de flexibilité, je le mettrait par Equipement. Mais ce n’est que mon humble avis.

Cool tu sais que je suis là au besoin :wink:

En tout cas, merci. Il me tarde de recevoir ma Twinkly 400 Gen2 :slight_smile:

J’avance toujours, je vais essayer de publier une nouvelle version d’ici demain soir.

Le rafraichissement automatique est donc désactivable par équipement, et la fréquence de rafraichissement est configurable.

La capture des animations directement depuis Jeedom est désormais possible : un proxy démarre sur la machine jeedom sur un simple clic, on configure le proxy dans le smartphone, on lance une série de chargement d’animations vers la guirlande, on ferme le proxy, et le plugin récupère les fichiers.

C’est quasi finalisé pour les guirlandes « gen1 », et je suis en bonne voie pour les « gen2 » également, sachant qu’il faut que j’adapte un peu ma classe « Twinkly » pour gérer l’upload en v2 (et les playlists par la suite)

K.

Pour ceux qui hésitent pour l’installation, vous pouvez l’installer en utilisant le type de source Github et mettant les paramètres suivants :


ou en clair :
ID logique du plugin : kTwinkly
Utilisateur ou organisation du dépôt : kimagurefr
Nom du dépôt : jeedom_kTwinkly
Branche : unstable