Instalar Home Assistant em um SmartPhone Velho!

atencao ATENÇÃO! NÃO É RECOMENDADA A INSTALAÇÃO DO HA EM SMARTPHONES!

ESSE MÉTODO NÃO É OFICIAL E NÃO EXISTE SUPORTE OFICIAL PARA INSTALAÇÃO EM SMARTPHONES. PODE APRESENTAR LENTIDÃO NO SISTEMA, TRAVAMENTOS, INCOMPATIBILIDADES COM DIVERSOS COMPONENTES PERSONALIZADOS. ALÉM DO USO DO HOME ASSISTANT CORE QUE PERDE ACESSO A ADD-ONS, BACKUPS E AO SUPERVISOR.
SIGA POR SUA CONTA EM RISCO.
A EQUIPE DO FÓRUM HOME ASSISTANT BRASIL NÃO SE RESPONSABILIZA POR PROBLEMAS.

atencao

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. Com o home assistant core você perde o acesso a add-ons, backups e ao supervisor. Sem o supervisor você perde atualizações de sistema, sem ele você precisa instalar as atualizações manualmente.

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

7 curtidas

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 curtida

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 curtida

@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 curtida

@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 curtidas

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 curtida

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:


Consegui seguir todos os passos e está rodando aqui, mas não consigo instalar integrações, alguma dica? Fica instalando por horas, e há alguma forma de ter acesso a tab supervisor ou algo parecido? Quero ligar minhas cameras nele, o onvif não instala tbm.

Olá, boa noite, Eu consigo fazer a instalação no meu celular pessoal, que uso no dia a dia? Ou teria algum problema? Tem que ser um celular que irá ficar parado apenas para o Home Assistant?

Consegui instalar tudo certinho, deu certo login e senha, porem quando vai configurar a timezone não passa. Já testei com várias. Precisa fazer alguma coisa para conseguir configurar?

Failed to save: Invalid time zone passed in. Valid options can be found here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones for dictionary value @ data[‘time_zone’]. Got ‘America/Sao_Paulo’

Acredito que tenha dado problema na execução

Bloco de Citação
2021-07-06 22:03:57 ERROR (MainThread) [homeassistant.setup] Setup failed for dhcp: unknown error
Traceback (most recent call last):
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/homeassistant/setup.py”, line 200, in _async_setup_component
component = integration.get_component()
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/homeassistant/loader.py”, line 490, in get_component
cache[self.domain] = importlib.import_module(self.pkg_path)
File “/data/data/com.termux/files/usr/lib/python3.9/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1030, in _gcd_import
File “”, line 1007, in _find_and_load
File “”, line 986, in _find_and_load_unlocked
File “”, line 680, in _load_unlocked
File “”, line 850, in exec_module
File “”, line 228, in _call_with_frames_removed
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/homeassistant/components/dhcp/init.py”, line 17, in
from scapy.arch.common import compile_filter
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/arch/init.py”, line 135, in
_set_conf_sockets() # Apply config
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/config.py”, line 618, in _set_conf_sockets
conf.ifaces.reload()
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/interfaces.py”, line 238, in reload
self._reload_provs()
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/interfaces.py”, line 234, in _reload_provs
self._load(prov.reload(), prov)
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/interfaces.py”, line 53, in reload
return self.load()
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/arch/linux.py”, line 420, in load
get_if_raw_hwaddr(i, siocgifhwaddr=SIOCGIFHWADDR)[1]
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/arch/common.py”, line 87, in get_if_raw_hwaddr
get_if(iff, siocgifhwaddr)
File “/data/data/com.termux/files/home/homeassistant/lib/python3.9/site-packages/scapy/arch/common.py”, line 65, in get_if
return ioctl(sck, cmd, struct.pack(“16s16x”, iff.encode(“utf8”)))
PermissionError: [Errno 13] Permission denied
2021-07-06 22:03:59 ERROR (MainThread) [homeassistant.setup] Unable to set up dependencies of default_config. Setup failed for dependencies: dhcp
2021-07-06 22:03:59 ERROR (MainThread) [homeassistant.setup] Setup failed for default_config: Could not set up all dependencies.

1 curtida