Home assistant command_line geeft een sensor unknown waarde.

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 29-04 20:53
Ik probeer in Home Assistant (Venv op RPI4CM) een sensor te maken die elke seconde een update krijgt. Die sensor zou uit influxdb moeten komen:

Het script is een influx query.
code:
1
2
3
4
5
6
7
8
homeassistant@stats:~/.homeassistant $ whoami 
homeassistant
homeassistant@stats:~/.homeassistant $ /usr/local/bin/getcurrentpoweconsumption.sh 
0.004 # ==> 4 Watt dus ... . het script werkt en is uitvoerbaar door de homeassistant user. 
homeassistant@stats:~/.homeassistant $ cat /usr/local/bin/getcurrentpoweconsumption.sh
#!/bin/bash
/usr/bin/influx -database 'elektriciteit' -execute 'SELECT last("CURRENT_ELECTRICITY_USAGE") FROM "P1 values" fill(null)' | tail -n 1 | awk '{print $2}'
homeassistant@stats:~/.homeassistant $


In configuration.yaml staat dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sensor:
  - platform: command_line
    name: "Heat pump current power consumption." 
    command: > 
      influx -database 'elektriciteit' -execute 'SELECT last("Active Power 27") FROM "NanoGrid_nanogrid" fill(null)' | tail -n 1 | awk '{print $2}'
    unit_of_measurement: "W"
    #value_template: "{{ value | multiply(0.001) | round(1) }}"
  - platform: command_line
    name: "Electricity consumption from P1 high poll interval" 
    command: /usr/local/bin/getcurrentpoweconsumption.sh
    unit_of_measurement: "kW"
    scan_interval: 1
  - platform: command_line
    name: "Electricity production from P1 high poll interval" 
    command: bash influx -database 'elektriciteit' -execute 'SELECT last("CURRENT_ELECTRICITY_DELIVERY") FROM "P1 values" fill(null)' | tail -n 1 | awk '{print $2}'
    unit_of_measurement: "kW"
    scan_interval: 1


Als ik dan in Home Assistant naar >Developer Tools > States > Entity de entity wil bekijken, staat er steeds de state: Unknown.

En ik weet bij god niet wat ik mis doe. Ik heb er al een apart script van gemaakt omdat ik vermoedde dat het ergens met de single en/of double quotes mis ging. Maar tot nu toe krijg ik er met geen stokken een deftige waarde in.

Alle reacties


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 29-04 20:53
Ah nu zie ik al iets meer:

code:
1
2022-11-18 15:22:58.018 ERROR (SyncWorker_5) [homeassistant.components.command_line] Command failed (with return code 127): /usr/local/bin/getcurrentpoweconsumption.sh


Deze staat er nochtans. Ik kan dit commando nog steeds als de user "homeassistant" uitvoeren, ook als de venv geactiveerd is (ik vermoed dat dat geen invloed zou mogen hebben.
code:
1
2
3
4
5
6
7
8
root@stats:/home/homeassistant/.homeassistant# ls -lah /usr/local/bin/getcurrentpoweconsumption.sh 
-rwxr-xr-x 1 homeassistant root 172 Nov 18 15:17 /usr/local/bin/getcurrentpoweconsumption.sh
/usr/bin/influx -database 'elektriciteit' -execute 'SELECT last("CURRENT_ELECTRICITY_USAGE") FROM "P1 values" fill(null)' | /usr/bin/tail -n 1 | /usr/bin/awk '{print $2}'

root@stats:/home/homeassistant/.homeassistant# /usr/bin/influx -database 'elektriciteit' -execute 'SELECT last("CURRENT_ELECTRICITY_USAGE") FROM "P1 values" fill(null)' | /usr/bin/tail -n 1 | /usr/bin/awk '{print $2}'
0.108
root@stats:/home/homeassistant/.homeassistant# 
root@stats:/home/homeassistant/.homeassistant#


Als user homeassistant met venv activated. Volgens mij staan hier alle paden in dus in principe zou ik zelfs niet /usr/local/bin en/of /usr/bin/ voor de commando's moeten zetten.
code:
1
2
3
(homeassistant) homeassistant@stats:~/.homeassistant $ echo $PATH
/srv/homeassistant/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
(homeassistant) homeassistant@stats:~/.homeassistant $


En als ik probeer om een SSH naar localhost te doen (ik heb een keypair aangemaakt en kan passwordless met homeassistant inloggen op localhost als user root:
code:
1
2022-11-18 15:56:12.993 ERROR (SyncWorker_6) [homeassistant.components.command_line] Command failed (with return code 255): /usr/bin/ssh -i /home/homeassistant/.ssh/id_rsa -o UserKnownHostsFile=/home/homeassistant/.ssh/known_hosts root@localhost '/usr/local/bin/getcurrentpowerconsumption.sh'


En gewoon als user homeassistant in de bash shell:
code:
1
2
3
homeassistant@stats:~/.homeassistant $ /usr/bin/ssh -i /home/homeassistant/.ssh/id_rsa -o UserKnownHostsFile=/home/homeassistant/.ssh/known_hosts root@localhost '/usr/local/bin/getcurrentpowerconsumption.sh'
0.623
homeassistant@stats:~/.homeassistant $


8)7

Hij wil en hij zal niet ...

[ Voor 36% gewijzigd door bucovaina89 op 18-11-2022 15:58 ]


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 29-04 20:53
Misschien nog een kleine update, ik heb nu een supersimpel commando bij in de sensors gezet. Misschien is dat niet de bedoeling, maar ik zou verwachten dat touch toch een file file.test gaat aanmaken.
code:
1
2
3
4
5
6
7
8
9
10
sensor:
  - platform: command_line
    name: "Electricity consumption from P1 high poll interval" 
    command: "/usr/local/bin/getcurrentpowerconsumption.sh"
    command_timeout: 5
    scan_interval: 15
  - platform: command_line
    name: "touch file"
    command: "/usr/bin/touch /home/homeassistant/.homeassistant/file.test"
    scan_interval: 5

resulteert in:

code:
1
2
3
homeassistant@stats:~/.homeassistant $ ls -lah | grep file.test | wc -l
0
homeassistant@stats:~/.homeassistant $


code:
1
2
2022-11-18 20:55:46.867 ERROR (SyncWorker_3) [homeassistant.components.command_line] Command failed (with return code 127): /usr/bin/touch /home/homeassistant/.homeassistant/file.test
2022-11-18 20:55:47.213 ERROR (SyncWorker_7) [homeassistant.components.command_line] Command failed (with return code 127): /usr/local/bin/getcurrentpowerconsumption.sh

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 29-04 20:53
OK, ik heb het niet met het command_line platform maar met het influxdb platform. Nog een klein minpuntje is dat de waarden die ik in homeassistant "maar" nauwkeurig zijn tot op 2 getallen na de komma (0.15kW). Ik zou de waarden kunnen vermenigvuldigen met 1000 om in watt te rekenen, maar goed. Ik denk dat ik hiervoor ga settelen. Ik heb er nu al veel te veel tijd in gestoken om tot hier te geraken :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- platform: influxdb
  api_version: 1
  ssl: false
  host: influxdb.mijndomein.org
  port: 8086
  database: "elektriciteit"
  scan_interval: 1
  queries:
    - name: "current electricity usage"
      measurement: '"P1 values"'
      field: "CURRENT_ELECTRICITY_USAGE"
      where: 'time > now() - 10s'
      unit_of_measurement: "kW"
      group_function: last
    - name: "current electricity delivery"
      measurement: '"P1 values"'
      field: "CURRENT_ELECTRICITY_DELIVERY"     
      where: 'time > now() - 10s'
      unit_of_measurement: "kW"
      group_function: last