Remplacer for par after

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 <\>.
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Remplacer for par after

Message par Wolfen38 »

Salut,

J'utilisais pas mal le for, mais avec un résultat pas toujours top, et de pire en pire.

Sur plusieurs script, j'ai pu remplacer mon on for par un off after...

Mais la, je n'y arrive pas, j'ai ca, et ca ne fonctionne pas :

Code : Tout sélectionner

if ((devicechanged['Interrupteur Emerik'] == '3 Click' and otherdevices['Virtuel Emerik'] == 'Off')) then 
	commandArray['Sonoff-Emerik']='On'
	commandArray['Sonoff-Emerik']='Off AFTER 120'
	end
Des idées ?

Merci.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Remplacer for par after

Message par vil1driver »

MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Remplacer for par after

Message par Wolfen38 »

Merci, mais du coup c'est quelle syntaxe la bonne ?

la 1 :

Code : Tout sélectionner

commandArray[1]= {['Bureau.Prise.3 (Lampadaire)'] = 'On'}
commandArray[2]= {['Bureau.Prise.3 (Lampadaire)'] = 'Off AFTER 60'}
ou la 2

Code : Tout sélectionner

    commandArray[#commandArray + 1] = {['Bureau.Prise.3 (Lampadaire)'] = 'On' }
    commandArray[#commandArray + 1] = {['Bureau.Prise.3 (Lampadaire)'] = 'Off AFTER 60' }
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Remplacer for par after

Message par boum »

La 2 marchera dans tous les cas. La 1ere est sûre uniquement si ce sont les seules commandes passées (tu risques d'écraser des commandes précédentes dans le tableau).

À titre indicatif, dzVents est peut-être plus simple dans ce cas :

Code : Tout sélectionner

return 
{
    on = { devices = { 'Interrupteur Emerik' }},
    
    execute = function(domoticz, item)
        if (item.status == "3 Click") and not domoticz.devices('Virtuel Emerik').active then
            local sonoff = domoticz.devices('Sonoff-Emerik')
            sonoff.cancelQueuedCommands()
            sonoff.switchOn().checkFirst()
            sonoff.switchOff().afterSec(120) -- ou afterMin(2)
        end
    end
}
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Remplacer for par after

Message par Wolfen38 »

Merci de ta réponse.

J'ai envie d'essayer le dzvent, mais put---, que ca m'a l'air compliqué a comprendre comme language...
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Remplacer for par after

Message par Neutrino »

C'est juste du lua, mais adapter à Domoticz.
Par contre, il faut quelques notions de programmation orientée objet.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre