Temperature sonde Oregon et script_time

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 <\>.
Cissou
Messages : 98
Inscription : 25 févr. 2015, 13:10

Temperature sonde Oregon et script_time

Message par Cissou »

Salut,

Alors voila j'ai un problème bizarre

dans un de mes script_time pour réguler la température du salon, j'utilise la commande

Code : Tout sélectionner

local temperature = tonumber(otherdevices_svalues[sonde]:match("([^;]+)"))
pour récuperer la température de la sonde oregon qui va bien

quand j'affiche la variable temperature dans le log pour vérification ça me donne : 10
Alors que pour toutes mes autres sondes cette commande me donne bien la temperature
un coup de json pour vérifier :

Code : Tout sélectionner

{
   "ActTime" : 1448786703,
   "ServerTime" : "2015-11-29 09:45:03",
   "Sunrise" : "07:54",
   "Sunset" : "17:03",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 100,
         "CustomImage" : 0,
         "Data" : "19.1 C, 48 %",
         "Description" : "",
         "DewPoint" : "7.83",
         "Favorite" : 1,
         "HardwareID" : 2,
         "HardwareName" : "RFXtrx433",
         "HardwareType" : "RFXCOM - RFXtrx433 USB 433.92MHz Transceiver",
         "HardwareTypeVal" : 1,
         "HaveTimeout" : false,
         "Humidity" : 48,
         "HumidityStatus" : "Normal",
         "ID" : "E804",
         "LastUpdate" : "2015-11-29 09:44:27",
         "Name" : "Salon",
         "Notifications" : "false",
         "PlanID" : "3",
         "PlanIDs" : [ 3 ],
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : 7,
         "SubType" : "THGN122/123, THGN132, THGR122/228/238/268",
         "Temp" : 19.10,
         "Timers" : "false",
         "Type" : "Temp + Humidity",
         "TypeImg" : "temperature",
         "Unit" : 4,
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "65"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
On voit bien que la température est de 19.1 la bonne valeur et puis de toute façon sur le widget ça affiche la bonne température

Une idée? Car la je commence a m'arracher les cheveux!!!
Cissou
Messages : 98
Inscription : 25 févr. 2015, 13:10

Re: Temperature sonde Oregon et script_time

Message par Cissou »

Après plusieurs bidouilles/tests, maintenant la variable temperature est une "nil value"..........
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Temperature sonde Oregon et script_time

Message par Neutrino »

Bonjour,

tu peux simplement utiliser :

Code : Tout sélectionner

local temperature = otherdevices_temperature[sonde]
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Cissou
Messages : 98
Inscription : 25 févr. 2015, 13:10

Re: Temperature sonde Oregon et script_time

Message par Cissou »

bon..... merci Neutrino, ça fonctionne

Mais je suis persuadé que j'ai essayé cette commande hier et ça ne marchait pas.....

un citation de mon prof d'info en école d'ingé
Quand un ordinateur fait une erreur, elle provient a 110% des cas de ce qu'il y a entre le clavier et le dossier de la chaise
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Temperature sonde Oregon et script_time

Message par Nicogluck »

Neutrino a écrit :Bonjour,
tu peux simplement utiliser :

Code : Tout sélectionner

local temperature = otherdevices_temperature[sonde]
Pour ma part, ça ne fonctionne pas.
En reprenant exactement cette syntaxe, la variable temperature enregistre "nil"
Et IDEM en utilisant :

Code : Tout sélectionner

local temperature = otherdevices_svalues[sonde]
J'ai deux sondes Oregon THN132N, j'ai le même résultat avec chacune.

J'ai finalement pondu une requête JSON avec récupération de la température dans le texte reçu en retour...

Code : Tout sélectionner

function os.capture(cmd)
  local f = assert(io.popen(cmd, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  s = string.sub(s,990,993)
  return s
end

commandArray = {}
local temperature = '/usr/bin/curl -s "http://login:pw@adresse_IP:port/json.htm?type=devices&rid=IDX"'
local resultat = os.capture(temperature);
commandArray['Variable:Temperature'] = resultat
return commandArray
Mais c'est quand même sérieusement tiré par les cheveux, non ?? :shock:
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Temperature sonde Oregon et script_time

Message par vil1driver »

Salut,

Utilisez les print() pour savoir ce que contient réellement une variable et ainsi savoir comment la traiter..

Ici sonde temp+hum

Je récupère les 4 premiers caractères, bientôt 2 ans que ça fonctionne impec comme ceci.

Code : Tout sélectionner

local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) 
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
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Temperature sonde Oregon et script_time

Message par ganq »

Et si la température descend entre 0 et 10, est ce que cela fonctionne encore ?
domoticien amateur option bidouille
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Temperature sonde Oregon et script_time

Message par vil1driver »

Non.. :?

Bonne remarque

du coups je préfère ceci

Code : Tout sélectionner

local temperature = math.floor(10*tonumber(otherdevices_temperature[sonde]))/10
car le simple

Code : Tout sélectionner

otherdevices_temperature[sonde]
me donne par exemple : 20.10000038147
problème de conversion ?

@Nicogluck,

tu avais bien déclaré sonde avant ? ex

Code : Tout sélectionner

local sonde = 'salon' 						-- Nom de la sonde de température
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
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Temperature sonde Oregon et script_time

Message par ganq »

la fonction math.floor me renvoie une erreur (nil value)

la variable renvoyée par otherdevices_temperature est 26.8;28;1

Un pb avec les ";" ?
domoticien amateur option bidouille
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Temperature sonde Oregon et script_time

Message par Nicogluck »

ganq a écrit :la fonction math.floor me renvoie une erreur (nil value)

la variable renvoyée par otherdevices_temperature est 26.8;28;1

Un pb avec les ";" ?
Oui, en effet, tu dois ne prendre que les valeurs qui t'intéresse une à une :

Code : Tout sélectionner

local temperature = math.floor(10*tonumber(string.sub(otherdevices_svalues[sonde],1,4)))/10
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
Répondre