Peux tu le partager ? Stpjackslayter a écrit :le script que j'avais marchait bien et puis plus du tout , j'ai essayé avec le level en json , rien.
je pense que mon variateur n'est plus compatible.
je suis donc passé aux scènes avec 25%,50%,... et un bouton qui monte et un autre qui descend
Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Re: RE: Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
jackslayter
- Messages : 1040
- Inscription : 30 sept. 2014, 14:40
- Localisation : Isère (38)
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Code : Tout sélectionner
--script_device_lampe.lua
commandArray = {}
MaxDimLevel = 16
step = 100.0 / MaxDimLevel
increment = 2
button = 'controle inten salon'
light = 'lampe salon'
if (devicechanged[button]=='On') then
if ('Off' ~= string.len(otherdevices_svalues[light])) then
local currentlevel = tonumber(otherdevices_svalues[light])
if (currentlevel < MaxDimLevel) then
currentlevel = step * currentlevel
newlevel = math.ceil(currentlevel + (increment * step))
--print('Increase ' .. light .. ' from ' .. math.ceil(currentlevel) .. '% to ' .. newlevel .. '%')
commandArray[light]='Set Level ' .. newlevel
end
end
elseif (devicechanged[button]=='Off') then
if ('Off' ~= string.len(otherdevices_svalues[light])) then
local currentlevel = tonumber(otherdevices_svalues[light])
if (currentlevel < MaxDimLevel) then
currentlevel = step * currentlevel
newlevel = math.ceil(currentlevel - (increment * step))
--print('Increase ' .. light .. ' from ' .. math.ceil(currentlevel) .. '% to ' .. newlevel .. '%')
commandArray[light]='Set Level ' .. newlevel
end
end
end
return commandArrayCode : Tout sélectionner
/json.htm?type=command¶m=switchlight&idx=27&switchcmd=Set%20Level&level=6Code : Tout sélectionner
curl "http://192.168.1.1:8080/json.htm?type=devices&rid=27" | sed -e 's/[{}]/''/g' | grep '"Level" :' | sed 's/:/ /1' | sed 's/,/ /1' | awk -F" " '{ print $2 }'Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Sinon, je prendrais le problème dans l'autre sens.
Le script bash se contente de lire le level avec la commande de jackslayter, de l'incrémenter et enfin de faire appel à l'API JSON pour l'action dans Dz.
Pas de LUA et une exécution plus rapide je pense.
Code : Tout sélectionner
Télécommande----Infra Rouge---->Capteur->Lircrc->script bash
Pas de LUA et une exécution plus rapide je pense.
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Je continue a y reflechir, vraiment il faut vite que DZ finissent les intégrations de Hardware.
Il semble qu'aucun device rgbw n'a sa valeur de couleur ou de dim, ccessible par le JSON ou en LUA .
Je pourrais même faire un script qui va piloter directement l'API Milight...
C'est juste une question de perfectionnisme, je VEUX que le niveau réel soit le même que dans Domoticz !!!
Il semble qu'aucun device rgbw n'a sa valeur de couleur ou de dim, ccessible par le JSON ou en LUA .
Je pourrais même faire un script qui va piloter directement l'API Milight...
C'est juste une question de perfectionnisme, je VEUX que le niveau réel soit le même que dans Domoticz !!!
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
as tu testé un simple otherdevices['Appliques'] qui remonte la ligne status (dans ton json: "Status" : "Set Level: 25 %",)deennoo a écrit :(...)
Mais non les MIlight n'affiche rien dans la section svalues, que dalle, nada, nipe.
(...)
reste juste à jouer avec string.gsub pour ne garder que le 25
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: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Je peux essayer, mais je vais attendre la prochaine version officiel, j'ai lu qu'il y allait avoir une refonte complète de la gestion des éléments RGB WW et CW dans tous les protocoles.
Cela arrive pour Mars, la patience peut faire gagner du temps.
Merci de votre temps les copains.
Cela arrive pour Mars, la patience peut faire gagner du temps.
Merci de votre temps les copains.
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
DavidFromRouen
- Messages : 157
- Inscription : 26 févr. 2016, 23:40
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Bonjour à tous.
Voilà, certains d'entre vous s'en sont rendu compte, cela fait une grosse semaine que je découvre les joies de Domoticz.
Je commence à me débrouiller et c'est vraiment passionnant.
J'essaie au maximum de me débrouiller par moi-même, mais y'a des moments..
Je souhaiterai que Domoticz me donne la température d'une sonde, de manière vocale.
J'ai trouvé plusieurs morceaux de scripts ici et ailleurs, mais rien que je ne puisse utiliser car incomplet.
Pour ce qui est vocal, je maîtrise. Il y a deux manières que j'essaie en ce moment et qui ont justement été expliquées sur le forum:
1- le message préenregistré en MP3 qui vient de http://text2speech.us/
2- le message transcrit à la volée venant de http://www.voicerss.org/
Je me suis amusé à faire quelques scripts très simples pour par exemple dire vocalement l'état du portail (ouvert ou fermé)
dans le cas 1 (MP3)
dans le cas 2 (VOICERSS)
Fin de la parenthèse : D
Du coup, comme dis au début, je souhaiterai que Domoticz me donne la température (c'est une sonde extérieure) si elle atteint un certain seuil.
J'ai vu sur le forum quelque chose de très proche (alerter à chaque degré en 30° et 45°) mais le script n'est pas entier.
D'après ce que j'ai compris, il faut un script JSON qui récupérera la valeur de la sonde et un autre script.
J'ai vu aussi le super script GoodMorning de Jmleglise mais il ne fonctionne pas. (bien sur j'ai épuré en enlevant les prévisions météo et les annonces d'ordures...)
Bref, je suis un peu perdu.
Je crois que je vais acheter un bouquin sur le lua
Quelqu'un pourrait-il me donner les quelques lignes magiques du script qu'il me faudrait ?
Voilà, certains d'entre vous s'en sont rendu compte, cela fait une grosse semaine que je découvre les joies de Domoticz.
Je commence à me débrouiller et c'est vraiment passionnant.
J'essaie au maximum de me débrouiller par moi-même, mais y'a des moments..
Je souhaiterai que Domoticz me donne la température d'une sonde, de manière vocale.
J'ai trouvé plusieurs morceaux de scripts ici et ailleurs, mais rien que je ne puisse utiliser car incomplet.
Pour ce qui est vocal, je maîtrise. Il y a deux manières que j'essaie en ce moment et qui ont justement été expliquées sur le forum:
1- le message préenregistré en MP3 qui vient de http://text2speech.us/
2- le message transcrit à la volée venant de http://www.voicerss.org/
Je me suis amusé à faire quelques scripts très simples pour par exemple dire vocalement l'état du portail (ouvert ou fermé)
dans le cas 1 (MP3)
Code : Tout sélectionner
#!/bin/bash
mplayer -ao alsa -noconsolecontrols /home/pi/PortailOuvert.mp3dans le cas 2 (VOICERSS)
Code : Tout sélectionner
#!/bin/bash
tts "Attention. Le portail est toujours ouvert"Du coup, comme dis au début, je souhaiterai que Domoticz me donne la température (c'est une sonde extérieure) si elle atteint un certain seuil.
J'ai vu sur le forum quelque chose de très proche (alerter à chaque degré en 30° et 45°) mais le script n'est pas entier.
D'après ce que j'ai compris, il faut un script JSON qui récupérera la valeur de la sonde et un autre script.
J'ai vu aussi le super script GoodMorning de Jmleglise mais il ne fonctionne pas. (bien sur j'ai épuré en enlevant les prévisions météo et les annonces d'ordures...)
Bref, je suis un peu perdu.
Je crois que je vais acheter un bouquin sur le lua
Quelqu'un pourrait-il me donner les quelques lignes magiques du script qu'il me faudrait ?
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Salut!
je m'exerce aussi aux joies du lua donc je peux pas bien t'aider encore dans ce langage.
Par contre, je suis passé expert en récupération de valeur en json !
ma méthode, c'est d'installer un parser (trieur) Json qui récuperera ce que tu veux dans la commande json. J'ai installé jq sur mon raspberry:
Si tu as un message d'erreur pour "autoreconf" c'est qu'il doit être installé:
Imagine que tu veux recupérer les valeurs d'un capteur domoticz dans ton terminal:
Tu verras toutes les valeurs qui correspondent à ton capteur.
Exemple d'un capteur si tu veux juste récupérer la valeur "Temp" avec jq (temperature)
Et oh miracle seule la valeur que tu veux s'affiche :
Oui il fait pas tres froid en ce moment chez moi
Le script:
Je ne suis pas familier du tts. Pour ma part j'utilise un vieux téléphone sur lequel j'ai installé paw server et branché un haut parleur.
tuto ici: http://www.abavala.com/paw-synthese-voc ... s-android/
chez moi la sortie vocale s'écrit donc:
il faut remplacer les "espace" par des %20
Et ça marche du tonnerre !
Ah toi d'intégrer le script au lua avec la commande
je m'exerce aussi aux joies du lua donc je peux pas bien t'aider encore dans ce langage.
Par contre, je suis passé expert en récupération de valeur en json !
ma méthode, c'est d'installer un parser (trieur) Json qui récuperera ce que tu veux dans la commande json. J'ai installé jq sur mon raspberry:
Code : Tout sélectionner
git clone https://github.com/stedolan/jq.git
cd jq
autoreconf -i
sudo ./configure --disable-maintainer-mode
sudo make
sudo make install
Code : Tout sélectionner
sudo apt-get install dh-autoreconf
Code : Tout sélectionner
curl -s "http://ip_du_rasp:port/json.htm?type=devices&rid=idx_ton_device"
Exemple d'un capteur si tu veux juste récupérer la valeur "Temp" avec jq (temperature)
Code : Tout sélectionner
curl -s "http://ip_du_rasp:port/json.htm?type=devices&rid=idx_de_ton_capteur"| jq -r .result[].Temp
Code : Tout sélectionner
21.5
Le script:
Code : Tout sélectionner
#!/bin/bash
#on cree une variable temperature
TEMP=$(curl -s "http://ip_du_rasp:port/json.htm?type=devices&rid=idx_de_ton_capteur"| jq -r .result[].Temp)
#on ordonne la sortie vocale
tts "Il fait $TEMP degres celsius "
tuto ici: http://www.abavala.com/paw-synthese-voc ... s-android/
chez moi la sortie vocale s'écrit donc:
Code : Tout sélectionner
curl -s "http://ip_du_telephone:8080/actions/text_to_speech.xhtml?texte=Il%20fait%20$TEMP%20degres%20celsius"
Et ça marche du tonnerre !
Ah toi d'intégrer le script au lua avec la commande
Code : Tout sélectionner
os.execute('/chemin/du/script.sh')
Dernière modification par Pyrrhus le 31 mars 2016, 22:19, modifié 1 fois.
-
DavidFromRouen
- Messages : 157
- Inscription : 26 févr. 2016, 23:40
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Merci à toi !! Je vais me pencher là dessus et je te redis.
Merci beaucoup pour le temps passé pour moi.
Merci beaucoup pour le temps passé pour moi.
-
DavidFromRouen
- Messages : 157
- Inscription : 26 févr. 2016, 23:40
Re: Récupérer une valeur présente dans le JSON pour l'utiliser en LUA
Bon bein ça commence mal.
J'ai essayé tant bien que mal une bonne partie de la soirée, j'avais des messages d'erreur à gogo, des plantages...
Bref rien de bon. J'ai changé de µSD j'ai remis tout propre depuis le début.
Tout ce qui est installation se passe bien, mais lors de la commande finale... erreur...
Peut-être une erreur de syntaxe ?
pi@raspberrypi:~$ curl -s "http://192.168.1.27:8080/json.htm?type=device&rid=1"
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html>pi@raspberrypi:~$
EDIT: Si j’exécute le script manuellement, sous WinSCP,
J'ai une sortie vocale, sauf que la voix ne donne pas le chiffre des degrés et j'ai le retour suivant:
La commande '"./Essai.lua"'
a échoué avec pour code de retour 0 et pour message
parse error: Invalid numeric literal at line 1, column 60.
J'ai essayé tant bien que mal une bonne partie de la soirée, j'avais des messages d'erreur à gogo, des plantages...
Bref rien de bon. J'ai changé de µSD j'ai remis tout propre depuis le début.
Tout ce qui est installation se passe bien, mais lors de la commande finale... erreur...
Peut-être une erreur de syntaxe ?
pi@raspberrypi:~$ curl -s "http://192.168.1.27:8080/json.htm?type=device&rid=1"
<html><head><title>Unauthorized</title></head><body><h1>401 Unauthorized</h1></body></html>pi@raspberrypi:~$
EDIT: Si j’exécute le script manuellement, sous WinSCP,
J'ai une sortie vocale, sauf que la voix ne donne pas le chiffre des degrés et j'ai le retour suivant:
La commande '"./Essai.lua"'
a échoué avec pour code de retour 0 et pour message
parse error: Invalid numeric literal at line 1, column 60.