Script requête vocale
Script requête vocale
Bonsoir,
J' utilise un script blocky comme ci-dessous:
If exterieur temp = 30
Do Open URL HTTP://192.168.1.206/speak.php?text=il fait 30 degrés à l'extérieur
La requête vocale est gérée par un autre Raspberry PI que celui sur lequel tourne Domoticz.
Le script fonctionne et la phrase "il fait 30 degrés à l'extérieur" est audible, mais je voudrais que l'URL ne soit appelée qu'une seule fois par palier (je voudrais créer autant de scripts que de températures entre 30 et 45 degrés avec un écart de 1 degré ), actuellement, à chaque fois que Domoticz récupère la température, l'URL est rappelée.
Une idée ?
J' utilise un script blocky comme ci-dessous:
If exterieur temp = 30
Do Open URL HTTP://192.168.1.206/speak.php?text=il fait 30 degrés à l'extérieur
La requête vocale est gérée par un autre Raspberry PI que celui sur lequel tourne Domoticz.
Le script fonctionne et la phrase "il fait 30 degrés à l'extérieur" est audible, mais je voudrais que l'URL ne soit appelée qu'une seule fois par palier (je voudrais créer autant de scripts que de températures entre 30 et 45 degrés avec un écart de 1 degré ), actuellement, à chaque fois que Domoticz récupère la température, l'URL est rappelée.
Une idée ?
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Script requête vocale
Idée
laisser tomber blockly pour lua.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Script requête vocale
Merci,
Mais je ne sais pas comment appeler une url avec LUA.
Mais je ne sais pas comment appeler une url avec LUA.
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Script requête vocale
S'il n'y a que ça
Tu sais que le wiki existe hein...
Tu sais que le wiki existe hein...
Code : Tout sélectionner
commandArray['OpenURL']='ton url'
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Script requête vocale
Merci,
Je n'y avais pas pensé, la chaleur !!!
Je n'y avais pas pensé, la chaleur !!!
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Script requête vocale
par petits bouts on ne va pas s'en sortir...
essai ce script
essai ce script
Code : Tout sélectionner
-- script_time_vocal.lua
--
-- Ce script permet d'annoncer la température une seule fois par pas de 1°C entre 30°C et 45°C
--
--------------------------------
------ Tableau à éditer ------
--------------------------------
local ip = '192.168.1.10:8080' -- user:pass@ip:port de domoticz
local sonde = 'exterieur temp' -- nom de la sonde de température
--------------------------------
-- Fin du tableau à éditer --
--------------------------------
function url_encode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w %-%_%.%~])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
commandArray = {}
-- relève de la température
local temp = tonumber(string.sub(otherdevices_svalues[sonde],1,4))
-- création variable de mémorisation si manquante
if(uservariables['Vocal_temp'] == nil) then
commandArray['OpenURL']=ip..'/json.htm?type=command¶m=saveuservariable&vname=Vocal_temp&vtype=2&vvalue=00'
-- teste si la température est à l'un des paliers voulus
elseif (temp == 30 or
temp == 31 or
temp == 32 or
temp == 33 or
temp == 34 or
temp == 35 or
temp == 36 or
temp == 37 or
temp == 38 or
temp == 39 or
temp == 40 or
temp == 41 or
temp == 42 or
temp == 43 or
temp == 44 or
temp == 45) then
-- si la température ne corresponds pas à la mémorisation, on l'annonce
if (temp ~= tonumber(uservariables['Vocal_temp'])) then
commandArray['OpenURL']='HTTP://192.168.1.206/speak.php?text=url_encode(il fait '..temp..' degrés à l\'extérieur)'
end
-- puis on mémorise la température
commandArray['Variable:Vocal_temp']=tostring(temp)
end
return commandArray
Dernière modification par vil1driver le 09 juil. 2015, 09:36, modifié 1 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Script requête vocale
Merci,
Je suis en déplacement. Je teste cela dès samedi.
Je suis en déplacement. Je teste cela dès samedi.
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -
Re: Script requête vocale
Bonjour,
Je viens de tester le script, il fonctionne, mais parfois, le requête vocale est répétée plusieurs fois à la suite, c'est un peu aléatoire. Une idée ?
Je viens de tester le script, il fonctionne, mais parfois, le requête vocale est répétée plusieurs fois à la suite, c'est un peu aléatoire. Une idée ?
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Script requête vocale
petite modif:
script_device_vocal.lua
script_device_vocal.lua
Code : Tout sélectionner
-- script_device_vocal.lua
--
-- Ce script permet d'annoncer la température une seule fois par pas de 1°C entre 30°C et 45°C
--
--------------------------------
------ Tableau à éditer ------
--------------------------------
local ip = '192.168.1.10:8080' -- user:pass@ip:port de domoticz
local sonde = 'exterieur temp' -- nom de la sonde de température
--------------------------------
-- Fin du tableau à éditer --
--------------------------------
function url_encode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w %-%_%.%~])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
commandArray = {}
-- à chaque relève de température
if devicechanged[sonde] then
-- relève de la température
local temp = tonumber(string.sub(otherdevices_svalues[sonde],1,4))
-- création variable de mémorisation si manquante
if(uservariables['Vocal_temp'] == nil) then
commandArray['OpenURL']=ip..'/json.htm?type=command¶m=saveuservariable&vname=Vocal_temp&vtype=2&vvalue=00'
-- teste si la température est à l'un des paliers voulus
elseif (temp == 30 or
temp == 31 or
temp == 32 or
temp == 33 or
temp == 34 or
temp == 35 or
temp == 36 or
temp == 37 or
temp == 38 or
temp == 39 or
temp == 40 or
temp == 41 or
temp == 42 or
temp == 43 or
temp == 44 or
temp == 45) then
-- si la température ne corresponds pas à la mémorisation, on l'annonce
if (temp ~= tonumber(uservariables['Vocal_temp'])) then
commandArray['OpenURL']='HTTP://192.168.1.206/speak.php?text=url_encode(il fait '..temp..' degrés à l\'extérieur)'
-- puis on mémorise la température
commandArray['Variable:Vocal_temp']=tostring(temp)
end
end
end
return commandArray
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Script requête vocale
Bonjour,
J'ai testé avec la modif, cela fonctionne bien mieux, mais encore parfois, la requête vocale renvoyée deux fois avec une pause (j'imagine que c'est le temps d'inscrire la température afin d'éviter ensuite la répétition), c'est toujours aléatoire et pas systématique (je remonte l'info de 6 devices différents).
J'ai testé avec la modif, cela fonctionne bien mieux, mais encore parfois, la requête vocale renvoyée deux fois avec une pause (j'imagine que c'est le temps d'inscrire la température afin d'éviter ensuite la répétition), c'est toujours aléatoire et pas systématique (je remonte l'info de 6 devices différents).
Domoticz sur Win7 - 4 ds18s20 1-Wire avec ESP8266 - 4 modules relais avec ESP8266- conso EDF OWL CM 180 - RFXTrx433 - Rflink - 4 capteurs température 433Mhz Oregon DIY - 3 Rising Sun - 4 Chacon - Yana Server - Imperihome - Cde portail avec ZK1PA -