Zum Inhalt springen

Photovoltaik / Solar-Energie


Aktienspekulaant

Empfohlene Beiträge

vor 19 Minuten schrieb Krypto-Patty:

Wäre es möglich den Akku auch im Freien zu parken wo er Wind und Wetter geschützt ist ? 

Ja aber nicht mit Ecoflow. Schau mal nach Anker e1600, Greensolar Batteriespeicher oder sowas in der Art. Die sind IP65 zertifiziert und können somit auf dem Balkon verbleiben. Ich habe noch nicht die jeweiligen Handbücher bezüglich Winter Temperaturen durchsucht. Ich würde erwarten, dass der Akku bei zu tiefen Temperaturen einfach automatisch abschaltet. Falls im Handbuch nichts dazu steht einfach im Winter abbauen und mit rein nehmen.

Was auch noch ginge wäre die Leitung von den Solarpanelen irgendwo nach innen zu legen. Dazu müsstest du entweder ein Loch bohren oder ein spezielles flaches Kabel über die Festerdichtung nach innen führen. Letzteres setzt aber voraus, dass du ein Fester hast was du selten verwendest. Die Balkontür würde zu oft bewegt werden was dieses flache Kabel nach einiger Zeit beschädigt. Wenn du eine Möglichkeit hast dann könntest du den Akku so bei dir im Wohnzimmer aufstellen und müsstest dich nicht auf IP65 beschränken. Bedenke aber, dass so ein Akku gern auch mal Lüfter verbaut hat. Solltest du diesen Weg gehen dann besser nochmal raussuchen wie laut der Akku beim Laden über sagen wir 800W Solar wird.

Edit: Was bekommst du maximal an Modulleistung installiert? So ein Akku wird speziell dann interessant wenn du genug Platz für 800W und mehr hast. Du könntest mit 2000W Modulleistung einen Akku speisen und dann darf der Akku bis in die Nacht hinein einen 600W Wechselrichter antreiben. Das ist der große Vorteil mit Akku.

Bearbeitet von skunk
  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 16 Stunden schrieb Krypto-Patty:

Das Kraftwerk hätte ich gerne mit einem Akku

Wie sieht denn dein Usecase aus?

Hier ein paar Beispiele:

A ) Du hast einen Grundlastverbrauch von 100 Watt rund um die Uhr und willst diesen decken indem der Speicher rund um die Uhr 100 Watt ins Stromnetz abgibt um diese Grundlast (teilweise) zu decken

B ) Du hast elektrische Durchlauferhitzer für Warmwasser und willst diese Spitzenlasten durch deinen Speicher (teilweise) decken.

C ) Du hast einfach nur keine Lust den Strom dem Stromversorger zu schenken und willst ihn daher speichern - in diesem Fall musst du auch irgendwie den Strom wieder aus der Batterie rausholen, zu welchen Zeitpunkten planst du das zu tun?

 

Meiner Einschätzung nach macht das Speichern von Strom aus senkrecht montierten Modulen keinen Sinn.

Im Sommer erzeugen die weniger Strom als möglich weil der Sonneneinstrahlwinkel nie passt. Du betreibst die Module eh nur mit 50% ihrer Leistungsfähigkeit.
Im Winter steht die Sonne zwar niedriger, ist jedoch deutlich schwächer, auch da erzeugst du nur 50% ihrer Leistungsfähigkeit. Den Speicher wirst du kaum voll bekommen und hast dir dennoch hohe Kosten ans Bein gebunden - und ein Platzproblem hast du auch.

Das Geld für den Speicher würde ich erstmal  nicht ausgeben und lieber schauen ob nicht ein oder zwei weitere Module montierbar sind und dann erstmal abwarten wie du deinen Verbrauch in die Zeit der Stromerzeugung shiften kannst.

Erst im zweiten Schritt schaust du wieviel Strom du nachts verbrauchst und wie hoch das Kostenpotenzial für einen Speicher sein wird.

Mal ein kleines Rechenbeispiel dazu:
Wenn du in der "Nicht-Sonnen-Zeit" 2 kWh Verbrauch hast, die du nicht in die Sonnen-Zeit schieben kannst, kannst du jede Nacht einen 1-kWh-Speicher leeren und am nächsten Tag wieder füllen.

1 kWh kostet mit aktuellen Neuverträgen unter 0,3 Euro.

So ein Stromspeicher schafft in der Regel 3.000 Vollzyklen bis dessen Kapazität auf 80% abgefallen ist.

Geh mal von 200 Tagen im Jahr aus in denen du den Speicher tagsüber auch gefüllt bekommst, dann muss der 15 Jahre lang halten bis er aufgrund seiner Zyklenfestigkeit nur noch bei 80% ist. .... 15 Jahre muss so ein Speicher auch erstmal halten.

Nach 3.000 Zyklen hat er 3.000 kWh abgegeben (die 10-20% Lade/Entladeverluste ignorieren wir mal) ... das sind 3.000 kWh * 0,3 €/kWh => 1.000 €.

Der Speicher darf dich also nur 1.000 Euro kosten.

Das wird schon eng.

 

Daher erstmal nur Module und Wechselrichter an die Wand schrauben und erst nächstes oder übernächstes Jahr den Speicher nachrüsten, die Preise dürften dann um 50% gefallen sein, denn die Nachfrage zieht gerade erst an.

 

 

  • Thanks 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb Jokin:

Wie sieht denn dein Usecase aus?

Hier ein paar Beispiele:

A ) Du hast einen Grundlastverbrauch von 100 Watt rund um die Uhr und willst diesen decken indem der Speicher rund um die Uhr 100 Watt ins Stromnetz abgibt um diese Grundlast (teilweise) zu decken

B ) Du hast elektrische Durchlauferhitzer für Warmwasser und willst diese Spitzenlasten durch deinen Speicher (teilweise) decken.

C ) Du hast einfach nur keine Lust den Strom dem Stromversorger zu schenken und willst ihn daher speichern - in diesem Fall musst du auch irgendwie den Strom wieder aus der Batterie rausholen, zu welchen Zeitpunkten planst du das zu tun?

 

Meiner Einschätzung nach macht das Speichern von Strom aus senkrecht montierten Modulen keinen Sinn.

Im Sommer erzeugen die weniger Strom als möglich weil der Sonneneinstrahlwinkel nie passt. Du betreibst die Module eh nur mit 50% ihrer Leistungsfähigkeit.
Im Winter steht die Sonne zwar niedriger, ist jedoch deutlich schwächer, auch da erzeugst du nur 50% ihrer Leistungsfähigkeit. Den Speicher wirst du kaum voll bekommen und hast dir dennoch hohe Kosten ans Bein gebunden - und ein Platzproblem hast du auch.

Das Geld für den Speicher würde ich erstmal  nicht ausgeben und lieber schauen ob nicht ein oder zwei weitere Module montierbar sind und dann erstmal abwarten wie du deinen Verbrauch in die Zeit der Stromerzeugung shiften kannst.

Erst im zweiten Schritt schaust du wieviel Strom du nachts verbrauchst und wie hoch das Kostenpotenzial für einen Speicher sein wird.

Mal ein kleines Rechenbeispiel dazu:
Wenn du in der "Nicht-Sonnen-Zeit" 2 kWh Verbrauch hast, die du nicht in die Sonnen-Zeit schieben kannst, kannst du jede Nacht einen 1-kWh-Speicher leeren und am nächsten Tag wieder füllen.

1 kWh kostet mit aktuellen Neuverträgen unter 0,3 Euro.

So ein Stromspeicher schafft in der Regel 3.000 Vollzyklen bis dessen Kapazität auf 80% abgefallen ist.

Geh mal von 200 Tagen im Jahr aus in denen du den Speicher tagsüber auch gefüllt bekommst, dann muss der 15 Jahre lang halten bis er aufgrund seiner Zyklenfestigkeit nur noch bei 80% ist. .... 15 Jahre muss so ein Speicher auch erstmal halten.

Nach 3.000 Zyklen hat er 3.000 kWh abgegeben (die 10-20% Lade/Entladeverluste ignorieren wir mal) ... das sind 3.000 kWh * 0,3 €/kWh => 1.000 €.

Der Speicher darf dich also nur 1.000 Euro kosten.

Das wird schon eng.

 

Daher erstmal nur Module und Wechselrichter an die Wand schrauben und erst nächstes oder übernächstes Jahr den Speicher nachrüsten, die Preise dürften dann um 50% gefallen sein, denn die Nachfrage zieht gerade erst an.

 

 

Danke, die Platten werden an die wand geschraubt aber nicht senkrecht. 
 

Den Akku werde ich auch erstmal weglassen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Minuten schrieb Krypto-Patty:

Danke, die Platten werden an die wand geschraubt aber nicht senkrecht. 

Ach so - ich hab auch Platten an der Wand und mich aufgrund von Optik, Aufwand und Windlast gegen eine schräge Montage entschieden - sind daher senkrecht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 22.9.2023 um 17:21 schrieb Jokin:

Ach so - ich hab auch Platten an der Wand und mich aufgrund von Optik, Aufwand und Windlast gegen eine schräge Montage entschieden - sind daher senkrecht.

