Índice:

Inversor Omnik desligado na nuvem e no meu MQTT: 3 etapas (com imagens)
Inversor Omnik desligado na nuvem e no meu MQTT: 3 etapas (com imagens)
Anonim
Inversor Omnik desligado na nuvem e no meu MQTT
Inversor Omnik desligado na nuvem e no meu MQTT
Inversor Omnik desligado na nuvem e no meu MQTT
Inversor Omnik desligado na nuvem e no meu MQTT

Tenho uma instalação de energia solar usando um inversor de string Omnik. Omnik é um fabricante de inversores fotovoltaicos com base na China e eles são dispositivos extremamente eficientes. Opcionalmente, você pode instalar um módulo WiFi para torná-lo "conectado". Estou muito satisfeito com o dispositivo, com duas exceções notáveis.

  1. Ele "liga para casa" com um serviço de nuvem com base na China e, desde que o dispositivo esteja conectado à Internet, não pode ser desligado. Eu não gosto disso.
  2. O inversor não tem API documentada decente (nem serviço em nuvem). Como os dispositivos de automação residencial e IoT estão gravitando em direção às mensagens MQTT, eu queria enviar mensagens MQTT.

Para este projeto, que resolve os dois problemas, recorremos ao nosso amigo exigente, mas confiável, o ESP8266. Eu usei um Wemos D1, mas qualquer encarnação que você quiser pode ser usada. O plano é:

  1. Não fornecer ao módulo WiFi do inversor quaisquer credenciais para a rede WiFi doméstica. Isso resolve o problema 1.
  2. Permita que o Wemos se conecte periodicamente ao Ponto de Acesso do Inversor para adquirir os dados que desejamos. Podemos usar o protocolo não web de engenharia reversa para isso. Usei esse código como ponto de partida.
  3. Em seguida, desconecte, conecte-se à rede doméstica e publique esses dados como uma mensagem MQTT.

Nossa lista de materiais é extremamente simples:

  • Um Wemos D1, para ser adquirido através do site Wemos ou do seu site de leilões preferido;
  • Uma fonte de alimentação USB com um mini cabo USB.

Não há necessidade de fiação alguma. O custo é inferior a 10 euros.

Eu suponho que você já tenha

  • um inversor Omnik com um módulo WiFi instalado;
  • uma infraestrutura MQTT (broker, painel);
  • uma versão recente do Arduino IDE com suporte para o processador ESP8266 instalado.
  • alguma familiaridade com o acima.

Existem alguns instructables sobre MQTT e como usar o IDE do Arduino para um processador ESP8266, mas sinta-se à vontade para perguntar na seção de comentários.

Etapa 1: desconecte o Omnik da Internet permanentemente

Desconecte o Omnik da Internet permanentemente
Desconecte o Omnik da Internet permanentemente

Se, como eu, você tinha o inversor conectado à sua rede WiFi, é surpreendentemente difícil desconectá-lo. Qualquer alteração feita nas configurações de WiFi é verificada antes de ser aplicada. Em vez de passar por obstáculos como alterar a senha de criptografia do roteador e do inversor e, em seguida, alterar novamente o roteador, decidi adotar uma abordagem mais limpa e começar do zero.

Vá para o inversor e execute as seguintes ações:

  • pressione o botão Para baixo até que Set pisque e pressione Enter
  • Pressione o botão Para baixo até que o WiFi pisque e pressione Enter
  • Pressione o botão Para cima para que Sim pisque e pressione Enter

Conecte ao inversor

Abra o seu computador e encontre uma rede WiFi chamada AP_xxxxxxxx, os dígitos de apresentação do x. Conecte-se a ele. Dependendo do sistema operacional, você pode primeiro precisar fazê-lo "esquecer" essa rede, caso já tenha se conectado a ela antes, pois agora uma possível senha WiFi armazenada desapareceu.

Proteja o ponto de acesso do inversor

Uma vez conectado, abra seu navegador, digite 10.10.100.254 e pressione Enter. Um pop-up de login aparecerá. Digite admin em ambos os campos para fazer login. NÃO siga o assistente e configure o ponto de acesso. Clique em Avançado no menu à esquerda e no submenu Ponto sem fio.

Faça as seguintes alterações:

  • Método de criptografia para WPA2PSK
  • Tipo de criptografia para TKIP
  • Digite uma senha WiFi. Anote a senha, você precisará dela para se conectar ao inversor em breve.

Clique em Salvar e o módulo WiFi será reiniciado. Você perderá a conexão, pois agora exige a senha. Reconecte e digite a senha do WiFi. Mais uma vez, pode ser necessário fazer com que seu PC "esqueça" a rede AP_xxxxxxxx primeiro. Agora você deve estar conectado ao inversor novamente por meio de um link WiFi seguro.

Proteja as páginas de configuração do inversor

