Page 4 sur 23
Re: MAJ Tempo EDF
Publié : 17 oct. 2024, 10:57
par lost
Les plugins imposent le python en langage... Pas de Lua/dzVent donc.
Personnellement, je n'aime pas particulièrement python pour diverses raisons et n'en fait (dans un style pas vraiment "pythonic", ayant surtout une gros passif de C et pour du FW/bare-metal) que quand la richesse des modules existants (et paraissant pérennes, je suis très sélectif sur le choix) me simplifie vraiment la vie.
Pour des choses simples comme cet MAJ tempo, Lua est bien suffisant et bien plus reposant avec les années (stabilité du langage, intégré/absence de dépendances nids à emmerdes: J'ai des trucs qui tournent en Lua depuis 2016 sans modif ; en python même pas en rêve!).
L'idéal serait de pouvoir écrire des modules en Lua/dzVent pour des besoins simples mais ce n'est pas possible actuellement: Pas le choix que de mettre un minimum les mains dans le cambouis avec un système comme Domoticz, c'est un peu la rançon de possibilités assez complètes de personnalisation/script.
Re: MAJ Tempo EDF
Publié : 17 oct. 2024, 18:51
par marcus_54
Bonsoir
Serait-il possible ou envisageable de faire un tuto d'installation Lua/dzVent ( c'est la même chose lua dzvent ?) pour débutant ?
Sur ce fil de discussion, ce n'est pas évident de trouver tous les bons détails car il y a ça part un peu dans tous les sens entre LUA et Python...
Re: MAJ Tempo EDF
Publié : 17 oct. 2024, 20:19
par Alain78
Bonjour marcus_54,
Pour ma part, mon script est en dzvents (c'est du LUA amélioré), les consignes sont au début. (créer les variables comme indiquées). Puis dans l'interface d'édition des scripts choisir nouveau , dzvents, minimal et copier l'ensemble du script.
Le résultat se trouvera dans les variables, à vous d'utiliser ces informations comme vous le souhaitez , widget, scripts, etc..
Bonne soirée
Alain
Re: MAJ Tempo EDF
Publié : 17 oct. 2024, 20:27
par marcus_54
Bonsoir Alain
Je vais m'y attaquer sérieusement demain matin.
J'avais fait quelques essais avec plein d'erreurs d'excution, il faut dire que je l'avais mis en LUA...
Si je ne me trompe pas, ce script se lance automatiquement le matin, comment est ce que on peut le lancer manuellement pour le tester ?
Merci et bonne soirée
Re: MAJ Tempo EDF
Publié : 17 oct. 2024, 21:16
par Alain78
Bonsoir,
Pour modifier les exécutions du script c'est dans la partie "on" que cela se passe
changer ou ajouter l'heure désirée dans la liste:
actuellement il y a on = { timer = { ' at 07:02', 'at 10:00-21:00 at *:41' },
ici il y a une exécution à 07:02 et de 10:00 à 21:00 c'est exécuté à chacune des heure a: *:41 , pour exécuter à une heure précise il suffit de rajouter , 'at hh:mm' aprés *:41'
Tu devras avoir cette ligne là: on = { timer = { ' at 07:02', 'at 10:00-21:00 at *:41', 'at hh:mm' },
Bonne soirée.
Re: MAJ Tempo EDF
Publié : 18 oct. 2024, 10:06
par marcus_54
Bonjour Alain,
Super le srcipt fonctionne
Code : Tout sélectionner
2024-10-18 10:02:00.612 Status: EventSystem: Script event triggered: /home/marc/domoticz/dzVents/runtime/dzVents.lua
2024-10-18 10:02:02.076 dzVents: Handling httpResponse-events for: "script_time_Tempo_Couleur_RTE"
2024-10-18 10:02:02.108 Status: EventSystem: Script event triggered: /home/marc/domoticz/dzVents/runtime/dzVents.lua
2024-10-18 10:02:02.149 Status: Set UserVariable Tempo_J_Blanc = 43
2024-10-18 10:02:02.156 Status: Set UserVariable Tempo_J_Rouge = 22
2024-10-18 10:02:02.158 Status: Set UserVariable Tempo_J_Bleu = 251
2024-10-18 10:02:02.160 Status: Set UserVariable TempoJ = BLEU
2024-10-18 10:02:02.162 Status: Set UserVariable TempoJ1 = BLEU
Est ce que tu veux bien nous partager le script qui gère les widgets ?
Merci
Re: MAJ Tempo EDF
Publié : 18 oct. 2024, 21:30
par Alain78
Bonjour marcus_54,
Je partagerai avec plaisir le script pour la gestion des Widgets Tempo, mais j'ai un seul script qui gère toutes les modifications des widgets avec des icônes différents et des textes colorisés.
J'ai extrait la partie TEMPO que je vous partage:
Par contre il faut importer des icônes pour chaque couleur de tempo et HP ,HC pour chaque couleur et créer une variable "chaine" Tempo_HP-HC pour gérer les heures creuses et pleines.
Voici le script qui gère le passage HP->HC->HP et donc le passage TEMPOJ1 TEMPOJ
Code : Tout sélectionner
--------------------------------------------
-- Changement des jours et HP - HC à 22h et 6h.
--------------------------------------------
local scriptName = 'script_time_Tempo_HP-HC'
local scriptVersion = '1.0'
return {
on = {
timer = { 'at 05:55', 'at 22:07' },
system = { 'start' },
},
logging = { level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_ERROR, -- Only one level can be active; comment others
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion },
execute = function(domoticz, item)
local DateTempoJ = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd')
local Heure = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','hh')
local TEMPOJ = domoticz.variables('TempoJ') -- Variable Couleur TEMPO du jour.
local TEMPOJ1 = domoticz.variables('TempoJ1') -- Variable Couleur TEMPO de demain.
local TEMPOH = domoticz.variables('Tempo_HP-HC') -- Variable HP-HC TEMPO.
if item.isTimer then
if Heure == "05" then -- Passage HP + changement de couleur TEMPO
TEMPOH.set("HP") -- Heure pleine
if TEMPOJ1.value == "ROUGE" then -- Aujourd'hui jour ROUGE
message = 'Aujourd\'hui : '..DateTempoJ..' La couleur TEMPO est: ROUGE'
domoticz.notify("Alerte TEMPO jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
end
TEMPOJ.set(TEMPOJ1.value) -- passage de la couleur tempo avec celle de demain
TEMPOJ1.set("GRIS") -- Mise à indéterminée pour la couleur du lendemain
elseif Heure == "22" then -- Passage HC
TEMPOH.set("HC") -- Heure creuse
end
elseif item.isSystemEvent then
if (tonumber(Heure) >= 6 and tonumber(Heure) < 22) then
TEMPOH.set("HP") -- Heure pleine
else
TEMPOH.set("HC") -- Heure creuse
end
end
end
}
Ci dessous le code pour l'affichage des icones pour les 2 Widgets textes qu'ils faut créer :
"Couleur Tempo Aujourd'hui" et "Couleur Tempo Demain".
Code : Tout sélectionner
--[[ gestion des Icons sur les Widgets en fonction de leurs status
Couleur pour tempo:
- GRIS ........... 110
- Rouge .......... 107
- Blanc .......... 101
- Bleu .......... 104
- ROUGE HP ....... 109
- Rouge HC ....... 108
- Blanc HP ....... 103
- Blanc HC ....... 102
- Bleu HP ....... 106
- Bleu HC ....... 105
Tempo: 300 Jours Bleus (Tout au long de l’année) - 43 jours blancs (Tout au long de l’année, hors dimanche) - 22 jours rouges (Du 1er novembre au 31 mars, hors week-end et jours fériés).
--]]
local scriptName = 'script_device_Change_Icone_Widget'
local scriptVersion = ' 1.0'
local NbrJBleu = 300 -- Tout au long de l’année
local NbrJBlanc = 43 -- Tout au long de l’année, hors dimanche
local NbrJRouge = 22 -- Du 1er novembre au 31 mars, hors week-end et jours fériés
return {
on = {
variables = { 'TempoJ', -- Couleur Tempo du jour.
'TempoJ1', -- Couleurl Tempo du lendemain.
'Tempo_HP-HC' },
},
logging = { -- La section de journalisation facultative vous permet de remplacer le paramètre de journalisation globale de dzVents.
-- comme défini dans Configuration> Paramètres> Autre> Système d'événements> Niveau de journalisation dzVents.
-- Cela peut être pratique lorsque vous voulez que ce script ait une journalisation de débogage étendue pendant que le reste de votre script s'exécute en mode silencieux.
level = domoticz.LOG_ERROR, -- domoticz.LOG_INFO, domoticz.LOG_MODULE_EXEC_INFO, domoticz.LOG_DEBUG or domoticz.LOG_ERROR, domoticz.LOG_FORCE,
marker = scriptName..' v'..scriptVersion
},
execute = function(domoticz, item)
local function logWrite(str,level)
domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
end
local function text_color(text,color) -- Fonction pour écriture du texte en fonction de la couleur TEMPO.
if color == "ROUGE" then text = '<FONT COLOR=#FF0000>' .. text .. '</FONT>' end
if color == "BLEU" then text = '<FONT COLOR=#0000FF>' .. text .. '</FONT>' end
if color == "GRIS" then text = '<FONT COLOR=#708090>' .. text .. '</FONT>' end
if color == "BLANC" then text = '<FONT COLOR=#000000>' .. text .. '</FONT>' end
return text
end
-- Variables et devices pour traitement des jours Tempo.
local TEMPOJ = domoticz.devices('Couleur Tempo Aujourd\'hui')
local TEMPOJ1 = domoticz.devices('Couleur Tempo Demain')
local TEMPOH = domoticz.variables('Tempo_HP-HC') -- Variable HP-HC TEMPO.
if item.isVariable then
-------------------------
-- Icones pour TEMPO J --
-------------------------
if item.name == "TempoJ" then
local icons = 110
if item.value == "ROUGE" then
if TEMPOH.value == "HP" then
icons = 109
else
icons = 108
end
NbrJ = NbrJRouge
mode = item.value..'-'..TEMPOH.value
NbJours = domoticz.variables('Tempo_J_Rouge').value
elseif item.value == "BLANC" then
if TEMPOH.value == "HP" then
icons = 103
else
icons = 102
end
NbrJ = NbrJBlanc
mode = item.value..'-'..TEMPOH.value
NbJours = domoticz.variables('Tempo_J_Blanc').value
elseif item.value == "BLEU" then
if TEMPOH.value == "HP" then
icons = 106
else
icons = 105
end
NbrJ = NbrJBleu
mode = item.value..'-'..TEMPOH.value
NbJours = domoticz.variables('Tempo_J_Bleu').value
else
icons = 110
mode = "GRIS"
end
if mode == "GRIS" then --- Couleur Indéfinie
texte = text_color('Pas de données communiquées. ',mode)
else
texte = text_color('Nbr de jours restants: '..NbJours..'/'..NbrJ..'<br>'..'Couleur TEMPO Aujourd\'hui: '..item.value,item.value)
end
TEMPOJ.updateText(texte)
TEMPOJ.setIcon(tonumber(icons))
----------------------
-- Icones pour TEMPO J + 1 --
----------------------
elseif item.name == "TempoJ1" then
local icons = 110
if item.value == "ROUGE" then
icons = 107
NbrJ = NbrJRouge
mode = item.value
NbJours = domoticz.variables('Tempo_J_Rouge').value
elseif item.value == "BLANC" then
icons = 101
NbrJ = NbrJBlanc
mode = item.value
NbJours = domoticz.variables('Tempo_J_Blanc').value
elseif item.value == "BLEU" then
icons = 104
NbrJ = NbrJBleu
mode = item.value
NbJours = domoticz.variables('Tempo_J_Bleu').value
else
icons = 110
mode = "GRIS"
end
if mode == "GRIS" then --- Couleur Indéfinie
texte = text_color('Pas de données communiquées. ',mode)
else
texte = text_color('Nbr de jours restants: '..NbJours..'/'..NbrJ..'<br>'..'Couleur TEMPO demain: '..item.value,item.value)
end
TEMPOJ1.updateText(texte)
TEMPOJ1.setIcon(tonumber(icons))
end
end
end
}
Voilà, il y a un peu de travail de préparation mais ensuite cela fonctionne parfaitement.
Bonne soirée
Re: MAJ Tempo EDF
Publié : 19 oct. 2024, 10:13
par marcus_54
Merci Alain
J'avoue que je pensais que ce serait un peu plus simple
J'ai tout implanté mais je vois pas trop de résultats et j'avoue que je comprends pas tout
Que représentent ces lignes ?
Code : Tout sélectionner
Couleur pour tempo:
- GRIS ........... 110
- Rouge .......... 107
- Blanc .......... 101
- Bleu .......... 104
- ROUGE HP ....... 109
- Rouge HC ....... 108
...
Précédemment j'avais créé des widgets alertes avec des icônes personnalisées et ils étaient mis à ce jour avec un script .sh dont le contenu est ci dessous.
A quel endroit de ton script dzvent Tempo je pourrais ajouter la mise à jour de ces widgets ?
Code : Tout sélectionner
if [ $coul_J1 = "NON_DEFINI" ]; then
#echo "demain non determine"
curl "http://192.168.0.7:8084/json.htm?type=command¶m=udevice&idx=924&nvalue=-1&svalue=NonDef"
fi
etc...
Re: MAJ Tempo EDF
Publié : 19 oct. 2024, 10:21
par Alain78
Bonjour,
Les numéros 110.... représentent les numérod des icônes personnalisés. Ils commencent à 110. Il faut mettre le bon numéro d'icône dans le script pour chaque couleur. Vous pouvez supprimer le HP-HC en mettant le même numéro que la couleur du jour.
Bonne journée
Re: MAJ Tempo EDF
Publié : 19 oct. 2024, 11:23
par marcus_54
Pour le moment je vais laisser tomber, je part en vacances demain.