Récupérer les valeurs des capteurs.

Forum dédié à l'intégration de la Gateway ZigBee Xiaomi dans DomoticZ.
Pour les questions concernant les objets ZigBee Xiaomi, merci d'utiliser le forum ZigBee au-dessus.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Récupérer les valeurs des capteurs.

Message par Wolfen38 »

Bonjour,

Je ne trouve pas comment récupérer les infos des capteurs...

Par ex, j'aimerai le matin m'envoyer un mail à 5h avec la température de mon capteur extérieur....

Merci.
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Récupérer les valeurs des capteurs.

Message par landaisbenj »

Comme tout autre device la valeur c'est le device en lui meme:

Code : Tout sélectionner

print(otherdevices['device'])
affichera normalement la valeur.

Il y a aussi otherdevices_svalues mais je ne comprend pas encore la difference.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Récupérer les valeurs des capteurs.

Message par Jeff »

Une petite lecture de la bible t'illuminera ;)
http://www.domoticz.com/wiki/Events

edit : c'est plutôt moi qui vient d'être illuminé ! Je viens de comprendre plein de chose que je piochais partout sans rien comprendre. Comment parcourir une table...

Code : Tout sélectionner

for i, v in pairs(otherdevices) do print(i, v) end
Il y a exactement tout pour ton exemple

Code : Tout sélectionner

 time = os.date("*t")
 commandArray = {}
 
 -- otherdevices, otherdevices_lastupdate and otherdevices_svalues are arrays for all devices: 
--   otherdevices['yourotherdevicename'] = "On"
--   otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
--   otherdevices_svalues['yourotherthermometer'] = string of svalues

 if (devicechanged['MyDeviceName'] == 'On' and otherdevices['MyOtherDeviceName'] == 'Off' and time.hour >= 22) then
    commandArray['MyOtherDeviceName']='On'
    
    commandArray['SendEmail']='subject#body#your@email.com'
 end
 return commandArray
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Récupérer les valeurs des capteurs.

Message par landaisbenj »

Jeff a écrit :Une petite lecture de la bible t'illuminera ;)
http://www.domoticz.com/wiki/Events

edit : c'est plutôt moi qui vient d'être illuminé ! Je viens de comprendre plein de chose que je piochais partout sans rien comprendre. Comment parcourir une table...

Code : Tout sélectionner

for i, v in pairs(otherdevices) do print(i, v) end
Trop bon :lol: moi c'est pareil j'ai du mal a comprendre de quoi sont composés les tables.

Mais si ca peut aider aussi je laisse mon propre lexique:

Code : Tout sélectionner

--[[
--Envoyer une notification.
commandArray['SendNotification']='test#testtest'

*******************************************************************************************************************
--Afficher dans les logs le device qui active le script:
print ( "Device: '..next(devicechanged)..'" - Etat: '..devicechanged[next(devicechanged)]

--Afficher dans les logs, tous les devices, variables ainsi que leurs etats

    for deviceName,deviceValue in pairs(otherdevices) do 
        print ( "Device: '..deviceName..'" - Etat: '..deviceValue)
    end
    


    for variableName,variableValue in pairs(uservariables) do
        print ( "Variable: '..variableName..'" - Valeur: '..variableValue)
    end
    
    
-- Verifie le debut du nom du device
    device=tostring(next(devicechanged))
    if ((device:sub(1,3) == 'PIR') == 'On') then


-- Verifie plusieurs device 
local capteurs = { "Porte entrée/couloir", "Porte terrasse" }

function verifcapteur()
   local capteurp = ' '
   local dooropen = 0
   
   print("Vérification des capteurs...")

   for cle, valeur in ipairs(capteurs) do
           if otherdevices[valeur] == 'Open' then
               capteurp = capteurp..' -> '..valeur..' '
               dooropen = dooropen + 1
           end
       end

   if (dooropen == 1) then
   message = "Attention ! La porte :"..capteurp.."est ouverte"
   return true
   
   elseif (dooropen >= 2) then
   message ="Attention ! Les portes :"..capteurp.."sont ouvertes"
   return true
   
   else
   message = "Aucune portes ouvertes détecté"
   return false
   end
        
        print(message)
end


    
*******************************************************************************************************************

--]]

devicechanged['MyDeviceName'] == 'On' 

otherdevices['yourotherdevicename'] = "On"
otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
otherdevices_svalues['yourotherthermometer'] = string of svalues
otherdevices_idx['yourotherdevicename'] retourne le numéro de device

uservariables['yourvariablename'] = 'Test Value'
uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'
uservariablechanged['yourvariablename']

timeofday['Nighttime'] = true or false
timeofday['SunriseInMinutes'] = number
timeofday['Daytime'] = true or false
timeofday['SunsetInMinutes'] = number

globalvariables['MySecurityDevice'] = 'Disarmed', 'Armed Home' or 'Armed Away'
commandArray['MySecurityDevice'] = 'Arm Away' delai de 60s, 'Arm Home' delai 60s or 'Disarm'

commandArray['MyOtherDeviceName1']='On'
commandArray['MyOtherDeviceName2']='On'
commandArray['MyOtherDeviceName3']='Off'
commandArray['MyOtherDeviceName4']='On FOR 10' -- Passe à On pendant 10 minutes ou secondes ?
commandArray['MyOtherDeviceName5']='Off RANDOM 30' -- Off aleatoire pendant 30 minutes ou secondes ?
commandArray['MyOtherDeviceName6']='On REPEAT 5 INTERVAL 5' -- Repete la commande 5 fois toutes les 5 minutes ou secondes ?
commandArray['MyOtherDeviceName7']="On FOR 2 SECONDS REPEAT 9 INTERVAL 4 SECONDS" -- Passe un device a ON 9 fois toutes les 4 secondes
commandArray[#commandArray+1]={['MyOtherDeviceName1'] = 'On'}
commandArray['Scene:MyScene']='On'
commandArray['Group:MyGroup']='Off AFTER 30' -- Passe à OFF apres 30 minutes ou secondes ? 
commandArray['SendNotification']='subject#body#extraData#priority#sound'
commandArray['OpenURL']='www.yourdomain.com/api/movecamtopreset.cgi' 
commandArray['SendEmail']='subject#body#to'
commandArray['Variable:MyVar']='Some value'
commandArray['SetSetPoint:MySetPointIdx']='20.5'
commandArray['SendCamera:1'] = 'SubjectOfMessage AFTER 5' -- Envoie une image de la camera 1 avec comme sujet "Subject of Message" après 5 secondes. Le 1 est l'ID de la camera pas son nom.
commandArray['UpdateDevice']='idx|nValue|sValue' -- Mettre a jour un device. Ex: '96|0|Hello World'
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Récupérer les valeurs des capteurs.

Message par Wolfen38 »

Merci à vous
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Récupérer les valeurs des capteurs.

Message par Jeff »

landaisbenj a écrit : Mais si ca peut aider aussi je laisse mon propre lexique:
Yes merci je prend pour enrichir ma bibliothèque, il y a avait des manques ;)
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Répondre