Abra seu navegador, digite 10.10.100.254 e pressione Enter novamente. Um pop-up de login aparecerá. Novamente digite admin em ambos os campos para fazer o login. Clique em Conta no menu à esquerda. Altere o nome de usuário e a senha para duas strings exclusivas e não triviais. Você terá que inserir ambos duas vezes. Escreva-os. Clique em Salvar e o módulo WiFi será reiniciado. Aguarde alguns segundos e recarregue a página. Verifique se agora você precisa do novo nome de usuário e senha para abrir as páginas de configuração. Seu inversor agora tem uma camada extra de segurança contra alterações feitas por estranhos.

Isso conclui todo o trabalho que deve ser feito no inversor. Ele agora está desconectado da Internet, razoavelmente seguro, mas ainda atua como um ponto de acesso WiFi que podemos usar para consultá-lo.

Etapa 2: Baixe e configure o software para o Wemos D1

Baixe e configure o software para o Wemos D1
Baixe e configure o software para o Wemos D1

Baixe o software do Wemos. Você pode encontrar o código aqui. Você precisa fazer algumas alterações para configurá-lo para sua rede doméstica e seu inversor

  • homeSsid: o nome da sua rede WiFi doméstica
  • homePassword: a senha da sua rede WiFi doméstica
  • omnikSsid: o nome da sua rede WiFi Omnik. Deve ser semelhante a AP_xxxxxxxxx
  • omnikPassword: a senha de sua rede Omnik WiFi que você atribuiu na etapa anterior
  • omnikIP: o endereço IP do inversor. É sempre {10, 10, 100, 254}
  • omnikCommand: a string de bytes necessária para consultar o seu inversor, veja abaixo.
  • mqtt_server: o nome do host do seu corretor MQTT
  • mqtt_port: o número da porta TCP, geralmente 1883 para conexões inseguras ou 8883 para conexões seguras (SSL)
  • mqtt_username e mqtt_password: as credenciais para seu corretor MQTT
  • mqtt_clientID: insira alguns dígitos aleatórios aqui
  • mqtt_outTopic: o tópico das mensagens MQTT.

A matriz de bytes omnikCommand é específica para seu inversor individual. Publiquei uma pequena ferramenta como uma planilha do Google para calcular a string. Você precisa inserir o número de série (cerca de 10 dígitos decimais) na célula B1 e usar a string calculada na célula B4 em seu esboço.

Para compilar o código com êxito, você também precisa da biblioteca PubSubClient.h. Certifique-se de que a placa adequada (Wemos D1) e a porta estejam selecionadas e, em seguida, carregue o esboço para a placa. Você pode colocar a pequena placa Wemos em um pequeno recipiente de plástico para proteção e conectá-la à fonte de alimentação USB. Coloque-o em algum lugar não muito longe do inversor e do roteador WiFi e pronto!

O loop principal no software se conecta ao WiFi do inversor, em seguida, faz uma conexão TCP com ele, lê os dados, desconecta, conecta à rede WiFi doméstica e, em seguida, ao corretor MQTT e publica os dados reformatados lá. Leva menos de 15 segundos para fazer tudo isso conectar e desconectar. Depois disso, há um atraso de 20 segundos, portanto, os dados devem ser publicados aproximadamente a cada 35 segundos.

Etapa 3: algumas palavras sobre as mensagens, o corretor e os testes

Algumas palavras sobre as mensagens, o corretor e os testes
Algumas palavras sobre as mensagens, o corretor e os testes
Algumas palavras sobre as mensagens, o corretor e os testes
Algumas palavras sobre as mensagens, o corretor e os testes
Algumas palavras sobre as mensagens, o corretor e os testes
Algumas palavras sobre as mensagens, o corretor e os testes

O código gera um pouco de dados de depuração, então se algo não estiver funcionando, simplesmente conecte o WeMos ao seu PC novamente, inicie o IDE do Arduino e pressione CTRL + SHFT + M para iniciar um console serial. Certifique-se de que a velocidade esteja definida para 115200.

Você pode usar seu próprio corretor ou usar um serviço baseado em nuvem. Eu corro o meu próprio Mosquitto instalado no meu Synology NAS. Se você estiver bem com um serviço de nuvem, pode usar Adafruit ou Amazon AWS ou qualquer outro.

As mensagens são strings JSON formatadas assim:

Na inicialização, a seguinte mensagem é publicada:

Isso pode ser usado para detectar reinicializações inesperadas.

As mensagens normais são assim:

Potência em watts, tensões em Volts, correntes em Amps, frequência em Hertz, Energia em quiloWatthours e temperatura em graus Celsius.

Eu uso mosquitto_sub para verificar as mensagens.

mosquitto_sub -h hostname -t "Solar / Omnik" -u usuário -P senha -p 1883 -v

Veja a captura de tela para os resultados. Todas as mensagens são publicadas com o sinalizador de retenção definido como verdadeiro.

No meu telefone, uso um aplicativo chamado MQTT Dash e incluí uma impressão de tela e o que inserir para mostrar o botão de energia verde.

Recomendado: