[Résolu] dzVents -> pbm changement d'icône sur un custom sensor

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 <\>.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par papoo »

Ca ne fonctionne pas avec un device text, pas de custom icon pour ce type de device
par contre ça devrait fonctionner pour un custom device finalement
je continue demain
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par lolo6112 »

papoo a écrit : 29 juil. 2019, 22:43 mes premières constatations.
le custom sensor n'est pas le device le plus adapté à ce que l'on veut faire. il sert plutôt pour les sensors de type mesures avec un nom d'axe pour tracer une courbe.
j'ai fais l'essai avec un switch Selector et j'arrive à mettre à jour l'icone.

je suis en train de faire des tests avec un device texte, mais cela semble plus compliqué à gérer.
Bonsoir,
C'est déjà super si tu peux mettre à jour l'icône sur un switch selector, moi ça me va bien :)
Chapeau, t'es vraiment un bon pour les scripts, et certainement pour beaucoup d'autres choses.
Pour le device texte je ne suis pas surpris, j'avais lu quelque part qu'on ne pouvais pas le faire.
On est pas les premiers à se casser les dents là dessus, j'ai lu plein de proses, mais qui n'aboutissent pas.

Tu arrives à le faire sur le switch selector, par dzVents, mais tu changes le niveau, ou le texte, comment ?
J'ai eu beau fouillé, je change bien l'icône comme sur le custom sensor, même commande, mais pas le level ou texte affiché :roll:
Je suppose qu'il faut indiquer les phases de la lune sur les niveaux, non ? Ou tu renseignes cela aussi avec du code ?
Bref, je bute avec dzVents pour envoyer plusieurs commandes sur le même device, c'est peut-être pas possible ?
Je verrai ça à tête reposée, demain.

HS
C'est quoi ton thème, j'aime beaucoup le noir, mais j'ai pas les boutons bleus sur les thèmes que j'ai :(
Fin de HS

Bonne soirée, enfin peut-être bonne nuit plutôt :mrgreen: .
Laurent
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par lolo6112 »

Bonjour,

J'ai toujours le pbm de ne pas mettre à jour le texte (ou le niveau du selector switch dans le cas présent), je suis surpris par une indication dans les logs :
constructed_time_command.png
constructed_time_command.png (293.97 Kio) Consulté 7376 fois
La ligne 'construted_time' m'interpelle un peu, il y aurait du temps avant que la commande ne s'exécute ?
Toujours est-il que ça ne se met pas à jour, ni même au niveau du lastupdate, alors que l'icône change :cry:
J'ai vérifié mes paramètres dans domoticz mais j'ai rien vu de choquant dzVents est activé et je remonte le plus d'infos possibles.

Bonne journée
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par papoo »

pour le custom sensor c'est mort, je n'arrive à rien.
je reste donc sur le selector switch.
j'ai modifié plusieurs choses dans ta fonction. J'ai fais le choix de ne transmettre que le Level au format numérique, transmettre le nom du niveau est trop aléatoire et plantait la fonction de mise à jour de l'icone une fois sur deux.
pour que cela marche à chaque fois et pour chacun des 8 jours fournis par darksky j'ai externalisé la fonction (qui n'est pas de moi)
Le code du fichier moonSelectorIcons.lua

Code : Tout sélectionner

--[[
moonSelectorIcons.lua
source : https://www.domoticz.com/forum/viewtopic.php?f=59&t=27501&p=210819&hilit=seticon#p210819
https://easydomoticz.com/forum/viewtopic.php?f=10&t=8758&p=71951#p71951
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/moonSelectorIcons.lua.lua
update/mise à jour = 29/07/2019
--]]
local scriptName        = 'moonSelectorIcons'
local scriptVersion     = ' 1.0'
return  {   
        active = true,
        on =    {  
                       devices         = {2479}, -- 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(domoticz, item)
    
        local function logWrite(str,level)
            domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
        end
        local icons =     { -- level = iconNumber 
                            [10] = 129,-- level correspondant à Nouvelle lune
                            [20] = 130,-- level correspondant à Premier croissant
                            [30] = 131,-- level correspondant à Premier quartier
                            [40] = 132,-- level correspondant à Gibbeuse croissante
                            [50] = 133,-- level correspondant à Pleine lune
                            [60] = 134,-- level correspondant à Gibbeuse décroissante
                            [70] = 135,-- level correspondant à Dernier quartier
                            [80] = 136,-- level correspondant à Dernier croissant
                            --[80] = 137,
                        }
        
        local function setIcon(iconNumber) 
            local url = domoticz.settings['Domoticz url'] .. '/json.htm?type=setused&used=true&name=' .. domoticz.utils.urlEncode(item.name) ..
            '&description=' .. domoticz.utils.urlEncode(item.description) .. -- Required. If not set it will be blanked out.
            '&idx=' .. item.id .. 
            '&switchtype=' .. item.switchTypeValue ..
            '&customimage=' .. iconNumber
            logWrite(url)
            return domoticz.openURL(url)
        end    
        logWrite('lastLevel'.. tostring(item.lastLevel))
        logWrite('level'.. tostring(item.level))
        if item.level ~= item.lastLevel then 
            setIcon(icons[item.level])
        else
            domoticz.log('No Icon change necessary' .. item.id,domoticz.LOG_DEBUG)
        end
    end
}
le lien vers le script darksky.lua avec les phases lunaires, les previsions de vents ...
https://github.com/papo-o/domoticz_scri ... arksky.lua
Pièces jointes
2019-07-29 21_55_49-Window.png
2019-07-29 21_55_49-Window.png (55.09 Kio) Consulté 7361 fois
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par lolo6112 »

Bonsoir,

Heuuu que dire sinon BRAVO !!!
J'ai regardé vite fait, c'est super, clair et concis.
Je dois aller à la pref demain pour ma femme, renouvellement de sa carte de résident :roll:
Du coup je regarderai cela au calme, demain, après les démarches, là il faut aller au dodo :lol:
Mais super, ta solution est parfaite, un selector switch est tout aussi bien.
J'ai pas compris comment je suis passé à côté de l'update du level sur le switch selector. Peut-être les 2 commandes qui étaient envoyées l'une derrière l'autre, peut importe. Mais je faisais à peu près comme toi, à la différence que je renvoyais directement la valeur numérique

Code : Tout sélectionner

mavariable = 10, 20, 30 etc par la même fonction que pour l'icône
puis
domoticz.devices(mondevice.idx).switchSelector(mavariable)
versus
domoticz.devices(MoonPhaseSelect[k]).switchSelector(levelMoonhase(moonphase))
que tu utilises.
Et bien ma méthode ne fonctionne pas :mrgreen: c'est à n'y rien comprendre parrfois :lol:

Respect Mr Scripts :D
Et merci de ton implication.

Bonne soirée ou nuit.
Laurent
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par lolo6112 »

lolo6112 a écrit : 30 juil. 2019, 23:44 Bonsoir,
.../...
J'ai pas compris comment je suis passé à côté de l'update du level sur le switch selector. Peut-être les 2 commandes qui étaient envoyées l'une derrière l'autre, peut importe. Mais je faisais à peu près comme toi, .../...
Et bien ma méthode ne fonctionne pas :mrgreen: c'est à n'y rien comprendre parrfois :lol:
Bonjour,

@ Papoo:
Tout fonctionne très bien, merci.
L'externalisation de la mise à jour de l'icône était donc la solution, bravo pour ta perspicacité et pour avoir trouvé ça ;) .
J'ai mis le fil en "Résolu" du coup.

@ à tous :
J'avais dis que je referai un post plus complet d'explication, mais le code est très bien commenté et le fil explique globalement tout.
Peut-être rappeler comment on détermine le numéro des icônes.
1 - On importe les icônes dans Domoticz sous format complet d'un fichier zip, 1 par icône, il y a de nombreux posts à ce sujet ;
2 - On compte les icônes en partant de 101, et voilà. Je suppose que de 1 à 100 ce sont des icônes natifs de Domoticz et l'espace est réservé.

Bonne journée.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par papoo »

lolo6112 a écrit : 30 juil. 2019, 00:34 HS
C'est quoi ton thème, j'aime beaucoup le noir, mais j'ai pas les boutons bleus sur les thèmes que j'ai :(
Fin de HS
je viens juste repenser à ta question pour laquelle je n'avais pas apporter de réponse

le thème que j'utilise est simple blue. mais, car il y a un mais, j'utilise l'extension dark reader pour chrome.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor

Message par lolo6112 »

papoo a écrit : 04 août 2019, 20:34 je viens juste repenser à ta question pour laquelle je n'avais pas apporter de réponse

le thème que j'utilise est simple blue. mais, car il y a un mais, j'utilise l'extension dark reader pour chrome.
Bonjour,
Merci !
Bon pour moi c'est mort, j'utilise Firefox.
EDIT: Bah non, Firefox a exactement le même extension :lol:
Bonne piste Papoo, Super ce thème, ça repose les yeux :)

Bonne journée.
Jmrios
Messages : 13
Inscription : 25 mars 2020, 17:50

Re: dzVents -> pbm changement d'icône sur un custom sensor [Résolu]

Message par Jmrios »

Bonjour a tous

Suivant le script proposé par Papoo pour le changement d'icone sur un selecteur "Lune" soit 8 boutons

Code : Tout sélectionner

