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
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.
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
zendure_bridge_b0b21c980b18
feed=bat
pvIn=solar_input_power:W
pvOut=solar_input_power:W
strings=Dach1
etotal=solar_input_energy:Wh
capacity=1400
ZitatZur besseren Ansicht schalte dir flowGraphicControl->showGenerators=1 ein.
userReadings jsonReading:nextCycletime.* { main::forecast_json($NAME) }
#####################################################################################################################
# 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;
}
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ättariff: 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