Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. [ESPHome] welche Komponenten sind resourcenhungrig?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [ESPHome] welche Komponenten sind resourcenhungrig?

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      WolfgangFB last edited by

      Ich habe versucht bei einem ESP8266 mit einem Bewegungsmelder ein paar Informationen (Zeitzpunkt letzte Bewegung Bewegung, Inaktiv seit... , Anzahl Bewegungen) direkt im ESP zu erfassen und in einem Textsensor auszugeben. Prinzipiell funktioniert das, aber das ganze scheint den ESP derart zu überlasten, dass er ständig abstürzt, neu bootet oder den Kontakt zum IO-Broker verliert.
      Gibt es irgendwelche Richtlinien, welche Komponenten besonders recourcenhungrig sind?
      Beim Compilieren wird mir gemeldet, dass sowohl RAM als auch Flash zu ca. 50% belegt sind.
      Die verwendeten Komponenten sind:
      -Webserver
      -MQTT
      -Globals
      -Text_sensor (template)
      -Sensor (gpio, adc, wifi_signal, uptime, template)
      -Binary_sensor (gpio)
      -Switch (gpio)
      -Time (sntp)

      Die Textsensoren werden alle 10 Sekunden aktualisiert.

      arteck 1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active @WolfgangFB last edited by

        @wolfgangfb und die yaml?

        1 Reply Last reply Reply Quote 0
        • W
          WolfgangFB last edited by

          @arteck
          Hier die yaml, sollte eigetnlich alle 10 Sekunden die aktuelle Zeit ausgeben, aktualisiert wird aber nur ca. 2-3 mal pro Minute, nach ein paar Minuten stürzt der ESP ab und bootet dann neu (zu sehen an der Laufzeit). Welche der Komponenten bringt den ESP so arg ins schwitzen?

          esphome:
            name: mini-werkbank
            platform: ESP8266
            board: d1_mini
            project:
              name: "wolfgang.mini-werkbank"
              version: "105"
            includes:
              - MyTime.h
              - Mini-Wekbank.h
            on_boot:
              - sensor.template.publish:
                  id: D5AnzahlId
                  state: !lambda return id(D5Anzahl);
          # D4 LED 
          # D5 Bewegung.Werkbank
          
          # 68:C6:3A:D4:5C:B6
          
          # Enable logging
          logger:
          
          # Enable Home Assistant API
          api:
          
          ota:
            password: "xxxxxxx"
          
          wifi:
            ssid: !secret wifi_ssid
            password: !secret wifi_password
          
            # Enable fallback hotspot (captive portal) in case wifi connection fails
            ap:
              ssid: "Mini-Wekbank"
              password: "xxxxx"
          
          captive_portal:
          
          mqtt:
            broker: 192.168.1.203
            on_connect:
              then:
              - text_sensor.template.publish:
                  id: MQTTVerbundenId
                  state: "true"
            on_disconnect:
              then:
              - text_sensor.template.publish:
                  id: MQTTVerbundenId
                  state: "false"
          
          
          globals:
            - id: Zeit
              type: std::string
            - id: D5InaktivSek
              type: int
              initial_value: '0'
              restore_value: yes
            - id: D5Anzahl
              type: int
              initial_value: '0'
              restore_value: yes
          
          text_sensor:
            - platform: template
              name: "105 Raum.Hobby.ESP.mini-werkbank.IP"
              lambda: 'return {WiFi.localIP().toString().c_str()};'
            - platform: template
              name: 105 Raum.Hobby.ESP.mini-werkbank.MQTT.Verbunden
              id: MQTTVerbundenId
              update_interval: never
            - platform: template
              name: "105 Raum.Hobby.ESP.mini-werkbank.HTML"
              id: HTML
              update_interval: never
            - platform: template
              name: "105 Raum.Hobby.ESP.mini-werkbank.Zeit"
              id: Aktuellezeit
              update_interval: never
          # D5 Bewegung
            - platform: template
              name: "105 Raum.Hobby.Bewegung.Werkbank.Ausloesezeit"
              id: D5AusloesezeitID
              update_interval: never
            - platform: template
              name: "105 Raum.Hobby.Bewegung.Werkbank.Inaktiv"
              id: D5InaktivZeitId
              update_interval: never
            - platform: template
              name: "105 Raum.Hobby.Bewegung.Werkbank.IP"
              lambda: 'return {WiFi.localIP().toString().c_str()};'
          
          sensor:
            - platform: adc
              name: "105 Raum.Hobby.ESP.mini-werkbank.Spannung"
              id: IDCore
              pin: VCC
              update_interval: 60s
            - platform: wifi_signal
              name: "105 Raum.Hobby.ESP.mini-werkbank.Signal"
              update_interval: 60s
              id: IDSignal
            - platform: uptime
              name: "105 Raum.Hobby.ESP.mini-werkbank.Laufzeit"
              id: IDUptime
            - platform: template
              name: "105 Raum.Hobby.Bewegung.Werkbank.Anzahl"
              id: D5AnzahlId
              update_interval: never
              accuracy_decimals: 0
            - platform: wifi_signal
              name: "105 Raum.Hobby.Bewegung.Werkbank.Signal"
              update_interval: 60s
          
          binary_sensor:
            - platform: gpio
              name: "105 Raum.Hobby.Bewegung.Werkbank.Zustand"
              id: D5Bewegung
              filters:
              - delayed_on_off: 100ms
              pin:
                number: D5
                mode:
                  INPUT
              on_press:
                then:
                - switch.turn_on: LED
                - lambda: id(D5Anzahl) += 1;
                - lambda: id(D5InaktivSek) = 0;
                - text_sensor.template.publish:
                    id: D5AusloesezeitID
                    state: !lambda return id(Zeit).c_str();
                - sensor.template.publish:
                    id: D5AnzahlId
                    state: !lambda return id(D5Anzahl);
                - mqtt.publish:
                    topic: "Bewegung.Last"
                    payload: !lambda return std::string("HobbyWerkbank ") + id(Zeit).c_str();
                - mqtt.publish:
                    topic: "Bewegung.Lastabs"
                    payload: !lambda return str_sprintf("%llu", id(MySntp).now().timestamp);
                - text_sensor.template.publish:
                    id: HTML
                    state: !lambda return MyTabelle();
              on_release:
                then:
                - text_sensor.template.publish:
                    id: HTML
                    state: !lambda return MyTabelle();
          
          
          switch:
            - platform: gpio
              pin:
                number: GPIO02
                mode: OUTPUT
                inverted: true
              id: LED
              on_turn_on:
              - delay: 500ms
              - switch.turn_off: LED
              restore_mode: ALWAYS_OFF
              name: "105 Raum.Hobby.ESP.mini-werkbank.LED"
            - platform: restart
              name: "105 Raum.Hobby.ESP.mini-werkbank.Neustart"
          
          time:
            - platform: sntp
              timezone: Europe/Berlin
              id: MySntp
              on_time:
                - seconds: /10
                  then:
                    - lambda: id(Zeit) = id(MySntp).now().strftime("%d.%m %H:%M:%S");
                    - lambda: |-
                        id(D5InaktivSek) += 10;
                    - text_sensor.template.publish:
                        id: D5InaktivZeitId
                        state: !lambda return MyTime(id(D5InaktivSek));
                    - text_sensor.template.publish:
                        id: HTML
                        state: !lambda return MyTabelle();
                    - text_sensor.template.publish:
                        id: Aktuellezeit
                        state: !lambda return id(Zeit).c_str();
                - seconds: 0
                  minutes: 0
                  hours: 0
                  then:
                    - lambda: |-
                        id(D5Anzahl) = 0;
                        id(D5InaktivSek) = 0;
          
          

          MyTime.h sieht wie folgt aus:

          std::string MyTime(int secs){
            char Plural = ' ';
            if (secs > 60 * 60 * 24 *2 ) 
              {
              Plural = 'e';
              }
            if (secs < 60){
              return str_sprintf("%02.0f Sek", float(secs));
              } else
              {
              if (secs < 60 * 60){
                return str_sprintf("%2.0f Min", abs(float(secs/60)));
                } else
                {
                if (secs < 60 * 60 * 24){
                	return str_sprintf("%2.0f Std", abs(float(secs/(60 * 60))));
                	} else
                	{
                	return str_sprintf("%2.0f Tag%c", abs(float(secs/(60 * 60 * 24))), Plural);
                	}
                }
              }
            }
          

          mini-werkbank.h wie folgt:

          std::string MyTabelle(){
              std::string CrLf = "\r\n";
              std::string Rot = " style=\"background-color: red; font-size: 12pt;\"";
              std::string Gruen = " style=\"background-color: #44ff44; font-size: 12pt;\"";
              std::string Start = "<table style=\"width: 450 + px; font-size: 10pt; border-collapse: collapse;\" border=\"0\">" + CrLf;
              std::string Tabelle = Start;
              std::string Style = id(MQTTVerbundenId).state == "true" ? Gruen:Rot;
              Tabelle = Tabelle + "<td><tr><td" + Style + ">Mini-Wekbank</td><td style=\"width: 180px; font-size: 8pt;\">"  + WiFi.localIP().toString().c_str() + "<br>" + WiFi.macAddress().c_str() +  "</td></tr>";
              Tabelle = Tabelle + "<tr><td>Signal: </td><td> "+ str_sprintf("%.0f", id(IDSignal).state) + " dBm</td></tr>";
              Tabelle = Tabelle + "<tr><td>Laufzeit: </td><td> "+ str_sprintf("%.0f", id(IDUptime).state) + " s</td></tr>";
              Tabelle = Tabelle + "<tr><td>Spannung: </td><td> "+ str_sprintf("%.2f", id(IDCore).state) + " V</td></tr>";
              Tabelle = Tabelle + "<tr><td>Zeit: </td><td> "+ id(Zeit) + "</td></tr>";
              Style = id(D5Bewegung).state == true ? Rot: "";
              Tabelle = Tabelle + "<tr><td" + Style + ">Werkbank</td><td> "+ str_sprintf("%.0f", id(D5AnzahlId).state) + "</td></tr>";
              Tabelle = Tabelle + "<tr><td>Werkbank</td><td> "+ id(D5InaktivZeitId).state + "</td></tr>";
              Tabelle = Tabelle + "<tr><td>Werkbank</td><td> "+ id(D5AusloesezeitID).state + "</td></tr>";
              Tabelle = Tabelle + "<tr><td onclick=\"servConn.setState('alias.0.Raum.Hobby.mini-werkbank.ESP.Neustart', true);\">Neustart</td></tr>";
              Tabelle = Tabelle + "</table>";
              return Tabelle;
          }
          
          
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          928
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          2
          3
          203
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo