Toon posts:

[ESPHOME] NaN op display, wel juiste temperatuur vanuit HA

Pagina: 1
Acties:

Vraag


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ik hoop dat jullie zien wat ik fout doe of misschien wel een bug in ESPHome? Ben al uren hiermee bezig en ik word langzamerhand gek heb alles al geprobeerd en blijf een NaN krijgen.

Ik zoek nog steeds naar de reden waarom ik in ESPHome een NaN krijg terwijl ik een sensor heb overgenomen vanuit HA.

YAML:
1
2
3
4
5
sensor:
  - platform: homeassistant
    entity_id: luxtronik.temperatuur_tapwater
    id: tapwater_temp
    internal: true


code:
1
2
3
4
5
6
7
19:39:31    [D] [homeassistant.sensor:024]  

'luxtronik.temperatuur_tapwater': Got state 41.60

19:39:31    [D] [sensor:127]    

'tapwater_temp': Sending state 41.60000  with 1 decimals of accuracy


maar als ik deze laat printen krijg ik een NaN?

code:
1
it.printf(0, 0, id(roboto16), "Tapwater: %.1f", id(tapwater_temp).state);


Heeft deze id soms geen state? Ook de raw_state is correct, maar ook als deze gebruik krijg ik een NaN

[Voor 0% gewijzigd door septillion op 18-12-2022 20:09]

Alle reacties


  • Dapdodo
  • Registratie: Mei 2019
  • Laatst online: 20:25
float versus integer?
Stuur eens een integer ipv float.

  • septillion
  • Registratie: Januari 2009
  • Laatst online: 19:19

septillion

Moderator Wonen & Mobiliteit
luxtronik is zo ver ik weet geen geldig domein in HA. Daar verwacht ik iets uit het sensor domein.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
septillion schreef op zondag 18 december 2022 @ 20:11:
luxtronik is zo ver ik weet geen geldig domein in HA. Daar verwacht ik iets uit het sensor domein.
Luxtronik is vanuit een custom integratie deze sensor bestaat in ha en waarde komt door. Als ik %d of %i neem dan krijg ik een negatieve waarde met een lang nummer.

Misschien moet ik eerst de waarde in een float omzetten. @Dapdodo @septillion

  • septillion
  • Registratie: Januari 2009
  • Laatst online: 19:19

septillion

Moderator Wonen & Mobiliteit
Mm, klinkt als vragen om problemen met HA... :/

Maar is het dan niet gewoon een string?

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
septillion schreef op zondag 18 december 2022 @ 22:10:
Mm, klinkt als vragen om problemen met HA... :/

Maar is het dan niet gewoon een string?
@septillion
Hoezo vragen om problemen met ha? Het is geen string want het is een temperatuur sensor gewoon een float waarde.

ik kan wel de raw state als float in de log krijgen maar bij display component krijg ik bij raw_state een nan.
Moet haast wel een bug zijn?

  • septillion
  • Registratie: Januari 2009
  • Laatst online: 19:19

septillion

Moderator Wonen & Mobiliteit
HA heeft een gedefinieerde set domeinen. Hiervoor weet het wat het kan verwachten en hoe weer te geven bijvoorbeeld. Hiervan afwijken lijkt me niet handig. Zeker niet omdat het dus eigenlijk gewoon een sensor is. Dus waarom de integratie niet gewoon sensor.luxtronik_temperatuur_tapwater aanmaakt is mij een raadsel.

Daarnaast is elke state in HA standaard een string, ook als ze alleen een getal weergeven. Nu weet ik niet of ESPhome standaard numerieke waardes naar een float om zet. Maar als dat zo is zou het me niet verbazen als het dan door de war is door het niet in HA gedefinieerde domein. Je log laat ook absoluut niet zien dat het een float is, je kan geen verschil zien tussen 41.60 (float) of '41.60' (string).

[Voor 8% gewijzigd door septillion op 19-12-2022 09:10]


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
De luxtronik integratie is onlangs aangepast zodat de entities in lijn zijn met ha. Het is niet mijn integratie dus ik ben hier verantwoordelijk voor. Maar ook als ik buienradar temperatuur sensor pak krijg ik een nan. Ik ga een issue aanmelden want zit in het display component icm waveshare driver.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ok ben een stap verder, blijkbaar is de waarde geen float of string maar een unsigned int. @septillion

  • septillion
  • Registratie: Januari 2009
  • Laatst online: 19:19

septillion

Moderator Wonen & Mobiliteit
Dat is uhhh, een interessante keuze, want dan kan je de .6 er niet in op slaan. Hoe ben je tot deze conclusie gekomen?

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Trial and error. Maar dit is wel heel wazig, want als ik een sensor waarde in ha van 37.90 heb dan verwacht ik dat dit een float is.
Een string is al vreemd maar zou voor een display niet uitmaken. Ik kreeg met een uint wel een waarde die herleidbaar was maar wel een te groot getal. Dus ben er nog niet helemaal uit maar geen NaN.

Met raw_state krijg ik dus wel de juiste waarde vanuit ha door dus ik ga nog wat verder experimenteren.

Ik ben zelf geen software developer dus het blijft een beetje zoeken naar waar de fout kan zitten.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ik kreeg als antwoord op mij bug report dat het display voordat het een sensor value heeft gekregen een NaN weergeeft maar ik heb het display een nacht laten liggen blijft op NaN staan.

  • septillion
  • Registratie: Januari 2009
  • Laatst online: 19:19

septillion

Moderator Wonen & Mobiliteit
Kan je eens laten zien wat je doet? Dus voor een uint en wanneer je raw_state gebruikt. En als je het als uint doet, is dat dan een zinnige waarde of niet?

Want bedenk nog steeds een beetje dat je naar een string aan het kijken bent en dus een pointer in handen hebt.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Gaat even duren, ik krijg opeens een crash en na 10x booten in safe mode. Zal wel te maken hebben met WiFi 2.4Ghz. Maar is alleen dit devices... leuk he zo'n e-ink display.

code:
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
29
30
31
32
33
34
35
36
37
[10:54:32][D][binary_sensor:034]: 'ESP Display Button 1': Sending initial state OFF
[10:54:32][C][adc:044]: Setting up ADC 'ESP Display Battery Voltage'...
[10:54:32][C][adc:083]: ADC 'ESP Display Battery Voltage' setup finished!
[10:54:33][C][wifi:037]: Setting up WiFi...
[10:54:33][C][wifi:038]:   Local MAC: 24:6F:28:79:21:F8
[10:54:33][D][wifi:386]: Starting scan...
[10:54:33]Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
[10:54:33]
[10:54:33]Core  1 register dump:
[10:54:33]PC      : 0x4008ad35  PS      : 0x00060b30  A0      : 0x8016a05c  A1      : 0x3ffb2000  
[10:54:33]A2      : 0x80000000  A3      : 0x7ffffffc  A4      : 0x000000ff  A5      : 0x0000ff00  
[10:54:33]A6      : 0x00ff0000  A7      : 0xff000000  A8      : 0x00000000  A9      : 0x3ffb2460  
[10:54:33]A10     : 0x00092573  A11     : 0x00000000  A12     : 0x3ffc487c  A13     : 0x00060f23  
[10:54:33]A14     : 0x00060f20  A15     : 0x00000001  SAR     : 0x00000005  EXCCAUSE: 0x0000001c  
[10:54:33]EXCVADDR: 0x80000000  LBEG    : 0x4008ad35  LEND    : 0x4008ad45  LCOUNT  : 0xffffffff  
[10:54:33]
[10:54:33]
[10:54:33]Backtrace:0x4008ad32:0x3ffb20000x4016a059:0x3ffb2010 0x4016ebc6:0x3ffb2320 0x4016ec02:0x3ffb23b0 0x400d913c:0x3ffb23f0 0x400d9199:0x3ffb2540 0x400e4166:0x3ffb25a0 0x400d924b:0x3ffb2600 0x400d9267:0x3ffb2620 0x400dd272:0x3ffb2640 0x40179139:0x3ffb2660 0x400e3ea6:0x3ffb2680 0x400e2cf2:0x3ffb26d0 0x400e5e6e:0x3ffb2700 0x400f285a:0x3ffb2820 
[10:54:33]
[10:54:33]
[10:54:33]
[10:54:33]
[10:54:33]ELF file SHA256: 0000000000000000
[10:54:33]
[10:54:33]Rebooting...
[10:54:33]ets Jun  8 2016 00:22:57
[10:54:33]
[10:54:33]rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
[10:54:33]configsip: 0, SPIWP:0xee
[10:54:33]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[10:54:33]mode:DIO, clock div:2
[10:54:33]load:0x3fff0018,len:4
[10:54:33]load:0x3fff001c,len:1044
[10:54:33]load:0x40078000,len:8896
[10:54:33]load:0x40080400,len:5828
[10:54:33]entry 0x400806ac
[10:54:34][I][logger:258]: Log initialized

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ok dat is ook weer opgelost, heb nu een minimal YAML code. Hier gaat iets dus fout, maar geen idee wat. @septillion


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
esphome:
  name: badkamer
  
