Page 3 sur 3

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 15:27
par Jihem
toujours la même erreur et pas de résultat pour le print!

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 15:36
par jackslayter
il y aurai pas un baromètre en plus des fois

chez moi ca marche

Code : Tout sélectionner

commandArray = {}
if (devicechanged['salon']) then
Tsoleil, total = otherdevices_svalues['salon']:match("([^;]+);([^;]+)")
Tsoleil = tonumber(Tsoleil)
Text, total = otherdevices_svalues['couloir']:match("([^;]+);([^;]+)")
Text = tonumber(Text)
print(Tsoleil-Text)
--commandArray['UpdateDevice'] = idx .. '|0|'.. tostring(tTsoleil-Text)
end
return commandArray

Code : Tout sélectionner

2014-11-28 15:35:08 LUA: 1.5
2014-11-28 15:35:08 (rfxcom) Temp + Humidity (salon)
2014-11-28 15:35:16 (rfxcom) Temp + Humidity (couloir)
2014-11-28 15:35:17 (rfxcom) Temp (Exterieur)
2014-11-28 15:35:28 (rfxcom) Temp + Humidity (chambre)
2014-11-28 15:35:30 Hardware Monitor: Fetching data (System sensors)
2014-11-28 15:35:45 (rfxcom) Energy (cm180)
2014-11-28 15:35:47 LUA: 1.5
2014-11-28 15:35:47 (rfxcom) Temp + Humidity (salon)
2014-11-28 15:35:55 (rfxcom) Temp + Humidity (couloir)
2014-11-28 15:35:56 (rfxcom) Temp (Exterieur)
2014-11-28 15:36:00 Hardware Monitor: Fetching data (System sensors)
2014-11-28 15:36:07 (rfxcom) Temp + Humidity (chambre)
2014-11-28 15:36:26 LUA: 1.5
2014-11-28 15:36:26 (rfxcom) Temp + Humidity (salon)
2014-11-28 15:36:30 Hardware Monitor: Fetching data (System sensors)
2014-11-28 15:36:34 (rfxcom) Temp + Humidity (couloir)
2014-11-28 15:36:35 (rfxcom) Temp (Exterieur)
2014-11-28 15:36:45 (rfxcom) Energy (cm180)
2014-11-28 15:36:46 (rfxcom) Temp + Humidity (chambre)
2014-11-28 15:37:00 Hardware Monitor: Fetching data (System sensors)
2014-11-28 15:37:05 LUA: 1.5

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 15:39
par Jihem
Non sonde Oregon THGN132N

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 15:42
par jackslayter
après vu que le script est exécuté à chaque fois que la sonde change
fait un script time

Code : Tout sélectionner

local idx = 123
commandArray = {}
Tsoleil, total = otherdevices_svalues['Tsoleil']:match("([^;]+);([^;]+)")
Tsoleil = tonumber(Tsoleil)
Text, total = otherdevices_svalues['Text']:match("([^;]+);([^;]+)")
Text = tonumber(Text)
print(Tsoleil-Text)
commandArray['UpdateDevice'] = idx .. '|0|'.. tostring(tTsoleil-Text)
return commandArray

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 15:59
par Jihem
Je ne comprend pas et je ne vois pas comment marche la commande

Tsoleil, total = otherdevices_svalues['Tsoleil']:match("([^;]+);([^;]+)")
est-ce que ça trouve la valeur à partir d'une position dans une chaine?
la commande: /json.htm?type=devices&rid=64 donne ça

{ "5MinuteHistoryDays" : 1, "ActTime" : 1417185984, "AllowWidgetOrdering" : true, "DashboardType" : 0, "Latitude" : "47.47587", "Longitude" : "-4.17255", "MobileType" : 1, "TempScale" : 1.0, "TempSign" : "C", "WindScale" : 3.600000143051147, "WindSign" : "km/h", "dontcachehtml" : true, "result" : [ { "AddjMulti" : 1.0, "AddjMulti2" : 1.0, "AddjValue" : 0.0, "AddjValue2" : 0.0, "BatteryLevel" : 100, "CustomImage" : 0, "Data" : "22.9 C, 55 %", "DewPoint" : "13.38", "Favorite" : 1, "HardwareID" : 2, "HardwareName" : "RFX", "HaveTimeout" : false, "Humidity" : 55, "HumidityStatus" : "Comfortable", "ID" : "D102", "LastUpdate" : "2014-11-28 15:46:24", "Name" : "T_salon", "Notifications" : "false", "PlanID" : "0", "Protected" : false, "ShowNotifications" : true, "SignalLevel" : 8, "SubType" : "THGN122/123, THGN132, THGR122/228/238/268", "Temp" : 22.90, "Timers" : "false", "Type" : "Temp + Humidity", "TypeImg" : "temperature", "Unit" : 2, "Used" : 1, "XOffset" : "0", "YOffset" : "0", "idx" : "64" } ], "status" : "OK", "title" : "Devices" }

en PHP avec les commandes
<?php
$json_string = file_get_contents("http://192.168.1.27:8080/json.htm?type=devices&rid=64");
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['result'][0];
$temp = $parsed_json['Temp'];

echo "Temp ".Temp."\n";

je récupère bien la valeur 22.90 mais par contre je ne sais pas comment passer la valeur dans Domoticz.

Est-ce qu'on peut éxécuter un script Lua en dehors de Domoticz pour debbuger?

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 16:16
par jackslayter
Jihem a écrit :Je ne comprend pas et je ne vois pas comment marche la commande

Tsoleil, total = otherdevices_svalues['Tsoleil']:match("([^;]+);([^;]+)")
est-ce que ça trouve la valeur à partir d'une position dans une chaine?
je pense que oui

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 16:22
par jackslayter
tu as quoi comme version de domoticz

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 16:43
par Jihem
La dernière 2.2139
il doit y avoir un problème de position de la valeur dans ce qui est reçu mais comme on ne sait pas ce qui est envoyé!
j'essaye de faire un script en PHP car je sais récupérer la valeur des température mais je ne sais pas comment faire passer le résultat.
j'essaye avec

Code : Tout sélectionner

shell_exec('curl"http://192.168.1.27:8080/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=$temp"')
mais je ne peut pas passer la variable $temp. si je met une valeur fixe ça passe mais ça ne résout pas le problème.

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 17:04
par jackslayter
remplace

Code : Tout sélectionner

http://192.168.1.27:8080/json.htm?type=command\&param=udevice\&idx=IDX\&svalue="$temp"

Re: script thermostat avec commande de la temperature

Publié : 28 nov. 2014, 18:45
par Jihem
Bonsoir
Finalement j'ai trouvé

Code : Tout sélectionner

commandArray = {}
    if (devicechanged['Tsoleil'])
    then
       if (otherdevices_temperature['Tsoleil'] - otherdevices_temperature['Text'] >= 0)
       then
         commandArray['UpdateDevice'] = 123 .. '|0|'.. tostring(otherdevices_temperature['Text'] - otherdevices_temperature['Tsoleil'])
       end
    end
    return commandArray
encore merci pour le temps passé et la prise de tête.