Instalar Home Assistant em um SmartPhone Velho

Quando comecei a montar meus primeiros sonoff com a Alexa, comecei a pesquisar sobre o Home Assistant e outros softwares similares.

Vi que seria necessário ter um servidor para isso e como não tenho aqui nenhum RaspberryPi ou outro computador disponível para isso fui atrás de uma solução para rodar o HomeAssistant em um smartphone que está parado aqui e por isso em meados de agosto comecei meus testes e pesquisas e encontrei esse tópico que ensina a rodar homeassistant no termux

Assim como hoje resolvi atualizar o meu ambiente, fiz um backup das minhas configurações e comecei o processo de configurar do Zero novamente e escrever esse pequeno passo a passo para ajudar se mais alguém quiser se aventurar.

Recomendo instalar o Lineage OS(ou similar) e fazer o root, é só seguir os procedimentos para o meu smartphone, funcionará com a versão original do Android no seu smartphone, porém o root permite algumas coisas como o redirecionamento de portas, e assim conseguir usar a portas baixas como a 80 ou 443.

É necessário instar os seguintes Apps no android: Termux e o Termux-Api, os dois estão disponíveis para Google Play ou no F-Droid, mas instale sempre os dois do mesmo repositório.

Após instalar os apps abrir o termux e no terminal instalar o openSsh para facilitar a manutenção do servidor e dos procedimentos abaixos:

#instalar o openssh
pkg install openssh

#reiniciar a senha para conectar remotamente no ssh
passwd

Continue os próximos passos no ssh(porta 8022) ou pelo próprio terminal

#atualize os repositórios e pacotes do termux
pkg update
pkg upgrade

Instalar os pacotes necessários:

#instalar pacotes
pkg install python coreutils nano clang mosquitto nodejs openssh termux-api libjpeg-turbo

#Comando para não deixar o termux ser fechado e continuar a execução em segundo plano.
termux-wake-lock

Testar o mosquitto

#Executar o Mosquitto para testar:
mosquitto

Em seguida encerrar o mosquitto apertando ctrl+c

Instalar o Home Assistant:

#instalar HA em um Virtual Enviroment
python3 -m venv homeassistant
cd homeassistant
source bin/activate
python3 -m pip install wheel
python3 -m pip install Pillow
python3 -m pip install homeassistant

#executar o Home Assistant
hass

Se tudo funcionou ao acessar o navegador com o IPDOCELULAR:8123 você irá acessar a interface do hass, volte ao terminal e encerre o hass apertando ctrl+c

Configurar o Home Assistant como serviço

#instalar pm2

npm i -g --unsafe-perm pm2

#usar o pm2 para iniciar os serviços

pm2 start /data/data/com.termux/files/home/homeassistant/bin/hass --interpreter=/data/data/com.termux/files/home/homeassistant/bin/python -- --config /data/data/com.termux/files/home/.homeassistant/

pm2 start mosquitto -- -v -c /data/data/com.termux/files/usr/etc/mosquitto/mosquitto.conf

Comandos para usar com o PM2

#salvar configuração serviços
pm2 save

#comando para carregar configuração salva
pm2 resurrect

#Verificar o status dos serviços
pm2 status

#iniciar Serviço
pm2 start <servico>

#parar Serviço
pm2 stop <servico>

Opcional: Instalar Node-Red

#instalar node-red
npm i -g --unsafe-perm node-red
#iniciar serviço
pm2 start node-red --node-args="--max-old-space-size=128" -- -v

Limitações: Só executa o home-assistant core

Espero que ajude alguém e em caso de dúvidas tentarei ajudar no que puder.

5 Likes

Parabéns pela iniciativa! :clap: :clap: :clap:

1 Like

Complementando: Quem fizer root e tiver o lineage OS segue um exemplo de comando para redirecionar portas.

Como os aplicativos Android não podem escutar nas portas baixas aqui tenho a emulação do hue rodando na porta 9080. Porém a Alexa só conecta nos dispostivos hue pela porta 80 assim com o Iptables eu redireciono as conexões da porta 80 do meu celular para a porta 9080.

Dentro do terminal do Termux digite o comando
su
Em seguida será aberto o terminal com permissões de root no android, só executar o comando abaixo que você irá passar a redirecionar todas conexões na porta 80 do seu celular para porta 9080

iptables -A PREROUTING -t nat -p tcp -i wlan0 --dport 80 -j REDIRECT --to-ports 9080

1 Like

Bom dia meu amigo, @Fbsouza primeiramente meus parabéns pelo tópico, estou começando nessa jornada agora em casa tenho alguns equipamentos inteligente e não conhecia o home assistant e seguindo o seu tutorial eu instalei em um smartphone e consegui integrar com o tuya a pergunta seria o seguinte os demais programas ,apps tipo o Samba eu teria que instalar via Termux por repositórios? Tem algum tópico que eu encontre as linhas de comando aqui no fórum? Obrigado.

Boa tarde @Wil!

Eu não utilizo o SAMBA no meu ambiente.
Qual seria a intenção de uso com o Samba? Montar um servidor de arquivos, acessar compartilhamentos remotos, transferir arquivos com o smartphone?

De qualquer maneira o termux tem o pacote do samba no repositório, porém ele ainda é considerado instável, sei que também existe app para android que fazem essa função de servidor e acessar compartilhamentos remotos.

O problema do termux é que alguns pacotes já bem comuns em qualquer distribuição linux, podem não ser compatíveis ainda com o termux, um exemplo é que tentei há uns meses atrás tentar colocar o cups no smartphone mas infelizmente o pacote ainda está instável e não está funcionando direito.