Bei meinen Senkrecht nach SüdOstOst ausgerichteten hab ich aktuell so ca 50% der kWp als tatsächlichen Output. Es liegt aber auch etwas Schatten von Gartenbepflanzung drauf, der im Herbst langsam verschwinden sollte.

Module sind ja aktuell richtig günstig zu bekommen, da lohnt sich schon fast eine nahezu Flache (10-15°Süd) Montage für bewölkte Tage.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...
vor 14 Minuten schrieb ratzfatz:

Weiß nicht ob ich mir sowas in den Keller stellen würde. Egal welcher Hersteller.

https://www.pv-magazine.de/2023/10/13/explosion-eines-30-kilowattstunden-batteriespeichers-zerstoert-wohnhaus/

Ja würdest du. Du fährst auch mit dem Auto trotz all der Verkehrstoten jeden Tag. Verglichen damit ist das Risiko, dass dir so ein Batteriespeicher abbrennt deutlich geringer.

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 49 Minuten schrieb skunk:

Ja würdest du. Du fährst auch mit dem Auto trotz all der Verkehrstoten jeden Tag. Verglichen damit ist das Risiko, dass dir so ein Batteriespeicher abbrennt deutlich geringer.

Schlechter Vergleich. Das eine muss ich eventuell, das Andere nicht 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb ratzfatz:

Schlechter Vergleich. Das eine muss ich eventuell, das Andere nicht 

Dann nehmen wir eben Auto fahren mit leicht überhöhter Geschwindigkeit. Es spielt am Ende keine Rolle. Es gibt genügend Moment in deinem Leben in denen du dich dazu entscheidest etwas zu machen was ein deutlich höheres Risiko mit sich bringt als so ein Akku im Keller. Wie wäre es mit einer undichten Gastherme oder ein Kamin, der sich wegen schlechtem Brennmaterial langsam zusetzt. Such dir einfach ein Beispiel aus was für dich passt und rechne aus wie hoch das Risiko für dich persönlich ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Minuten schrieb skunk:

Dann nehmen wir eben Auto fahren mit leicht überhöhter Geschwindigkeit. Es spielt am Ende keine Rolle. Es gibt genügend Moment in deinem Leben in denen du dich dazu entscheidest etwas zu machen was ein deutlich höheres Risiko mit sich bringt als so ein Akku im Keller. Wie wäre es mit einer undichten Gastherme oder ein Kamin, der sich wegen schlechtem Brennmaterial langsam zusetzt. Such dir einfach ein Beispiel aus was für dich passt und rechne aus wie hoch das Risiko für dich persönlich ist.

Hast schon irgendwie recht. Aber ich würde es trotzdem nicht tun 😄

Ist ja noch nicht sooo erprobt, sich eine Batterie in den Keller zu stellen als wie eine Gastherme. 

Ist vielleicht wie auch wie bei manchen Flugangst, obwohl es das sicherste Verkehrsmittel ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

14 hours ago, ratzfatz said:

Weiß nicht ob ich mir sowas in den Keller stellen würde. Egal welcher Hersteller.

https://www.pv-magazine.de/2023/10/13/explosion-eines-30-kilowattstunden-batteriespeichers-zerstoert-wohnhaus/

Über diesen Fall wird im Akkuforum auch diskutiert, und die Experten meinen, dass die Explosion unmöglich der LiFePo4-Akku direkt gewesen sein kann. Bestenfalls etwas Hitze und Qualm, aber keine Explosion. Vermutet wird, dass etwas explosives in der Nähe war und sich dann am kaputt gehenden Akku entzündet hat.


Der Akkudoc Andreas himself meint:

Sehr heftig, aber das die Explosion von den Zellen kam: Kann ich mir auch nicht vorstellen. Wir haben schon viele Brandtests gemacht und explodiert ist das  nie. In der Regel eher ein Ausgasen bei ca. 200°C. Denke auch, dass dort etwas Explosives in der Nähe war. Was ich auch interessant finde, ist die fehlende Rauchentwicklung. Die Teile qualmen extrem bei Überhitzung, normal sollte da alles komplett schwarz sein. 

Aber letztlich bringt es nicht viel zu spekulieren, sowas wird wohl leider immer wieder passieren. Vielleicht aber eine gute Zeit, um nochmal unsere gesammelten Ergebnisse bezüglich Akkus von Alibaba und AliExpress zu präsentieren. 

 

https://www.akkudoktor.net/forum/diy-akku-komponenten-aufbau-methoden-probleme-inbetriebnahme/beunruhigende-nachrichten-explodierende-stromspeicher/

Bearbeitet von PeWi
Tippfehler
  • Thanks 3
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 59 Minuten schrieb PeWi:

Über diesen Fall wird im Akkuforum auch diskutiert, und die Experten meinen, dass die Explosion unmöglich der LiFePo4-Akku direkt gewesen sein kann. Bestenfalls etwas Hitze und Qualm, aber keine Explosion. Vermutet wird, dass etwas explosives in der Nähe war und sich dann am kaputt gehenden Akku entzündet hat.


Der Akkudoc Andreas himself meint:

Sehr heftig, aber das die Explosion von den Zellen kam: Kann ich mir auch nicht vorstellen. Wir haben schon viele Brandtests gemacht und explodiert ist das  nie. In der Regel eher ein Ausgasen bei ca. 200°C. Denke auch, dass dort etwas Explosives in der Nähe war. Was ich auch interessant finde, ist die fehlende Rauchentwicklung. Die Teile qualmen extrem bei Überhitzung, normal sollte da alles komplett schwarz sein. 

Aber letztlich bringt es nicht viel zu spekulieren, sowas wird wohl leider immer wieder passieren. Vielleicht aber eine gute Zeit, um nochmal unsere gesammelten Ergebnisse bezüglich Akkus von Alibaba und AliExpress zu präsentieren. 

 

https://www.akkudoktor.net/forum/diy-akku-komponenten-aufbau-methoden-probleme-inbetriebnahme/beunruhigende-nachrichten-explodierende-stromspeicher/

Danke. Ich grübel auch schon seit ich das gelesen habe, was da passiert sein könnte. Die Zellchemie gibt das eigentlich nicht her. Mein Plausibelster Gedanke bis jetzt geht in Richtung Knallgas durch ein undichtes/gebrochenes Wasserrohr und einen mangelhaften Aufbau / schlechten Standort.

Fehlende Fakten machen das Spekulieren eher nicht so einfach.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Theseus:

Gedanke bis jetzt geht in Richtung Knallgas

Knallgas kann es nicht sein.

Zitat

LiFePO4-Akkus (Lithium-Eisenphosphat-Akkus) und Bleiakkus funktionieren nach unterschiedlichen chemischen Prozessen, weshalb ihre Verhaltensweisen auch verschieden sind. Hier sind einige Punkte, die die Unterschiede und insbesondere die Wasserstoffproduktion in den beiden Akkutypen betreffen, zusammengefasst:

  1. Wasserstoffproduktion: Bleiakkus können während des Ladevorgangs Wasserstoffgas erzeugen, welches unter bestimmten Bedingungen explosiv sein kann. Im Gegensatz dazu erzeugen LiFePO4-Akkus während des Ladevorgangs kein Gas, was sie in dieser Hinsicht sicherer macht1.

  2. Toxische Gase: LiFePO4-Akkus produzieren keine toxischen Wasserstoff- oder Schwefelwasserstoffgase, weshalb sie nicht belüftet werden müssen. Dies im Gegensatz zu Bleiakkus und verschlossenen Bleiakkus, die aufgrund ihres hohen Grades an thermischer Durchgehfähigkeit belüftet werden müssen2.

  3. Energieeffizienz und Leistung: LiFePO4-Akkus sind eine überlegene und neuere Art von wiederaufladbaren Batterien, die Bleiakkus in mehreren Aspekten übertreffen. Mit einer höheren Energiedichte können sie mehr Energie in einer kompakten Form speichern, was sie perfekt für verschiedene tragbare Geräte wie Laptops, Smartphones und Elektrofahrzeuge macht3.

  4. Sicherheit und Performance: LiFePO4-Akkus haben herausragende Leistungsanforderungen, insbesondere bei hohen Entladeströmen, stabiler Entladespannung und Sicherheit (keine Verbrennung, keine Explosion)4.

Die Informationen zusammenfassend, können LiFePO4-Akkus als sicherer im Vergleich zu Bleiakkus betrachtet werden, da sie kein Wasserstoffgas erzeugen, was eine der Hauptursachen für explosionsgefährliche Szenarien in Bleiakkus ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 5 Monate später...
vor 20 Stunden schrieb mike_grh:

Ja, schon traurig. Leider seit ein paar Monaten absehbar. 

 

Nachtrag: Der Kommentar auf https://www.heise.de/forum/heise-online/Kommentare/Solarhersteller-Meyer-Burger-kuendigt-Mitarbeitern-und-beschliesst-Aus-in-Freiberg/Re-Ich-koennte-weinen/posting-43825553/show/ trifft es ziemlich gut.

Bearbeitet von Theseus
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nun zurück zu einem konstruktiverem Thema:

https://www.pv-magazine.de/2024/03/27/junge-baeume-im-schatten-von-solarmodulen-aufziehen/

Zitat

Eine mobile Photovoltaik-Anlage über einer Wiederaufforstungsfläche in Baden-Württemberg spendet 40 Prozent Schatten für junge Setzlinge, die in normalen Wäldern von den umstehenden Bäumen geliefert werden. Der erzeugte Solarstrom wird im anliegenden Quarzsandwerk direkt genutzt.

 

  • Love it 1
  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...
vor einer Stunde schrieb ..::. o.Z.o.n.e .::..:

Die Wahrheit ist wahrscheinlich noch schlimmer als jemand auch nur denken kann. ;o))

Folgender Artikel in der der Welt ...

      "Kobalt: Das dunkelste Geheimnis der Energiewende" – ( archive.ph )

Nun ja, das sind schon extremste Zustände im Kongo. Das bedeutet aber nicht, dass man das Erz nicht mit humanen Arbeitsbedingungen fördern könnte. Außerdem kommen LiFePO4-Akkus vollkommen ohne Kobalt aus. Das alte Thema seltene Erden... ist eigentlich keins.

  • Love it 1
  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Mensch kann sich aus dem Schlamassel, das er angerichtet hat, nur noch selbst retten – und das wird er tun, mithilfe seiner künstlichen Intelligenz. 

Der Satz gefällt mir am besten...

Mal ehrlich, die Menschheit lernt eben nur aus Erfahrungen - wie schädlich etwas bei der Erfindung ist, wird eben erst oft später erkannt... (man denke an FCKW, Asbest und CO! - wir sind mmn. auf dem richtigen Weg)
Mit der Akku Technologie, die momentan extreme Sprünge macht, ist vieles möglich!
Und vielleicht ist es wirklich die KI, die uns schlussendlich die rettende Formel liefert?!?

@Sophopt absolut richtig, ich habe auch LFP Akkus im Keller (schon alleine wegen der geringeren Brandgefahr)

  • Love it 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Mal was zum Basteln:

 

Wer einen DIY-Akku oder auch nur einen Akku mit freiem Zugang zu den DC-Kabeln hat, kann sich mittels ESPHome und einer Wallbox mit einem 10V-Steuerspannungseingang ein einfaches und schnell reagierendes Überschussladesystem bauen.

Ich hab keine Lust gehabt, noch einen weiteren Stunt mit Digitalamperemeter in den DC-Strang zu bauen und kam so auf die Idee, ein simples 3-Achs-Magntometer mittels Kabelbinder an einer beiden DC-Leitungen zu befestigen. Gleichstrom erzeugt ja bekanntlich in Abhängigkeit von der Stromstärke ein mehr oder weniger starkes Magnetfeld.

Das Display und den Button könnt ihr weglassen, ich hab die nur für die Anfangsexperimente gebraucht und so einfach drin gelassen

Als DAC wird ein gp8403 verwendet, die gibts recht günstig.
Als Magenetfeldsensor hab ich das 6050 genommen, ist ebenfalls spottbillig und reicht für diese Zwecke mehr als aus.

# Found i2c device at address 0x0D
# Found i2c device at address 0x3C Display
# Found i2c device at address 0x68 6050
# Found i2c device at address 0x5F - DAC # https://esphome.io/components/output/gp8403.html?highlight=gp8403

 

Fliesst ein gewisser Strom in den Akku, sprich ist ein gewisser Wert beim Magnetfeld erreicht, dann wird der Wert für die Steuerspannung erhöht.
Fliesst Strom aus dem Akku raus, dann wird der Wert für die Steuerspannung verringert.
Den Rest macht das PWM-Teil in der Wallbox.

Alternativ kann man mit der Steuerspannung und einem alten 10V-Bühnen-Dimmerpack auch andere Leistungsverbraucher steuern. (z.b. den beliebten Heizstab)

Ein Offset ist ebenfalls einstellbar, einen Boost-Switch hab ich auch integriert.


Das Mapping von Feldstärke zu Modifikatorwerten und Steuerspannung müsst ihr natürlich anpassen.

esphome:
  name: magnetometer-cv
  friendly_name: magnetometer_cv

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: ERROR

# Enable Home Assistant API
api:
  encryption:
    key: "xxx+="

ota:
  password: "xxx"

wifi:
  networks:
   - ssid: "xxx"
     password: "xxx"
     
   - ssid: "yyy"
     password: "yyy"

  
  manual_ip:
    static_ip: x.x.x.x
    gateway: x.x.x.x
    subnet: 255.255.255.0
    

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

# Output Data to Host
captive_portal:


font:
  - file: "Roboto-Regular.ttf"
    id: my_font
    size: 15


globals:

# tabelle , näherungswerte steuerspannung zu ladestrom -- 1 ph ca 1 V pro 1,1kW
# 0-2v    3v    4v   5v     .. 10v
#   6a   10a   15a   18a    .. 32a
# 1,4k  2,3k  3,4k          ..7,2k


# 200uT sind ca 2800W , 150uT bei ca 1200W , 40uT bei ca 600W, 

## defaults für 1ph
  - id: mag_on_min
    type: float
    restore_value: no
    initial_value: '-40'
## mag on min ist der wichtigste offset-wert

## Grenzwerte für die Wertmodifikatoren bei magnetometer.onValue
  - id: mag_for_01v  
    type: float
    restore_value: no
    initial_value: '-90'
  - id: mag_for_s01v  
    type: float
    restore_value: no
    initial_value: '40'

  - id: mag_for_1v  
    type: float
    restore_value: no
    initial_value: '-150'
  - id: mag_for_s1v  
    type: float
    restore_value: no
    initial_value: '150'

  - id: mag_for_2v  
    type: float
    restore_value: no
    initial_value: '-350'
  - id: mag_for_s2v  
    type: float
    restore_value: no
    initial_value: '350'

# Nach Abzug der Übertragungsverluste
# 450 - 2,99kw   ;  480 - 3,21kw ; 490 - 
  - id: max_out_perc
    type: float
    restore_value: no
    initial_value: '490'
# boost -> Extraspannung, zuschaltbar für weitergehende Automatisierungen (z.b. betreffend Maximallasten am Wechselrichter)
  - id: max_boost_perc
    type: float
    restore_value: no
    initial_value: '100'
  

## variables
  - id: gl_mag_x
    type: float
    restore_value: no
    initial_value: '0'
  - id: gl_mag_y
    type: float
    restore_value: no
    initial_value: '0'
  - id: gl_mag_z
    type: float
    restore_value: no
    initial_value: '0'

  - id: step_submenu
    type: int
    restore_value: no
    initial_value: '0'

  - id: gl_delta_val
    type: float
    restore_value: no
    initial_value: '0'
  - id: gl_sigma_val
    type: float
    restore_value: no
    initial_value: '0'
  - id: offset # Integer for storing offset
    type: int
    restore_value: true
    initial_value: '0'
  - id: permille_a # Integer for storing outputvalue
    type: int
    restore_value: False
    initial_value: '0'
  - id: permille_b # Integer for storing outputvalue
    type: int
    restore_value: False
    initial_value: '0'

  - id: bool_automatic
    type: bool
    restore_value: no
    initial_value: 'false'
  - id: bool_boost
    type: bool
    restore_value: no
    initial_value: 'false'

i2c:
  scl: GPIO22
  sda: GPIO21
  scan: true

#see: https://esphome.io/components/i2c.html 4 second i2c bus
# Found i2c device at address 0x0D
# Found i2c device at address 0x3C    Display
# Found i2c device at address 0x68    6050
# Found i2c device at address 0x5F  - DAC  # https://esphome.io/components/output/gp8403.html?highlight=gp8403


gp8403:
  id: my_gp8403
  voltage: 10V
  address: 0x5F
# range is 0.0 (off) to 1.0 (on)

output:
  - platform: gp8403  # Steuerspannung für Wallboxsteuerung
    id: my_gp8403_output_1 
    gp8403_id: my_gp8403
    channel: 0
  - platform: gp8403  # linear vom magnetometer, Ausgang für z.b. Dimmer.Heizstab o.ä., alterntiv auch für eine zweite Steuerspannung nutzbar
    id: my_gp8403_output_2
    gp8403_id: my_gp8403
    channel: 1

switch:
  - platform: template
    name: "AutomaticOnOff"
    id: bt_automatic_onoff
    optimistic: true
    turn_on_action:
      lambda: |-
        id(bool_automatic) = true;
    turn_off_action:
      lambda: |-
        id(bool_automatic) = false;

  - platform: template
    name: "BoostOnOff"
    id: bt_boost_onoff
    optimistic: true
    turn_on_action:
      lambda: |-
        id(bool_boost) = true;
    turn_off_action:
      lambda: |-
        id(bool_boost) = false;

number:
  - platform: template
    name: "offset_mag"
    id: offest_slider
    optimistic: true
    step: 1
    min_value: 0
    max_value: 100
    mode: slider
    set_action:
      then:
        - lambda: 
             !lambda |-
                id(offset) = x;
    on_value:
      then:
        - lambda:
             !lambda |-
                id(offset) = x;
    
  - platform: template
    name: "output1"
    id: output1_slider
    optimistic: true
    step: 1
    min_value: 1
    max_value: 490
    mode: slider
    set_action:
      then:
        - lambda: 
             !lambda |-
                id(my_gp8403_output_1).set_level(x/1000);
                id(permille_a) = x;
    on_value:
      then:
        - lambda:
             !lambda |-
                id(my_gp8403_output_1).set_level(x/1000);
          
  - platform: template
    name: "output2"
    id: output2_slider
    optimistic: true
    step: 1
    min_value: 1
    max_value: 490
    mode: slider
    set_action:
      then:
        - lambda: 
             !lambda |-
                id(my_gp8403_output_2).set_level(x/1000);
                id(permille_b) = x;
    on_value:
      then:
        - lambda:
             !lambda |-
                id(my_gp8403_output_2).set_level(x/1000);

sensor:                 
  - platform: template
    name: "ControllOutputA"
    id: template_controll_output_a
  - platform: template
    name: "ControllOutputB"
    id: template_controll_output_b

# magnetometer
  - platform: qmc5883l
    address: 0x0D
    field_strength_x:
      name: "QMC5883L_X"
      id: mag_x
      filters:
        - sliding_window_moving_average:
            window_size: 80
            send_every: 6
      on_value:                  
        lambda: !lambda |-
          if (id(bool_automatic)) {
            id(gl_mag_x) = id(mag_x).state;
            float mag_n_offset = id(gl_mag_x) + id(offset);
            int f_max_out = id(max_out_perc);
            if (id(bool_boost)) {
              f_max_out += id(max_boost_perc);
            }
            if ((mag_n_offset < id(mag_for_2v)) && (id(permille_a) < id(max_out_perc) - 200))  
              id(permille_a) += 200;
            else if ((mag_n_offset < id(mag_for_1v)) && (id(permille_a) < id(max_out_perc) - 100))  
              id(permille_a) += 100;
            else if ((mag_n_offset < id(mag_for_01v)) && (id(permille_a) < id(max_out_perc) - 10))  
              id(permille_a) += 10;
            else if ((mag_n_offset < id(mag_on_min)) && (id(permille_a) < id(max_out_perc)))  
              id(permille_a) += 1;
            else if ((mag_n_offset > (id(mag_for_s2v))) && (id(permille_a) > 200)) 
              id(permille_a) -= 200; 
            else if ((mag_n_offset > (id(mag_for_s1v))) && (id(permille_a) > 100)) 
              id(permille_a) -= 100; 
            else if ((mag_n_offset > (id(mag_for_s01v))) && (id(permille_a) > 10)) 
              id(permille_a) -= 10; 
            else if ((mag_n_offset > 1) && (id(permille_a) > 0)) 
              id(permille_a) -= 1;  

            id(output1_slider).publish_state(id(permille_a));
          }
    field_strength_y:
      name: "QMC5883L_Y"
      id: mag_y
      filters:
        - sliding_window_moving_average:
            window_size: 80
            send_every: 6
      on_value:
        lambda: !lambda |-
          if (id(bool_automatic)) {
            id(gl_mag_y) = id(mag_y).state;
            if ((id(gl_mag_y) < -1) && (id(permille_b) < id(max_out_perc))) 
              id(permille_b) += 1;
            else if ((id(gl_mag_y) > 1) && (id(permille_b) > 0))
              id(permille_b) -= 1;  
            id(my_gp8403_output_2).set_level(id(permille_b)/1000);
            id(output2_slider).publish_state(id(permille_b));
          }
    field_strength_z:
      name: "QMC5883L_Z"
      id: mag_z
      filters:
        - sliding_window_moving_average:
            window_size: 10
            send_every: 1
      on_value:
        lambda: !lambda |-
          id(gl_mag_z) = id(mag_z).state;
    heading:
      name: "QMC5883L_Head"
      id: mag_head
      on_value:
        lambda: !lambda |-
          //id(gl_mag_head) = id(mag_head).state;
    range: 200uT
    oversampling: 512x
    update_interval: 16ms



## Button brauchen wir an sich nicht, kann displayumschaltung erlauben
binary_sensor:
  - platform: gpio
    name: "BT2"
    id: bt2
    pin:
      number: GPIO18
      inverted: true
      mode:
        input: true
        pullup: true
    on_press:
      lambda: !lambda |-
        id(step_submenu) ++;

        if (id(step_submenu)>2) {
          id(step_submenu) = 0;
        }

## einfache ausgabe irgendwelcher werte, hier magnetfeldstärke und steuersignalwert
display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    # reset_pin: D0
    address: 0x3C
    id: lcd
    lambda: |-
      
      switch (id(step_submenu)) {
        case 0:
          it.printf(0, 0, id(my_font), "Menu_ 0");
          it.printf(0, 14, id(my_font), "mx %.2fm to a %d", id(gl_mag_x), permille_b);
          it.printf(0, 28, id(my_font), "my %.2fm to b %d", id(gl_mag_y), permille_a);
          break;
        default:
          it.printf(0, 0, id(my_font), "Menu_ 0");
          it.printf(0, 14, id(my_font), "mx %.2fm to a %d", id(gl_mag_x), permille_b);
          it.printf(0, 28, id(my_font), "my %.2fm to b %d", id(gl_mag_y), permille_a);
      }

interval:
  - interval: 0.5s
    then:  
      - component.update: lcd
      - lambda: |-
          id(template_controll_output_a).publish_state(id(permille_a));
          id(template_controll_output_b).publish_state(id(permille_b));
## publishen der steuerwerte via template_controll_outputs

 

  • Love it 1
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
Am 10.6.2024 um 12:52 schrieb Theseus:

Mal was zum Basteln:

...

...
  
# magnetometer
  - platform: qmc5883l
    address: 0x0D
    field_strength_x:
      name: "QMC5883L_X"
      id: mag_x
      filters:
        - sliding_window_moving_average:
            window_size: 80
            send_every: 6
      on_value:                  
        lambda: !lambda |-
          if (id(bool_automatic)) {
            id(gl_mag_x) = id(mag_x).state;
            float mag_n_offset = id(gl_mag_x) + id(offset);
            int f_max_out = id(max_out_perc);
            if (id(bool_boost)) {
              f_max_out += id(max_boost_perc);
            }
            if ((mag_n_offset < id(mag_for_2v)) && (id(permille_a) < id(max_out_perc) - 200))  
              id(permille_a) += 200;
            else if ((mag_n_offset < id(mag_for_1v)) && (id(permille_a) < id(max_out_perc) - 100))  
              id(permille_a) += 100;
            else if ((mag_n_offset < id(mag_for_01v)) && (id(permille_a) < id(max_out_perc) - 10))  
              id(permille_a) += 10;
            else if ((mag_n_offset < id(mag_on_min)) && (id(permille_a) < id(max_out_perc)))  
              id(permille_a) += 1;
            else if ((mag_n_offset > (id(mag_for_s2v))) && (id(permille_a) > 200)) 
              id(permille_a) -= 200; 
            else if ((mag_n_offset > (id(mag_for_s1v))) && (id(permille_a) > 100)) 
              id(permille_a) -= 100; 
            else if ((mag_n_offset > (id(mag_for_s01v))) && (id(permille_a) > 10)) 
              id(permille_a) -= 10; 
            else if ((mag_n_offset > 1) && (id(permille_a) > 0)) 
              id(permille_a) -= 1;  

            id(output1_slider).publish_state(id(permille_a));
          }...

 

Ich hab noch einen Bug gefunden in dem Zweig für field-strength-x - Klassischer Flüchtigkeitsfehler: Da wurde der Wert des Boost-Schalters nicht berücksichtigt. An den fett markierten Stellen muss id(max_out_perc) durch f_max_out ersetzt werden.
Hier der entsprechende Codeschnipsel:

Zitat

field_strength_x:

name: "QMC5883L_X"

id: mag_x

filters:

- sliding_window_moving_average:

window_size: 80

send_every: 6

on_value:

lambda: !lambda |-

if (id(bool_automatic)) {

id(gl_mag_x) = id(mag_x).state;

float mag_n_offset = id(gl_mag_x) + id(offset);

int f_max_out = id(max_out_perc);

if (id(bool_boost)) {

f_max_out += id(max_boost_perc);

}

if ((mag_n_offset < id(mag_for_2v)) && (id(permille_a) < f_max_out - 200))

id(permille_a) += 200;

else if ((mag_n_offset < id(mag_for_1v)) && (id(permille_a) < f_max_out - 100))

id(permille_a) += 100;

else if ((mag_n_offset < id(mag_for_01v)) && (id(permille_a) < f_max_out - 10))

id(permille_a) += 10;

else if ((mag_n_offset < id(mag_on_min)) && (id(permille_a) < f_max_out))

id(permille_a) += 1;

else if ((mag_n_offset > (id(mag_for_s2v))) && (id(permille_a) > 200))

id(permille_a) -= 200;

else if ((mag_n_offset > (id(mag_for_s1v))) && (id(permille_a) > 100))

id(permille_a) -= 100;

else if ((mag_n_offset > (id(mag_for_s01v))) && (id(permille_a) > 10))

id(permille_a) -= 10;

else if ((mag_n_offset > 1) && (id(permille_a) > 0))

id(permille_a) -= 1;

 

id(output1_slider).publish_state(id(permille_a));

}

 

  • Love it 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.