Quantcast
Channel: Domotique – pon.fr
Viewing all articles
Browse latest Browse all 66

DZVents : Souhaitez la bienvenue

$
0
0

Ce script ne sert à rien c’est pour cela que je l’aime bien. Il est né d’un défi lancé à la hâte genre:
elle sert à rien ta domotique, elle ne dis même pas bonjour lorsque je rentre.
Pour connaitre les occupants présents dans la maison, j’utilise le script livebox
les devices associés commencent tous par « Presence » suivi du prénom du propriétaire du téléphone, j’utilise donc dans ce script le terme générique « Presence* » pour surveiller le changement d’état d’un de ces devices
Pour les notifications j’utilise un chromecast via un script et une notification http

Quelques messages de bienvenue (commençant tous par un espace) :

  •  » Bienvenue chez toi »
  •  » Heureux de te revoir »
  •  » il est bon de te voir rentrer »
  •  » vraiment heureux de te savoir à la maison »
  •  » super, tu es rentré »
  •  » cool, tu es déjà de retour »
  •  » enfin à la maison »

n’hésitez pas à en proposer d’autre en commentaire
ensuite, 3 variables à configurer :
« matin » pour définir l’heure avant laquelle aucun message ne sera envoyé
« debut_soiree » pour définir l’heure après laquelle il sera notifié bonsoir au lieu de bonjour
« soir » pour définir l’heure après laquelle plus aucun message ne sera envoyé

ensuite une petite fonction round et le tour est joué

le script complet

--[[ bonjour.lua
    
auteur = papoo
update/mise à jour = 10/01/2019
creation = 5/11/2018
https://pon.fr/dzvents-souhaitez-la-bienvenue/
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/bonjour.lua
--]]

--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------

local messages = {  " Bienvenue chez toi", 
                    " Heureux de te revoir", 
                    " il est bon de te voir rentrer", 
                    " vraiment heureux de te savoir à la maison", 
                    " super, tu es rentré", 
                    " cool, tu es déjà de retour",
                    " enfin à la maison"
                 }
local Devices = { 'Presence*' }     -- liste des devices à surveiller séparés par des virgules s'il y en a  plusieurs
local matin         = '08:00:00'    -- aucun message ne sera envoyé avant cette heure (+1 heure pour l'heure d'hiver)
local debut_soiree  = '19:00:00'    -- heure après laquelle il sera notifié bonsoir au lieu de bonjour (+1 heure pour l'heure d'hiver)
local soir          = '22:00:00'    -- aucun message ne sera envoyé après cette heure (+1 heure pour l'heure d'hiver)
local delai         = 60            -- délai avant que le script considère la personne réellement partie

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nomScript = 'Notification Bonjour'
local versionScript = '1.0'

return {
    active = true,
    on = { devices = Devices },
    
    logging =   {    level    =   domoticz.LOG_DEBUG,
                    -- level    =   domoticz.LOG_INFO,             -- Seulement un niveau peut être actif; commenter les autres
                    -- level    =   domoticz.LOG_ERROR,            -- Only one level can be active; comment others    
                    -- level    =   domoticz.LOG_MODULE_EXEC_INFO,

                    marker = nomScript..' '..versionScript },    

    execute = function(domoticz,switch)
    
    
        local Time = require('Time')
        local t = Time().getISO()
        local today = Time(domoticz.time.rawDate ..' '..  matin).getISO()
        local evening = Time(domoticz.time.rawDate ..' '..  debut_soiree).getISO()
        local tonight = Time(domoticz.time.rawDate ..' '.. soir).getISO()
        
        if switch.active and (switch.lastUpdate.minutesAgo > delai) and (t > today) and (t < tonight) then      
        
            local function notification(message, SubSystem)
                domoticz.log("Envoi de la notification ",domoticz.LOG_DEBUG)
                if SubSystem == nil then 
                   domoticz.notify(message, message)
                else
                   domoticz.notify(message, message, 'PRIORITY_NORMAL', ' ', ' ', SubSystem)
                end 
                domoticz.log(message, domoticz.LOG_INFO)
            end
            
            local function rand(Table)
                element = Table[math.random(1, #Table)]
                return element
            end
          
            message = rand(messages)

            domoticz.log(switch.name, domoticz.LOG_DEBUG) 
            local nom = string.gsub(switch.name, 'Presence ', '')
            domoticz.log("bonjour "..nom, domoticz.LOG_DEBUG)
            domoticz.log(message, domoticz.LOG_DEBUG)
            domoticz.log("heure "..t, domoticz.LOG_DEBUG)
            domoticz.log("matin "..today, domoticz.LOG_DEBUG)
            domoticz.log("soir "..tonight, domoticz.LOG_DEBUG)
            if t < evening then
                notification("Bonjour "..nom..", "..message, {domoticz.NSS_HTTP})
                    --[[ Systèmes de notification disponibles :
                        NSS_GOOGLE_CLOUD_MESSAGING NSS_HTTP NSS_KODI NSS_LOGITECH_MEDIASERVER NSS_NMA NSS_PROWL NSS_PUSHALOT NSS_PUSHBULLET NSS_PUSHOVER NSS_PUSHSAFER
                        Pour une notification sur plusieurs systèmes, séparez les systèmes par une virgule.
                        Exemple :{domoticz.NSS_TELEGRAM, domoticz.NSS_HTTP}
                    --]]
            else
            notification("Bonsoir "..nom.." "..message, {domoticz.NSS_HTTP})
                    --[[ Systèmes de notification disponibles :
                        NSS_GOOGLE_CLOUD_MESSAGING NSS_HTTP NSS_KODI NSS_LOGITECH_MEDIASERVER NSS_NMA NSS_PROWL NSS_PUSHALOT NSS_PUSHBULLET NSS_PUSHOVER NSS_PUSHSAFER
                        Pour une notification sur plusieurs systèmes, séparez les systèmes par une virgule.
                        Exemple :{domoticz.NSS_TELEGRAM, domoticz.NSS_HTTP}
                    --]]
            end
        end
   end   
}

retrouver la dernière version de ce script sur

 Site Officiel :   github.com

Viewing all articles
Browse latest Browse all 66

Trending Articles