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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
ttoni0
Messages : 11
Inscription : 28 mai 2019, 14:12

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

Message 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 !
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

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

Message 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
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

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

Message 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
}
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
ttoni0
Messages : 11
Inscription : 28 mai 2019, 14:12

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

Message 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...
ttoni0
Messages : 11
Inscription : 28 mai 2019, 14:12

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

Message 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 !
ttoni0
Messages : 11
Inscription : 28 mai 2019, 14:12

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

Message 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
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

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

Message 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)
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
ttoni0
Messages : 11
Inscription : 28 mai 2019, 14:12

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

Message 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 !
Répondre