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

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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


Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

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

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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

Acties:
  • 0 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

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

Maar is het dan niet gewoon een string?

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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?

Acties:
  • +1 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

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 ]


Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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.

Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

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?

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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.

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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.

Acties:
  • 0 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

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.

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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

Acties:
  • 0 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 21:13
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 ]


Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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.

Acties:
  • 0 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 21:13
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.

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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 ]


Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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.

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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 ]


Acties:
  • +1 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Nu online

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


Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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 ]


Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
Ik heb het werkend. @Gizz

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

Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:38
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]

Acties:
  • +2 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Nu online

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:
Afbeeldingslocatie: https://tweakers.net/i/mLlJR8BWPwmty6bF-_Ef4JqcLp4=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/adGhr4rFItnzcSArifOy88A0.png?f=user_large

Maar sinds vanochtend denkt HA dat we wéér een nieuw apparaat hebben dat ik kan toevoegen:
Afbeeldingslocatie: https://tweakers.net/i/_1haWrWu8y9onL-1ewmUvfvwlww=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/io2R7stpBuoo1pEXC6j627pc.png?f=user_large
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


Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 21:18
Ik heb hetzelfde probleem als de OP; een ESP32 met epaper display, die de waarde van een HA sensor maar niet weer wil geven.

Dit is wat ik op dit moment heb:

Afbeeldingslocatie: https://tweakers.net/i/n-2VK9U1Fr3W6HcG_OaPth4nAgc=/234x176/filters:strip_exif()/f/image/X6wphyS43yH7L6QSxBuMNsW8.png?f=fotoalbum_medium

Mijn doel is de CO2-waarde weer te geven, de klok en de temperatuur zijn test/troubleshoot-zaken.

De CO2-sensor heeft als entity ID sensor.mh_z19_co2_value_3, en heeft in HA daadwerkelijk een waarde:

Afbeeldingslocatie: https://tweakers.net/i/_g2eEzrtx9AojeI-55onUs6BHDg=/234x176/filters:strip_exif()/f/image/SBRNlWRfBrr6DryOAMSvOj8k.png?f=fotoalbum_medium

Dit zijn de relevante delen van de code uit de ESPHOME yaml:

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
sensor:
  - platform: homeassistant
    id: mh_z19_co2_value
    entity_id: sensor.mh_z19_co2_value_3
  - platform: homeassistant
    id: temp_living_room
    entity_id: sensor.bme280_temperature  

time:
  - platform: homeassistant
    id: esptime

spi:
  clk_pin: 18
  mosi_pin: 23

display:
  - platform: waveshare_epaper
    cs_pin: 5
    dc_pin: 17
    busy_pin: 4
    reset_pin: 16
    rotation: 90°
    model: "2.13in-ttgo-b1"
    full_update_every: 300
    lambda: |-
      it.printf(0, 35, id(font1), "CO2 %.1f", id(mh_z19_co2_value).state);
      it.strftime(0, 30, id(font1), TextAlign::BASELINE_LEFT, "%H:%M", id(esptime).now());
      it.printf(0, 75, id(font1), "%.1f°C", id(temp_living_room).state);


Zoals te zien op de foto wordt de tijd goed weergegeven, dus de basics van het definiëren van een sensor, en dat op het scherm afdrukken werkt. Maar voor de twee HA sensoren sensor.mh_z19_co2_value_3 en sensor.bme280_temperature duidelijk niet.

Het gekke is, ik heb ook een ESP met IL9341 LCD liggen, en daar werkt het met bovenstaande code voor de sensor sensor.bme280_temperature wel, met identieke code. 8)7

Ik zal ongetwijfeld iets over het hoofd zien, maar ik kom er niet uit. Heeft iemand een idee?

[ Voor 4% gewijzigd door JeroenH op 13-04-2023 08:12 ]

Atomstack X7 Pro 10w laser cutter


Acties:
  • +1 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 21:13
@JeroenH Het lijkt even te duren voordat de HA data binnen is. Het display wordt geschreven voordat de sensorwaarde binnen is. Dat geeft een NAN.

Ik heb het zo opgelost; 20sec delay na boot alvorens een display update.

En een button om het handmatig vanuit HA te doen.

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
esphome:
  name: ${device_name}
  friendly_name: ${friendly_name} 
  includes:
    - includes/text_utils.h  
  on_boot:
      priority: 200.0
      then:
         # Wait a bit so all the items are received
        - delay: 20s
        - script.execute: update_screen  



#Script for updating screen - Refresh display
script:
  - id: update_screen
    then:
      - component.update: eink_display   


button:
  - platform: template
    name: ${friendly_name} Refresh screen
    id: refresh
    icon: "mdi:emoticon-outline"
    on_press:  
      - logger.log: "Button pressed"      
      - script.execute: update_screen         

Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 21:18
jj85 schreef op donderdag 13 april 2023 @ 09:01:
@JeroenH Het lijkt even te duren voordat de HA data binnen is. Het display wordt geschreven voordat de sensorwaarde binnen is. Dat geeft een NAN.

Ik heb het zo opgelost; 20sec delay na boot alvorens een display update.
Thanks! Het is wel zo dat de NAN's blijven, het is dus niet zo dat het er een tijdje na boot staat, ook na een hele nacht staat er nong altijd NAN. Overigens had ik net ook dat na een reboot van de ESP32 de klok niet goed liep, bij begon bij 01:00. Dat loste zich op door de (toen nog niet gewijzigde) code nog een keer naar de unit te pushen.... Vreemd.

Paar vraagjes over de code:

YAML:
1
2
  includes:
    - includes/text_utils.h  


Wat doet dit? Het geeft een foumelding dat ik het niet heb, en google vertelt me niet echt wat dit is. Kan ik dit weglaten?

YAML:
1
  friendly_name: ${friendly_name} 


Is friendly_name verplicht?

YAML:
1
      - component.update: eink_display   


Daar ktijg bij een install deze foutmelding van "Couldn't find ID 'eink_display'. Please check you have defined an ID with that name in your configuration." Als ik eink_display wijzig in waveshare_epaper (omdat ik dat onder display: - platform heb staan...) krijg ik de foumelding "ID 'waveshare_epaper' conflicts with the name of an esphome integration, please use another ID name". Ik begrijp niet goed wat hier verkeerd gaat...

Atomstack X7 Pro 10w laser cutter


Acties:
  • 0 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 21:13
JeroenH schreef op donderdag 13 april 2023 @ 09:50:
[...]

YAML:
1
2
  includes:
    - includes/text_utils.h  
Ja, die kan eruit. Zitten wat specifieke functies in die ik gebruik om m'n display op te bouwen.
Wat doet dit? Het geeft een foumelding dat ik het niet heb, en google vertelt me niet echt wat dit is. Kan ik dit weglaten?

YAML:
1
  friendly_name: ${friendly_name} 


Is friendly_name verplicht?
Nee hoor, kan je er ook uithalen. Ging erom dat je het deel 'on_boot' toevoegd aan de esphome sectie.
YAML:
1
2
3
4
5
6
7
esphome:
  on_boot:
      priority: 200.0
      then:
         # Wait a bit so all the items are received
        - delay: 20s
        - script.execute: update_screen
YAML:
1
      - component.update: eink_display   


Daar ktijg bij een install deze foutmelding van "Couldn't find ID 'eink_display'. Please check you have defined an ID with that name in your configuration." Als ik eink_display wijzig in waveshare_epaper (omdat ik dat onder display: - platform heb staan...) krijg ik de foumelding "ID 'waveshare_epaper' conflicts with the name of an esphome integration, please use another ID name". Ik begrijp niet goed wat hier verkeerd gaat...
Je geeft hier het ID van je e-ink display.

Heb het ID toegevoegd aan je display code, zie hieronder
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
display:
  - platform: waveshare_epaper
    id: eink_display
    cs_pin: 5
    dc_pin: 17
    busy_pin: 4
    reset_pin: 16
    rotation: 90°
    model: "2.13in-ttgo-b1"
    full_update_every: 300
    lambda: |-
      it.printf(0, 35, id(font1), "CO2 %.1f", id(mh_z19_co2_value).state);
      it.strftime(0, 30, id(font1), TextAlign::BASELINE_LEFT, "%H:%M", id(esptime).now());
      it.printf(0, 75, id(font1), "%.1f°C", id(temp_living_room).state);



En btw, ik neem aan dat je de ESP wel aan HA toegevoegd hebt?

Acties:
  • 0 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 21:18
jj85 schreef op donderdag 13 april 2023 @ 10:07:
En btw, ik neem aan dat je de ESP wel aan HA toegevoegd hebt?
Hehe ja, hij is toegevoegd, ik had het ongelukje van @Gizz eerder in dit topic gezien ;)

Afbeeldingslocatie: https://tweakers.net/fotoalbum/image/jiGDW4cYSJaLB0Ay1sDLVgsm.png

Toch werkt het nog niet.... Nog altijd NAN/NAN. En als ik het goed begrijp zou er in de integratie ook een button in HA moeten verschijnen die de screen refresh triggert, deze zie ik niet. Kijk, 1 device met geen entities:

Afbeeldingslocatie: https://tweakers.net/fotoalbum/image/WJW7ESyc4cXV4z6ifWvSXluy.png

Uiteraard heb ik zowel HA als de ESPHOME geherstart.

Hier dan maar de hele yaml zoals die op dit moment in de ESP32 zit:

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
esphome:
  name: "epaper-test"
  on_boot:
      priority: 200.0
      then:
         # Wait a bit so all the items are received
        - delay: 20s
        - script.execute: update_screen  

#Script for updating screen - Refresh display
script:
  - id: update_screen
    then:
      - component.update: eink_display

button:
  - platform: template
    name: refresh_screen
    id: refresh
    icon: "mdi:emoticon-outline"
    on_press:  
      - logger.log: "Button pressed"      
      - script.execute: update_screen    

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger: 
  level: VERBOSE

# Enable Home Assistant API
api:

ota:


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-88E568"
    password: "XtwXPIiNtR5G"

captive_portal:

font:
  - file: 'fonts/Alef-Regular.ttf'
    id: font1
    size: 42

sensor:
  - platform: homeassistant
    id: mh_z19_co2_value
    entity_id: sensor.mh_z19_co2_value_3
  - platform: homeassistant
    id: temp_living_room
    entity_id: sensor.bme280_temperature 

time:
  - platform: homeassistant
    id: esptime

spi:
  clk_pin: 18
  mosi_pin: 23

display:
  - platform: waveshare_epaper
    id: eink_display
    cs_pin: 5
    dc_pin: 17
    busy_pin: 4
    reset_pin: 16
    rotation: 90°
    model: "2.13in-ttgo-b1"
    full_update_every: 300
    lambda: |-
      // it.print(5, 35, id(font1), "Hello World!");  
      it.printf(0, 35, id(font1), "CO2 %.1f", id(mh_z19_co2_value).state);
      // it.printf(5, 35, id(font1), id(mh_z19_co2_value).state);
      it.strftime(0, 30, id(font1), TextAlign::BASELINE_LEFT, "%H:%M", id(esptime).now());
      it.printf(0, 75, id(font1), "%.1f°C", id(temp_living_room).state);


Overigens dus in het eerste block na de script_execute "- logger.log: "Refresh after 20s delay"" toegevoegd, en dat verschijnt dan ook in de logging als::

code:
1
[10:34:13][D][main:110]: Refresh after 20s delay


Dus dat gedeelte gaat in ieder geval goed.

Ik heb het probleem dat ik helemaal niet snap waar in het proces het verkeerd gaat. Ik weet dat HA een waarde voor de beide sensoren heeft. Maar dan? Gaat het verkeerd als de ESPHOME de waarde opvraagt bij HA? Gaat het verkeerd bij de weergave?

Atomstack X7 Pro 10w laser cutter


Acties:
  • +1 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Laatst online: 21:13
@JeroenH Raar dat die button niet in HA verschijnt. Zou wel moeten. Lijkt dan toch misschien een communicatieprobleem? Wat als je de ESP eens verwijderd uit HA en opnieuw toevoegt?

Zie je in de ESPhome logs de CO2 waarden wel binnen komen?

Acties:
  • +1 Henk 'm!

  • Septillion
  • Registratie: Januari 2009
  • Nu online

Septillion

Moderator Wonen & Mobiliteit
@JeroenH Wat als je de state eens direct print zonder het als parameter van de printf op te geven. Dus iets als:
C:
1
it.printf(0, 35, id(font1), id(mh_z19_co2_value).state);


Krijg je dan wel iets op het scherm?

Acties:
  • +1 Henk 'm!

  • JeroenH
  • Registratie: Januari 2003
  • Laatst online: 21:18
jj85 schreef op donderdag 13 april 2023 @ 10:45:
Wat als je de ESP eens verwijderd uit HA en opnieuw toevoegt?
Goeie.

* Verwijderd uit het ESPHOME-scherm
* Verwijderd uit de integraties
* Als nieuwe ESPHOME aangemaakt, dit gaat op normale wijze:
Afbeeldingslocatie: https://tweakers.net/fotoalbum/image/UqQSzuJXlYvGvtaG6cZUkzT1.png
* Code voor epaper etc weer ingevoegd
* Unit start normaal op, helaas wel met NAN/NAN
* Maarrrrrrrr wel iets geks, de unit duikt niet automatisch op als nieuw gevonden device in het Integrations-scherm
* Unit handmatig aan de ESPHOME-integraties toegevoegd met IP/encryption key

*BAM* werken

Afbeeldingslocatie: https://tweakers.net/fotoalbum/image/wIrclbrjnvy8fAdO0EAzWM0Y.png

Ook de refresh screen button in HA is er nu. Er zat blijkbaar toch iets klem in de verbinding tussen HA en de ESPHOME. Maar er werkte wel iets, want hij kon de correcte tijd ophalen... Hoe dan ook, hier ben ik superblij mee. Bedankt iedereen!

Nu een mooi behuizinkje laseren :)

Atomstack X7 Pro 10w laser cutter

Pagina: 1