Help compiling additional .h files with esphome

Hi
I bought the slimmelezer after the blog post here at HA. However I never got it to work with my Swedish Kamstrump Omnipower. Then I ran across this project on github: psvanstrom (Pär Svanström) · GitHub
The founder of Slimmeleser @zuidwijk have provided a post under issues no:45:
https://github.com/psvanstrom/esphome-p1reader/issues/45
Which seams to make the slimmelezer to be working with Kamstrump and or Swedish standard.

Unfortunatley when I compile the updated esphome firmware i get serveral errors and with little experience in C++ and esphome compiling I need some help to solve this.

Here is my complete stack trace:

## INFO Reading configuration /config/esphome/slimmelezer.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing slimmelezer-se (board: d1_mini; framework: arduino; platform: platformio/espressif8266 @ 3.2.0)

HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- 1.2.3
|-- 2.1.0
| |-- 1.2.3
| |-- 1.0
| |-- 1.0
|-- 1.1.1
|-- 1.0
|-- 1.2
|-- 6.18.5
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/api_connection.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/api_frame_helper.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/api_pb2.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/api_pb2_service.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/api_server.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/list_entities.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/proto.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/api/user_services.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/custom/sensor/custom_sensor.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/esp8266/core.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/esp8266/gpio.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/esp8266/preferences.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/json/json_util.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/logger/logger.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/md5/md5.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/mdns/mdns_component.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/mdns/mdns_esp32_arduino.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/mdns/mdns_esp_idf.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/network/util.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/ota/ota_backend_arduino_esp32.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/ota/ota_backend_esp_idf.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/ota/ota_component.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/sensor/automation.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/sensor/filter.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/sensor/sensor.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/socket/socket.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart_component.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart_component_esp32_arduino.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart_component_esp8266.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart_component_esp_idf.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/uart/uart_debugger.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/web_server/list_entities.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/web_server/web_server.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/wifi/wifi_component.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/wifi/wifi_component_esp32_arduino.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/components/wifi/wifi_component_esp_idf.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/application.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/color.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/component.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/component_iterator.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/controller.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/entity_base.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/helpers.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/log.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/scheduler.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/esphome/core/util.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/src/main.cpp.o
Generating LD script /data/slimmelezer-se/.pioenvs/slimmelezer-se/ld/local.eagle.app.v6.common.ld
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/ESPAsyncTCP-esphome/AsyncPrinter.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/ESPAsyncTCP-esphome/ESPAsyncTCP.cpp.o
In file included from src/main.cpp:56:
src/p1reader.h:419:10: warning: missing terminating ' character
419 |

| ^
src/p1reader.h:419:10: error: missing terminating ' character
419 |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/p1reader.h:476:75: error: extended character ↵ is not valid in an identifier
476 | ↵
| ^
src/p1reader.h:481:56: error: extended character ↵ is not valid in an identifier
481 | ↵
| ^
src/p1reader.h:523:75: error: extended character ↵ is not valid in an identifier
523 | ↵
| ^
src/p1reader.h:528:56: error: extended character ↵ is not valid in an identifier
528 | ↵
| ^
src/p1reader.h:561:75: error: extended character ↵ is not valid in an identifier
561 | ↵
| ^
src/p1reader.h:566:56: error: extended character ↵ is not valid in an identifier
566 | ↵
| ^
src/p1reader.h:599:75: error: extended character ↵ is not valid in an identifier
599 | ↵
| ^
src/p1reader.h:604:56: error: extended character ↵ is not valid in an identifier
604 | ↵
| ^
In file included from src/main.cpp:56:
src/p1reader.h:989:25: warning: missing terminating " character
989 | data-action="
| ^
src/p1reader.h:989:25: error: missing terminating " character
src/p1reader.h:990:41: error: stray '#' in program
990 | input-entered:ref-selector#inputEntered
| ^
src/p1reader.h:991:40: error: stray '#' in program
991 | tab-selected:ref-selector#tabSelected
| ^
src/p1reader.h:992:38: error: stray '#' in program
992 | focus-list:ref-selector#focusFirstListMember
| ^
src/p1reader.h:993:13: warning: missing terminating " character
993 | "
| ^
src/p1reader.h:993:13: error: missing terminating " character
src/p1reader.h:1040:25: warning: missing terminating " character
1040 | data-action="
| ^
src/p1reader.h:1040:25: error: missing terminating " character
src/p1reader.h:1041:41: error: stray '#' in program
1041 | input-entered:ref-selector#inputEntered
| ^
src/p1reader.h:1042:40: error: stray '#' in program
1042 | tab-selected:ref-selector#tabSelected
| ^
src/p1reader.h:1043:38: error: stray '#' in program
1043 | focus-list:ref-selector#focusFirstListMember
| ^
src/p1reader.h:1044:13: warning: missing terminating " character
1044 | "
| ^
src/p1reader.h:1044:13: error: missing terminating " character
In file included from src/main.cpp:56:
src/p1reader.h:1451:72: error: stray '#' in program
1451 | #include "esphome.h"
| ^
src/p1reader.h:1460:72: error: stray '#' in program
1460 | #define BUF_SIZE 60
| ^
src/p1reader.h:1939:207: error: too many decimal points in number
1939 | if (strncmp(obisCode, "1.8.0", 5) == 0) {
| ^~~~~
src/p1reader.h:1952:240: error: too many decimal points in number
1952 | } else if (strncmp(obisCode, "2.8.0", 5) == 0) {
| ^~~~~
src/p1reader.h:1965:240: error: too many decimal points in number
1965 | } else if (strncmp(obisCode, "3.8.0", 5) == 0) {
| ^~~~~
src/p1reader.h:1978:240: error: too many decimal points in number
1978 | } else if (strncmp(obisCode, "4.8.0", 5) == 0) {
| ^~~~~
src/p1reader.h:1991:240: error: too many decimal points in number
1991 | } else if (strncmp(obisCode, "1.7.0", 5) == 0) {
| ^~~~~
src/p1reader.h:2004:240: error: too many decimal points in number
2004 | } else if (strncmp(obisCode, "2.7.0", 5) == 0) {
| ^~~~~
src/p1reader.h:2017:240: error: too many decimal points in number
2017 | } else if (strncmp(obisCode, "3.7.0", 5) == 0) {
| ^~~~~
src/p1reader.h:2030:240: error: too many decimal points in number
2030 | } else if (strncmp(obisCode, "4.7.0", 5) == 0) {
| ^~~~~
src/p1reader.h:2043:240: error: too many decimal points in number
2043 | } else if (strncmp(obisCode, "21.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2056:240: error: too many decimal points in number
2056 | } else if (strncmp(obisCode, "22.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2069:240: error: too many decimal points in number
2069 | } else if (strncmp(obisCode, "41.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2082:240: error: too many decimal points in number
2082 | } else if (strncmp(obisCode, "42.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2095:240: error: too many decimal points in number
2095 | } else if (strncmp(obisCode, "61.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2108:240: error: too many decimal points in number
2108 | } else if (strncmp(obisCode, "62.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2121:240: error: too many decimal points in number
2121 | } else if (strncmp(obisCode, "23.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2134:240: error: too many decimal points in number
2134 | } else if (strncmp(obisCode, "24.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2147:240: error: too many decimal points in number
2147 | } else if (strncmp(obisCode, "43.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2160:240: error: too many decimal points in number
2160 | } else if (strncmp(obisCode, "44.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2173:240: error: too many decimal points in number
2173 | } else if (strncmp(obisCode, "63.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2186:240: error: too many decimal points in number
2186 | } else if (strncmp(obisCode, "64.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2199:240: error: too many decimal points in number
2199 | } else if (strncmp(obisCode, "32.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2212:240: error: too many decimal points in number
2212 | } else if (strncmp(obisCode, "52.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2225:240: error: too many decimal points in number
2225 | } else if (strncmp(obisCode, "72.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2238:240: error: too many decimal points in number
2238 | } else if (strncmp(obisCode, "31.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2251:240: error: too many decimal points in number
2251 | } else if (strncmp(obisCode, "51.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2264:240: error: too many decimal points in number
2264 | } else if (strncmp(obisCode, "71.7.0", 6) == 0) {
| ^~~~~~
src/p1reader.h:2486:209: error: stray '#' in program
2486 | int len = Serial.readBytesUntil('\n', buffer, BUF_SIZE);
| ^
src/p1reader.h:2486:241: error: stray '' in program
2486 | int len = Serial.readBytesUntil('\n', buffer, BUF_SIZE);
| ^
src/p1reader.h:2486:272: error: stray '#' in program
2486 | int len = Serial.readBytesUntil('\n', buffer, BUF_SIZE);
| ^
src/p1reader.h:2512:140: error: stray '#' in program
2512 | buffer[len] = '\n';
| ^
src/p1reader.h:2512:172: error: stray '' in program
2512 | buffer[len] = '\n';
| ^
src/p1reader.h:2512:203: error: stray '#' in program
2512 | buffer[len] = '\n';
| ^
src/p1reader.h:2516:171: error: stray '#' in program
2516 | buffer[len + 1] = '\0';
| ^
src/p1reader.h:2516:203: error: stray '' in program
2516 | buffer[len + 1] = '\0';
| ^
src/p1reader.h:2516:234: error: stray '#' in program
2516 | buffer[len + 1] = '\0';
| ^
src/p1reader.h:2529:196: error: stray '#' in program
2529 | if (buffer[0] == '!') {
| ^
src/p1reader.h:2529:230: error: stray '#' in program
2529 | if (buffer[0] == '!') {
| ^
In file included from src/main.cpp:56:
src/p1reader.h:2591:198: error: stray '#' in program
2591 | if (strchr(buffer, '(') != NULL) {
| ^
src/p1reader.h:2591:232: error: stray '#' in program
2591 | if (strchr(buffer, '(') != NULL) {
| ^
In file included from src/main.cpp:56:
src/p1reader.h:2743:12: warning: missing terminating ' character
2743 |
| ^
src/p1reader.h:2743:12: error: missing terminating ' character
2743 |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/p1reader.h:2768:13: warning: character constant too long for its type
2768 |

## Footer

| ^~~~~~~~~
In file included from src/main.cpp:56:
src/p1reader.h:2783:21: warning: character constant too long for its type
2783 |
| ^~~~~~~~
src/p1reader.h:2784:17: warning: character constant too long for its type
2784 |

### Footer navigation

| ^~~~~~~~~
src/p1reader.h:2784:30: warning: character constant too long for its type
2784 |

### Footer navigation

| ^~~~~~~~~~~~~~~~~~~
In file included from src/main.cpp:56:
src/p1reader.h:2785:132: warning: character constant too long for its type
2785 |

| ^~~~~~~~~~~~~~~~~~~
In file included from src/main.cpp:56:
src/p1reader.h:2818:9: error: extended character ’ is not valid in an identifier
2818 | You can’t perform that action at this time.
| ^
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/ESPAsyncTCP-esphome/ESPAsyncTCPbuffer.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/ESPAsyncTCP-esphome/SyncClient.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/ESPAsyncTCP-esphome/tcp_axtls.c.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/libaf0/Hash/Hash.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib67b/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib67b/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib67b/ESP8266WiFi/ESP8266WiFi.cpp.o
Archiving /data/slimmelezer-se/.pioenvs/slimmelezer-se/libaf0/libHash.a
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib67b/ESP8266WiFi/ESP8266WiFiAP.cpp.o
In file included from src/main.cpp:56:
src/p1reader.h:8:1: error: expected unqualified-id before '<' token
8 |
| ^
In file included from src/main.cpp:56:
src/p1reader.h:187:25: error: 'up' does not name a type; did you mean 'u8'?
187 | Sign up
| ^~
| u8
src/p1reader.h:663:25: error: expected unqualified-id before '<' token
663 |

{{ message }}

| ^
In file included from src/main.cpp:56:
src/p1reader.h:1026:97: error: expected unqualified-id before '<' token
1026 | {{ refName }}
| ^
src/p1reader.h:1066:97: error: expected unqualified-id before '<' token
1066 | {{ refName }}
| ^
In file included from src/main.cpp:56:
src/p1reader.h:1160:61: error: expected unqualified-id before '<' token
1160 |
| ^
src/p1reader.h:1164:56: error: expected unqualified-id before '<' token
1164 |
| ^
In file included from src/main.cpp:56:
src/p1reader.h:1451:153: error: expected unqualified-id before '<' token
1451 | #include "esphome.h"
| ^
src/p1reader.h:1451:196: error: expected unqualified-id before '<' token
1451 | #include "esphome.h"
| ^
src/p1reader.h:1645:74: error: expected unqualified-id before '<' token
1645 | };
| ^
In file included from src/main.cpp:56:
src/p1reader.h:2701:75: error: expected unqualified-id before '<' token
2701 | };
| ^
In file included from src/main.cpp:56:
src/p1reader.h:2778:16: error: expected unqualified-id before numeric constant
2778 | © 2022 GitHub, Inc.
| ^~~~
Archiving /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib975/libESPAsyncTCP-esphome.a
Compiling /data/slimmelezer-se/.pioenvs/slimmelezer-se/lib67b/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
*** [/data/slimmelezer-se/.pioenvs/slimmelezer-se/src/main.cpp.o] Error 1
========================= [FAILED] Took 40.18 seconds =========================

It seems that the p1reader.h file is corrupt:
src/p1reader.h:419:10: warning: missing terminating ' character

That file has only 314 lines …

Thanks you are right. The file was corrupt. Downloading it again and it compiled!