MAJ Tempo EDF

Forum pour tous les autres protocoles : Enocean, X10, les cartes piface.razberry ...
Pour les questions concernant le choix de protocoles, merci d'utiliser le forum Les autres objets.
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: MAJ Tempo EDF

Message 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.
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

Re: MAJ Tempo EDF

Message 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...
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message 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
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

Re: MAJ Tempo EDF

Message 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
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message 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.
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

Re: MAJ Tempo EDF

Message 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
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message 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
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

Re: MAJ Tempo EDF

Message 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&param=udevice&idx=924&nvalue=-1&svalue=NonDef"
fi
etc...
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message 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
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

Re: MAJ Tempo EDF

Message par marcus_54 »

Pour le moment je vais laisser tomber, je part en vacances demain.
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Répondre