[LUA] Statut Motion

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Mavaburta
Messages : 2
Inscription : 20 oct. 2021, 01:43

[LUA] Statut Motion

Message par Mavaburta »

Hello,

J'avais besoin de changer certains paramètres de motion comme la sensibilité en fonction de la luminosité ou l'heure, mais je n'arrivais pas à avoir un retour correct pour vérifier l'état actuel en cas de reboot, et donc être fiable dans les scripts d'automation/events.

Et la doc lua_parser n'est pas très claire.

J'ai un truc plutôt sympa qui donne ça, qui permet de récupérer toute la conf actuelle d'une caméra motion en fonction de vos besoins, les noms de config sont dans la doc de motion :

Create HTTP/S poller
GET: http://localhost:7999/1/config/list (1 est le numéro de caméra, localhost est le hostname de là où tourne motion)
COMMAND: monscript.lua dans lua_parsers

Pour cet exemple, il faut avant créer les devices (numéros au début) en partant du poller, noise_tune est un switch, noise_level est un pourcentage.

Code : Tout sélectionner

local noise_tune = 246;
local noise_level = 247;

local function keyeqvalue(str)
  local t={}; 
  for key,value,str in str:gmatch("(%g+) = (%g*)") do
    -- print('motion key', key, '=', value, "\n")
    t[key] = value
  end
  return t
end

-- Retrieve the request content
s = request['content'];

-- Split the content into an array of values
local motionconfig = keyeqvalue(s);

domoticz_updateDevice(noise_tune,'',motionconfig['noise_tune'])
domoticz_updateDevice(noise_level,'',motionconfig['noise_level'])
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Statut Motion

Message par Keros »

Bonjour Mavaburta et bienvenu sur le forum ;)

Merci pour ce partage dès ta première intervention. Je viens de déplacer ton script dans la section des Bibliothèque de scripts et tutos.

C'est quoi le langage de ton script ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mavaburta
Messages : 2
Inscription : 20 oct. 2021, 01:43

Re: Statut Motion

Message par Mavaburta »

En fait mon script marche, mais domoticz ne prend pas toujours les mises à jour, typiquement un switch a besoin d'une nvalue 0/1 en plus de on/off, les pourcentages des valeurs numériques, bref, voilà une version qui marche et prise en compte par domoticz, avec en plus une mise des paramètres souhaités en tableau, c'est plus pratique:

Code : Tout sélectionner

local params = {
  ["noise_tune"] = 246,
  ["noise_level"] = 247
}

local function keyeqvalue(str)
  local t={}; 
  for key,value,str in str:gmatch("(%g+) = (%g*)") do
    -- print('motion config key,value', key, value)
    t[key] = value
  end
  return t
end

-- Retrieve the request content
s = request['content']

-- Split the content into an array of values
local motionconfig = keyeqvalue(s)

for param, idx in pairs(params) do
  local svalue = motionconfig[param]
  local nvalue = tonumber(svalue)

  if string.lower(svalue) == "off" then
    nvalue = 0
  elseif string.lower(svalue) == "on" then
    nvalue = 1
  end

  -- print('motion update param,idx,nvalue,svalue', param,idx,nvalue,svalue)

  domoticz_updateDevice(idx,nvalue,svalue)
end
Comme déjà indiqué, c'est pour les HTTP/S pollers, et donc c'est du lua pour le mode lua_parsers de domoticz.

Il faut créer un hardware HTTP/S
Mettre comme url: http://<hostname>:7999/<cameranum>/config/list
Mettre en commande le nom du script dans le bon répertoire comme indiqué dans la doc.

Ensuite, à vous de créer les bons virtual sensors du bon type depuis le hardware, et de répercuter leurs numéros dans le script.
Répondre