Domoticz #05 : Personnaliser les Icônes Interrupteur et Sélecteur.

Introduction.

On va être franc, l’interface de Domoticz n’est pas très  »fun ». Les icônes sortent d’un autre temps.

Bien-sur, il y a un moyens de changer les icônes depuis l’interface, mais seul les dispositifs de type « interrupteur » peuvent l’être.

Il existe la possibilité de changer les autres icônes mais se sera que par l’intermédiaire d’un script.

Nous allons voir ici comment changer simplement l’icône d’un interrupteur puis nous verrons comment changer un type « sélecteur ».

Mais avant tout, voyons comment créer ses icônes facilement.

Création d’un pack icônes.

Pour informations les icônes doivent :

  • Être au format PNG,
  • Avoir une résolution de 48×48,
  • Exister en etat On et Off,
  • Être nommé de nom sans accents, espaces et autres,
  • le nom doit se terminer par 48_On et 48_Off avec de O majuscule,
  • les images se trouvent dans /home/pi/domoticz/www/images/

Pour faciliter la création et le nommage, il existe sur le net un liens qui vous permet de créer vos pack icône facilement. https://domoticz-icon.aurelien-loyer.fr/.

Il vous suffit d’avoir vos images On et Off (pour ma part je prends une image qui me plait sur le net puis je la passe en gris avec PowerPoint ou des sites de retouche en ligne).

Donc entrer un nom puis sélectionner vos images avec les boutons « parcourir ».

Ensuite augmenter ou diminuer la zone que vous souhaitez sauvegarder (elle peut être différentes l’une de l’autre).

Vous avez en dessous un aperçu de vos deux boutons.

Il vous suffit maintenant de cliquer sur « Generate Zip » puis sauvegarder le fichier.

Il suffit de faire cela pour toutes vos icônes.

Ajouter vos icônes à Domoticz.

Pour cela c’est très simple allez dans « configurations », « plus d’options », « Icônes Personnalisée ».

Il suffit de cliquer sur « Parcourir » allez récupérer votre fichier compressé puis « envoyer ».

Voilà vos icônes sont dans Domoticz.

Changer l’icône d’un type « interrupteur ».

Prenons le cas de notre interrupteur « Jour Nuit », il n’est pas très beau hein ? Alors on va lui rajouter un petit soleil et une lune.

Allez récupérer les images sur mon GitHub puis ajouté les dans votre Domoticz.

https://github.com/McFlyPartages/Domoticz/raw/master/Icones/JourNuit.zip

Sur votre interrupteur cliquer sur « Modifier ».

Sélectionner votre icône dans icône puis  »Sauvegarder ». Retourné dans « interrupteur » et observé le résultat.

Changer l’icône d’un type « Sélecteur ».

Pour un type « Sélecteur » comme dit dans l’introduction il va falloir rentrer du code et connaitre l’id de vos icônes.

Prérequis.

Connectez vous en SSH puis installer un lecteur de base SQL (SQLite pour nous)

sudo apt-get install sqlite3 libsqlite3-dev

On se connecte à la base de donnée de Domoticz.

sqlite3 /home/pi/domoticz/domoticz.db -cmd ".headers on" -cmd ".mode column" -cmd ".tables"

NOTA : Pour quitter SQLite il faut faire « CTRL + z ».

On interroge le contenu de la table CustomsImages.

select * from CustomImages; 

NOTA : Il faut ajouter 100 au IDs affichés

Dans cet exemple :

  • ID 101 : SaisonsAutomne,
  • ID 102 : SaisonsEte,
  • ID 103 : SaisonsPrintemps,
  • ID 104 : SaisonsHiver,
  • ID 105 : SaisonsJourNuit,

Pour mettre en application, créé un bouton de type « Sélecteur » (ATTENTION dans l’exemple c’est un type « Interrupteur »).

Puis dans l’onglet « Interrupteur » cliquer sur « modifier » de votre nouveau bouton « Saisons » et configuré le comme l’image ci-dessous.

  • Activé « Cacher le niveau Off »,
  • Hiver,
  • Printemps,
  • Ete,
  • Automne.

Récupérer l’ID de votre bouton (8 ici).

reconnectez vous en SSH, puis aller dans le dossier DZVents.

cd ~/domoticz/scripts/dzVents/scripts/
nano IconesSaisons.lua

Rendez vous ici https://github.com/McFlyPartages/Domoticz/tree/master/DzVents puis copier le contenu du fichier IconesSaisons.lua

--[[ IconesSaisons.lua
D'apres le script selection jour de la semaine et phase de lune de papoo https://github.com/papo-o/
icones : https://github.com/papo-o/domoticz_scripts/tree/master/Icons/Days
 Créé = 24/01/2020
 Mise à jour = 24/01/2020
--]]
local scriptName        = 'IconesSaisons'
local scriptVersion     = ' 1.00'
return  {   
        active = true,
        on =    {  
                       devices         = {18}, -- change to your device(s) separated by a comma like {2479,2480} 
                    },

   logging =   {  level    =   domoticz.LOG_DEBUG,                                 -- Seulement un niveau peut être actif; commenter les autres
                -- -- -- level    =   domoticz.LOG_INFO,                           -- Only one level can be active; comment others
                -- -- -- level    =   domoticz.LOG_ERROR,
                -- -- -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                 marker = scriptName..' v'..scriptVersion
    },

    execute = function(dz, item)
    
        local function logWrite(str,level)
            dz.log(tostring(str),level or dz.LOG_DEBUG)
        end
        local icons =     { 
                            [10] = 124,-- level correspondant à l'Hiver
                            [20] = 118,-- level correspondant au Printemps
                            [30] = 119,-- level correspondant à l'éte
                            [40] = 120,-- level correspondant à l'Automne
                        }
           
        logWrite('lastLevel '.. tostring(item.lastLevel))
        logWrite('level '.. tostring(item.level))
        if item.level ~= item.lastLevel then 
            item.setIcon(icons[item.level])
        else
            logWrite('No Icon change necessary for ' .. item.id)
        end
    end
}

Coller le dans le terminal (un simple clique droit suffit).

                       devices         = {18}, -- change to your device(s) separated by a comma like {2479,2480} 

Dans « device = 18 » remplacer 18 par votre ID (8 ici).

        local icons =     { 
                            [10] = 124,-- level correspondant à l'Hiver
                            [20] = 118,-- level correspondant au Printemps
                            [30] = 119,-- level correspondant à l'éte
                            [40] = 120,-- level correspondant à l'Automne
                        }

Remplacer 124,118,119,120 par vos ID d’icônes correspondant. (104,103,102,101 ici).

Ce qui donne pour moi.

--[[ IconesSaisons.lua
D'apres le script selection jour de la semaine et phase de lune de papoo https://github.com/papo-o/
icones : https://github.com/papo-o/domoticz_scripts/tree/master/Icons/Days
 Créé = 24/01/2020
 Mise à jour = 24/01/2020
--]]
local scriptName        = 'IconesSaisons'
local scriptVersion     = ' 1.00'
return  {   
        active = true,
        on =    {  
                       devices         = {8}, -- change to your device(s) separated by a comma like {2479,2480} 
                    },

   logging =   {  level    =   domoticz.LOG_DEBUG,                                 -- Seulement un niveau peut être actif; commenter les autres
                -- -- -- level    =   domoticz.LOG_INFO,                           -- Only one level can be active; comment others
                -- -- -- level    =   domoticz.LOG_ERROR,
                -- -- -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                 marker = scriptName..' v'..scriptVersion
    },

    execute = function(dz, item)
    
        local function logWrite(str,level)
            dz.log(tostring(str),level or dz.LOG_DEBUG)
        end
        local icons =     { 
                            [10] = 104,-- level correspondant à l'Hiver
                            [20] = 103,-- level correspondant au Printemps
                            [30] = 102,-- level correspondant à l'éte
                            [40] = 101,-- level correspondant à l'Automne
                        }
           
        logWrite('lastLevel '.. tostring(item.lastLevel))
        logWrite('level '.. tostring(item.level))
        if item.level ~= item.lastLevel then 
            item.setIcon(icons[item.level])
        else
            logWrite('No Icon change necessary for ' .. item.id)
        end
    end
}

« CTRL + x » pour quitter, il vous demande si vous voulez sauvegarder, « O ou Y », puis si vous souhaitez changer le nom du fichier (faites juste « Entrer »)

Retourner maintenant dans votre interface Domoticz puis sur l’onglet « Interrupteur ».

Cliquer sur vos différents sélecteur et votre icône devrait changer.

Ajouter plusieurs images en même temps.

Il est possible d’ajouter plusieurs images en une seul fois.

pour cela il faudra créer un dossier contenant vos images au bon format et nommage et un ficher icons.txt avec tous les noms de fichier comme ci dessous.

FreeboxServer;Button FreeboxServer;Icon FreeboxServer
FreeboxServerWifi;Button FreeboxServerWifi;Icon FreeboxServerWifi
Mouvement;Button Mouvement;Icon Mouvement
JourNuit;Button JourNuit;Icon JourNuit

Sources.

https://www.domoticz.com/wiki/Custom_icons_for_webinterface

https://domoticz-icon.aurelien-loyer.fr/

Une base de donnée d’icônes pour Domoticz.

https://drive.google.com/drive/folders/0B-ZLFoCiqzMRSkFaaWdHV1Qxbm8

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *