"Push button"

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 <\>.
bnic
Messages : 15
Inscription : 12 mai 2017, 09:28

"Push button"

Message par bnic »

Bonjour à tous,

Je débute sur domoticz et ça fait 2-3 jours que je passe beaucoup d'heures à essayer de comprendre des choses qui je pense au final sont assez basiques.

Ca fait trop longtemps que je bloque là dessus, j'en viens à demander de l'aide.
J'ai une petite télécommande 433mhz similaire à cela : https://fr.aliexpress.com/item/Duplicat ... 29a76845a4
4 boutons, A,B,C,D

J'ai des prises télécommandées 433Mhz et j'aimerais utiliser ces télécommandes pour les commander à travers Domoticz.

Là où je coince, c'est que j'aimerais qu'un clique allume, un clique éteigne. Cela me paraissait être une fonction simple mais apparemment non.

J'ai trouvé pas mal de sujets sur google, tel que celui ci : https://domoticz.com/forum/viewtopic.php?f=62&t=16023 mais je ne comprends pas d'où sort le "click", ou "double click", c'est dans son switch selector, ça j'ai compris, mais il ne suffit pas de mettre le nom, il faut aussi lui assigner la fonctionnalité, et ça je ne comprends pas.

Ou alors il y a une solution plus simple ?

D'avance merci
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: "Push button"

Message par vil1driver »

Salut,

voici le script que j'utilise pour piloter tout ou presque via une télécommande

Code : Tout sélectionner

-- script_device_remote.lua


-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940)
dofile('/home/vil1driver/domoticz/scripts/lua/modules.lua')

local debug = false  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir


commandArray = {} 
--------------------------------
------ Tableau à éditer ------
--------------------------------

   local bt={}
   
	--bt['switch name'] = { 'action On' , 'action Off' }
	bt['a1']={'groupOn("ciné")','groupOn("apéro")'}
	bt['a2']={'switchOn("mpd_spoon")','switchOn("mpd_reggae")'}
	bt['a3']={'switchOn("mpd_rock")','switchOn("mpd_metal")'}
	bt['a4']={'switchOn("mpd_mouv")','switchOn("mpd_fun")'}
	bt['b1']={'switchOn("le salon")','switchOff("le salon")'}
	bt['b2']={'switchOn("les pierres")','switchOff("les pierres")'}
	bt['b3']={'switchOn("la chambre")','switchOff("la chambre")'}
	bt['b4']={'switchOn("la veilleuse")','switchOff("la veilleuse")'}
	bt['c1']={'groupOn("rgb_show")','groupOff("rgb_show")'}
	bt['c2']={'groupOn("rgb rose")','groupOff("rgb jaune")'}
	bt['c3']={'groupOn("rgb turquois")','groupOff("rgb vert")'}
	bt['c4']={'groupOn("rgb rouge")','groupOff("rgb blanc")'}
	bt['mv bureau']={'if otherdevices_svalues["lumino bureau"] < "5" then switchOn("led_2") end','switchOff("led_2")'}
	bt['inter gauche2']={'switchOn("les pierres")','switchOff("les pierres")'}
   
    -- etc.. 

--------------------------------
-- Fin du tableau à éditer --
--------------------------------



   for bouton, action in pairs(bt) do
		if (devicechanged[bouton] == 'On') then
			log('REMOTE: '..bouton..' switched On > '..action[1],debug)
			load(action[1])()
			break
		elseif (devicechanged[bouton] == 'Off') then
			log('REMOTE: '..bouton..' switched Off > '..action[2],debug)
			load(action[2])()
			break
		end
   end

return commandArray
pour toi cela donnerait ceci

Code : Tout sélectionner

bt['A']={'switch("prise1")'}
bt['B']={'switch("prise2")'}
bt['C']={'switch("prise3")'}
bt['D']={'switch("prise4")'}
   
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
bnic
Messages : 15
Inscription : 12 mai 2017, 09:28

Re: "Push button"

Message par bnic »

Salut !

Super merci beaucoup j'essaie ça demain !

Je dois déclarer mes 4 boutons comme des switch selector on est d'accords ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: "Push button"

Message par vil1driver »

Non, comme des pushOn (ce qu'ils sont)
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
bnic
Messages : 15
Inscription : 12 mai 2017, 09:28

Re: "Push button"

Message par bnic »

Merci pour toutes tes indications. J'ai encore eu quelques soucis du fait de ma config par docker, le script lua était introuvable. En cherchant un peu sur docker j'ai compris que mon "root" était différent du fait qu'il n'accède pas au système mais à un volume.

Après cela, j'ai du aussi ajouter JSON.lua qui est une dépendance de ton script (très simple, je précise juste dans le cas où quelqu'un passerait après).


Par contre j'ai eu un petit truc bizarre, j'ai des erreurs qui trainent dans le log, notamment

Code : Tout sélectionner

2017-05-14 09:49:00.212 Error: EventSystem: in gestion push button: [string "-- script_device_remote.lua..."]:47: attempt to index global 'devicechanged' (a nil value)
et

Code : Tout sélectionner

2017-05-14 09:59:56.842 Error: EventSystem: in gestion push button: [string "-- script_device_remote.lua..."]:52: attempt to concatenate field '?' (a nil value)
Ligne 47 du script :

Code : Tout sélectionner

if (devicechanged[bouton] == 'On') then
Ligne 52 :

Code : Tout sélectionner

log('REMOTE: '..bouton..' switched Off > '..action[2],debug)
En tout cas ça fonctionne par contre mes petites télécommandes ont une portée ridicule, je dois la mettre à 10cm max du rflink, comparé à la télécommande originale des prises qui marche à plus de 20m

Edit : Non en fait j'ai un soucis avec mon antenne sur le Rflink, il va falloir que je la ressoude je pense.

Edit 2 : Je me rends compte que l'erreur de la ligne 47 arrive sans raison particulière (pas liée à un déclenchement), par contre l'erreur de la ligne 52 arrive systématiquement lorsque je déclenche mon switch par JSON
Répondre