Page 1 sur 1

[Résolu] Synology Domoticz et Curl, Bash, Php ...

Publié : 18 déc. 2016, 10:27
par toutazimuth
Plateforme : Synology 213j DSM6
Domoticz : V3.6169
Niveau du demandeur : newbee (pour moi Python c'est un reptile et Bash une protection efficace contre la pluie) - mais je sais avec winscp me balader et copier des fichiers sur l’arborescence du syno :mrgreen:

Bonjour
J'aimerais pouvoir sur le synology, manipuler les données Json, (parser?) et extraire des valeurs des devices, données par une commande du type
http://192.168.1.88:8084/json.htm?type=devices&rid=488
J'aimerais par exemple extraire la valeur 0,003 kwh de "CounterToday"
Capture01.JPG
Capture01.JPG (69.11 Kio) Consulté 11477 fois
J'ai trouvé beaucoup d'exemples sur le forum, blog et les wiki domoticz, mais cela concerne souvent le Pi.
L'outil ./Jq à l'air parfait, mais sur un syno je n'ai pas l'impression que c'est applicable.

Alors ma question, sur un synology qu'elle est la méthodologie à utiliser pour faire fonctionner CURL, les scripts Php. Quels programmes faut il installer sur le syno et quels sont les chemins à mettre en place ?
Je suis preneur de tous liens et tuto


Sur le syno j'ai les paquets suivants qui fonctionnent : PHP 5.6, Node.js v4. Faut il autres choses ?

J'ai testé la méthode LUA Pass2PHP v2.2 de Egregius.be, mais rien ne ce passe (j'ai bien mis en place les scripts JSON.lua et ee5_base64.lua et adapté les chemins). Les deux scripts LUA sont exécutés et ne génèrent pas d'erreurs dans les log domoticz.

Le script Lua pour lancer le php :

Code : Tout sélectionner

JSON=loadfile('/volume2/@appstore/domoticz/var/scripts/lua/JSON.lua')()
base64=loadfile('/volume2/@appstore/domoticz/var/scripts/lua/ee5_base64.lua')()
c=base64.encode(JSON:encode(devicechanged))
s=base64.encode(JSON:encode(otherdevices))
i=base64.encode(JSON:encode(otherdevices_idx))
t=base64.encode(JSON:encode(otherdevices_lastupdate))
os.execute('curl -s --data "c='..c..'&s='..s..'&i='..i..'&t='..t..'" /volume2/secure/extract.php &')
commandArray={}
-- print('coucou php')
return commandArray

Mais le fichier extract.php ci-après (placé dans volume2/secure), ne donne strictement rien sur mon syno (pas d'écriture du fichier "test_1' et rien dans les log de domoticz).

Code : Tout sélectionner

#!/volume2/@appstore/PHP5.6/usr/local/bin/php56
<?php
echo "Bonjour le monde";
$json_string = file_get_contents("http://192.168.1.88:8084/json.htm?type=devices&rid=596");
$parsed_json = json_decode($json_string, true);
$test_link = "/volume2/@appstore/domoticz/var/scripts/test_1.txt";
$test_data = fopen ($test_link, "w+");
fwrite ($test_data, print_R($parsed_json, TRUE));
fclose ($test_data);
$parsed_json = $parsed_json['result'][0];
$CounterToday = $parsed_json['CounterToday'];
echo "consommation journalière ".$CounterToday."kWh"."\n";
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$Usage = $parsed_json['Puissance instantannéé'];
echo "Puissance instantannée ".$Usage."W"."\n";
echo "Bonjour le monde";
?>
Merci

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 18 déc. 2016, 12:41
par patrice
bonjour
jq existe dans les paquets du syno

Et puis , un conseil, puisque tu te décrits comme débutant évite le script lua qui appelle un php , qui renvoie des valeurs ...
car au lieu de debugger 1 script tu en as 2 à comprendre dans 2 langages différents.

Fais donc ca en lua , regarde les tutos lua, met des print dans le script lua et ca doit fonctionner

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 18 déc. 2016, 18:31
par toutazimuth
Bjr Patrice
Merci pour ta réponse.
Je suis tout a fait d'accord avec ta remarque, je devrais pouvoir me débrouiller avec du Lua.
Mais le problème c'est que je ne trouve pas de Jq pour synology.
J'ai bien installé Node.js v4, mais je ne sais par vers quel répertoire de Node.js v4 je dois faire pointer mon script pour qu'il interprète "curl".

Pour le script des level battery, je fais pointer la commande curl vers le répertoire" Node.js_v4", mais cela ne donne rien.

Code : Tout sélectionner

  -- Update the list of device names and ids to be checked later
    os.execute("curl 'http://" .. DomoticzIP .. ":" .. DomoticzPort .. "/json.htm?type=devices&order=name' 2>/dev/null| /volume2/@appstore/Node.js_v4 '.result[]|{(.Name): .idx}' >" .. DeviceFileName)
    BattToReplace = false
Bon je continue à chercher. :)

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 19 déc. 2016, 10:48
par patrice
Bonjour
Les dernières beta de Domoticz embarquent un encodeur/decoder JSON destiné à Lua,
Article à venir sur le blog ,
Wait & see.

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 20 déc. 2016, 23:33
par Viand0x
Sur le synology tu peux installer jq via bootstrap. Tu touveras la procédure sur les forums dédiés et ensuite c'est presque comme sur le Pi vu que c'est du linux. Après tout dépend si ton Domoticz est sous docker ou pas!

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 23 déc. 2016, 18:00
par toutazimuth
patrice a écrit :Bonjour
Les dernières beta de Domoticz embarquent un encodeur/decoder JSON destiné à Lua,
Article à venir sur le blog ,
Wait & see.
Bonjour Patrice
Super cela semble prometteur
Je vais surveiller le blog, afin de tester ton futur tuto.
Merci

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 23 déc. 2016, 18:06
par toutazimuth
Viand0x a écrit :Sur le synology tu peux installer jq via bootstrap. Tu touveras la procédure sur les forums dédiés et ensuite c'est presque comme sur le Pi vu que c'est du linux. Après tout dépend si ton Domoticz est sous docker ou pas!
Bonjour Viand0x
Merci pour ta réponse.
je suis sur un 213J avec un Marvell Armada 370 88F6707 - et pas de Docker ou autres marins à l'horizon.
Mais bon je sens que cela va dépasser mes root compétences.
Et puis je voudrais pas planter mon fidèle Nas qui me gère la domotique et tout le stockage multimédia.
je vais patienter.

Re: Synology Domoticz et Curl, Bash, Php ...

Publié : 25 déc. 2016, 21:37
par Viand0x
Sage décision d'autant qu'en cas de mise à jour de DSM tu risques de te retrouver le bec dans l'eau, et sans un docker pour te sauver la mise, c'est plutôt houleux :lol:

Re: [Résolu] Synology Domoticz et Curl, Bash, Php ...

Publié : 08 janv. 2017, 21:56
par toutazimuth
Bonjour

Et bien mon problème pour récupérer n'importe quelle valeur d'un device est résolu ! Et ce sans Bash ou Php, mais uniquement en utilisant du Lua ; Lua qui sait maintenant lire et interpréter des fichiers JSON.
Merci au tuto du blog easydomoticz, qui aborde les interactions Lua et JSON (article du 6 janvier).
https://easydomoticz.com/.
C'est super efficace et ce même sur un synology, puisque le fichier JSON.lua est intégré à Domoticz.
Merci à Patrice pour ce super blog ;)

Re: [Résolu] Synology Domoticz et Curl, Bash, Php ...

Publié : 08 janv. 2017, 23:11
par vil1driver
Salut,

Pour info JSON.lua est de base dans domoticz depuis peu mais ça fait vraiment longtemps que l'on peut l'utiliser en l'y ajoutant nous même, de nombreux scripts sur ce forum s'en servent..