Como publicar os preços dos combustíveis no seu Home Assistant


(Jorge Assunção) #81

Não é esse API. Estou a referir-me a uma entrada chamada api: que fica ao mesmo nível do http:


(Luis Belo ) #82

Ui… é isto?

@ - A ultima linha adicionei agora mesmo… após a tua dica. É assim que tem que estar?

############
# INCLUDES #
############
group: !include groups.yaml
zone: !include zones.yaml
input_select: !include input_select.yaml
automation: !include automation.yaml
shell_command: !include shell_commands.yaml
proximity: !include_dir_merge_named proximity
script: !include_dir_merge_named script

(Álvaro M. Ferro) #83

Antes da api_password pões só isto api:

Sem api não podes escrever nada.

Se isto não funcionar envia-me o debug.txt que o script gera com a opção -d


(Ricardo Silva) #84

Mete assim:

......

api:

############
# INCLUDES #
############
group: !include groups.yaml
zone: !include zones.yaml
input_select: !include input_select.yaml
automation: !include automation.yaml
shell_command: !include shell_commands.yaml
proximity: !include_dir_merge_named proximity
script: !include_dir_merge_named script

(Luis Belo ) #85

Ponto de situação:

  • API adicionado ao configuration.yaml
  • Todos os códigos Cul sem o -K
  • Campos de configuração no script actualizados.
  • Código do HA do segundo post do @RodolfoVieira
  • Hass.io 0.68.1
  • Script na pasta config/script

Resultados:

  •     2018-05-13 16:25:47 ERROR (MainThread) [homeassistant.components.shell_command] Error running command: `bash /config/script/fuel.info.sh -f "170157"`, return code: 7
     NoneType: None

(Álvaro M. Ferro) #86

Envia-me um código de teamviewer por private que eu vou aí resolver-te isso.


(Luis Belo ) #87

Enviado :wink:

Obrigado :wink:


(Luis Belo ) #88

Obrigado Álvaro… impecável :wink:
Já trabalha :slight_smile:


(Pedro ) #89

Boas pessoal eu também não consigo colocar a parte do fuel a aparecer nas entitites.
Quando tento correr o comando : curl -k -s -X GET -H “x-ha-access: PASS” -H “Content-Type: application/json” localhost:8123/api/
Dá o erro : 401: Unauthorized%

Se correr apenas o script automático o código de erro é : [homeassistant.components.shell_command] Error running command: bash /config/script/fuel.info.sh -f "170157", return code: 127

Link Config : *******************************
Link Fuel.sh : ******************************

******** Desde já obrigado por não obter respostas ******
Cumprimentos,


(Rodolfo) #90

@Pedro removi os teus links que colocaste. Continhas la informações pessoais, tens que ter mais cautela a publicar código.


(Pedro ) #91

Obrigado @RodolfoVieira, mas apenas tinha a directoria e os dados de user e pass não são dados reais, apenas me esqueci do nome das directórias.
Obrigado mais uma vez vou alterar.


(Ricardo Silva) #92

Boas,

Eu estava a tentar personalizar o nome pelo customize.yaml mas não estava a funcionar.
Alterei o script e fico assim:
bombas

Alteração no script:
Antigo Linha 112:

curl -s -k -X POST -H "x-ha-access: $HAPASSWORD" \
                  -H "Content-Type: application/json" \
                  -d '{"state": "'$FUELPRICE'", "attributes": {"unit_of_measurement": "€", "icon": "mdi:gas-station", "friendly_name":"'"$FRIENDLYNAME"'"}}' \
                  $PROTOCOL://$HOST_IP_OR_NAME:$PORT_NUMBER/api/states/sensor.fuel_$SENSOR >/dev/null 2>&1

O que alterei:

gas_simples='Gasoleo simples'
if [[ $FRIENDLYNAME = *$gas_simples* ]]
then
  posto=$(echo "$FRIENDLYNAME" | cut -d'(' -f 2 | cut -d')' -f 1)
  curl -s -k -X POST -H "x-ha-access: $HAPASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"state": "'$FUELPRICE'", "attributes": {"unit_of_measurement": "€", "icon": "mdi:gas-station", "friendly_name":"'"$posto"'"}}' \
  $PROTOCOL://$HOST_IP_OR_NAME:$PORT_NUMBER/api/states/sensor.fuel_$SENSOR >/dev/null 2>&1
else
  curl -s -k -X POST -H "x-ha-access: $HAPASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"state": "'$FUELPRICE'", "attributes": {"unit_of_measurement": "€", "icon": "mdi:gas-station", "friendly_name":"'"$FRIENDLYNAME"'"}}' \
  $PROTOCOL://$HOST_IP_OR_NAME:$PORT_NUMBER/api/states/sensor.fuel_$SENSOR >/dev/null 2>&1
fi

A alteração que fiz só é para o gasoleo simples. Mas se quiserem de um forma geral digam.


(Rodolfo) #93

fixe @ricain. tens a automacao para carregar os valores quando reinicias o HA a funcionar? há malta que essa parte não funciona. A mim está a funcionar bem…


(Ricardo Silva) #94

Sim tenho, copiei do que meteste e funciona a primeira :wink:


(Hugo) #95

Boas, estou com algum erro no script pois aparece-me o seguintes quando corro o script no putty: fuel.info.sh: linha 67: .data: Permissão negada`

No HA tambem me dá erro:Error running command: bash ./home/homeassistant/.homeassistant/scripts/fuel.info.sh -f "170280", return code: 1`

Estou a usar a versão 2.1.5 do scriptm adicionei o “-k” após “curl”, a API funciona e o user homeassistant foi criado para o HA no ubuntu 16.04.
Como conseguigam resolver o problema das permissões?


(Bruno Lopes) #96

Na semana passada depois de termos falado tive um azar e aproveitei para instalar o HA num novo cartão e passar apenas as configs HA para o novo e mesmo assim tou com o mesmo problema, apenas executa manualmente… já tentei de tudo e não corre automaticamente


(Jorge Assunção) #97

Passa as permissões para 777 e experimenta criar a directiva whitelist_external_dirs (está explicado mais acima) com a pasta onde tens o teu script.


(Álvaro M. Ferro) #98

Podes verificar as permissões do diretório onde estás a executar usando a opção -d e verificando se ele criou o ficheiro debug.txt.

Também podes verificar se tens api: no teu configuration.yaml.

Não te aconselho a dar permissões 777 em lado nenhum do teu sistema. Isso quer dizer que qualquer utilizador que saiba onde encontrar o ficheiro o pode ler e alterar.


(Álvaro M. Ferro) #99

Depois não se esqueçam de retirar estás permissões. Ficheiros com dados de acesso (username e password) só devem ter permissões para o próprio user.


(Jorge Assunção) #100

Sim, as permissões 777 devem ser usadas apenas temporariamente para efeitos de teste e as permissões originais devem ser imediatamente repostas.