Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retour expérience #3

Closed
Seb85 opened this issue Sep 8, 2019 · 16 comments
Closed

Retour expérience #3

Seb85 opened this issue Sep 8, 2019 · 16 comments

Comments

@Seb85
Copy link

Seb85 commented Sep 8, 2019

Salut Stéphane,

Petit retour sur ce nouveau client depuis ce début de semaine :

Avec le précédent client lorsque j'envoyai des commandes speak a la suite il me les enchaînait correctement. Avec le nouveau si j'ai le malheur d'envoyer un speak en même temps qu'un autre, celui-ci n'est pas pris en compte. Je ne sais pas si il y a quelque chose a faire pour ça?

Autre souci, mais seulement avec un de mes clients. J'ai des crépitements dans les enceintes toutes les 5s environ. Lorsque que je coupe le client plus de problème. En relançant l'ancien client plus de crépitements non plus. Ça te dit quelque chose ?

Sinon et alors la je comprends pas trop pourquoi, mais mes clients freeze de temps en temps. Plus moyen de l'appeler. Obligé de relancer client et serveur. Un collègue et Antoine on aussi constaté ce souci.
Il y a des logs a éplucher lors de ce freeze pour en savoir plus ?

Voila sinon top, plus de faux positif, reconnaissance parfaite :)

Merci pour ton aide

@Spikharpax
Copy link
Owner

Spikharpax commented Sep 8, 2019

Salut Seb,
Eh ben... que de problèmes... :-)

Tu ne peux pas envoyer 2 speak en même temps. Même avec le précédent client. Il ne peuvent et ne pouvaient pas être vocalisés en même temps. Impossible.
Peut être que tu veux dire "l'un après l'autre" non ?

Pour ton crépitement, ca ne me dit rien. Je n'ai pas d'enceinte PC pour Avatar, j'utilise mon système Sonos comme enceinte et ca fonctionne très bien. Mais bon... sur mon PC de dev, j'utilise l'enceinte du PC et j'ai pas ce soucis. Rien dans Avatar n'utilise l'enceinte tout le temps. et je vois pas comment d’ailleurs, ce serait magique... :-) C'est seulement lorsqu'il y a quelque chose à vocaliser que j'envoie à l'enceinte, c'est tout. C'est très bizarre. J'ai beau chercher, absolument rien peut interférer avec les enceintes et si c’était le cas, je l'aurais aussi sur mon pc de dev.
Tu ne crois pas que ca vient d'un de tes plug-in ? si tu les enlèves un par un pour voir...
Tu devrais aussi essayer avec une autre enceinte si tu en a une pour voir si ca ne vient pas du type d'enceinte que tu as. Je sais qu'une fois j'ai eu une enceinte pour laquelle j'étais obligé de mettre à 60% du volume, à 100% j'avais des trucs bizarres.
Peut être aussi que tu ne me dis pas tout. Peut être que ca arrive au bout de quelques heures et pas systématiquement... Il faudrait que tu analyses bien le pb et que tu saches exactement quand ca arrive et que tu puisses le reproduire. Ca aiderait pour la compréhension.

Que tu relances le serveur si tu as un pb sur le client me surprend... Ce sont 2 appli séparées et elles n'ont rien à voir l'une avec l'autre... :-O
Moi aussi, j'ai pu constater ce pb mais uniquement si je n'utilise pas le client de toute la journée et que la première règle est très tard (vers 23h...) et c'est pas systématique et c'est plutôt rare. Mais je n'ai pas besoin de relancer quoi que ce soit. Il suffit juste de cliquer sur "démarrer l'écoute" sur le node client sur le serveur. Ca suffit pour le réveiller et ensuite plus de pb.
Bon mais peut être que vous n'utilisez pas correctement ce système. Il est nécessaire de redémarrer automatiquement le serveur Avatar pour le rafraîchir. J'espère que tu le fais... Chez moi il se redémarre automatiquement 4 fois dans la journée (voir les paramètres).
J'ai aussi le client sur un stick PC séparé du serveur (ce que je conseille). Mon PC serveur (une tablette) a 4gb et mon PC client (un stick) à 2gb.
Si vous avez les 2 sur le même pc, il est nécessaire d'avoir au moins 6 ou 8 gb (conseillé). Electron est un système assez lourd, ajouté à Chrome qui est très gourmand en ressources, si vous êtes justes, ca peut venir d'un manque de mémoire, il faudrait que tu regardes l'utilisation de la ram pour voir.
Et chaque PC doit être redémarré au moins une fois par jour pour le réinitialiser. Les miens redémarrent à 3h toutes les nuits.
Je sais qu'Antoine utilise des VM. Donc pour lui, ca ne m'étonne pas. Ca demande énormément de ressources les VM et ce n'est pas viable. Déjà à l’époque il avait déjà des problèmes avec ce choix de config. Pour lui, avec ses VM, il faudrait coller 16gb de ram et 16 pour le pc soit 2 barrettes de 16... truc de fou, pour une config qui n'apporte rien, c'est dur...

@Spikharpax
Copy link
Owner

L'enceinte en jack sur ton micro, euh... ouai... :-)
Une enceinte jack, ca fait 1000 ans que je n'en ai pas vu une, je ne savais même pas qu'on pouvait encore... Tu as raison, appelons ça "une solution de contournement" de le passer en usb...
Tu cherches quand même un peu les problèmes toi :-D :-D

@Flamouth
Copy link

Flamouth commented Sep 8, 2019

Salut, c'est bon pour moi tout fonctionne bien, j’utilisais le serveur console pour un gain de perf.

J'ai changé de type d'installation et c'est très stable et pratique. J'ai un mini pc chinois 16go de ram et un i58350u. Il consomme +/- 15w et ne fait pas de bruit. J'utilise deux amplis pour micro jts, 2 pour le salon/séjour/cuisine et 1 pour ma chambre. OS principale Win10 et en VM, un win10, Jeedom et Synology, J'ai qu'un tiers de performance utilisé. Je peux encore rajouter des clients si je veux. Je ne coupe finalement pas le son de mes équipements, la compréhension se fait très bien même en forçant sur le son de la tv.

J'ai poussé le vice, j'ai acheté un moniteur tactile 13" pour avoir accès à tout. Bureau virtuel avec chacun sa fonction méteo, domotique jeedom, musique squeezbox, interface avatar, caméra etc...
Ça fait même portier ^^ grâce à jeedom et quelques script windows. Et tous cela commandable aussi par la voix j'adore.

Donc quand on réfléchit bien, c'est pas si con mon idée de tout centraliser. Je n'est plus rien d’apparent, seulement les micros encastré au plafond.
Et là, le client que tu a fait est époustouflant. j'ai le grand sourire à chaque fois qu'il comprend ce que je dit en direct.

Revenons aux divers problèmes de Seb
Je suis en jack sur ampli pour mes enceintes avec alimentation secteur, pas de grésillement.
J'ai réglé le problème de freeze après un temps de non utilisation en utilisant l'interface graphique du serveur. A voir la semaine prochaine comment il réagit.
Je le redémarre 3 fois par jour serveur et clients.

@Seb85
Copy link
Author

Seb85 commented Sep 9, 2019

Pour le speak, c'est bien l'un après l'autre. Il gardait en mémoire le speak envoyé pour le dire dans la foulée. Plus possible ?

Je suis passé en USB, c'est mieux. Mais toujours un petit crépitement, ça s'entend quand je mets de la musique. Avec le nouveau client coupé plus aucun bruit. Bizarre..

Je redémarre le pc toutes les nuits. Aujourd'hui pas eu de freezer, c'est par moment, si tu trouves comment optimiser c'est top.

Je viens de voir un petit autre souci, je devrais le demander sur le plugin timer mais j'en profite ici. Lorsque je demande par exemple un timer de 30s. Il me répond : minuteur de 30 secondes démarré. Puis aucun son ni de speak : Minuteur de ... terminé. J'ai bien récupéré la nouvelle version.

@Seb85
Copy link
Author

Seb85 commented Sep 9, 2019

le log serveur :
info: mets un minuteur de 30 secondes From: Sejour
info: IntentTimer syntax: true
info: ***** NLP Relations ****
info: state.tokens: put,a,timer,of,30,second
info: state.tags: PastTense,Determiner,Noun,Preposition,Date
info: Relations action : [object Object]
info: Relations object : [object Object]
info: Relations when : [object Object]
info: ********** END *********
info: ActionTimer startTimer
info: Timer command: startTimer From: Sejour To: Sejour
info: Minuteur de 00:00:30
info: Remote speak with callback
info: call(timer) in 23ms
info: Minuteur de 30 seconde terminé
info: Remote receive_data with callback
info: Send /Avatar/Serveur/resources/core/plugins/timer/sound/rencontre_du_troisieme_type.mp3 to Sejour

@Spikharpax
Copy link
Owner

Ca n'a jamais été le cas, Seb. Le speak n'a jamais été gardé en mémoire. Tu te trompes.
La seule chose que je vois est qu'avant c'était par ffmpeg et là ce ne l'est plus.
A mon avis, tu ne fais pas de callback correct dans ton plug-in
C'est:
Avatar.speak("mon 1er text", client , function( {
Avatar.speak("mon 2ème text", client , function( {
Avatar.Speech.end(client);
})
})
et pas:
Avatar.speak("mon 1er text", client);
Avatar.speak("mon 2ème text", client);

Je suis désolé mais pour ton crépitement, je ne peux rien faire. Je ne peux pas tout faire... :-)
Encore une fois, ce client ne touche pas du tout aux enceintes.
Tu devrais t'acheter une enceinte correcte ou peut-être un système Sonos... Ca c'est du super son en 5:1 pour ta musique, ta télé et tu peux utiliser les enceintes comme enceinte pour Avatar.. et ca ne grésille pas :-)

Pour ton freeze, je vois pas ce que je pourrais y faire. Ca ne dépend pas de moi mais plutôt de Google Chrome. Et personnellement, ca ne me le fait pas plus que ca. Peut être 1 fois pour 100 et encore... C'est pour aller dans ton sens.
Je ne sais pas, regarde si ton pc a suffisamment de mémoire ou si ta config n'est pas trop.. euh... exotique, Je dis ca parce qu'à chaque fois je découvre que vous faites des trucs vraiment space avec vos pc :-) Vous devriez n'avoir que Avatar dessus. perso, je n'ai rien d'autre, c'est des pc dédiés et ca fonctionne très bien.

Pour le timer, j'ai regardé. En fait tout est bon.
C'est juste le fs.createOutputStream() qui n'existe plus dans le nouveau module fs-extra du nodejs 10
Pour que ca fonctionne tout de suite, tu peux remplacer sur le nouveau client le module node_modules/fs-extra par l'ancien du précédent client.
Renomme fs-extra en fs-extra.old et copie à la place l'ancien. ca fonctionnera.
Je ne m'en suis pas aperçu parce que c'est mon système Sonos qui joue les sons et ca ne passe pas par le client.

@Seb85
Copy link
Author

Seb85 commented Sep 9, 2019

J'envoi des speak a partir de jeedom via le plugin parle dispo sur mon github. Si tu veux y jeter un œil. Il y a peut être une manière plus propre de le faire. Je viens de retester et avec l'ancien si j'envoi deux requêtes sans attendre la fin de la première, il me passe bien la deuxième. Alors que la seule la première est pris en compte. C'était bien pratique.

Pour le plugin timer je viens de copier l'ancien dossier, en prenant soin de renommer l'actuel et redémarrer le serveur. J'ai toujours le même souci

@Spikharpax
Copy link
Owner

Des speak à partir de jeedom, je ne vois pas bien. Envoyer une commande depuis jeedom pour vocaliser un speak alors que cette commande vient de ton plugin, j'ai l'impression que ca tourne en rond et c'est pas bon.
Pratique surement mais peut être mal développé aussi surement.
Je suis désolé Seb mais il faut respecter les callback.

Pour le Timer, je l'ai testé avant de te l'envoyer et je sais que c'est bon. Testé et validé :-)
Par contre tu parles du serveur mais la manip à faire n'est pas sur le serveur mais sur le nouveau client. Pas la peine de redémarrer le serveur. Il n'a rien à voir avec le client

@Seb85
Copy link
Author

Seb85 commented Sep 10, 2019

Ok pour le timer, après redémarrage du client et non le serveur ça va mieux..

J'ai des scénarios qui font parler Avatar. Ce plugin "parle" me permet d'effectuer un speak a distance.
Comment envoies-tu ça depuis ta box domotique ?

J'utilise cette requête depuis jeedom :
http://IPSERVER:3000/Avatar/parle?command=parle&txt=Salut&client=Sejour

@Spikharpax
Copy link
Owner

D'où vient l'action qui le fait parler, de ta box sans aucune action vocale qui provient d'avatar ?

@Seb85
Copy link
Author

Seb85 commented Sep 11, 2019

Ma jeedom envoi la requête http que je t'ai fait passé, pour déclencher mon plugin parle (dispo sur mon github si tu veux jeter un œil. Je lui passe le texte a dire dans la requête http. Si tu as un autre moyen plus propre je suis preneur :)

@Spikharpax
Copy link
Owner

Spikharpax commented Sep 11, 2019

Oui j'avais bien compris mais pour te dire si c'est cohérent et propre, je dois savoir pourquoi tu fais ca.
La seule raison valable pour faire parler ta box est que ta box déclenche un scénario toute seule sans aucune intervention (par programmation ou autre) et t'avertie. C'est le cas ?

@Seb85
Copy link
Author

Seb85 commented Sep 11, 2019

Effectivement je créer des scenarios jeedom qui déclenche l'action de faire parler Avatar.
Du genre quand je rentre chez moi, l'oeil zwave declenche un scenario jeedom et fait parler avatar pour qu'il me dise bonjour.

@Spikharpax
Copy link
Owner

Spikharpax commented Sep 11, 2019

Je comprends ton problème. Il est plus que très simple. C'est même étonnant que tu ne le résolves pas tout seul.
Tu envoies des speak à Avatar sans te soucier de savoir si le précédent a fini d'être vocalisé.
C'est juste que tu envoies en masse et à la chaîne et hop... on verra bien... fini, pas fini... Synchro, pas synchro... on s'en fou.
C'est pas du dev ca, c'est du poker... :-)
Plus sérieusement,
Si tu veux vraiment que les speak s’enchaînent correctement, pourquoi tu n'appelles pas ton plugin "parle" sans passer le texte ? tu t'en fou d'écrire "Bonjour" dans Jeedom ou dans ton plugin Parle, non ?
Tu fais même plusieurs fonctions par rapport à ce que tu veux faire dire:

var tblCommand = {
bonjour : function() {bonjour ();},
bonjouretplus : function() {bonjouretplus ();}
};

http://IPSERVER:3000/Avatar/parle?command=bonjour // depuis Jeedom
function bonjour () {
Avatar.speak("bonjour", "Salon");
}

http://IPSERVER:3000/Avatar/parle?command=bonjouretplus // depuis Jeedom
function bonjouretplus () {
Avatar.speak("bonjour comment vas-tu ?", "Salon", ()=> {
Avatar.speak("Moi je vais bien, merci", "Salon");
});
}

2 secondes chrono pour écrire d'autres fonctions avec d'autres speak... et parfaitement synchro...

@Flamouth
Copy link

Le truc, c'est qu'avec jeedom, le texte peut provenir de variable de d'autre plugins jeedom. Avatar ne peut pas les connaître. Niveau facilité, c'est indéniable une ligne dans le scénario pour dire ce que l'on veut. La pause dans jeedom sinon, du temps de la vocalisation, je n'ai pas essayer. Ou alors quand avatar fini la phrase reçu, il passe à la suivante. Mais il faut qu'il les gardes en mémoire. Après je sais pas.

@Spikharpax
Copy link
Owner

Spikharpax commented Sep 12, 2019

Je sais pas. Ca me semble difficile à croire que tu ne connaisses pas ce que tu veux faire vocaliser par Jeedom. Tout ce que tu fais à mon avis, c'est toi qui le définis. Bizarre bizarre tout ca. Mais bon, comme je n'ai pas Jeedom, gardons un 1% que ce soit possible...
Une pause, ça ne fonctionne pas, tu ne connais pas le délais que tu dois attendre. ca doit forcement etre un callback
Pour Avatar, il n'est pas besoin de garder en mémoire, c'est fait en callback et d'ailleurs ca ne fonctionne pas dans ce que j'ai développé et je cautionne pas parce que ca me semble difficile à faire, comment prendre en compte la possibilité que d'autres plugins vocalisent en même temps que le tableau "gardé en mémoire" qui se dépile ? Gardez à l'esprit que tout doit être synchrone... ou alors on s'en fou :-)
Franchement, si j'étais vous, j'essayerais de faire un tableau de speak et de le dépiler. Pour bosser un peu mon js, m'amuser et le proposer ensuite à ceux qui le veulent...
Chez moi, j'ai des connecteurs HTTP sur ma box et tout est fait dans mon plug-in eedomus coté Avatar. Je n'ai pas besoin de me poser ce genre de problème.
Bref, dans tout les cas, il y a plusieurs façons de faire possibles, bonnes, moins bonnes, très mauvaises, carrément hors standard développement... alors faites-vous plaisir :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants