Forum des Objets Communicants et Solutions pour les Libérer...
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 Plugin Opennab

Aller en bas 
3 participants
AuteurMessage
devproject
Nabz Junior
Nabz Junior
devproject


Nbr de messages : 50
Carottes : 6765

Plugin Opennab Empty
MessageSujet: Plugin Opennab   Plugin Opennab Icon_minitimeVen 26 Oct 2007 - 18:55

Salut,

nabzsmile

Je suis en train de faire un petit plugin pour Opennab, par contre je me pose une question. Dans ce plugin , je souhaite faire un appel au plugin tts.

Est-ce qu'il vaut mieux faire un appel à celui-ci de cette façon:
Citation :
$tts = new TTS("syvumf");
$tts->Say($messages);
Ou vaut-il mieux appeler l'url de l'api tts : /vl/api.php?sn=xxxxxxxxxxxx&tts=salut&speaker=syvumf"


La première méthode semble fonctionner selon les logs, mais le lapin ne dit rien. Si quelqu'un a une petite astuce, cela m'aiderait bien yellownabzsmile

@+
Revenir en haut Aller en bas
oaz
Silver Nabz
Silver Nabz



Localisation : Haute-Garonne
Nabaztag : oaz (v2)
Nbr de messages : 352
Carottes : 6590

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeVen 26 Oct 2007 - 22:11

L'appel de l'API fonctionnera à tous les coups mais le principal inconvénient est l'asynchronisme : le lapin ne prononcera le texte que lors de son prochain appel à OpenNab (soit 2 minutes + tard par défaut)

L'utilisation de la classe TTS est le plus efficace mais il faut maîtriser son fonctionnement.
Pour cela il faut regarder comment est écrit le plugin 'tts' :
- dans le OnPingWrite on envoie au lapin un message qui lui demande de faire un appel sur /broad
- dans le OnBroadcast, la classe TTS est utilisée. La méthode Say a pour unique fonction de récupérer le contenu audio sur le speaker et de l'envoyer vers la réponse http.

Une solution intermédiaire est de ne se préoccuper que du OnPingWrite et d'utiliser le OnBroadcast au plugin 'tts' qui doit alors être actif.
Revenir en haut Aller en bas
http://barrejadis.azeau.com/
devproject
Nabz Junior
Nabz Junior
devproject


Nbr de messages : 50
Carottes : 6765

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeDim 28 Oct 2007 - 9:57

salut oaz,

J'ai préféré dans un premier temps utilisé la classe. Par contre mon plugin, envoi deux appels successifs à cette classe. Le lapin ne me lit que le deuxieme message. Pourtant je leur sonne un ID différent.

J'ai donc essayé de me rabattre sur l'appel d'api:
$src=file_get_contents("http://xxxx/vl/api.php?sn=xxxxx&tts=test&speaker=syvumf");
$src=file_get_contents("http://xxxx/vl/api.php?sn=xxxxx&tts=test2&speaker=syvumf");
le $src contient bien le resultat de l'api,par contre le lapin reste muet.

si tu as une explication ça serait bien yellownabzsmile
Revenir en haut Aller en bas
oaz
Silver Nabz
Silver Nabz



Localisation : Haute-Garonne
Nabaztag : oaz (v2)
Nbr de messages : 352
Carottes : 6590

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeDim 28 Oct 2007 - 10:22

devproject a écrit:
si tu as une explication ça serait bien yellownabzsmile

Oui j'ai une explication : le système de plugins ne supporte pas des appels réentrants.

Actuellement un appel OpenNab (par le lapin ou par l'API) ouvre le terrier ("burrow") du lapin concerné, donne la main à tous les plugins, et, en dernier lieu, sauve le contenu du terrier modifié par les divers plugins.
Si un appel intervient pendant l'exécution d'un autre appel (en l'occurrence tu appelles l'api du plugin tts pendant un autre appel), la séquence est la suivante :
- appel 1 ouvre terrier
- appel 2 ouvre terrier
- appel 2 sauve terrier
- appel 1 sauve terrier => et écrase les informations de l'appel 2

J'ai déjà adressé ce problème dans la version en cours de dev (pour le plugin 'rfid2http' dont je parle dans une autre file de messages) en rajoutant une méthode 'AfterSave' à la classe burrow.
Cette méthode permet d'enregistrer des fonctions php qui seront appelées après l'appel en cours. La séquence serait alors :
- appel 1 ouvre terrier
- appel 1 enregistre une fonction f avec AfterSave
- appel 1 sauve terrier et execute f qui lance l'appel 2
- appel 2 ouvre terrier
- appel 2 sauve terrier

Pour ce qui est de tes 2 messages avec ID différents, il faudrait voir exactement la séquence des envois pour comprendre le comportement du lapin.
Sache toutefois que tu peux mettre plusieurs ordres de lecture sur /broad dans un seul et unique message. Ca me parait plus simple à implémenter.
Revenir en haut Aller en bas
http://barrejadis.azeau.com/
devproject
Nabz Junior
Nabz Junior
devproject


Nbr de messages : 50
Carottes : 6765

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeDim 28 Oct 2007 - 10:51

En effet, je n'avais pas pensé à cette dernière idée. Ca fonctionne au poil yellownabzwink
Revenir en haut Aller en bas
oaz
Silver Nabz
Silver Nabz



Localisation : Haute-Garonne
Nabaztag : oaz (v2)
Nbr de messages : 352
Carottes : 6590

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeDim 28 Oct 2007 - 11:05

Par simple curiosité, quelles fonctions fournit ton plugin ?
nabzcheers
Revenir en haut Aller en bas
http://barrejadis.azeau.com/
devproject
Nabz Junior
Nabz Junior
devproject


Nbr de messages : 50
Carottes : 6765

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeLun 29 Oct 2007 - 16:51

La lecture des rdv Google Calendar, un peu comme ce que j'avais fait pour nabaztagcalendar.free.fr mais ce coup ci pour opennab. Pour l'instant, ça fonctionne bien, il faut juste que je teste sur le onCron.

Je ne sais pas si ça va interesser du monde. Quoi qu'il en soit, je pense rendre cela public dans les prochains jours.

Qu'en penses tu ?
Revenir en haut Aller en bas
oaz
Silver Nabz
Silver Nabz



Localisation : Haute-Garonne
Nabaztag : oaz (v2)
Nbr de messages : 352
Carottes : 6590

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeMar 30 Oct 2007 - 13:32

Moi ça m'intéresse en tout cas

Si tu veux on peut le mettre dans le prochain package opennab.
Revenir en haut Aller en bas
http://barrejadis.azeau.com/
devproject
Nabz Junior
Nabz Junior
devproject


Nbr de messages : 50
Carottes : 6765

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeMar 30 Oct 2007 - 13:59

Ok ça marche, je finalise et te fait suivre yellownabzwink
Revenir en haut Aller en bas
giejo
Lapin nain
Lapin nain



Localisation : St Malo
Nabaztag : cornebidouille (v2)
Nbr de messages : 16
Carottes : 6391

Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitimeMar 13 Nov 2007 - 16:34

Salut,
est ce qu'il fonctionne ton plugin ?
je suis très intéressé aussi ! yellownabzsmile
Revenir en haut Aller en bas
Contenu sponsorisé





Plugin Opennab Empty
MessageSujet: Re: Plugin Opennab   Plugin Opennab Icon_minitime

Revenir en haut Aller en bas
 
Plugin Opennab
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ajouter un plugin Opennab
» Plugin OpenNab - anniversaires
» OpenNab - plugin simpleplay -Faire taire la bête
» OJN Plugin
» Plugin TTS

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: L'univers de Nabaztag :: Archives :: API-
Sauter vers: