ESPHome: Spannung Messen mit ESP8266 D1 mini

Hallo zusammen,

ich messe mit einem BME280 Sensor an einem ESP8266 D1 Mini die Luftfeuchtigkeit und die Temperatur.
Das funktioniert gut. Da das ganzen von einem Akku gespeist wird, würde ich zusätzlich noch gerne die Spannung des Akkus messen.

die YAML sieht so aus:

esp8266: 
  board: d1_mini

i2c:
  sda: GPIO12 #D5
  scl: GPIO14 #D6
  #scan: true
  id: bus_a

sensor:
  - platform: bme280_i2c
    i2c_id: bus_a
    temperature:
      name: "BME280 Temperature"
      oversampling: 4x
    pressure:
      name: "BME280 Pressure"
      oversampling: 4x
    humidity:
      name: "BME280 Humidity"
      oversampling: 4x
    address: 0x76
    update_interval: 10min

  - platform: adc
      pin: A0 #A0
      name: "Battery Voltage"
      accuracy_decimals: 3
      update_interval: 60s
      filters:
      - multiply: 5

Das bringt mit bei der Validierung diesen Fehler:

INFO ESPHome 2024.12.2
INFO Reading configuration /config/esphome/sensor-temp-humidity-bad.yaml...
ERROR Error while reading config: Invalid YAML syntax:

mapping values are not allowed here
  in "/config/esphome/sensor-temp-humidity-bad.yaml", line 54, column 10

Irgendwie mag er den A0 pin nicht.
Ich habe auch schon ADC0 und GPIO17 probiert.
Kommt immer der gleiche Fehler.

Kann mir da jemand einen Tipp geben?

Auch wenn ich hier zwar selber ESPHome mit ein paar ESP8266 nutze, habe ich nicht wirklich so viel Ahnung davon. :laughing: Müsste das bei einem D1 Mini nicht eigentlich 3.3 sein/heißen?

Note
This component prints the voltage as seen by the chip pin. On the ESP8266, this is always 0.0V to 1.0V Some development boards like the Wemos D1 mini include external voltage divider circuitry to scale down a 3.3V input signal to the chip-internal 1.0V. If your board has this circuitry, add a multiply filter to get correct values:

*sensor:*
*  - platform: adc*
*    # ...*
*    filters:*
*      - multiply: 3.3*

VG Jim

Das hängt davon ab, wie hoch die Spannung ist, die Du messen willst.
Ich arbeite mit einem angepassten Spannungsteiler, von dem her passt das.
Das ist aber nicht mein Problem.
Er meckert ja, den PIN an.

OK mehr wüsste ich jetzt auch nicht, weil Du ja GPIO17 auch schon getestet hast. Wobei A0 ja auch funktionieren sollte.

ESP8266: Only pin A0 (GPIO17) can be used.

VG Jim

Genau das ist mein Problem.
Bei den ganzen D1 Minis, die im Umlauf sind, scheint es sich nicht immer um das gleiche PINOut zu handeln. Jedenfalls musst ich bei den Ports für den I²C Bus auch viel probieren bis das lief.

Zu den Pinouts hab ich neulich ne ganz gute Übersicht gefunden: https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

Neben der ganzen Werbung auf der Seite gibts zumindest auch etwas Info :slight_smile: und genau die hat mir neulich weiter geholfen.

Vielleicht hilft’s

Gruß Handfest

Jepp das ist leider so weil in China halt vieles irgendwie “zusammengebastelt” wird, um es dann als dieses oder jenes zu verkaufen. :rofl: Wenn man keine PIN-Doku zu dem Board hat kann es schon schwierig werden.

Aber vielleicht hat hier ein anderer User ja noch eine Idee und die Lösung ist ggf. ganz einfach. :slightly_smiling_face:

VG Jim

Es geht um das Board hier https://www.makershop.de/plattformen/d1-mini/wemos-d1-mini/

Leider haben die kein spezifisches PINOUT dazu

Moin moin,

der Fehler deutet ja schon auf einen syntax fehler in der yaml hin… platform und pin müssen auf einer ebene sein:

- platform: adc
  pin: A0 #A0
  name: "Battery Voltage"
  accuracy_decimals: 3
  update_interval: 60s
  filters:
    - multiply: 5
1 „Gefällt mir“

Danke, das wars.
Ist wohl ein Anfängerfehler :see_no_evil: