Rflink et somfy RTS : affichage états et log

Merci d'utiliser cette section pour vos questions concernant EXCLUSIVEMENT les modules rflink

Modérateur : deennoo

fredandrick65
Messages : 119
Enregistré le : 23 avr. 2016, 20:45

Re: Rflink et somfy RTS : affichage états et log

Message par fredandrick65 »

Je me répond a moi même
j ai fait en LUA du coup pour éviter ces redondances

Code : Tout sélectionner

-- script_device_Synchro_VR.lua

commandArray = {}
-------------------------
----  Synchro VR 01  ----
-------------------------
local TC = 'Telis 01' -- nom de la télécommande volet 01
local IT = 'Volet 01 Terrasse' -- nom du dummy volet 01
local VR = 'RTS Volet 01 Terrasse' -- nom dde l inter rflink volet 01
if devicechanged[TC]=='On' then
	print (TC..' passe à On')
	commandArray[IT] = 'On'
end
if devicechanged[TC]=='Off' then
	print (TC..' passe à Off')
	commandArray[IT] = 'Off'
end
if devicechanged[TC]=='Stop' then
	print (TC..' passe à Stop')
	commandArray[IT] = 'Stop'
end
if devicechanged[IT]=='On' then
	print (IT..' passe à On')
	commandArray[VR] = 'On'
end
if devicechanged[IT]=='Off' then
	print (IT..' passe à Off')
	commandArray[VR] = 'Off'
end
if devicechanged[IT]=='Stop' then
	print (IT..' passe à Stop')
	commandArray[VR] = 'Off'
	commandArray[VR] = 'Stop'
end-------------------------
----  Synchro VR 02  ----
-------------------------
local TC = 'Telis 02'
local IT = 'Volet 02 Salon TV'
local VR = 'RTS Volet 02 Salon TV'
if devicechanged[TC]=='On' then
	print (TC..' passe à On')
	commandArray[IT] = 'On'
end
if devicechanged[TC]=='Off' then
	print (TC..' passe à Off')
	commandArray[IT] = 'Off'
end
if devicechanged[TC]=='Stop' then
	print (TC..' passe à Stop')
	commandArray[IT] = 'Stop'
end
if devicechanged[IT]=='On' then
	print (IT..' passe à On')
	commandArray[VR] = 'On'
end
if devicechanged[IT]=='Off' then
	print (IT..' passe à Off')
	commandArray[VR] = 'Off'
end
if devicechanged[IT]=='Stop' then
	print (IT..' passe à Stop')
	commandArray[VR] = 'Off'
	commandArray[VR] = 'Stop'
end-------------------------
--	etc...
return commandArray
il doit y avoir plus simple mais ca fonctionne
pour le Stop c'est pas encore au top mais je vais y travailler
Domoticz V3.8153 sur Synology DS3615xs DSM 5.2-5967 Update 3
RFLink_v1.1_r46 (433.92 & 433.42 Mhz)
Sonde Oregon THGR810-Prise Everspring-OWL CM180
Humidité du sol Opus XT300-Sondes Oregon pour les nuls V2

Les non-dit font les pires malentendus ! ;)

cyberbob
Messages : 478
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Rflink et somfy RTS : affichage états et log

Message par cyberbob »

Pourquoi il n'y a pas la variable utilisateur "volet manuel" comme dans le blockly du début ?
Cette variable de type entier avait été au préalable créée dans le menu "Réglages/plus d'option/variable utilisateurs" de domoticz.
Dans le blockly elle prend la valeur soit 0 ou 1, et elle change d'état lorsque une télécommande est utilisée, ou non.
Le but en fait est :
- Lorsque une télécommande est utilisée : on met a jour l'inter virtuel et NON le rflink puisque c'est la télécommande qui envoie l'ordre (sinon on va envoyé 2 ordres au volet : redondance)
- Lorsque l'inter virtuel est utilisé : on commande aussi l'inter du rflink puisque c'est lui qui va commander le volet.

En faisant de cette manière, l'inter virtuel affiche l'état réel du volet, et on voit quand la télécommande a été utilisée avec l'inter de celle-ci.
Cela fonctionne correctement, je compte le faire en lua mais lorsque plusieurs volet seront installé...
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

fredandrick65
Messages : 119
Enregistré le : 23 avr. 2016, 20:45

Re: Rflink et somfy RTS : affichage états et log

Message par fredandrick65 »

J ai effectivement modifié mon script lua, pour en faire deux en fait

script_device_Synchro_VR_Part1.lua qui gère les Telis et met a jour la Variable utilisateur

Code : Tout sélectionner

-- Fred & Rick - 2017
-- script_device_Synchro_VR_Part1.lua

commandArray = {}

------------------------------------------------------------------
-------  Synchro VR 01  ------------------------------------------
------------------------------------------------------------------

local TC = 'Telis 01'
local IT = 'Volet 01 Terrasse'
local VarMan = 'Volet Manuel 01'
local VarMan2 = 'Variable:Volet Manuel 01'

if devicechanged[TC]=='On' then
	print (TC..' passe à On ------------- Fermeture du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'On'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

if devicechanged[TC]=='Off' then
	print (TC..' passe à Off ------------- Ouverture du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'Off'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

if devicechanged[TC]=='Stop' then
	print (TC..' passe à Stop ------------- Arret du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'Stop'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

------------------------------------------------------------------
-------  Synchro VR 02  ------------------------------------------
------------------------------------------------------------------

local TC = 'Telis 02'
local IT = 'Volet 02 Salon TV'
local VarMan = 'Volet Manuel 02'
local VarMan2 = 'Variable:Volet Manuel 02'

if devicechanged[TC]=='On' then
	print (TC..' passe à On ------------- Fermeture du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'On'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

if devicechanged[TC]=='Off' then
	print (TC..' passe à Off ------------- Ouverture du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'Off'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

if devicechanged[TC]=='Stop' then
	print (TC..' passe à Stop ------------- Arret du volet via Telis')
	commandArray[#commandArray + 1] = {[IT] = 'Stop'}
	commandArray[#commandArray + 1] = {[VarMan2] = '1'}
end

-- etc...................

return commandArray

script_device_Synchro_VR_Part2.lua qui gère les Volets eux même et remet a Zéro la Variable utilisateur

Code : Tout sélectionner

-- Fred & Rick - 2017
-- script_device_Synchro_VR_Part2.lua

commandArray = {}

------------------------------------------------------------------
-------  Synchro VR 01  ------------------------------------------
------------------------------------------------------------------

local IT = 'Volet 01 Terrasse'
local VR = 'RTS Volet 01 Terrasse'
local VarMan = 'Volet Manuel 01'
local VarMan2 = 'Variable:Volet Manuel 01'

if devicechanged[IT]=='On' and uservariables[VarMan] == '0' then
	print (IT..' passe à On ----- Fermeture du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'On'}
end

if devicechanged[IT]=='Off' and uservariables[VarMan] == '0' then
	print (IT..' passe à Off ----- Ouverture du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'Off'}
end

if devicechanged[IT]=='Stop' and uservariables[VarMan] == '0' then
	print (IT..' passe à Stop ----- Arret du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'Stop'}
end

if devicechanged[IT]=='On' or devicechanged[IT]=='Off' or devicechanged[IT]=='Stop' then
	commandArray[#commandArray + 1] = {[VarMan2] = '0'}
end


------------------------------------------------------------------
-------  Synchro VR 02  ------------------------------------------
------------------------------------------------------------------

local IT = 'Volet 02 Salon TV'
local VR = 'RTS Volet 02 Salon TV'
local VarMan = 'Volet Manuel 02'
local VarMan2 = 'Variable:Volet Manuel 02'

if devicechanged[IT]=='On' and uservariables[VarMan] == '0' then
	print (IT..' passe à On ----- Fermeture du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'On'}
end

if devicechanged[IT]=='Off' and uservariables[VarMan] == '0' then
	print (IT..' passe à Off ----- Ouverture du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'Off'}
end

if devicechanged[IT]=='Stop' and uservariables[VarMan] == '0' then
	print (IT..' passe à Stop ----- Arret du volet via Domoticz')
	commandArray[#commandArray + 1] = {[VR] = 'Stop'}
end

if devicechanged[IT]=='On' or devicechanged[IT]=='Off' or devicechanged[IT]=='Stop' then
	commandArray[#commandArray + 1] = {[VarMan2] = '0'}
end

--etc...

return commandArray
IMPRTANT: Les variables utilisateur doivent être de type chaine pour mes deux script.
J ai scinder en deux le script, car sinon (a ce que j'ai compris) la variable utilisateur n est mis a jour que a la fin de l'exécution du script et cela ne fonctionne donc pas correctement.
Il doit y avoir plus simple mais cela fonctionne.

merci a Cyberbob
Domoticz V3.8153 sur Synology DS3615xs DSM 5.2-5967 Update 3
RFLink_v1.1_r46 (433.92 & 433.42 Mhz)
Sonde Oregon THGR810-Prise Everspring-OWL CM180
Humidité du sol Opus XT300-Sondes Oregon pour les nuls V2

Les non-dit font les pires malentendus ! ;)

cyberbob
Messages : 478
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Rflink et somfy RTS : affichage états et log

Message par cyberbob »

Content que cela fonctionne aussi pour toi en script LUA.
Mais dommage qu'il a fallu le scinder en 2 scripts, car le script en blockly fonctionne en un seul.
Je suppose que les variables fonctionne suivant le même principe en Lua que en Blockly.
Enfin n'oublie pas de posté ton script lua si tu trouve une amélioration.

Et pourquoi avoir utilisé cette syntaxe :
commandArray[#commandArray + 1] = {[IT] = 'On'}

Au lieu de :
commandArray[IT] = 'On'

Quel est la différence ?
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

fredandrick65
Messages : 119
Enregistré le : 23 avr. 2016, 20:45

Re: Rflink et somfy RTS : affichage états et log

Message par fredandrick65 »

cyberbob a écrit :Et pourquoi avoir utilisé cette syntaxe :
commandArray[#commandArray + 1] = {[IT] = 'On'}

Au lieu de :
commandArray[IT] = 'On'

Quel est la différence ?
Si j ai bien tout compris (car je ne suis pas un expert) les commandArray ne s'effectuent qu'à la fin du script et su tu modifie deux fois le même device il n'y a que le dernier qui fonctionne, avec commandArray[#commandArray + 1] cela crée une table de commandArray qui est executer dans l ordre a la fin .
Donc pour moi pas besoin de réfléchir si il va y avoir plusieurs modification sur le même élément.

Je vais re-tester en lua sur un seul Script.
Par contre pour moi ton Blocky ne fonctionne pas correctement pour 2 de mes 6 volets.
la dernière commande est systématiquement renvoyé.

Code : Tout sélectionner

2017-10-23 23:19:00.610 EventSystem: Event triggered: Synchro Volet 04_4
2017-10-23 23:19:00.618 RFLink Sending: 10;RTS;f4a444;4;ON
2017-10-23 23:19:30.678 EventSystem: Event triggered: Synchro Volet 04_4
2017-10-23 23:19:30.705 RFLink Sending: 10;RTS;f4a444;4;ON
Impossible de comprendre pourquoi.
Domoticz V3.8153 sur Synology DS3615xs DSM 5.2-5967 Update 3
RFLink_v1.1_r46 (433.92 & 433.42 Mhz)
Sonde Oregon THGR810-Prise Everspring-OWL CM180
Humidité du sol Opus XT300-Sondes Oregon pour les nuls V2

Les non-dit font les pires malentendus ! ;)

cyberbob
Messages : 478
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Rflink et somfy RTS : affichage états et log

Message par cyberbob »

J'ai remarqué dans certains cas avec les variables user un fonctionnement incompréhensible.
On pourrais, dans ce cas-ci d'utilisation, s'en passer et prendre un inter virtuel a la place.
Si l'on ne veux pas que l'inter apparaisse dans l'écran des inter, on peut la masquer dans Réglages/plus d'options/plans/périphérique de remplacement/
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

jiemeb
Messages : 6
Enregistré le : 28 janv. 2016, 08:21

Re: Rflink et somfy RTS : affichage états et log

Message par jiemeb »

Bonjour,
Pour avoir les log et l'etat des volets il faut modifier l'enregistrement de la clé dans la base de données.
en utilisant par exemple sqlitebrowser.
arreter le service domoticz et faire une copie de la base de donnée domoticz.db
puis lancer sqlitebroswer.
ouvrir la base de donnée domoticz.db et modifier la table DeviceStatus.
ajouter devant les données de deviceID de votre volet 2 Zero.
exemple DeviceID = 123456 devient 00123456.
Enregistrer les modification et quitter sqlitebrowser.
relancer domoticz et maintenant l'etat les log du volet fonctionne. ;)

Martial
Messages : 116
Enregistré le : 03 mars 2017, 18:58

Re: Rflink et somfy RTS : affichage états et log

Message par Martial »

jiemeb a écrit :
01 déc. 2018, 17:55
Bonjour,
Pour avoir les log et l'etat des volets il faut modifier l'enregistrement de la clé dans la base de données.
en utilisant par exemple sqlitebrowser.
arreter le service domoticz et faire une copie de la base de donnée domoticz.db
puis lancer sqlitebroswer.
ouvrir la base de donnée domoticz.db et modifier la table DeviceStatus.
ajouter devant les données de deviceID de votre volet 2 Zero.
exemple DeviceID = 123456 devient 00123456.
Enregistrer les modification et quitter sqlitebrowser.
relancer domoticz et maintenant l'etat les log du volet fonctionne. ;)
Bonjour et merci pour la combine que je n'ai pas encore mise en oeuvre (j'ai peur pour ma base, n'ayant pas de machine de test ...).
Est-ce que quelqu'un a essayé et approuvé la manip ?

Cordialement

jiemeb
Messages : 6
Enregistré le : 28 janv. 2016, 08:21

Re: Rflink et somfy RTS : affichage états et log

Message par jiemeb »

Bonjour Martial,
je te conseille de faire une sauvegarde de ta base.
tu peux utiliser l'interface WEB de domotic avec reglages -> parametres -> sauvegarde / restauration.

je te conseille d'ailleurs de t’exercer a le faire sur un fichier Backup pour te familiariser avec l'outil sqlitebrowser

Cordialement

Martial
Messages : 116
Enregistré le : 03 mars 2017, 18:58

Re: Rflink et somfy RTS : affichage états et log

Message par Martial »

Bonjour Jiemeb,

Ca je sais faire et je fais systématiquement avant toute modification.
Cela n'empêche que je veux éviter de prendre des risques (je le fais déjà assez souvent comme ça), surtout si le problème peut se révéler plusieurs jours plus tard.
Sans vouloir être offensant, tu n'es pas un membre éminent du forum, donc je cherche des avis complémentaires.
Cordialement
Martial

Répondre