-
Compteur de contenus
367 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Tout ce qui a été posté par JM13
-
Ok, je vais patienter comme les autres mais pour moi la méthode "playFile " est déjà opérationnelle. J'ai environ 30 messages enregistrés en mp3 qui se lancent la plupart du temps avec GEA. GEA.add(id["PORTE_ENTREE"], -1, "", -- Quand la porte d'entrée s'ouvre on dit : "WELCOME au new comer Jean-Marc" { {"If", { {"Global", "Sortie", "0"}, -- Si la variable Sortie est 0, cela veut dire que qql'un est en train d'entrer {"Global", "WD_JM", "TRUE"}, -- Si c'est le Wifi Device de JM est détecté {"Global", "Welcome_JM", "OK"} -- Si Welcome_JM est OK, on pourra dire le message } }, {"Time", "17:00", "23:00"}, -- Le soir uniquement {"Days", "Monday, Tuesday, Wednesday, Thursday, Friday"}, -- Seulement les jours de la semaine travaillés {"Global", "SONOS_Num_Message", "8"}, -- Message n°8 : "Bonjour JM" dans la salon {"VirtualDevice", id["SONOS"], 1}, -- en mp3 avec playFile {"Global", "Welcome_JM", "NOT_OK"} -- RAZ pour ne dire le message qu'une seule fois par jour }) En fait, j'ai une question sur le cache pour le TTS lors de la première requête tu vas générer un fichier mp3 qui sera rejoué lors des demandes suivantes ? c'est ça ?
-
Pas trop (au moins pour moi) Ma situation : J'utilise les 2 scripts que tu as proposé pour SONOS 1) Pour le premier, j'utilise fibaro:setGlobal("SonosTTS", "lng="..langue.."|dr=auto|vol="..volume.."|txt="..Mon_Message..". . .|"); -- dans un bouton du VD Le script V0.0.07 dans le main loop Temps de latence important mais je peux "construire" des messages en dynamique (inclusion de température par exemple dans le message) 2) Pour le deuxième, j'utilise playFile("//"..IP_NAS.."/web/Sonos/audio/fr/TTS-MSG"..Num_Message..".mp3", tonumber(Volume_Message)); où j'ai une base de messages en mp3 enregistrés et sockés sur mon NAS pour les messages répétitifs Pas de latence Semble plus robuste Une latence constatée entre 2 messages consécutifs Pour répondre à ta question, comme le format du paramètre n'est pas le même...ai-je le bon fichier "playFile ?
-
Je ne suis pas sur de bien répondre mais j'ai mis 2 icones différents à un virtual device (un pour le device et un pour le bouton) et ensuite local selfId = fibaro:getSelfId(); local icon = fibaro:get (selfId, "deviceIcon"); -- conserver la même icône que le device -- ici le code du bouton dans le VD -- Après 500ms on remet l'icone principal fibaro:sleep(500); fibaro:call(selfId, "setProperty", "currentIcon", icon); L'icone change lors de l'appuie bouton et reviens ensuite... C'était le question, non ?
-
Rem's Tu essayes avec les modèles que j'ai donné? Car au moins pour la freebox cela devrait marcher. ..
-
Choix Point D'accès Wifi Pour Remplacer Wifi Freebox
JM13 a répondu à un(e) sujet de lolomail dans Le bistrot
Discussion intéressante. @Lazer ... 8 ports seulement ? cela me parait un peu court; non ? J'ai un 16 ports et après qqles mois d'utilisation j'en ai 8 déjà d'utilisés. Manageable oui/non : En plus des avantages listés, je peux vous dire que j'ai diagnostiqué un problème de câble en 10 minutes. Sans interface ...j'aurais passé certainement beaucoup plus de temps Par contre, à vous lire; je pense que je vais me lancer dans la caractérisation de mon installation ...je n'ai pas de problème particulier de wifi mais le routeur ASUS m'interpelle -
Tu es sur Synology avec DSM5 ? As-tu fait qqle chose de particulier sur les droits, les protocoles ? (webdav, NFS, ...)
-
@Lazer, je n'arrive non plus à utiliser le répertoire /music ...c'est dommage !! et je suis d'accord avec ton analyse sur l'identification. A suivre ...
-
Il me me reste plus qu'àaller sur wikipédia pour en apprendre encore...merci
-
Désolé je spamme mais c'est pour la bonne cause playFile("//192.168.0.35/web/Sonos/TTS-MSG1.mp3", 30); Je ne comprends pas bien car normalement il ne faut pas mettre /web ...mais bon !! l'essentiel c'est que ça marche
-
et bien sur playFile("//mafreebox.freebox.fr/Disque%20dur/Musiques/TTS-MSG1.mp3", 30); MARCHE playFile("//192.168.0.35/Sonos/TTS-MSG1.mp3", 30); NE MARCHE TOUJOURS PAS
-
Je crois aussi que le problème ne vient pas du script LUA mais de l'accès aux répertoires du Synology. (j'ai le même problème)... Dans un navigateur internet : //192.168.0.35/Sonos/TTS-MSG1.mp3 marche et joue le message donc on peut en déduire que le chemin est bon (et le fichier aussi) Le chemin réel étant : //IP_du_NAS/volume1/web/Sonos/TTS-MSG1.mp3 Quand je change de répertoire (i.e. /music) c'est normal que cela ne marche pas car dans le cas d'un répertoire partagé (dossier partagé au sens de Synology) il faut un mot de passe pour y accéder. Pour finir, la commande playFile("//IP_du_NAS/Sonos/TTS-MSG1.mp3", 30); ne marche pas et le message est bien "accès au répertoire refusé même si on voit bien l'accés au SONOS avec un changement de volume par exemple. Je vais chercher dans DSM (large MTU, webdav, NFS, ...) mais est-ce que l'on peut associer la requête LUA à un requête FTP ou TFPT (qui ne sont pas activés chez moi par exemple) ?
-
Dis donc Rem's, dans ton script tu n'utilises pas toutes les valeurs local NetTempInt = result.body[1].value[1][1]; local NetHumInt = result.body[1].value[1][3]; local NetBruitInt = result.body[1].value[1][5]; fibaro:setGlobal("NetTempInt", NetTempInt); fibaro:setGlobal("NetHumInt", NetHumInt ); fibaro:setGlobal("NetBruitInt", NetBruitInt ); il t'en manque 2 fibaro:setGlobal("NetTempInt", result.body[1].value[1][1]); fibaro:setGlobal("NetCO2", result.body[1].value[1][2]); fibaro:setGlobal("NetHumInt", result.body[1].value[1][3]); fibaro:setGlobal("NetPression", result.body[1].value[1][4]); fibaro:setGlobal("NetdB", result.body[1].value[1][5]);
-
et la suite pour HC2 -- ----------------------- DEVICE SETTINGS -------------------------------- local message = "" local userID = 2; -- User ID (email used to notify) local SmartPhone = 33; -- SmartPhone Admin local dtLog = os.date(); -- Datation local IP_NAS = "192.168.0.35" -- Affiche des dernières valeurs message = "Mise à jour en cours ..." fibaro:log(message); fibaro:debug(message); -- Récupération des nouvelles valeurs INTERNES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=int"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); -- Mise à jour des variables globales fibaro:setGlobal("NetTempInt", result.body[1].value[1][1]); fibaro:setGlobal("NetCO2", result.body[1].value[1][2]); fibaro:setGlobal("NetHumInt", result.body[1].value[1][3]); fibaro:setGlobal("NetPression", result.body[1].value[1][4]); fibaro:setGlobal("NetdB", result.body[1].value[1][5]); fibaro:sleep(500); -- Récupération des nouvelles valeurs EXTERIEURES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=ext"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal("NetHumExt", result.body[1].value[1][2]); -- Confirme la mise à jour message = "Mise à jour effectuée!" fibaro:log(message); fibaro:debug(message);
-
<?php $intext=$_GET['intext']; $password="mot_de_passe"; $username="nom utilisateur"; $app_id = "xxxxxxxxxxxxxxxxxxxxx"; $app_secret = "xxxxxxxxxxxxxxxxxx"; $token_url = "https://api.netatmo.net/oauth2/token"; $postdata = http_build_query( array( 'grant_type' => "password", 'client_id' => $app_id, 'client_secret' => $app_secret, 'username' => $username, 'password' => $password ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $response = file_get_contents($token_url, false, $context); $params = null; $params = json_decode($response, true); $api_url = "https://api.netatmo.net/api/getuser?access_token=" . $params['access_token']; $requete = file_get_contents($api_url); $url_devices = "https://api.netatmo.net/api/devicelist?access_token=" . $params['access_token']; $resulat_device = file_get_contents($url_devices); $json_devices = json_decode($resulat_device,true); $module_interne = $json_devices["body"]["devices"][0]["_id"]; $module_externe = $json_devices["body"]["modules"][0]["_id"]; $url_mesures_internes = "https://api.netatmo.net/api/getmeasure?access_token=" . $params['access_token'] . "&device_id=" . $module_interne . "&scale=max&type=Temperature,CO2,Humidity,Pressure,Noise&date_end=last"; $mesures_internes = file_get_contents($url_mesures_internes); $url_mesures_externes = "https://api.netatmo.net/api/getmeasure?access_token=" . $params['access_token'] . "&device_id=" . $module_interne . "&module_id=" . $module_externe . "&scale=max&type=Temperature,Humidity&date_end=last"; $mesures_externes = file_get_contents($url_mesures_externes); if ($intext == "int") echo $mesures_internes ; else echo $mesures_externes ; ?>
-
Sur le lien que je t'ai donné, il y a 3 scripts (un pour les données int, un pour les données ext ...et un pour les 2 en même temps) Si en tapant la ligne de commande ci-dessous (avec le script pour les 2) tu as les retours dans ton navigateur AVEC des valeurs non nulles, ALORS tu as surement un problème dans la déclaration de tes variables globales sur HC2 car le script par conséquent marche Données intérieures : http://192.168.0.35/Netatmo/netatmo.php?intext=int Affichage : {"status":"ok","body":[{"beg_time":1399140377,"value":20.7,634,64,1012.2,56}],"time_exec":0.0072810649871826,"time_server":1399140622} Données extérieures : http://192.168.0.35/Netatmo/netatmo.php?intext=ext Affichage : {"status":"ok","body":[{"beg_time":1399140288,"value":13.8,64}],"time_exec":0.033488988876343,"time_server":1399140827}
-
Super ... Etape 2 maintenant ;-)
-
Non,non...lors de la création de l'application sur le site de Netatmo j'ai juste mis, un nom "My_domotique" et un commentaire "Récupérer les infos sur HC2"
-
quand je tape dans mon navigateur : http://192.168.0.35/Netatmo/netatmo.php J'ai en réponse dans mon navigateur: {"status":"ok","body":[{"beg_time":1408175150,"value":[[20.1,59]]}],"time_exec":0.0093917846679688,"time_server":1408175228} Netatmo.php est le script qui te permettra de récupérer les infos... APRES, seulement APRES tu peux passer à l'étape suivante : - Soit une page PHP pour aficher qqle chose sur ton site web - Soit un script en LUA sur HC2. As-tu déjà la première réponse ?
-
Normalement tu n'as pas besoin d'une page PHP. Pour tester tape simplement http://ipdunas... Dans le script que tu as, il y a un "echo" àla fin qui affiche dans ton navigateur les valeurs
-
Oui c'est ça ! Tu crées une application sur le site et tu vas récupérer les codes pour mettre dans ton php Ca marchera déjà un peut mieux. Ensuite fait un test dans ton navigateur : http://ip_de_ton_nas/Web_scripts/renetatmo.php avec son sans paramètre suivant ton php (je ne sais pas) Tu devrais recevoir en retour les valeurs T°, etc ...que tu as dans l'interface "normale" de Netatmo. Ensuite..tu verras pour le HC2
-
Ha, tu as raison..je viens de mieux relire les posts. Par contre, je crois que c'est l'adresse du script qui n'est pas bonne (la nuit porte conseil ). Sur Synology (@Rem's as-tu un Syno comme NAS ? ) il ne faut pas mettre le répertoire /web On a en réalité : /volume1/web/ ...et dans ce répertoire "web" tous les sous-répertoires pour des sites, des scripts, etc... Si tu as crée un sous-répertoire Web_scripts comme je vois, il faut uniquement mettre "/Web_scripts/renetatmo.php" et non "/web/Web_scripts/Netatmo.php"
-
qqles ms seulement
-
Un petit complément car je suis resté coincé dessus pas mal de temps avant de comprendre quand j'ai mis en place ma station Netatmo. Tout d'abord, il faut que tu sois inscrit sur le site de Netatmo pour avoir les droits. Ci-dessous le début de mon script PHP (les valeurs sont changées bien sur )..avec les 4 données...mais si tu dis que ton script marche en ligne de commande ...ce doit être bon. <?php $intext=$_GET['intext']; $password="motdepasse"; $username="jm13@gmail.fr"; $app_id = "34536dfg51f345RET5678e78e9eEFEFEFf"; $app_secret = "QhvARtlIT546TYUJ768UYI6789xtm"; Ensuite, avec l'exemple en LUA lors de mon post précédent...cela devrait fonctionner!
-
Regarde dans ton php. Il faut 2 types d'identifiants.
-
De mon coté, j'avais le script ci-dessous mais je vais ajouter les vérifications de décodage ! bonne idée local message = "" local userID = 2; -- User ID (email used to notify) 2 = admin local SmartPhone = 33; -- SmartPhone Admin local dtLog = os.date(); -- Datation local IP_NAS = "192.168.0.35" -- Affiche des dernières valeurs message = "Mise àjour en cours ..." fibaro:log(message); fibaro:debug(message); -- Récupération des nouvelles valeurs INTERNES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=int"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); -- Mise àjour des variables globales fibaro:setGlobal("NetTempInt", result.body[1].value[1][1]); fibaro:setGlobal("NetCO2", result.body[1].value[1][2]); fibaro:setGlobal("NetHumInt", result.body[1].value[1][3]); fibaro:setGlobal("NetPression", result.body[1].value[1][4]); fibaro:setGlobal("NetdB", result.body[1].value[1][5]); fibaro:sleep(500); -- Récupération des nouvelles valeurs EXTERIEURES FHTE = Net.FHttp(IP_NAS,80); response = FHTE:GET("/Netatmo/netatmo.php?intext=ext"); -- decoding json string to table result = json.decode(response); fibaro:debug(response); fibaro:setGlobal("NetTempExt", result.body[1].value[1][1]); fibaro:setGlobal("NetHumExt", result.body[1].value[1][2]); -- Confirme la mise àjour message = "Mise àjour effectuée!" fibaro:log(message); fibaro:debug(message);