+ Responder ao Tópico



  1. #1

    Padrão Preciso auxilio para alterar scrips voltmonitor RESOLVIDO

    Boa noite, pela primeira vez posto aqui em busca de auxilio para fazer uma alteração no script que encontrei para monitorar automaticamente a tensão das minhas rb433ah que são alimentadas por fontes de energia alternativas.
    Pesquisando encontrei os scripts voltreport e voltmonitor no seguinte endereço: Monitor input voltage on RB333/433AH - MikroTik Wiki
    segui os passos e funcionou sem problemas, mais gostaria de adequar eles a minha necessidade, pois quando recebo o e-mail com o log das tensões de hora em hora e minima e máxima os valores da tensão minima e máxima se referem ao tempo total desde que o script passou a ser rodado no sistema e gostaria que estes valores fossem referentes as tensões minimas e máximas somente do dia, mais não tenho noção de como chegar a este resultado.
    Agradeço qualquer ajuda, não tenho urgencia disto, mais gostaria de poder fazer desta maneira para porder ter uma noção melhor da capacidade de geração de energia que meu sistema tem.

    Seguem abaixo os scripts:
    voltmonitor
    Código :
    #set lowvoltalarm to desired alarm voltage in tenths of a volt. 125 = 12.5v
    :global lowvoltalarm 125
    :global highvolt
    :global lowvolt
    :global starttime
    :global hivolttime
    :global lovolttime
    :global vh
    :local thisbox [/system identity get name]
    :global voltage [/system health get voltage]
    :local thistime [/system clock get time]
    :local thisdate [/system clock get date]
    :local thishour [:pick $thistime 0 2]
    :local emessage ($thisbox . " voltage is " . [:pick $voltage 0 2] . "." . [:pick $voltage 2 3])
    :if ([:len $lowvolt] < 1) do={:set lowvolt 999; :set highvolt 0}
    # set your email address in the next line
    :if ($voltage <= $lowvoltalarm) do={/tool e-mail send to="[email protected]" subject="$thisbox low voltage" body=$emessage}
    :if ($voltage > $highvolt) do={:set highvolt $voltage; :set hivolttime ($thistime . " " . $thisdate)}
    :if ($voltage < $lowvolt) do={:set lowvolt $voltage; :set lovolttime ($thistime . " " . $thisdate)}
    :if ([:len $vh] > 0) do={:set vh ([:toarray $voltage] + $vh)} else={:set vh [:toarray $voltage]}
    :if ([:len $starttime] < 1) do={:set starttime ($thistime . " " . $thisdate)}
    :if ($thishour = "23") do={:execute voltreport}
    Voltreport
    Código :
    :global highvolt
    :global lowvolt
    :global hivolttime
    :global lovolttime
    :global starttime
    :global vh
    :local tvolt
    :local thisbox [/system identity get name]
    :local thisdate [/system clock get date]
    :local thishour
    :local emessage "Daily voltage report for $thisbox on $thisdate\n\n"
    :if ([:len $vh] > 0) do={
        :for x from=0 to=([:len $vh]-1) step=1 do={
            :set tvolt [:tostr [:pick $vh $x]]
            :set thishour [:tostr (23 - $x)]
            :while ([:len $thishour] < 2) do={:set thishour ("0" . $thishour)}
            :set emessage ($emessage . $thishour . ":00 = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] .  "\n")
        }
        :set emessage ($emessage . "\nSince voltmonitor started on " . $starttime . "\n")
        :set tvolt [:tostr $highvolt]
        :set emessage ($emessage . "Maximum = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] . "v at " . $hivolttime . "\n")
        :set tvolt [:tostr $lowvolt]
        :set emessage ($emessage . "Minimum = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] . "v at " . $lovolttime . "\n")
    # set email address in next line
        /tool e-mail send to="[email protected]" subject="$thisbox Voltage Report" body=$emessage
    }
    # remark out the next line for testing to avoid resetting the voltage array
    :set vh
    Última edição por py3sol; 31-08-2009 às 22:09. Razão: acrescentar os scripts

  2. #2

    Padrão

    Amigo, poste os scripts para a gente pode analizar !



  3. #3
    Moderador Avatar de minelli
    Ingresso
    Aug 2006
    Localização
    Pres. Venceslau - SP | Pres. Prudente - SP
    Posts
    1.408
    Posts de Blog
    10

    Padrão Analize

    Citação Postado originalmente por admskill Ver Post
    Amigo, poste os scripts para a gente pode analizar !
    Acho que é só analizar não é uma vez que já está postado e/ou com link para o local.

  4. #4

    Padrão Nenhuma novidade?

    Boa noite, ninguem tem uma idéia de como fazer esta alteração?



  5. #5

    Padrão

    Em linguagem lógica ficaria assim:
    inicio: data/hora -> datahorainicial
    cada leitura:
    (conteúdo atual do script)
    (se data/hora_atual > datahorainicial + 24h) { volt_min = 255 ; volt_max = 0 ; datahorainicial = data/hora_atual }

    Isso vai fazer com que a cada 24h a comparação recomeçe. O valor mínimo é grande para ser substituído, mesma idéia ao contrário vale para o máximo.

  6. #6

    Padrão

    Se você observar o código:
    Código :
    :local data
    :local hora
    :set data [/system clock get date]
    :set hora [/system clock get time]
    :local thishour [:pick $hora 0 2]
    :log info $data
    :log info $hora
    :log info $thishour

    Ele pega a data e a hora, então é para ele informar o dia e hora e não o total de dias.
    Quanto ao tempo de execução, dá uma olhada no howto:
    Código :
    http://wiki.mikrotik.com/wiki/Monitor_input_voltage_on_RB333/433AH#HowTo



  7. #7

    Padrão

    Citação Postado originalmente por rubensk Ver Post
    Em linguagem lógica ficaria assim:
    inicio: data/hora -> datahorainicial
    cada leitura:
    (conteúdo atual do script)
    (se data/hora_atual > datahorainicial + 24h) { volt_min = 255 ; volt_max = 0 ; datahorainicial = data/hora_atual }

    Isso vai fazer com que a cada 24h a comparação recomeçe. O valor mínimo é grande para ser substituído, mesma idéia ao contrário vale para o máximo.
    Bem esta eu juro que tentei entender mais não deu, sou leigo demais pra decifrar a resposta que voce me deu, até agora fico relendo os scripts mais não consigo entender que variavel determina a data de inicio voltmonitor, creio que se puder fazer com que ela seja zerada todos os dias as 00:00 horas consigo resolver o meu problema.

    Citação Postado originalmente por Raniel Ver Post
    Se você observar o código:
    Código :
    :local data
    :local hora
    :set data [/system clock get date]
    :set hora [/system clock get time]
    :local thishour [:pick $hora 0 2]
    :log info $data
    :log info $hora
    :log info $thishour
    Ele pega a data e a hora, então é para ele informar o dia e hora e não o total de dias.
    Quanto ao tempo de execução, dá uma olhada no howto:
    Código :
    http://wiki.mikrotik.com/wiki/Monitor_input_voltage_on_RB333/433AH#HowTo
    Ja esta resposta deve ser criptografada com chave de 256 bits, passou lotada, não consegui entender nada, muito menos quanto a sujestão de olhar o howto, acho que você não olhou os detalhes no link onde ta postado o script, mais valeu pela tentativa.

    Agradeço a ambos por responder ao meu tópico, e sigo aqui tentando uma solução pra fazer o script passar os relatorios de tensão máxima e minima diarios.

  8. #8
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Seria isto?
    /system schedule add name=voltmonitor on-event=voltmonitor start-time=00:00:00 interval=24h



  9. #9

    Padrão

    Citação Postado originalmente por py3sol Ver Post
    ...Ja esta resposta deve ser criptografada com chave de 256 bits, passou lotada, não consegui entender nada, muito menos quanto a sujestão de olhar o howto, acho que você não olhou os detalhes no link onde ta postado o script, mais valeu pela tentativa...
    Pena que sua inteligencia foi curta para entender o que eu quis dizer.

  10. #10

    Padrão

    Citação Postado originalmente por Raniel Ver Post
    Pena que sua inteligencia foi curta para entender o que eu quis dizer.
    Minha inteligencia é tão curta quanto a sua didatica, se eu não consegui entender, e você sabe o que tem que ser feito, poderia tentar me explicar, assim talvez eu entenda.



  11. #11
    Não Registrado
    Visitante

    Padrão Raniel

    Abro mão, pois minha intenção era ajudar, mas como já foi sendo rude com a resposta ao meu 1º post...

  12. #12

    Padrão

    não liga não ! aqui o pessoal é assim mesmo! Tem vários "Deuses" aqui que acham que dominam. mais tudo bem. Olha nunca tinha visto este script, porem acho que da pra vc resetar o contador dele a cada 24 horas. Tenho um script que localica alguma coisa no mikrotik e reset couter. Se interessar te passo depois...

    Falows..



  13. #13

    Padrão

    Citação Postado originalmente por byosni Ver Post
    não liga não ! aqui o pessoal é assim mesmo! Tem vários "Deuses" aqui que acham que dominam. mais tudo bem. Olha nunca tinha visto este script, porem acho que da pra vc resetar o contador dele a cada 24 horas. Tenho um script que localica alguma coisa no mikrotik e reset couter. Se interessar te passo depois...

    Falows..
    Olá Byosni, obrigado pela resposta, não conheço praticamente nada sobre os scripts do mk, estou tentando aprender um pouco ao menos pra poder me virar sozinho, fazer algumas alterações basicas sem precisar recorrer a ajuda dos foruns pra qualquer coisa simples, se voce puder posta o script pra mim dar uma olhada e ver se consigo entender e tirar proveito dele, e se você souber de algum link onde eu possa aprender mais sobre os comandos de script do mk agradeço de ante-mão.

  14. #14

    Padrão

    amigo, olha vc tera que adaptar esta regra. Tipo ela ira resetar o contador fazendo assim. primeiro ela localiza o comment da minha regra do que esta no ip firewall nat (a regra chama Avisos) depois ela reseta o contador (Reset Couter) depois ela habilita a regra novamente. Enão no seu caso é so vc trocar o endereço de onde esta a sua regra e o comentário dela também e adptar o script para você. A o script abaixo deve ser feito dentro do Sheduller do mikrotik e vc configura o tempo que ele deverá executar o Script.

    Você pode ver mais coisas de Mikrotik no meu blog. Esta no rodapé desta página. Obrigado.

    Código :
    /ip firewall nat { disable [ find comment=Aviso ] }; /ip firewall nat { reset-counters [ find comment=Aviso ] }; /ip firewall nat { enable [ find comment=Aviso ] }

    Até Mais....



  15. #15

    Padrão Resolvido o problema!

    Boa noite pessoal, problema resolvido com a simples adição destas duas linhas no final do script voltreport logo abaixo da ultima linha:
    :set higthvolt
    :set lowvolt


    Agradeço a todos que tentaram de alguma forma me ajudar.