esp32:
  board: esp32dev
#  framework:
#    type: arduino

# Enable logging
logger:
#      api: VERY_VERBOSE
#      homeassistant: VERY_VERBOSE
#      api.service: VERY_VERBOSE
#sensor: VERY_VERBOSE
#      scheduler: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: ""

ota:
  password: ""

# Enable Web
web_server:
  port: 80

wifi:
  ssid: !secret wifi_iot_ssid
  password: !secret wifi_iot_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Badkamer Fallback Hotspot"
    password: ""

time:
  - platform: homeassistant
    id: ntp
    timezone: Europe/Amsterdam

sensor:
  - platform: homeassistant
    entity_id: luxtronik.temperatuur_tapwater
    id: tapwater
    internal: True
    on_value:
      then:
        - lambda: |-
            ESP_LOGD("main", "Raw Value of my sensor: %f", id(tapwater).raw_state);
            if (id(tapwater).raw_state == NAN)
            {
              ESP_LOGD("main", "NAN DETECTED!!!!!!!");
            }
font:
  - file: 'fonts/verdana.ttf'
    id: roboto16
    size: 20

    # gfonts://family[@weight]
  - file: "gfonts://Roboto"
    id: roboto
    size: 20
    
# gfonts://family[@weight]
  - file: "gfonts://Roboto"
    id: roboto166
    size: 16
  - file: "gfonts://Roboto"
    id: roboto12
    size: 12
  - file: "gfonts://Roboto"
    id: roboto10
    size: 10

spi:
  clk_pin: 18
  mosi_pin: 23

display:
  - platform: waveshare_epaper
    id: t5_display
    cs_pin: 5
    dc_pin: 19
    busy_pin: 4
    reset_pin: 12
    model: 2.90inv2
    reset_duration: 200ms #it's 200ms by default, but this will keep it stable if that default changes.
    update_interval: 72h #on the 4.7" display code this is "never", however, if I do that I end up with weird issues where the screen doesn't update properly. This seems to let it update a couple of times when it turns back on and a full reload happens.
                        # I posted about the issue here: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series/issues/30 and found a semi-related problem: https://github.com/esphome/issues/issues/2334
    full_update_every: 30 #every 6 hours in 5 min updates; not sure this works/is necessary. The screen unfortunately does a full refresh when it comes out of deep sleep.
    rotation: 90
    lambda: |-
      
      it.printf(0, 0, id(roboto16), "Tapwater: %f °C ", id(tapwater).raw_state);
      it.strftime(200, 115, id(roboto10), "Updated: %I:%M:%S%p", id(ntp).now());


raw_value klopt, alleen NaN op display? Hoe kan dit, doe ik iets fout of is het echt een bug?

code:
1
2
3
4
5
6
7
8
9
10
11
12
[13:46:05][C][api:141]:   Using noise encryption: YES
[13:46:05][C][homeassistant.sensor:030]: Homeassistant Sensor 'tapwater'
[13:46:05][C][homeassistant.sensor:030]:   State Class: ''
[13:46:05][C][homeassistant.sensor:030]:   Unit of Measurement: ''
[13:46:05][C][homeassistant.sensor:030]:   Accuracy Decimals: 1
[13:46:05][C][homeassistant.sensor:031]:   Entity ID: 'luxtronik.temperatuur_tapwater'
[13:46:10][D][api:102]: Accepted ::FFFF:192.168.1.201
[13:46:10][D][api.connection:918]: Home Assistant 2022.12.7 (::FFFF:192.168.1.201): Connected successfully
[13:46:10][D][time:045]: Synchronized time: 2022-12-20 13:46:11
[13:46:10][D][homeassistant.sensor:024]: 'luxtronik.temperatuur_tapwater': Got state 37.70
[13:46:10][D][sensor:127]: 'tapwater': Sending state 37.70000  with 1 decimals of accuracy
[13:46:10][D][main:051]: Raw Value of my sensor: 37.700001

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 19:22
Raar probleem idd. De home assistant integratie maakt al een float van de ingelezen sensorwaarde, daar zou het niet aan mogen liggen (github source)

Wat als je een willekeurige andere sensor maakt en deze op je display probeert te tonen?
Bijv een uptime sensor
YAML:
1
2
3
4
sensor:
  - platform: uptime
    name: Uptime Sensor
    id: uptimesensor


code:
1
it.printf(0, 0, id(roboto16), "Tapwater: %f °C ", id(uptimesensor).raw_state);


Gooit de
code:
1
update_interval: 72h
geen roet in het eten?

Hier iemand met (waarschijnlijk) hetzelfde probleem: https://community.home-as...t-nan-sensor-value/438575

[Voor 13% gewijzigd door jj85 op 20-12-2022 14:12]


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Nope, heb deze al op 5s gezet maar doet alleen iets voor de verversingssnelheid van het display.

Ik had al een sensor van buienradar gepakt maar ook een nan.

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 19:22
Maar buienradar pakt hij ook vanuit HA?
Bedoelde eigenlijk om eens een interne esphome sensor (zoals uptime) te pakken. Om interactie tussen HA en de homeassistant component uit te sluiten als oorzaak.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
jj85 schreef op dinsdag 20 december 2022 @ 14:15:
Maar buienradar pakt hij ook vanuit HA?
Bedoelde eigenlijk om eens een interne esphome sensor (zoals uptime) te pakken. Om interactie tussen HA en de homeassistant component uit te sluiten als oorzaak.
Ik heb ook ntp op het display vanuit ha dat werkt gewoon dus maar het ligt echt aan het display component met het renderen van een float want in de logging staat het wel goed.

[Voor 4% gewijzigd door Vaevictis_ op 20-12-2022 18:38]


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
@Gizz Hier even verder troubleshooten? Wel prettig dat ik nu niet de enige ben, want ik werd langzamerhand beetje gestoord hiervan.

  • Koepert
  • Registratie: Augustus 2013
  • Laatst online: 20:09
Probeer eens een ander font? Wellicht dat Roboto die C niet lekker vind.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Koepert schreef op zaterdag 31 december 2022 @ 08:24:
Probeer eens een ander font? Wellicht dat Roboto die C niet lekker vind.
De graden °C wordt met Roboto gewoon afgedrukt op het scherm, ik heb de font aangepast. Geen verschil.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Het is echt een bug in ESPHome, als ik een statische template sensor aanmaak krijg ik ook een nan op het display

code:
1
2
3
4
5
6
7
8
9
10
- platform: template
    name: "Template Sensor"
    id: tapwater_template
    lambda: |-
      if (id(tapwater).state) {
        return 42.0;
      } else {
        return 0.0;
      }
    update_interval: 60s

[Voor 3% gewijzigd door Vaevictis_ op 31-12-2022 09:00]


  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 20:35

Gizz

Dunder-Mifflin, Inc.

Vaevictis_ schreef op zaterdag 31 december 2022 @ 07:32:
@Gizz Hier even verder troubleshooten? Wel prettig dat ik nu niet de enige ben, want ik werd langzamerhand beetje gestoord hiervan.
Ik puzzel graag mee in het nieuwe jaar, want ik ga nu een paar dagen op vakantie zonder LILYGO :p

Voor degene die ondertussen mijn code willen bekijken: Gizz in "Home Assistant: Open source Python3 home automation - deel 4"

Ik overweeg ook om het probleem hier te posten als ik terug ben, daar lijkt me de kans het grootst om meer mensen te vinden met dit probleem en de potentiële oplossing.

[Voor 19% gewijzigd door Gizz op 31-12-2022 10:25]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ik heb net een developer van ESPHome "gesproken" via github, hij geeft aan dat het zo moet. Helaas mag niet baten.

code:
1
2
3
4
5
6
7
8
9
10
11
12
  - platform: template
    name: "Template Sensor"
    id: tapwater_template
    unit_of_measurement: "°C"
    device_class: "temperature"
    state_class: "measurement"
    lambda:  !lambda return id(tapwater).state;
    update_interval: 5s
    filters:
      - exponential_moving_average:
          alpha: 0.5
          send_every: 1


Waarbij tapwater dys een sensor is vanuit HA, die krijgt de juiste temperatuur. En tapwater_template dus op het display moet verschijnen. |:(

[Voor 13% gewijzigd door Vaevictis_ op 31-12-2022 11:13]


  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ik heb het werkend. @Gizz

code:
1
2
3
display:
  ...
  update_interval: 1 min

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 19:22
Overigens, misschien is het @Gizz wel een ander issue, aangezien de waarden uberhaupt niet binnen lijken te komen volgens z'n screenshot.

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 20:02
Ik wil deze tip nog met jullie delen, hiermee is ook de klacht van vage letters of ruis op het display verholpen.

code:
1
2
3
4
5
6
external_components:
  - source:
      type: git
      url: https://github.com/velaar/esphome
      ref: dev
    components: [ waveshare_epaper, display]

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 20:35

Gizz

Dunder-Mifflin, Inc.

@Vaevictis_ nog even een update van mijn kant nu ik weer terug ben van vakantie :)

Het probleem zat 'm bij mij niet in mijn code. Bij mij ging het mis omdat ik bij de ESPHome integration nog niet op configure had geklikt, waardoor de Lily niet officieel was toegevoegd aan HA denk ik :z

Daarom nog even een shootout naar @Hmmbob die in het HA-topic dit vrij snel als mogelijke oplossing aanreikte:
Hmmbob schreef op vrijdag 30 december 2022 @ 20:45:
[...]

Hangt hij wel in Home Assistant?
Dat ik hier niet eerder aan heb gedacht komt omdat ik meestal met mqtt werk. Dan is het een kwestie van op je client instellen dat hij met de mqtt-broker kan babbelen en dan ben je klaar. Niet aan gedacht dat ik nu ook nog iets aan de server/integration kant moest toevoegen om het werkend te krijgen :P

Al is het nog wel een beetje vaag, want de lily-1 is nu netjes toegevoegd aan de ESPHome integration:


Maar sinds vanochtend denkt HA dat we wéér een nieuw apparaat hebben dat ik kan toevoegen:

Ik zal deze nieuwe suggestie maar negeren, het werkt nu immers goed :)

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee