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 <\>.
bonjour,
je vous propose mon script thermostat avec commande de la température via télécommande (DIO ou autre) avec retour de la température souhaité en tant que sonde virtuelle
local hysteresis = 0.5
local sonde = 'piece'
local thermostat = 'Thermostat actif ou pas'
local radiateur = 'radiateur a piloter'
local pas = 0.5 --increment de la temperaure du thermostat
local remote = 'telecommande temp'
-- Capteur Temperature thermostat virtuel - nom et id
local tempthermo = 'Temp Thermostat'
local idx = 58
commandArray = {}
if (devicechanged[remote]) then
nowtemp = tonumber(otherdevices_svalues[tempthermo])
if (devicechanged[remote]=='On') then
commandArray['UpdateDevice'] = idx .. '|0|' .. tostring(nowtemp+pas)
elseif (devicechanged[remote]=='Off') then
commandArray['UpdateDevice'] = idx .. '|0|' .. (tostring(nowtemp-pas))
end
end
if (devicechanged[sonde]) then
nowtemp = tonumber(otherdevices_svalues[tempthermo])
local temperature = devicechanged[string.format('%s_Temperature', sonde)]
if (otherdevices[thermostat]=='On') then
if (temperature < (nowtemp - hysteresis)) and (otherdevices[radiateur]=='On') then
commandArray[radiateur]='Off'
elseif (temperature > (nowtemp + hysteresis)) and (otherdevices[radiateur]=='Off')then
commandArray[radiateur]='On'
end
end
end
return commandArray
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
Ma question n'est pas liée directement au script fourni. Je vous remercie d'ailleurs, je le testerai bientot.
Je vois que vous avez un RFXCOM + 3 sondes Oregon. Je viens du monde Zibase auquel j'ai ajouté une installation Domoticz pour un autre logement. Sur Zibase, j'avais configuré le logiciel pour utiliser un ID type "OSxxxxxxx" unique pour chaque sonde Oregon en lieu et place du canal. Inconvénient: il change au remplacement des piles.
Sur RFXCOM + Domoticz, c'est le numéro du canal qui est affiché dans la liste des dispositifs. Cela ne m'arrange pas trop car j'ai plus de 3 sondes à placer...
pacheth a écrit :
Sur RFXCOM + Domoticz, c'est le numéro du canal qui est affiché dans la liste des dispositifs. Cela ne m'arrange pas trop car j'ai plus de 3 sondes à placer...
Chez moi dans la liste des dispositifs il y a dans l' ordre: Idx (identifiant attribué par domoticz), Matériel, ID (identifiant de la sonde comme pour zibase) ,Unit (le canal ? mais pas sur) , .......
Je ne doute pas que Domoticz soit capable de gérer plus de 3 sondes. Mais si le software se base uniquement sur le canal, la limitation viendra des sondes Oregon.
En effet, mis à part la dernière génération (ex: THGR 810 qui m'a d'ailleurs donné du souci), on est très vitre limité en choix de canal.
De plus, il y a risque d'interférence avec des voisins.
D'après ce que je sais, le RFXCOM devrait envoyé (comme la Zibase), une chaine complète comprenant le canal et un identifiant beaucoup plus long et généré lorsqu'on change les piles. Mais Domoticz n'a l'air que de servir du canal...
Bonjour
Je cherche à réaliser un thermomètre virtuel qui me donnerait la différence entre la chaleur au soleil et celle sous abri.
j'ai deux sondes Oregon Tsoleil au soleil et Text à l'abri.
j'ai créé un sensor virtuel Soleil avec idx=123.
Je me suis inspiré de ton script pour essayer de réaliser cela; mais je ne maitrise pas bien le langage.
local sonde1 = 'Tsoleil'
local sonde2 = 'Text'
local idx = 123
commandArray = {}
if (devicechanged[sonde1]) then
local temperature1 = devicechanged[string.format('%s_Temperature', sonde1)]
local temperature2 = devicechanged[string.format('%s_Temperature', sonde2)]
commandArray['UpdateDevice'] = idx .. '|0|'.. tostring(temperature1-temperature2)
end
J'obtiens l'erreur suivante:
Error: /home/pi/domoticz/scripts/lua/script_device_Soleil_1.lua:11: attempt to perform arithmetic on local 'temperature2' (a nil value)
j'ai essayé avec l'expression temperature2= tonumber(otherdevices_svalues[sonde2]) mais ça envoi la même erreur.
Peux tu m'aider?
Merci d'avance