--[[ moonSelectorIcons.lua
update/mise à jour = 27/12/2019
source : https://www.domoticz.com/forum/viewtopic.php?f=59&t=27501&p=210819&hilit=seticon#p210819
https://pon.fr/ddzvents-darksky-probabilite-de-vent-et-phases-lunaires/
https://easydomoticz.com/forum/viewtopic.php?f=10&t=8758&p=71951#p71951
pour afficher un icone personnalisé à chaque nouvelle phase lunaire il vous faut uploader 
(Réglages=>Plus d'options=> Icones personnalisés) sans les décompresserc hacun des packs d'icones suivants
dans l'ordre c'est plus facile : MoonPhases1NM, MoonPhases2WC, MoonPhases3FQ, etc
icones : https://github.com/papo-o/domoticz_scripts/tree/master/Icons/MoonPhases
pour connaitre le numero de chaque iconeuploadé, comptez vos icônes perso en commençant à 101 pour le premier
puis modifiez la référence des icones (129 à 136 dans ce script) pour afficher vos icones. 
ainsi que la (es) référence(s) au(x) device(s) selector (dans l'exemple ci dessous l'idx 2479)
 
--]]
local scriptName        = 'moonSelectorIcons'
local scriptVersion     = ' 1.02'
return  {   
        active = true,
        on =    {  
                       devices         = {268}, -- 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] = 31,-- level correspondant à Nouvelle lune MoonPhases1NM
                            [20] = 32,-- level correspondant à Premier croissant MoonPhases2WC
                            [30] = 33,-- level correspondant à Premier quartier MoonPhases3FQ
                            [40] = 34,-- level correspondant à Gibbeuse croissante MoonPhases4WG
                            [50] = 35,-- level correspondant à Pleine lune MoonPhases5FM
                            [60] = 36,-- level correspondant à Gibbeuse décroissante MoonPhases6WG
                            [70] = 37,-- level correspondant à Dernier quartier MoonPhases7LQ
                            [80] = 38,-- level correspondant à Dernier croissant MoonPhases8WC
				}
		
        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' .. item.id)
        end
    end
}
Cela fonctionne mais a moitié
Sur mon interrupteur Sélecteur il me faut rafraîchir la page après avoir sélectionne un de mes huit boutons pour avoir le changement d''image

J'ai enregistre le script moonSelectorIcons.lua sous /home/pi/domoticz/scripts/dzVents/scripts


Mes 3x8 Images ont ete integrer manuellement dans le dossier /home/pi/domoticz/www/images
Les denominations dans le fichier /home/pi/domoticz/www/switch_icons.txt
Oui car l'integration automatique des fichiers au format .ZIP dans domoticz onglet "Icones Personnalise" me notifie une ERREUR de transfert

Dans mon script les icones sont numérotées de 31 a 38


Mon materiel, un raspberry PI3 connecter sur un SSD avec Domoticz V2020.1 et Raspbian Buster option bureau

Si quelqu'un a une idée ? Merci d'avance
lolo6112
Messages : 54
Inscription : 17 juil. 2016, 16:12

Re: dzVents -> pbm changement d'icône sur un custom sensor [Résolu]

Message par lolo6112 »

Jmrios a écrit : 12 avr. 2020, 21:39 Bonjour a tous

Suivant le script proposé par Papoo pour le changement d'icone sur un selecteur "Lune" soit 8 boutons

Cela fonctionne mais a moitié
Sur mon interrupteur Sélecteur il me faut rafraîchir la page après avoir sélectionne un de mes huit boutons pour avoir le changement d''image

J'ai enregistre le script moonSelectorIcons.lua sous /home/pi/domoticz/scripts/dzVents/scripts
Bonjour,

Le script est bien dans ce dossier chez moi.
L'histoire du rafraîchissement peut aussi venir d'un navigateur capricieux, où de son cache mal géré.
Je ne vois pas pourquoi il faudrait sélectionner un des équipements "Selecteur" ? Le script est là pour automatiser la mise à jour justement. Donc si c'est à des fins de tests, c'est pas la bonne manip, il faut utiliser une réponse http "custom".

Domoticz est assez capricieux avec ce genre de manip, on est sur du script "avancé".
Même en y travaillant de concert avec Papoo nous ne sommes jamais arrivé à changer de concert le texte de la phase de la lune et l'icône sur un équipement "custom". Pourtant réputé pour accepter les changements d'icône, et d'ailleurs on peut le faire dans l'application.
Sauf que ça n'a jamais fonctionné à la volée par code !
D'où le choix d'un équipement "Selector".

A mon avis il va falloir bosser un peu pour résoudre vos soucis.
Pour information ce script fonctionne parfaitement chez moi depuis le déploiement, et je parie mon billet qu'il fonctionne parfaitement chez Papoo et bien d'autres.

La seule aide, vu les infos données, est de suivre les indications données pour le script à la lettre.
Ce script n'a pas été testé dans cette version pour moi mais sur la v4.10717, il faudrait que quelqu'un valide le script en version 2020.1.

Pour ma part il ne le sera probablement jamais testé sur cette version.
La dernière fois en date que j'ai fait un update avec la dernière version j'avais paumé pratiquement tout mes équipements, alors basta !

Bonne journée.
Répondre