Hauptmenü

Neueste Beiträge

#1
FHEMapp / Aw: Chart - maximale höhe im "...
Letzter Beitrag von jemu75 - 29 März 2026, 19:01:08
Hallo Jens,

bei maximized wird die Höhe des Charts auf Bildschirmhöhe - 250px festgelegt. Das ist etwas statisch, da ich bei der Entwicklung nicht berücksichtigt hätte, dass man mehrere Ebenen untereinander bei den Charts anzeigt.

Beste Grüße
Jens  :)
#2
Heizungssteuerung/Raumklima / Aw: Weishaupt WTC am eBus mit ...
Letzter Beitrag von alfiriel - 29 März 2026, 18:57:17
Zitat von: mb201 am 12 Januar 2024, 18:57:49@alfiriel, ich nutze noch diesen Adapter auf einer Lochrasterplatine: https://wiki.fhem.de/wiki/EBUS der über einen seriell2USB-Adapter an einem Raspberry hängt.
Der Aufbau erfordert aber etwas HW-Erfahrung und Messequipment. Mittlerweile gibt es auch einige fertige Lösungen hier: https://adapter.ebusd.eu/
Ich versuche noch das Warmwasserheizen per WWPush über ebusd einzustellen. Dieses Kommando scheint noch nicht in den vorhanden Weishaupt-Dateien zu sein.
Viel Erfolg bei deinem Projekt
michaelba

Danke für deine Antwort. Ich habe bald Urlaub und möchte das Thema endlich angehen.
Leider lese ich aus den spärlichen Infos, die ich online gefunden habe, dass es mit den B Modellen nicht mehr funktioniert, weil der ebus Anschluss nicht mehr vorhanden sei?
Kannst du mir kurz sagen ob du das 15-A oder das 15-B Modell hast?
Und eventuell auch ein Foto des Anschlusses schicken? Auch dazu finde ich online nichts, wo ich den Ebus Adapter anschließe.

LG
#3
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von denis.robel - 29 März 2026, 18:55:22
Hallo Heiko,

hier eine Übersicht über die Energie Readings vom Zendure SolarHub 2000:

solar_input_power         aktuelle Solar‑Eingangsleistung (Summe, in W, hier ca. 148 W).
solar_power_1 / solar_power_2         Leistung von Solarkette/String 1/2 (z.B. 73 W + 77 W).
pack_input_power                 aktuelle Ladeleistung in die Batteriepacks (z.B. 501 W = wird geladen).
output_pack_power                 aktuelle Ausgangsleistung aus den Batteriepacks (hier 0, offenbar im Standby).
output_home_power                 aktuelle Ausgangsleistung für den Haus‑Verbraucher (in W, hier ca. 626 W).
output_limit / inverse_max_power maximale Ausgangsleistung (z.B. 1200 W = Inverterleistungsgrenze).
pack_num                         Anzahl der angebundenen Batterie‑Packs (z.B. 2).
master_switch                         Zustand des Hauptschalters (z.B. ON = Hub aktiv).
auto_recover                         ON/OFF = ob nach Ausfall/Shutdown automatisch wieder gestartet wird.

Wobei von der aktuellen Situation pack_input_power und output_pack_power von der Bezeichnung her vertauscht sein müssen, weil der Akku gerade entlädt...

Ich habe daher meine devices so angepasst:

setupBatteryDev01:
zendure_bridge_b0b21c980b18
  pin=solar_input_power:W
  pout=pack_input_power:W
  cap=3840
  charge=electricity_level show=1
  icon=@dyn:@dyn:@dyn:@dyn

setupInverterDev01:
zendure_bridge_b0b21c980b18
  feed=bat
  pvIn=solar_input_power:W
  pvOut=solar_input_power:W
  strings=Dach1
  etotal=solar_input_energy:Wh
  capacity=1400

Das werde ich jetzt mal beobachten und dann wieder berichten.

ZitatZur besseren Ansicht schalte dir flowGraphicControl->showGenerators=1 ein.

Danke für den Hinweis, damit wird die PV-Leistung nochmal separat angezeigt. Das habe ich vermisst.
#4
Solaranlagen / Aw: SolarForecast - PV-Vorhers...
Letzter Beitrag von dieter114 - 29 März 2026, 18:55:07
So ist es richtig, das muss ins WIKI aber:
Für die Erstellung des Webservers WEBapi:
defmod WEBapi FHEMWEB IPV6:8089 global
attr WEBapi csrfToken none
ohne die IPV6 lief das Teil bei mir nicht.
Ich verwende IPV6 auch im Hausnetz.

LG WDS
#5
Solaranlagen / Aw: SolarForecast - PV-Vorhers...
Letzter Beitrag von DS_Starter - 29 März 2026, 18:50:19
Wenn du den Aufruf so machst:

userReadings  jsonReading:nextCycletime.* { main::forecast_json($NAME) }

Dann kannst du deine festen Namen im Code durch $NAME ersetzen und es passt immer:

#####################################################################################################################
#  Wandelt die Forecast-Werte in JSON und ins UTC-Zeitformat um, zur Verwendung durch evcc
#  Für die Kommunikation wird der Webserver WEBapi benutzt (8086, kein HTTPS, kein csrfToken)
#  evcc.yaml siehe tariffs: solar: ...
#  uri: http://192.168.178.44:8086/fhem?cmd=%7BReadingsVal%28%27[b]<SF-Device>[/b]%27%2C%27jsonReading%27%2C%27%27%29%7D&XHR=1
#####################################################################################################################

sub forecast_json {
    my ($NAME) = @_;
    my $hour = 0;
    my @output;

    # Parser für Datum mit CET/CEST
    my $parser = DateTime::Format::Strptime->new(
        pattern   => '%Y-%m-%d %H:%M:%S',
        time_zone => 'Europe/Berlin',
    );

    # Alle NextHour-Daten durchsuchen
    while ($hour < 100) {
        my $hour_str = sprintf('NextHour%02d', $hour);
        my $start_str = FHEM::SolarForecast::NexthoursVal ($NAME, $hour_str, 'starttime', 'na');
        my $pvfc = FHEM::SolarForecast::NexthoursVal ($NAME, $hour_str, 'pvfc', 'na');

        # Schleife beenden, wenn keine Werte mehr vorhanden sind
        last if $start_str eq 'na' or $pvfc eq 'na';

        # parse und konvertiere Zeit
        my $start_dt = $parser->parse_datetime($start_str);
        my $end_dt   = $start_dt->clone->add(hours => 1);

        # nach UTC konvertieren
        $start_dt->set_time_zone('UTC');
        $end_dt->set_time_zone('UTC');

        push @output, {
            start => $start_dt->iso8601() . 'Z',
            end   => $end_dt->iso8601() . 'Z',
            value => 0 + $pvfc,
        };
       
        $hour++;
    }

    # Ausgabe als JSON
    my $json = JSON->new->utf8->pretty->encode(\@output);
    return $json;
}

#6
Solaranlagen / Aw: SolarForecast - PV-Vorhers...
Letzter Beitrag von dieter114 - 29 März 2026, 18:46:08
Ich füge hier nochmal meine Einstellungen an.
userReading im Modul mit Namen Forecast:
userReadings  jsonReading:nextCycletime.* { main::forecast_json($NAME) }Eintrag in 99_myUtils.pm:
#####################################################################################################################
#  Wandelt die Forecast-Werte in JSON und ins UTC-Zeitformat um, zur Verwendung durch evcc
#  Für die Kommunikation wird der Webserver WEBapi benutzt (8086, kein HTTPS, kein csrfToken)
#  evcc.yaml siehe tariffs: solar: ...
#  uri: http://192.168.178.44:8086/fhem?cmd=%7BReadingsVal%28%27[b]<SF-Device>[/b]%27%2C%27jsonReading%27%2C%27%27%29%7D&XHR=1
#####################################################################################################################
package main;

use strict;
use warnings;
use POSIX;
use JSON;
use DateTime;
use DateTime::Format::Strptime;

sub forecast_json {

    my $hour = 0;
    my @output;

    # Parser für Datum mit CET/CEST
    my $parser = DateTime::Format::Strptime->new(
        pattern   => '%Y-%m-%d %H:%M:%S',
        time_zone => 'Europe/Berlin',
    );

    # Alle NextHour-Daten durchsuchen
    while ($hour < 100) {
        my $hour_str = sprintf('NextHour%02d', $hour);
        my $start_str = FHEM::SolarForecast::NexthoursVal ('Forecast', $hour_str, 'starttime', 'na');
        my $pvfc = FHEM::SolarForecast::NexthoursVal ('Forecast', $hour_str, 'pvfc', 'na');

        # Schleife beenden, wenn keine Werte mehr vorhanden sind
        last if $start_str eq 'na' or $pvfc eq 'na';

        # parse und konvertiere Zeit
        my $start_dt = $parser->parse_datetime($start_str);
        my $end_dt   = $start_dt->clone->add(hours => 1);

        # nach UTC konvertieren
        $start_dt->set_time_zone('UTC');
        $end_dt->set_time_zone('UTC');

        push @output, {
            start => $start_dt->iso8601() . 'Z',
            end   => $end_dt->iso8601() . 'Z',
            value => 0 + $pvfc,
        };
       
        $hour++;
    }

    # Ausgabe als JSON
    my $json = JSON->new->utf8->pretty->encode(\@output);
    return $json;
}
dann die Einstellungen in evcc Titel: <irgendwas> Anbieter: Benutzerdefiniertes Gerät
tariff: solar
forecast:
  source: http
  uri: http://192.168.178.25:8089/fhem?cmd=%7BReadingsVal%28%27Forecast%27%2C%27jsonReading%27%2C%27%27%29%7D&XHR=1
  jq: |
    map({
      "start": .start,
      "end": .end,
      "value": .value
    }) | tostring



#7
Solaranlagen / Aw: SolarForecast - PV-Vorhers...
Letzter Beitrag von DS_Starter - 29 März 2026, 18:45:20
Ich würde nochmal dafür plädieren den Code und den Aufruf wie von mir in #9 zu ändern. Dann wäre der Code im Wiki universell verwendbar nach der Änderung.
Könnt ihr gern mal anpassen und Rückantwort geben.
#8
Solaranlagen / Aw: SolarForecast - PV-Vorhers...
Letzter Beitrag von dieter114 - 29 März 2026, 18:41:16
Soo - war ein längerer Weg.....
Es läuft!
Du verwendest einen anderen SF Namen als z.B. im WIKI.
Das ist gut, nur man muss darauf erstmal kommen.
Wenn man das seit locker 1.5 Jahren nutzt und alle Posts eigentlich
vom gleichen Namen ausgehen, wird so ein Fehler leider erst spät erkannt.

Egal, vielen Dank für Eure Hilfe und bitte die Änderungen ins WIKI eintrtagen.

LG WDS
#9
FHEM Code changes / Revision 31047: Add FHEM::Core...
Letzter Beitrag von System - 29 März 2026, 18:40:07
Revision 31047: Add FHEM::Core::Authentication::HeaderPolicy with tests

Add FHEM::Core::Authentication::HeaderPolicy with tests

Source: Revision 31047: Add FHEM::Core::Authentication::HeaderPolicy with tests
#10
Codeschnipsel / Aw: [Contrib] GIFTV (Geek Magi...
Letzter Beitrag von Dr. Boris Neubert - 29 März 2026, 18:32:24
Habe mal einen Wiki-Artikel erstellt: Mini-Dashboard für PV-Anlage