Ik heb jullie hulp weer even nodig
Ik wil de uptime van m'n NUC op een bepaalde manier uitlezen en weergeven. Het uitlezen gaat prima met het onderstaande commando. De tijd wordt dan weergegeven in seconden, die wil ik dan weer converteren naar dagen, huren en minuten.
Het vreemde is: hetzelfde template werkt bij de Synology SNMP-sensor wel goed, maar bij de NUC-sensor niet. Bij laatstgenoemde wordt de tijd niet goed omgezet. Terwijl de input bij beide sensoren de tijd in seconden is. Heeft een van jullie enig idee waar het fout gaat? Ik heb al een stuk of 10 verschillende versies van value_template gebruikt, zonder resultaat.
De output van het commando "awk '$1>0 { print substr($1,1,7)}' /proc/uptime" is 6835298 wat neerkomt op 79 dagen, 2 uur en 41 minuten. Om een of andere duistere reden wordt dit in HASS omgezet naar 18hr 59min.
De output van het SNMP-commando bij Synology is 648854309. Dus het formaat is hetzelfde. Vandaar dat ik niet begrijp dat de conversie bij de een wel werkt en bij de ander niet
Edit: argh, nu ze boven elkaar staan zie ik dat de output bij de een 7 tekens is en bij de ander 9. Als ik het awk-commando zonder substr doe, dan krijg ik wel 9 tekens maar met een punt ertussen. Zo dus: 6836314.48
Hoe kan ik in die value template die punt verwijderen?
Edit 2: Nee, dat is 'm toch niet. Want als ik 683631448 door een converter gooi, dan kom ik op 7912 dagen uit :x
Het vreemde is: hetzelfde template werkt bij de Synology SNMP-sensor wel goed, maar bij de NUC-sensor niet. Bij laatstgenoemde wordt de tijd niet goed omgezet. Terwijl de input bij beide sensoren de tijd in seconden is. Heeft een van jullie enig idee waar het fout gaat? Ik heb al een stuk of 10 verschillende versies van value_template gebruikt, zonder resultaat.
De output van het commando "awk '$1>0 { print substr($1,1,7)}' /proc/uptime" is 6835298 wat neerkomt op 79 dagen, 2 uur en 41 minuten. Om een of andere duistere reden wordt dit in HASS omgezet naar 18hr 59min.
De output van het SNMP-commando bij Synology is 648854309. Dus het formaat is hetzelfde. Vandaar dat ik niet begrijp dat de conversie bij de een wel werkt en bij de ander niet
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| #-----NUC Uptime ## VERKEERDE OUTPUT - platform: command_line name: nuc_uptime command: "awk '$1>0 { print substr($1,1,7)}' /proc/uptime" value_template: > {%- set time = value | int // 100 %} {%- set minutes = ((time % 3600) // 60) %} {%- set minutes = '{}min'.format(minutes) if minutes > 0 else '' %} {%- set hours = ((time % 86400) // 3600) %} {%- set hours = '{}hr '.format(hours) if hours > 0 else '' %} {%- set days = (time // 86400) %} {%- set days = '{}d '.format(days) if days > 0 else '' %} {{ 'Less than 1 min' if time < 60 else days + hours + minutes }} #----- Synology Uptime ## WERKT DUS GOED - platform: snmp host: !secret synology_ip name: synology_uptime baseoid: .1.3.6.1.2.1.25.1.1.0 value_template: > {%- set time = value | int // 100 %} {%- set minutes = ((time % 3600) // 60) %} {%- set minutes = '{}min'.format(minutes) if minutes > 0 else '' %} {%- set hours = ((time % 86400) // 3600) %} {%- set hours = '{}hr '.format(hours) if hours > 0 else '' %} {%- set days = (time // 86400) %} {%- set days = '{}d '.format(days) if days > 0 else '' %} {{ 'Less than 1 min' if time < 60 else days + hours + minutes }} |
Edit: argh, nu ze boven elkaar staan zie ik dat de output bij de een 7 tekens is en bij de ander 9. Als ik het awk-commando zonder substr doe, dan krijg ik wel 9 tekens maar met een punt ertussen. Zo dus: 6836314.48
Hoe kan ik in die value template die punt verwijderen?
Edit 2: Nee, dat is 'm toch niet. Want als ik 683631448 door een converter gooi, dan kom ik op 7912 dagen uit :x
[ Voor 8% gewijzigd door sOid op 06-10-2020 14:07 ]