Page 1 sur 1

Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 09:37
par ttoni0
Bonjour à toutes et tous.

J’ai l’application “Pilot” sur mon iPhone qui commande un interrupteur virtuel par la géolocalisation.
J’aimerais que mes lumières s’allument quand je rentre (seulement lorsque le soleil est couché évidemment…). J’ai fait une tentative en blockly mais je ne peux pas éteindre tant que le switch “iPhone” est sur “on”…
J’ai tenté un dzvents, mais cela ne fonctionne pas :

Code : Tout sélectionner

return {
   on = {
       timer = { 
        'after sunset and before sunrise'
    } },

    execute = function(domoticz)
      if stateChange('iPhone') == 'On' then
         domoticz.devices('Lampadaire').switchOn()
         domoticz.devices('Yeelight Salon').switchOn()
      end
   end
}
Je veux que mes lumières s’allument seulement lors du changement d’état du switch, pour pouvoir éteindre quand je veux.
Je ne sais pas si c’est très clair, mais bon, je poste quand même…

Merci d’avance pour votre aide !

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 09:43
par Datawolf
Salut,
Tu écris "Je veux que mes lumières s’allument seulement lors du changement d’état du switch".
Il faut donc que tu changes le trigger (et il faut donc que ton script soit de type device et non timer).
Et c'est à l'intérieur du script que tu vérifieras que le soleil est couché. ;)
@+
The Datawolf

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 09:51
par boum
Bonjour. Ton script est exécuté toutes les minutes pendant la nuit.
Je ne suis pas sûr du comportement voulu, mais il faudrait peut-être déclencher le script uniquement sur modification du dispositif ?

Comme ceci :

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active and domoticz.time.isNightTime then
         domoticz.devices('Lampadaire').switchOn().checkFirst()
         domoticz.devices('Yeelight Salon').switchOn().checkFirst()
      end
   end
}

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 09:57
par ttoni0
Salut Datawolf
Datawolf a écrit : 28 janv. 2020, 09:43 Salut,
Tu écris "Je veux que mes lumières s’allument seulement lors du changement d’état du switch".
Il faut donc que tu changes le trigger (et il faut donc que ton script soit de type device et non timer).
Et c'est à l'intérieur du script que tu vérifieras que le soleil est couché. ;)
@+
The Datawolf
J'ai mis le script en "device" mais ça ne fonctionne pas plus. :(
J'ai bien pris le soin de changer le timer pour : "at daytime" pour pouvoir tester...
Franchement je capte pas...

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 10:02
par ttoni0
boum a écrit : 28 janv. 2020, 09:51 Bonjour. Ton script est exécuté toutes les minutes pendant la nuit.
Je ne suis pas sûr du comportement voulu, mais il faudrait peut-être déclencher le script uniquement sur modification du dispositif ?

Comme ceci :

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active and domoticz.time.isNightTime then
         domoticz.devices('Lampadaire').switchOn().checkFirst()
         domoticz.devices('Yeelight Salon').switchOn().checkFirst()
      end
   end
}
Mille mercis !!! Ça fonctionne au poil de cul !
Merci aussi pour votre réacivité...
Ciao !

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 10:21
par ttoni0
boum a écrit : 28 janv. 2020, 09:51 Bonjour. Ton script est exécuté toutes les minutes pendant la nuit.
Je ne suis pas sûr du comportement voulu, mais il faudrait peut-être déclencher le script uniquement sur modification du dispositif ?

Comme ceci :

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active and domoticz.time.isNightTime then
         domoticz.devices('Lampadaire').switchOn().checkFirst()
         domoticz.devices('Yeelight Salon').switchOn().checkFirst()
      end
   end
}
Par contre, j'arrive pas à faire en sorte que mes lumières s'éteignent quand j'me barre(je suis très distrait...).Une idée ?
Merci

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 11:48
par boum

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active and domoticz.time.isNightTime then
         domoticz.devices('Lampadaire').switchOn().checkFirst()
         domoticz.devices('Yeelight Salon').switchOn().checkFirst()
       elseif not item.active then
         domoticz.devices('Lampadaire').switchOff().checkFirst()
         domoticz.devices('Yeelight Salon').switchOff().checkFirst()
     end
   end
}
ou peut-être :

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active then
         if domoticz.time.isNightTime then
            domoticz.devices('Lampadaire').switchOn().checkFirst()
            domoticz.devices('Yeelight Salon').switchOn().checkFirst()
          end
       else
         domoticz.devices('Lampadaire').switchOff().checkFirst()
         domoticz.devices('Yeelight Salon').switchOff().checkFirst()
     end
   end
}
C'est selon les goûts (et suivant comment on veut faire évoluer le scripe)

Re: Script dzvents allumage lumières par géolocalisation avec Pilot

Publié : 28 janv. 2020, 13:15
par ttoni0
boum a écrit : 28 janv. 2020, 11:48

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active and domoticz.time.isNightTime then
         domoticz.devices('Lampadaire').switchOn().checkFirst()
         domoticz.devices('Yeelight Salon').switchOn().checkFirst()
       elseif not item.active then
         domoticz.devices('Lampadaire').switchOff().checkFirst()
         domoticz.devices('Yeelight Salon').switchOff().checkFirst()
     end
   end
}
ou peut-être :

Code : Tout sélectionner

return {
   on = {
       devices = { 'iPhone' },
    },

    execute = function(domoticz, item)
      if item.active then
         if domoticz.time.isNightTime then
            domoticz.devices('Lampadaire').switchOn().checkFirst()
            domoticz.devices('Yeelight Salon').switchOn().checkFirst()
          end
       else
         domoticz.devices('Lampadaire').switchOff().checkFirst()
         domoticz.devices('Yeelight Salon').switchOff().checkFirst()
     end
   end
}
C'est selon les goûts (et suivant comment on veut faire évoluer le scripe)
Ça marche impec' mec !
Les 2 exemples testés. C'est exactement ce que je voulais faire...
T'es un bon, mon cher Boum ! Merci beaucoup !