Support des emoticons

Une petite astuce qui rend de grands services en effet🙂 j’en pouvais plus de devoir réécrire mes emojis à chaque nouvelle modification de mes scénarios !

Apparemment, le problème initial qui est que les codes saisis sont écrasés après une deuxième sauvegarde d’un scénario ne peut pas être résolu dans le core de Jeedom, donc le problème risque de durer quelques temps encore…

Astuce à bien conserver donc :wink:

2 « J'aime »

Oui j’ai commencé à faire comme toi je me suis dit c’est pas humain de tout refaire etc … loool

Je la garde bien bien au chaud mdrrr

Tu devrais proposer ton astuce à youdom par exemple ou un autre lol comme petit tuto :wink:

je fait parti de youdom… lol je prepare un article sur recevoir des infos par telegram avec des emoji et un menu telegram… dans mon code il y a toujours la reference a @noodom comme vue dans mon bout de code… encore merci a lui pour cette astuce…

2 « J'aime »

Ça marche bien, effectivement, et ça égaille un peu le message, merci

Si j’ai bien compris, le code est à rajouter dans chaque scénarios susceptibles d’utiliser des emoticons ?

Et on peut en rajouter en utilisant des unicodes emoji ?

Si je comprends bien, cela fonctionne pour Telegram.

Est-ce également le cas pour l’envoi de SMS ?

un test nous le dira lol

1 « J'aime »

:sweat_smile:

Bonjour Loïc.

Aucun coup de chance, ça marche la première fois car c’est le code de l’entité HTML qui est entré et sauvegardé en base, donc aucun soucis.
Ensuite, une fois lu en base, il est interprété par le navigateur qui affiche l’emoji directement dans l’input (et c’est un comportement qu’on attend d’un navigateur en 2020).
Sauf que l’emoji en lui même, une fois interprété, n’a pas le même code que celui qui avait été entré ce qui fait que lors de l’enregistrement et donc de l’update dans la base MySQL, ça ne passe plus.

L’erreur MySQL est typique d’un mauvais encodage.
Pour que cela fonctionne, il faut que les tables de la base de données MySQL soit en utf8mb4 et pas en utf8. Après vérification, c’est bien le cas.
Dans ce cas le problème vient d’ailleurs, c’est à dire la connexion à la base. J’ai donc été dans le fichier core/class/DB.class.php et le problème vient bien de là: dans la méthode de connexion (ligne 38 et 40) il y a PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ce qui n’est pas bon. En modifiant les paramètres en PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci' ça fonctionne tout de suite mieux et les emojis fonctionnent.

Ce n’est donc pas un problème de l’avoir prévu dès le début, il suffisait juste que les tables soient au bon encodage (ce qui était le cas) et que les paramètres de connexion à la base de donnée soient bons (et c’est là que ça foire).
Ce n’est pas une grosse modification, en deux minutes Jeedom passe au 21ème siècle :wink:

Bonjour
Merci pour l’analyse mais c’est pas aussi simple et je ne prend pas la responsabilité de faire cette modification je ne maîtrise absolument pas les conséquences que ça peut avoir sur les différentes installation de jeedom.

C’est simple avec un seul jeedom mais quand yen a des dizaines de milliers c’est pas pareil et j’en ai un peu marre de m’en prendre plein la tête a chaque fois que j’essaye d’aider. Donc là pour le moment plus de modification lourdes comme ça, ça reviendra peut être quand j’aurais a nouveau le courage

Bonjour Loïc,

Je suis un peu abasourdi par cette réponse car:

  • d’une part ce n’est absolument pas une modification lourde de conséquence et on parle juste de l’encodage de caractères avec lequel se connecte PHP (utf8mb4 au lieu d’utf8);
  • d’autre part cela fait maintenant une dizaine d’année que ce paramètre est utilisé à la place de celui qui est dans Jeedom.
    De plus ce qui est bête c’est que vous avez bien configuré les tables de la base en utf8mb4 mais que vous vous connectez avec utf8 en paramètres.

On parle tout de même d’un encodage de caractère grandement utilisé depuis des années puisqu’il supporte Unicode et donc les emojis par la même occasion. On trouve par exemple un article d’un ingénieur Google qui en parle… en 2012: How to support full Unicode in MySQL databases · Mathias Bynens
De plus comme le dit cet article de 2017:

I would recommend anyone to set the MySQL encoding to utf8mb4. Never use utf8 in MySQL, there is no good reason to do that (unless you like tracing encoding related bugs).

Pour être sûr qu’on se soit bien compris, on parle juste de remplacer SET NAMES utf8 par SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci dans la chaîne de connexion.
Etant développeur d’applications web (CRM, applications métier) depuis une dizaine d’année, je m’étonne de voir que ce petit soucis risque de traîner et d’embêter les utilisateurs… (je me suis moi même penché dessus aujourd’hui car je voulais afficher un émoji dans un widget).

Bref, j’ai fait un pull request sur le GitHub du Core, à vous de faire la review et de voir si vous acceptez ou pas, mais la solution est très simple et permet d’ajouter quelque chose qui sera sûrement encore demandé dans le futur.

J’espère juste ne pas avoir à remettre ce bête paramètre à chaque fois qu’il y a une mise à jour du core…

Bonne soirée à vous ! :wink:

Je sais pas quoi te dire j’en peux plus de me prendre des claque a chaque modification même si je touche que a la doc. J’en peu simplement plus donc non je me lance pas la dedans. En plus toute les bdd on sont pas en utf8mb4 donc c’est sur je vais avoir des retours dans tous les sens des gens qui vont gueuler qui vont me pourrir me menacer et tous ce qui va avec.

Ya des limite a ce que un humain peut encaisser donc maintenant je choisis mes combats et celui là je suis pas tailler pour

Je trouve ça dommage comme réaction. Je ne travaille pas avec l’équipe Jeedom donc je ne sais pas comment ça se passe et à vrai dire en tant qu’utilisateur je n’ai pas à le savoir.

Cependant dois-je en déduire que Jeedom se meurt ? Je veux dire, le message est clairement que les demandes des utilisateurs ne sont pas la priorité.

Perso ça m’embête, j’ai un bon Jeedom bien en place, j’ai payé une dizaine de plugins… je me vois mal voir ailleurs.

Ce message n’est pas une critique, mais un questionnement en tant qu’utilisateur.

Sinon, bien que j’ai compris que cette demande n’aboutira sûrement jamais, voici une capture pour prouver que cela fonctionne: Imgur: The magic of the Internet
A charge aux utilisateurs de faire la modification si ils le veulent…

Edit: J’ai mis un lien car l’upload de gif ne fonctionne pas.

Non ya toujours autant d’évolution dans jeedom même plus que jamais juste on peut pas tout faire et se battre partout (oui on se bat tout le temps cette aprem ya même eu une personne qui a appeler pour se plaindre de l’association a qui on a fait le dons pour le covid…)

La ça marche chez toi oui ça se trouve ça va marcher chez 90% des utilisateurs mais pour les autres je fais quoi ? Je te les envoi ? Non c’est sur moi sur ça va retomber et c’est moi qui vais devoir expliquer au gens pourquoi on a fait ça et là pluspart vont le dire qu’ils en ont rien a faire des émoticon que c’est inadmissible et UFC ou autre…

Malheureusement c’est comme ça que ça se passe et oui ça me démoralise et c’est de plus en plus dur. Sans compter que la la roadmap est déjà pleine et que l’équipe est complètement sous l’eau. Donc je vois pas comment je peux annoncer a l’équipe que on va avoir un afflux de ticket compliqué a résoudre et qui vont leur bouffer du temps qu’il n’ont pas.

Donc oui cette modification je ne la prend pas pour le moment a un moment faut faire des choix pas que en regardant son propre cas mais en prenant en compte tous ce qu’il y a autour et en particulier le parc existant.

Je comprends le fait d’être sûr de savoir que ça marche chez tout le monde, comme je l’ai dit je développe (en tant que lead developer) des applications web business utilisées par des entreprises de plus de 100 personnes dont on ne peut pas se permettre la moindre erreur, mais juste pour être sûr qu’on se soit bien compris:
Les bases de Jeedom sont déjà en utf8mb4, cf la capture ci-dessous:


De ce fait il n’y a strictement aucun changement lourd à faire puisque c’est déjà en place.
Le problème est juste au niveau de la connexion à la base, vous utilisez utf8 au lieu d’utf8mb4.

Faites les tests, ça n’ajoutera aucun bug… puisque vous demandez à PHP de se connecter à MySQL avec l’encodage dans lequel est déjà la base Jeedom:


En gros pour schématiser, c’est comme si votre smartphone avait la 4G mais que vous lui demandiez de se connecter en 3G alors que le réseau opérateur est en 4G et que le smartphone sait faire de la 4G… vous perdez des fonctionnalités alors qu’il est fait et configuré pour.

Bref, je pense que vous avez compris ce que je voulais dire et le fait que cette modification ne soit ni lourde ni coûteuse en temps, je m’arrête là pour ce soir mais serai ravi de pouvoir vous aider si vous en avez besoin !

Soit dit en passant, je comprends tout à fait que gérer un projet comme Jeedom et tout ce qui tourne autour est compliqué et que ça demande de l’implication personnelle, je connais la problématique des tickets, d’être sous l’eau, des utilisateurs qui en demandent encore et toujours plus… c’est mon quotidien, je compatis :wink:

Bonne soirée à vous et bon courage à toute l’équipe.

1 « J'aime »

Ta base est déjà en utf8mb4 mais comme dit c’est pas le cas partout…

J’arrête là ça m’énerve on dit non vous comprenez pas c’est fatiguant on est est surchargé mais vraiment ta modification touche a la base de jeedom et ne marchera pas partout… Honnêtement je sais plus comment faire… Je le passé ça plante 50% des jeedom ? Tu t’occupes du support ? Si oui alors pas de soucis je fais la modification les gens t’appellerons et tu t’en occupes ça me va moi.

Mais sinon non a un moment faut que quand on vous dit non vous l’acceptiez et vous vous disiez peut être qu’ils savent ce qu’ils font sinon effectivement si tu fais pas confiance a l’équipe alors oui change de solution domotique

Juste pour ajouter mon cas à la discussion, je m’en sers pour un petit widget qui dit si c’est le moment ou non de se baigner dans la piscine.

Le résultat final donne ça pour le moment (voir le « Température air trop basse »):
Annotation 2020-04-07 212534

Ce petit texte change selon les cas:

C’est très WAF et ça ajoute un peu de gaieté :slight_smile:

Alors je tiens à m’excuser, je ne tenais pas à vous énerver. Il vaut mieux en effet terminer la discussion ici je pense…

Merci pour vos réponses même si je les trouve peu avenantes malgré l’argumentaire que j’ai fourni. J’ai un peu l’impression de m’être fait claquer la porte et de prendre une fin de non recevoir dès le début de la discussion.

Bonne soirée.

Non je comprends la demande et oui elle est justifié et dans un monde parfait ça serait déjà un prod. Sauf que le monde et pas parfait et que ça va planter chez plein de gens et faut qu’on puisse et tenir mentalement face à ces personnes (aussi bien face au menace d’avocat et d’autre type de menace) et être en capacité de réparer chez les gens chez qui ça merde.

Actuellement on a ni l’un ni l’autre et ça serait une conneries de le faire et pour la société jeedom et pour les utilisateurs jeedom. A un moment l’équipe jeedom et la pour ça trier les demandes par risque et la clairement elle est très risqué et avec le contexte actuel ça n’est pas supportable.

Je tombe sur ce sujet un peu par hasard ; car comme des milliers (millions ?) de gens j’utilise des emoji quotidiennement et le manque de support dans Jeedom est suprenant (un dessin vaut mieux qu’un long discourt !). Navré de lire les réponse de la team, comme @Blm79

Avoir peur d’une modification mineure telle que celle-ci au point de ne pas vouloir la porter dans la beta indique simplement un manque de confiance en la qualité du code et/ou de la chaîne de test. Je m’étais penché sur le sujet il y a 2 ans je crois et je vois que de ce côté là c’est toujours aussi navrant.

Pour résumer : :unamused:

Bonjour,
Faudrait se renseigner avant ce genre de post je pense… C’est intégré en 4.1 (pas de date surement 1ans mais c’est fait)