Script requête vocale

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Script requête vocale

Message par mich423 »

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 ?
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

Message par vil1driver »

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
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Re: Script requête vocale

Message par mich423 »

Merci,
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

Message par vil1driver »

S'il n'y a que ça :D

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
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Re: Script requête vocale

Message par mich423 »

Merci,
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

Message par vil1driver »

par petits bouts on ne va pas s'en sortir...

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&param=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
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Re: Script requête vocale

Message par mich423 »

Merci,
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 -
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Re: Script requête vocale

Message par mich423 »

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 ?
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

Message par vil1driver »

petite modif:

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&param=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
mich423
Messages : 44
Inscription : 23 avr. 2015, 21:44

Re: Script requête vocale

Message par mich423 »

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).
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 -
Répondre