Para transferir arquivos para o celular eu utilizo o winscp, que é um programa que faz a interface gráfica para o scp sobre o SSH.

Para o termux creio que você não irá encontrar comando especifico para isso aqui no fórum, mas em geral se existe o pacote no termux os comandos que funcionariam em qualquer outra distribuição linux tem grande chances de funcionar no termux.

1 Like

@Fbsouza acessar a pasta config vc acessa e edita pelo Termux

sim, faço tudo via ssh no computador para não ter que ficar digitando direto no celular.

No terminal eu utilizo o comando abaixo para editar os arquivos de texto.
nano <nomedoarquivo>

Se fosse não estiver familiarizado com o terminal para você será mais fácil usar o winscp
Download:


Tutorial de como acessar :

Só trocar as informações de hostname para o IP do seu celular e a porta para 8022

1 Like

@Fbsouza Muito obrigado

Pra quem tá com dificuldade de fazer o SSH no putty pelo computador, segue um passo a passo que pra mim deu certo.
Digite os comandos a seguir no Termux, em ordem:

  • pkg update
  • pkg upgrade
  • termux-setup-storage
  • pkg install openssh
  • ssh-keygen
  • cd $HOME/.ssh
  • cat id_rsa.pub >> authorized_keys
  • chmod 700 $HOME/.ssh/*
  • cp id_rsa /sdcard
  • sshd

Depois disso conecte o celular no PC pelo cabo USB.

  1. Vá na pasta principal do celular e copie o arquivo “id_rsa” pra uma pasta do seu PC;
  2. Abra o Putty, coloque o endereço IP do celular, e a porta 8022
  3. Ainda no Putty, no lado esquerdo vá em Connection > SSH > Auth > Clique no botão Browse e selecione o arquivo “id_rsa”. Clique no botão OPEN para abrir a conexão.
  4. Vai abrir uma janela, apenas confirme a conexão e pronto.
  5. Para o usuário não escreva nada, apenas aperte enter.
  6. Coloque a senha que vc definiu anteriormente.
    obs: Se vc não alterou a senha antes, volte ao termux e digite “passwd” e escolha uma nova senha.
2 Likes

Pessoal que está usando o HA no celular, conseguiram fazer os dispositivos Tasmota conectar ao HA pelo MQTT? Segui o passo instalei o mosquitto no celular, integrei ao HA mas o meu sonoff com tasmota não conecta de jeito nenhum! Testei com um outro MQTT e funcionou normalmente, mas no instalado no celular não funciona.

@miltonnnotforyou no meu aqui está funcionando normal, só tenho um dispositivo segue o print dos logs do meu mosquitto.

image

Se estiver usando o pm2 use o comando abaixo para ver os logs.

pm2 logs mosquitto

Segue o trecho da minha configuração:

switch:
  - platform: mqtt
    name: "Celular"
    state_topic: "stat/Teste/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/Teste/POWER"
    payload_on: "ON"
    payload_off: "OFF"
    availability_topic: "tele/Teste/LWT"
    payload_available: "Online"
    payload_not_available: "Offline"
    qos: 1
    retain: false

Aqui só tenho 1 sonoff mini com tasmota, não fiz nos outros minis pois o custom component sonoffLAN funcionou bem.

O meu mosquitto está com a configuração padrão, e no home assistant na integração coloquei o broker com o ip 127.0.0.1

Se fosse tiver feito alguma configuração diferente, teste ele com a configuração padrão do mosquitto.

1 Like

Fbsouza O Meu log tem uma diferença tem a linha
Starting in local only mode. Connections will only be p ossible from clients running on this machine.

Acho que ai está o problema. Mas eu fiz a instalação igual ao do Tutorial, Sabe me dizer como consigo arrumar isso?
Desde já agradeço o tempo e atenção

Minha versão do Mosquitto estava diferente da sua, atualizei aqui agora e tive o mesmo problema:

Para resolver edite o arquivo /data/data/com.termux/files/usr/etc/mosquitto/mosquitto.conf abaixo da linha #listener inclua a seguinte linha
listener 1883 0.0.0.0

E caso você não esteja utilizando usuário e senha no mqtt adicione a linha abaixo logo após a linha: #allow_anonymous false

allow_anonymous true

Eu fiz essas alterações no arquivo, depois disso o log do mosquitto ficou assim:

Mas o tasmota continua não conectando, dá a mensagem: Connect failed to 127.0.0.1:1883

No tasmota você tem que configurar com o ip do seu celular, o 127.0.0.1 só funciona para os serviços rodando dentro do próprio celular como home assistant.

Como o tasmota roda em outro dispositivo você tem que usar o ip 192.x.x.x ou 10.x.x.x

Já tentei também com o IP do celular e não funcionou, fica com o mesmo erro Connect failed to…, não sei mais o que pode ser.
Considerei ser problema no sonoff mini com tasmota, mas fiz testes com o broker rodando por fora e conectou normalmente. Somente no Mosquitto instalado no celular igual o do tutorial que ele não conecta.
Olha como esta configurado no Tasmota. Obs.: também já tentei sem usuário e senha:

Houve alguma mudança nos logs do mosquitto no celular?

Se possível cole o seu arquivo de configuração do mosquitto e o arquivo de logs /data/data/com.termux/files/home/.pm2/logs/mosquitto-error.log

Não consegui pegar o arquivo de logs /data/data/com.termux/files/home/.pm2/logs/mosquitto-error.log deu Permission denied
Segue as configurações do Mosquitto: