Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Ceux qui utilisent Plex connaissent peut-être plexWatch. Il permet d'être informé par différent moyen (email, pushover, growl, twitter, ...) des actions en cours sur le serveur: quelqu'un regarde un film, le film est mis en pause, ...

Il manquait une moyen de notification pour l'interfacer avec un HC2: la possibilité d'exécuter un script.

 

J'ai donc porté des modifications à  plexWatch pour qu'il puisse le faire. Il se trouve ici.

Ainsi, mon HC2 sait ce que je fais avec Plex: quand je lance un film, il éteint les lumières, quand je le mets en pause, il allume, ...

 

Le script qui est lancé par plexWatch reçoit comme paramètre un fichier temporaire qui contient les données de notification encodées au format json.

 

Voici un exemple de script que j'utilise. Il utilise le script HCxUpdateVar que j'ai présenté ici sur ce forum.

 

Il met à  jour les variables globales "TVWatchxxx" avec l'état des lecteurs Plex; xxx est remplacé par le nom du lecteur.

Si celui du salon s'appelle "Salon", il mettra à  jour la variable "TVWatchSalon".

 

Les états sont: start, stop, paused, resumed.

 

Le script en exemple lance ma scène id14 suivante:

--[[
%% autostart
%% properties


%% globals
TVWatchAdreinna
TVWatchshyrka
--]]

-- Le déclenchement de cette scène par la variable globale ne fonctionne
-- car sa mise à  jour par l'API "/api/globalVariables" n'active le trigger :-(

fibaro:debug("HC2 start script at " .. os.date())


local OrigineDeclenchement = fibaro:getSourceTrigger()


--if OrigineDeclenchement['type'] == 'global' then
-- Voir remarque plus haut au sujet du déclenchement de la scène
if OrigineDeclenchement['type'] == 'other' then
  local TVState
  local Ok = 1
  local TVWatch = fibaro:getGlobal("TVWatchshyrka")
  
  fibaro:debug("TV: "..TVWatch)


  if (TVWatch == "start") then
    TVState = 1
--  elseif (TVWatch == "start-watching") then
--    TVState = 1
--  elseif (TVWatch == "start-watched") then
--    TVState = 1
  elseif (TVWatch == "stop") then
    TVState = 0
  elseif (TVWatch == "paused") then
    TVState = 0
  elseif (TVWatch == "resumed") then
    TVState = 1
--  elseif (TVWatch == "recentlyadded") then
--    TVState = 0
  else
    Ok = 0
  end


  if (Ok == 1) then
    fibaro:setGlobal("TVStateSalon", TVState)
  end
end

Cette scène met à  jour une autre variable globale "TVWatch" avec l'état:

0: film arrêté ou en pause

1: film démarré ou relancé

 

J'utilise ensuite cette variable avec GEA pour contrôler les lumières du salon.

 

Voilà .

 

Dites moi si vous avez tout compris et surtout si cela peut servir à  quelqu'un.

  • Upvote 1
  • 3 semaines après...
×
×
  • Créer...