DataSource SQL - Problema no restart do DB

Mais um vídeo problema, rs, creio que isso ajuda a galera a construir seus supervisórios, após eu conseguir o árduo trabalho de integrar 2 Scada’s, tive outro problema, o banco de dados MySQL não está configurado para ligar automaticamente, porém o ScadaBR está configurado para ligar com o PC, logo, todo dia eu preciso ir no DataSource SQL e desabilitar e habilitar ele para que ele volte a ler, porque quando dou STOP e START no LAMPP ou seja, reinicio o Banco de Dados a leitura pára.

Nesse vídeo mostro o meu sisteminha funcionando e o problema e como faço para voltar a funcionar, minha pergunta é, não tem como fazer isso automático? E se o DB SQL parar e voltar a funcionar por algum problema, não vai mais ler, deve ser um bug, será que tem como criar um Detector de Eventos que analisa quando o DB SQL sai fora e volta para eu poder desabilitar e habilitar o DataSource SQL?
E por fim, perceberam no vídeo que o iPHC precisa de um F5 (reload) para perceber as alterações, alguém sabe como deixar isso automático em PHP?

PS.: Por fim, não tem muito a ver mas… alguém aqui já mexeu com o “Google CODE” e o “SVN” parece que eles trabalham juntos e é muito bom para programadores que trabalham juntos no mesmo projeto, mostra só as modificações que cada um fez e quando, não achei muita a ajuda para começar a usá-lo.

?

Oi Fabio eu não fui muito a fundo nisso,

mas sobre o mysql eu acho que o LAMP é legal para começar e pegar o ritmo, mas depois vc pode migrar para uma instalação manual do mySQL, ou então pelo menos baixar o MySQL para Windows (installer) e colocá-lo pra rodar no modo como serviço, assim vai funcionar legal, senão o local para perguntar é no fórum do LAMP mesmo.

no PHP vc pode colocar no header html uma tag META REFRESH com tempo igual ao que vc precisa (60 segundos, 15 segundos que vc precisar)

Tem gente que não recomenda essa técnica então quem sabe vc tenta um javascript, faz um sleep de alguns segundos e depois seta o ‘document.location’ que é equivalente a chamar novamente a página. bom aqui o cara mostra algumas formas de forçar um reload em javascript, apenas tire do “button” e coloque em outro trecho de codigo para rodar sempre.
http://www.delphifaq.com/faq/javascript/f1162.shtml

outro jeito mais legal (mas sei que ainda assusta um pouquinho) é AJAX ou a propria API webservices. depende quanto vc quer se aprofundar em programação para web, e quanto tempo vc quer dedicar na parte de automação…

outra coisa, teus videos do scadabr são show de bola, mas agora fez falta a musiquinha hahah
bom, esperamos poder responder tuas duvidas no mesmo ritmo “frenetico” que vc desenvolve com o scadabr, qualquer coisa estamos aí

um abraço

Oi Fabio,

Vendo o video de novo (em primeiro lugar, a musica funcionou, era o meu alto falante hahah), daí eu lembrei que respondi como se fosse no Windows mas o teu é o bom e velho Pinguim.

*** BD automatico
Se nao tiver a opção de “iniciar automaticamente” no XAMPP, veja se consegue instalar o mysql pelo gerenciador de pacotes (pela interface gráfica mesmo ou então pelo apt-get), daí ele fica como serviço (daemon) e roda com o boot do linux, apenas preste atenção pois poderá ter que importar/exportar a base de dados, ver o nome do BD e portas, etc.

*** start/stop do BD
Pode ser bug sim, nao sei como está o codigo do SQL datasource mas acho que ele realmente “desarma” se der erros nas consultas… mas tem um jeito de fazer start/stop via script (veja a seguir)

*** start/stop do datasource
Um dos novos comandos do “Scripts” é habilitar e desabilitar o datasource. O melhor é consertarmos esse comportamento no ScadaBR, mas até lá vc pode agendar um script para rodar “de vez em quando”, e que faça o seguinte:

  1. pega o valor da última leitura do datapoint e vê se está muito atrasado (veja no seu video já é 18:54, e o último valor do datapoint ainda está em 18:53, portanto deve ter caído a base). Para fazer isso nos scripts vc pode adicionar um datapoint como “pontos no contexto”, e usar a mesma sintaxe dos “meta data sources” para ler o horário da última leitura.

  2. na parte “objetos de contexto” do script, vc cria um apelido para o “Data Sources”, por exemplo “ds”, e usa esses comandos para ligar e desligar se faz muito tempo desde a última leitura:

ds.enableDataSource(xid);
ds.disableDataSource(xid);

eu acho um pouquinho de gambiarra, mas veja se isso te atende, e vamos olhar esse bug no datasource SQL.

*** sobre o SVN a gente usa sim, via sourceforge, é um pouco diferente do Google code mas tem as mesmas funcionalidades…

um abraço

Oi Victor, como está?

Demorei para responder, então, tinha como deixar em modo automático o DB, é que faço os testes na minha máquina que é mais rápida para depois fazer as alterações no servidor que é mais lento, na minha máquina não estava automático, aí tornei automática a inicialização e resolveu o problema, mas… parece que o problema é no ScadaBR, fiquei interessado nesse script de contorno do problema.

O que foi explicado sobre desabilitar/habilitar data source e criação de script eu já sei fazer, só o que não sei é como faria para pegar o tempo de leitura. Estava olhando no site da CERTI, me parece que tem 2 parâmetros que podem ser usados, não entendi muito bem a diferença deles, um é o realStart e outro é o end.

Bom, então a sintaxe seria algo do tipo?

------------ÍNICIO SCRIPT----------------------------

A = variavel.end;
// Qual é o formato que este comando me retorna o tempo, seria algo tipo HH:MM ou HH:MM:SS ou será que deveria trocar o .end por .getTime()?
B = new Date().getTime();
C = B - A;
// Já usei esse getTime para comparar 2 getTimes onde sei que a diferença entre eles era dada em milisegundos, aqui se manteria isso?

if (C > 2000) // se essa diferença não for dada nesse formato de ms como seria a comparação?
ds.disableDataSource(xid)
ds.enableDataSource(xid);
;
------------FIM SCRIPT----------------------------

A idéia é interessante, agora fiquei curioso, ainda tenho a idéia de criar um scripting para ser acionado por um botão, para substituir os botões de link, como já tinha relatado, eu tenho um problema, tenho 4 formas de acessar a mesma tela de supervisório, pois o servidor tem 2 placas de rede, uma com IP da clase 172.xxx.xxx.xxx (acesso interno da instituição) e outra com IP da classe 200.xxx.xxx.xxx (acesso externo da instituição). Os botões de link que criamos no ScadaBR só permitem redirecionar de uma forma, porém se eu acessar externamente o supervisório, utilizando o IP 200.XXX.XXX.XXX e tiver um botão de link com endereço 172… não vai funcionar, tb tem o problema da public view, se o link redireciona para página protegida e tiver usando public view, vai dar erro.

Bom, quem tiver disposto a ajudar a criar este scripting, creio que vai ajudar muita gente, mesmo que o scripting ainda fique algo caseiro e seja necessário a configuração no braço de link por link, já vai ajudar muito, pois mesmo que o pessoal utilize só um IP, ainda vão ter o problema da public view com os links.

Abraço e vem 0.9.1! kkkk

Olá, tive dúvidas porém consegui resolver e vim compartilhar. Os Scriptings só são acionados via botão na tela gráfica, precisava que pelo SQL eles fossem acionados diretamente, então descobri uma forma fácil:

1 - Quando um datapoint SQL assume o valor 1, no meu caso “on”, ele cria um evento que aciona o Scripting. Para isso vá na “Watch List”, adicione seu datapoint SQL na Watch List, clique no botão “Detalhes do DataPoint” e depois do lado esquerdo clique em “Editar DataPoint”, do lado direito vai aparecer “Detectores de Evento”, escolha um do tipo “Estado” e coloque o nome e o estado que deseja, eu coloquei o estado “on” e 0 segundos, coloquei para não gerar alarme. Feito isso, no menu superior clique em “Tratadores de Eventos”, aí, abaixo do desenho do sino “Detectores de Evento” vai estar o evento que criou para o DataPoint, clique no “+” e no evento que criou, vai aparecer uma janela para Tratar o Evento, escolha o Tipo “Script” e aí é com vc, eu escolhi um Scripting para ser usando quando o estado fosse Ativo, quando inativo não coloquei nada, blz, agora sempre que o data point SQL assume o estado “on” ele inicia o Scripting.

2 - Agora o problema é a volta, quando o Scripting for acionado diretamente no botão eu queria que ele avisasse mudando o estado do SQL, isso é mais fácil, é só colocar dentro do Scripting a linha “dp.writeDataPoint(‘DP_350022’,‘on’)” onde “dp” é o nome que dei ao DataPoint em “Comandos para DataPoint” e DP_350022 é o XID do Datapoint SQL.

Blz, funcionou bunitin…

ABraço!!!

Bom dia Fábio, sabes em quais tabelas no MySQL ficam salvos os valores de data points? Estou querendo realizar consulta através do data source SQL, porém não achei qual tabela armazena os valores.

Grato.

Olá Álvaro,

Se não estiver muito enganado os valores ficam em uma tabela chamada “pointValues”, mas para que você precisa acessar do ScadaBR via SQL a base do próprio ScadaBR?

Boa tarde Fábio, eu gostaria de criar uma tela de representação gráfica, a qual o usuário poderá pesquisar valores dos data points, exemplo, data point corrente, data point temperatura, de datas anteriores,

Obrigado.

Opá Alvaro ,blz?
A sua idéia seria deixar um campo de busca ?
Ex.: vc quer visualizar um gráfico do dia “X” ao dia “Y” ?

Boa tarde Tarcísio, eu gostaria de fazer caixas de seleção, por exemplo, uma caixa de seleção a qual eu seleciono o data source (que no meu caso são CLP’s), em seguida uma outra caixa de seleção a qual eu selecionaria o data point, por fim, selecionaria data e horado intervalo de pesquisa. A pesquisa seria realizada após o click em um botão. Seria algo semelhante ao que se faz na watch list, porém fazer isso em uma tela para o usuário final.

Boa tarde, estou tendo problemas pra logar no ScadaBR. Quando reinicio o windows, que está em um servidor, o ScadaBR da erro 404:

tenho tentado dar restart no DB mariadb e tem dado problema. como devo proceder?

Essa estação do ScadaBR 1.1 está instalada em um VPS, com Java8 e TomCat8 e HeidiSQL.
O Problema é o seguinte: primeiramente o espaço em disco rígido tinha lotado, então apaguei os arquivos catalina para liberar espaço, a partir de então apareceu este erro, até que eu reiniciei o VPS e o ScadaBR voltou ao normal.
Agora , eu e @Jonathanl.Avila estamos trabalhando juntos nessa aplicação e após criarmos 6 DataSources e aproximadamente 80 DataPoints com 40 Alarmes o Scada travou e não atualizava as páginas, então decidimos dar restart no TomCat8 , a partir de então ele passou a dar essa mensagem.
Acredito que possa ser problemas de Restart do MariaDB , @fabiodurao teria uma solução para este problema?

Obs.: Quando tentamos Startar o HeidiSQL, ele informa uma mensagem:

SQL Error: can’t connect to MySQL server on ‘localhost’ (10061)

Se alguém puder ajudar ficarei grato.

Se tiver alguma solução melhor ficarei grato, pois ao total apenas nessa aplicação terei que criar 35 datasource e aproximadamente 300 datapoint com 200 alarmes, e tempo de aquisição de dados em media 60 segundos, este problema está me preocupando pois estou com medo de continuar travando de acordo com o acréscimo das db’s.

Att Tarcísio Alves