Aide noveau Domoticzien (alerteMeteoFrancePluie)

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 <\>.
porto
Messages : 4
Inscription : 29 avr. 2020, 08:09

Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par porto »

Bonjour à tous,

Nouveau arrivé sur ce beau monde de la domotique mais ça ce complique !! :)
J'y connais pas grand chose en LUA, et en essayant quelques scripts je me suis rendu compte que ce n'est pas si simple que ça.

Exemple avec un des scripts de papo-o

https://github.com/papo-o/domoticz_scri ... ePluie.lua

J'ai créer les « Virtual Sensor » pour "Info Du Jour" et "Alerte Pluie" mais apparement il y a un probleme rien ne s'affiche et j'ai des messages d'erreur dans le log.
Dans Hardware j'ai cree des Dummy et les virtual sensor doivent etre de quel type ? Alert , Rain ?

Code : Tout sélectionner

 2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateText is not available for device "Info Du Jour" (deviceType=General, deviceSubType=Alert). If you believe this is not correct, please report.
2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateAlertSensor is not available for device "Alerte Pluie" (deviceType=Rain, deviceSubType=TFA). If you believe this is not correct, please report. 
Merci d'avance pour votre aide.
Soyez indulgent ce que pour vous c'est evident pour moi c'est l'obscurité totale, besoin donc de vos lumieres :idea: :idea: :D
lavinch31
Messages : 52
Inscription : 03 févr. 2020, 11:16

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par lavinch31 »

Bonjour Porto,

"Info Du Jour" est un capteur virtuel (dummy sensor) de type Texte
"Alerte Pluie" est un capteur virtuel ( dummy sensor) de type Alert
Pi3b+ SSD
Zigbee Conbee II + Philips hue +Variateurs +smart buttons
Station meteo Netatmo
Plusieurs ESP8266 sous ESPEASY + DS18B20 + BMP280 +Relais
porto
Messages : 4
Inscription : 29 avr. 2020, 08:09

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par porto »

Bonjour,

@lavinch31 merci pour ce retour.
Je les ai crée et ils sont dans "devices" mais ils ne se actulisent pas, du a mon avis le message d'erreur dans le log, mais pourquoi ?

**Captures en piece jointe

Code : Tout sélectionner

2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateText is not available for device "Info Du Jour" (deviceType=General, deviceSubType=Alert). If you believe this is not correct, please report.
2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateAlertSensor is not available for device "Alerte Pluie" (deviceType=Rain, deviceSubType=TFA). If you believe this is not correct, please report.  
Cordialemnt
Pièces jointes
info_du_jour.png
info_du_jour.png (11.19 Kio) Consulté 5331 fois
devices.png
devices.png (15.92 Kio) Consulté 5331 fois
alerte_pluie.png
alerte_pluie.png (12.38 Kio) Consulté 5331 fois
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par denis_brasseur »

Les 2 messages d'erreur portent bien sur la mise à jour des devices.
Il s'agit d'un code dzvents, et non pas lua en tant que tel.
Comment a tu créé ton script ? Quel type ?
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
lavinch31
Messages : 52
Inscription : 03 févr. 2020, 11:16

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par lavinch31 »

porto a écrit : 29 avr. 2020, 19:22 Bonjour,

@lavinch31 merci pour ce retour.
Je les ai crée et ils sont dans "devices" mais ils ne se actulisent pas, du a mon avis le message d'erreur dans le log, mais pourquoi ?

**Captures en piece jointe

Code : Tout sélectionner

2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateText is not available for device "Info Du Jour" (deviceType=General, deviceSubType=Alert). If you believe this is not correct, please report.
2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateAlertSensor is not available for device "Alerte Pluie" (deviceType=Rain, deviceSubType=TFA). If you believe this is not correct, please report.  
Cordialemnt

sur ta capture d'écran ,

- le device "info du jour" est de type "Alert" alors qu'il doit etre de type "Text"

- le device "Alerte pluie" est de type "Rain" alors qu'il doit etre de type "Alert"

selon tes log:

Code : Tout sélectionner

2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateText is not available for device "Info Du Jour" (deviceType=General, deviceSubType=Alert). If you believe this is not correct, please report.
-> le script cherche a mettre un jour le texte sur le device "info du jour" mais celui-ci est de type Alert , donc ça ne colle pas.

Code : Tout sélectionner

2020-04-29 08:30:01.607 Error: dzVents: Error: (3.0.1) météo France alerte pluie v3.03: Method updateAlertSensor is not available for device "Alerte Pluie" (deviceType=Rain, deviceSubType=TFA). If you believe this is not correct, please report.

-> le script cherche à mettre à jour le device "Alert Pluie" mais celui ci est est de type Rain , donc problème
Pi3b+ SSD
Zigbee Conbee II + Philips hue +Variateurs +smart buttons
Station meteo Netatmo
Plusieurs ESP8266 sous ESPEASY + DS18B20 + BMP280 +Relais
porto
Messages : 4
Inscription : 29 avr. 2020, 08:09

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par porto »

Bonjour,

Merci beaucoup pour votre aide et le temps que vous consacrez a m'aider.

@denis_brasseur

Le script que j'essaie d'utiliser je l'ai telechargé ici: https://github.com/papo-o/domoticz_scri ... ts/scripts
Et je l'ai mis dans /home/pi/domoticz/scripts/dzVents/scripts

@lavinch31

En effet en mettant les choses comme elles doivent etre ça fonctionne mieux :lol: :lol: La c'est bon ;)

***Comment savoir quel type utiliser "Alert, Text, Rain ...." pour l' attribuer aux devices

Par exemple dans ce script :

horoscope.lua

Code : Tout sélectionner

--[[
name : horoscope.lua
auteur : papoo
Mise à jour : 31/03/2020
Création : 26/06/2016 =>V1.x https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_horoscope.lua
https://pon.fr/dzvents-horoscope-v2
https://easydomoticz.com/forum/viewtopic.php?f=17&t=9786
github : https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/horoscope.lua
Principe :
Le script vérifie toutes les x heures les horoscopes du site  https://astro.rtl.fr/horoscope-jour-gratuit/ 
signe par signe et mets à jour les éventuels devices texte associés sur domoticz
Le texte est tronqué à ~ 240 caractères pour ne pas surcharger l'affichage. Les caractères html sont convertis

]]--
local les_horoscopes = {
            { device = 'Horoscope 1',  signe = 'belier'},
            { device = 'Horoscope 2',    signe = 'capricorne'},
            { device = 'Horoscope 3',  signe = 'vierge'},
            { device = 'Horoscope 4',    signe = 'balance'},
                        }

local site_url  = 'https://astro.rtl.fr/horoscope-jour-gratuit'  -- url
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Horoscope'
local scriptVersion     = '2.01'

return {
    active = true,
    on  =   {
        timer           =   { 'every 6 hours' },--https://www.domoticz.com/wiki/DzVents:_next_generation_LUA_scripting#timer_trigger_rules
        httpResponses   =   { 'belier','taureau','gemeaux','cancer','lion','vierge','balance','scorpion','sagittaire','capricorne','verseau','poissons' }    -- Trigger
        --httpResponses   =   { 'cancer','capricorne' }    -- Trigger
    },
     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)              -- Support function for shorthand debug log statements
            dz.log(tostring(str),level or dz.LOG_DEBUG)
        end
--------------------------------------------
        local function TronquerTexte(texte, nb)  -- texte à tronquer, Nb maximum de caractère
        local sep ="[?;!.]"
        local DernierIndex = nil
        texte = string.sub(texte, 1, nb)
        local p = string.find(texte, sep, 1)
        DernierIndex = p
        while p do
            p = string.find(texte, sep, p + 1)
            if p then
                DernierIndex = p
            end
        end
        return(string.sub(texte, 1, DernierIndex))
        end
--------------------------------------------
function unescape(str)--remplace le code html
    if (str) then
        local ascii =  {
        ['&nbsp;'] =' ', ['&iexcl;'] ='¡', ['&cent;'] ='¢', ['&pound;'] ='£', ['&curren;'] ='¤', ['&yen;'] ='¥', ['&brvbar;'] ='¦', ['&sect;'] ='§', ['&uml;'] ='¨', ['&copy;'] ='©', ['&ordf;'] ='ª', ['&laquo;'] ='«', ['&not;'] ='¬', ['&shy;'] ='­',
        ['&reg;'] ='®', ['&macr;'] ='¯', ['&deg;'] ='°', ['&plusmn;'] ='±', ['&sup2;'] ='²', ['&sup3;'] ='³', ['&acute;'] ='´', ['&micro;'] ='µ', ['&para;'] ='¶', ['&middot;'] ='·', ['&cedil;'] ='¸', ['&sup1;'] ='¹', ['&ordm;'] ='º', ['&raquo;'] ='»',
        ['&frac14;'] ='¼', ['&frac12;'] ='½', ['&frac34;'] ='¾', ['&iquest;'] ='¿', ['&Agrave;'] ='À', ['&Aacute;'] ='Á', ['&Acirc;'] ='Â', ['&Atilde;'] ='Ã', ['&Auml;'] ='Ä', ['&Aring;'] ='Å', ['&AElig;'] ='Æ', ['&Ccedil;'] ='Ç', ['&Egrave;'] ='È', ['&Eacute;'] ='É',
        ['&Ecirc;'] ='Ê', ['&Euml;'] ='Ë', ['&Igrave;'] ='Ì', ['&Iacute;'] ='Í', ['&Icirc;'] ='Î', ['&Iuml;'] ='Ï', ['&ETH;'] ='Ð', ['&Ntilde;'] ='Ñ', ['&Ograve;'] ='Ò', ['&Oacute;'] ='Ó', ['&Ocirc;'] ='Ô', ['&Otilde;'] ='Õ', ['&Ouml;'] ='Ö', ['&times;'] ='×',
        ['&Oslash;'] ='Ø', ['&Ugrave;'] ='Ù', ['&Uacute;'] ='Ú', ['&Ucirc;'] ='Û', ['&Uuml;'] ='Ü', ['&Yacute;'] ='Ý', ['&THORN;'] ='Þ', ['&szlig;'] ='ß', ['&agrave;'] ='à', ['&aacute;'] ='á', ['&acirc;'] ='â', ['&atilde;'] ='ã', ['&auml;'] ='ä', ['&aring;'] ='å',
        ['&aelig;'] ='æ', ['&ccedil;'] ='ç', ['&egrave;'] ='è', ['&eacute;'] ='é', ['&ecirc;'] ='ê', ['&euml;'] ='ë', ['&igrave;'] ='ì', ['&iacute;'] ='í', ['&icirc;'] ='î', ['&iuml;'] ='ï', ['&eth;'] ='ð', ['&ntilde;'] ='ñ', ['&ograve;'] ='ò', ['&oacute;'] ='ó',
        ['&ocirc;'] ='ô', ['&otilde;'] ='õ', ['&ouml;'] ='ö', ['&divide;'] ='÷', ['&oslash;'] ='ø', ['&ugrave;'] ='ù', ['&uacute;'] ='ú', ['&ucirc;'] ='û', ['&uuml;'] ='ü', ['&yacute;'] ='ý', ['&thorn;'] ='þ', ['&yuml;'] ='ÿ', ['&euro;'] ='€',['&#039;'] = "'" , ['&#034;'] = '"', ['&amp;']='&'
        }
        for code, char in pairs(ascii) do 
            str = str:gsub(code, char )
        end
        return str
    end
end

--------------------------------------------
        if (item.isTimer) then
            for index,record in pairs(les_horoscopes) do-- On parcourt chaque horoscope
                device = record.device
                if device ~= nil and device ~= '' and dz.devices(device).name ~= nil then
                    logWrite('--- --- --- traitement '..device..'  --- --- --')
                    signe = record.signe
                    dz.openURL({--https://www.domoticz.com/wiki/DzVents:_next_generation_LUA_scripting#httpResponses
                        url = site_url..'/'..signe,
                        callback = signe
                    })
                end
            end --for
        end

        if (item.isHTTPResponse and item.ok) then
                    logWrite('--- --- --- traitement   --- --- --')
            for index,record in pairs(les_horoscopes) do-- On parcourt chaque horoscope
                device = record.device
                if dz.utils.deviceExists(record.device) then
                    logWrite('--- --- --- traitement '..device..'  --- --- --')
                    signe = record.signe
                    if item.trigger == signe then
                        logWrite('--- --- --- traitement signe '..item.trigger..'  --- --- --')
                        for instance in item.data:gmatch("<body>(.-)</body>") do
                            div, horoscope=instance:match('<h2>En résumé</h2>(.-)<p class="text">(.-)</p>')
                        end
                        horoscope = TronquerTexte(unescape(horoscope), 240)
                        logWrite(horoscope)
                        dz.devices(record.device).updateText(horoscope or 'Pas d\'horoscope aujourd\'hui') 
                    end
                end
            end --for
        end

     end
    }

Cordialement
lavinch31
Messages : 52
Inscription : 03 févr. 2020, 11:16

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par lavinch31 »

porto a écrit : 30 avr. 2020, 08:58
***Comment savoir quel type utiliser "Alert, Text, Rain ...." pour l' attribuer aux devices

Par exemple dans ce script :

horoscope.lua

Code : Tout sélectionner

--[[
name : horoscope.lua
auteur : papoo
Mise à jour : 31/03/2020
Création : 26/06/2016 =>V1.x https://github.com/papo-o/domoticz_scripts/blob/master/Lua/script_time_horoscope.lua
https://pon.fr/dzvents-horoscope-v2
https://easydomoticz.com/forum/viewtopic.php?f=17&t=9786
github : https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/horoscope.lua
Principe :
Le script vérifie toutes les x heures les horoscopes du site  https://astro.rtl.fr/horoscope-jour-gratuit/ 
signe par signe et mets à jour les éventuels devices texte associés sur domoticz
Le texte est tronqué à ~ 240 caractères pour ne pas surcharger l'affichage. Les caractères html sont convertis

]]--
local les_horoscopes = {
            { device = 'Horoscope 1',  signe = 'belier'},
            { device = 'Horoscope 2',    signe = 'capricorne'},
            { device = 'Horoscope 3',  signe = 'vierge'},
            { device = 'Horoscope 4',    signe = 'balance'},
                        }

local site_url  = 'https://astro.rtl.fr/horoscope-jour-gratuit'  -- url
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local scriptName        = 'Horoscope'
local scriptVersion     = '2.01'

return {
    active = true,
    on  =   {
        timer           =   { 'every 6 hours' },--https://www.domoticz.com/wiki/DzVents:_next_generation_LUA_scripting#timer_trigger_rules
        httpResponses   =   { 'belier','taureau','gemeaux','cancer','lion','vierge','balance','scorpion','sagittaire','capricorne','verseau','poissons' }    -- Trigger
        --httpResponses   =   { 'cancer','capricorne' }    -- Trigger
    },
     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)              -- Support function for shorthand debug log statements
            dz.log(tostring(str),level or dz.LOG_DEBUG)
        end
--------------------------------------------
        local function TronquerTexte(texte, nb)  -- texte à tronquer, Nb maximum de caractère
        local sep ="[?;!.]"
        local DernierIndex = nil
        texte = string.sub(texte, 1, nb)
        local p = string.find(texte, sep, 1)
        DernierIndex = p
        while p do
            p = string.find(texte, sep, p + 1)
            if p then
                DernierIndex = p
            end
        end
        return(string.sub(texte, 1, DernierIndex))
        end
--------------------------------------------
function unescape(str)--remplace le code html
    if (str) then
        local ascii =  {
        ['&nbsp;'] =' ', ['&iexcl;'] ='¡', ['&cent;'] ='¢', ['&pound;'] ='£', ['&curren;'] ='¤', ['&yen;'] ='¥', ['&brvbar;'] ='¦', ['&sect;'] ='§', ['&uml;'] ='¨', ['&copy;'] ='©', ['&ordf;'] ='ª', ['&laquo;'] ='«', ['&not;'] ='¬', ['&shy;'] ='­',
        ['&reg;'] ='®', ['&macr;'] ='¯', ['&deg;'] ='°', ['&plusmn;'] ='±', ['&sup2;'] ='²', ['&sup3;'] ='³', ['&acute;'] ='´', ['&micro;'] ='µ', ['&para;'] ='¶', ['&middot;'] ='·', ['&cedil;'] ='¸', ['&sup1;'] ='¹', ['&ordm;'] ='º', ['&raquo;'] ='»',
        ['&frac14;'] ='¼', ['&frac12;'] ='½', ['&frac34;'] ='¾', ['&iquest;'] ='¿', ['&Agrave;'] ='À', ['&Aacute;'] ='Á', ['&Acirc;'] ='Â', ['&Atilde;'] ='Ã', ['&Auml;'] ='Ä', ['&Aring;'] ='Å', ['&AElig;'] ='Æ', ['&Ccedil;'] ='Ç', ['&Egrave;'] ='È', ['&Eacute;'] ='É',
        ['&Ecirc;'] ='Ê', ['&Euml;'] ='Ë', ['&Igrave;'] ='Ì', ['&Iacute;'] ='Í', ['&Icirc;'] ='Î', ['&Iuml;'] ='Ï', ['&ETH;'] ='Ð', ['&Ntilde;'] ='Ñ', ['&Ograve;'] ='Ò', ['&Oacute;'] ='Ó', ['&Ocirc;'] ='Ô', ['&Otilde;'] ='Õ', ['&Ouml;'] ='Ö', ['&times;'] ='×',
        ['&Oslash;'] ='Ø', ['&Ugrave;'] ='Ù', ['&Uacute;'] ='Ú', ['&Ucirc;'] ='Û', ['&Uuml;'] ='Ü', ['&Yacute;'] ='Ý', ['&THORN;'] ='Þ', ['&szlig;'] ='ß', ['&agrave;'] ='à', ['&aacute;'] ='á', ['&acirc;'] ='â', ['&atilde;'] ='ã', ['&auml;'] ='ä', ['&aring;'] ='å',
        ['&aelig;'] ='æ', ['&ccedil;'] ='ç', ['&egrave;'] ='è', ['&eacute;'] ='é', ['&ecirc;'] ='ê', ['&euml;'] ='ë', ['&igrave;'] ='ì', ['&iacute;'] ='í', ['&icirc;'] ='î', ['&iuml;'] ='ï', ['&eth;'] ='ð', ['&ntilde;'] ='ñ', ['&ograve;'] ='ò', ['&oacute;'] ='ó',
        ['&ocirc;'] ='ô', ['&otilde;'] ='õ', ['&ouml;'] ='ö', ['&divide;'] ='÷', ['&oslash;'] ='ø', ['&ugrave;'] ='ù', ['&uacute;'] ='ú', ['&ucirc;'] ='û', ['&uuml;'] ='ü', ['&yacute;'] ='ý', ['&thorn;'] ='þ', ['&yuml;'] ='ÿ', ['&euro;'] ='€',['&#039;'] = "'" , ['&#034;'] = '"', ['&amp;']='&'
        }
        for code, char in pairs(ascii) do 
            str = str:gsub(code, char )
        end
        return str
    end
end

--------------------------------------------
        if (item.isTimer) then
            for index,record in pairs(les_horoscopes) do-- On parcourt chaque horoscope
                device = record.device
                if device ~= nil and device ~= '' and dz.devices(device).name ~= nil then
                    logWrite('--- --- --- traitement '..device..'  --- --- --')
                    signe = record.signe
                    dz.openURL({--https://www.domoticz.com/wiki/DzVents:_next_generation_LUA_scripting#httpResponses
                        url = site_url..'/'..signe,
                        callback = signe
                    })
                end
            end --for
        end

        if (item.isHTTPResponse and item.ok) then
                    logWrite('--- --- --- traitement   --- --- --')
            for index,record in pairs(les_horoscopes) do-- On parcourt chaque horoscope
                device = record.device
                if dz.utils.deviceExists(record.device) then
                    logWrite('--- --- --- traitement '..device..'  --- --- --')
                    signe = record.signe
                    if item.trigger == signe then
                        logWrite('--- --- --- traitement signe '..item.trigger..'  --- --- --')
                        for instance in item.data:gmatch("<body>(.-)</body>") do
                            div, horoscope=instance:match('<h2>En résumé</h2>(.-)<p class="text">(.-)</p>')
                        end
                        horoscope = TronquerTexte(unescape(horoscope), 240)
                        logWrite(horoscope)
                        dz.devices(record.device).updateText(horoscope or 'Pas d\'horoscope aujourd\'hui') 
                    end
                end
            end --for
        end

     end
    }
il faut fouiller dans le script, souvent l'info est dispo dans les commentaires du script.

en l’occurrence pour ce script l'info est au debut :

Code : Tout sélectionner

 .......mets à jour les éventuels devices texte associés sur domoticz........
Pi3b+ SSD
Zigbee Conbee II + Philips hue +Variateurs +smart buttons
Station meteo Netatmo
Plusieurs ESP8266 sous ESPEASY + DS18B20 + BMP280 +Relais
porto
Messages : 4
Inscription : 29 avr. 2020, 08:09

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par porto »

@lavinch31
Merci beaucoup pour cette aide precieuse.
L'apprentissage est surement long mais avec l'aide de la communauté on y prends gout :D
Beaucoup de scripts interessants
aspro
Messages : 16
Inscription : 01 oct. 2018, 09:54

Re: Aide noveau Domoticzien (alerteMeteoFrancePluie)

Message par aspro »

Hello, un grand merci pour ces échanges, je viens d'installer le tout et ça fonctionne bien.
Bon, j'avoue humblement que Alerte pluie n'a fonctionné qu'après de lonnnnnngues minutes où je me suis finalement aperçu que : "Alerte pluie" et Alerte Pluie", c'était pas totalement la même chose... no comment, merci :lol:
Répondre