define WetterVisualCrossing HTTPMOD https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/weatherdata/forecast?locations=xx.xxxxxx%2C%20yy.yyyyyyy&aggregateHours=1&forecastDays=7&unitGroup=metric&shortColumnNames=false&contentType=json&key=WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 1200
attr WetterVisualCrossing enforceGoodReadingNames 1
attr WetterVisualCrossing event-on-change-reading .*
attr WetterVisualCrossing extractAllJSON 1
attr WetterVisualCrossing group Wetter
attr WetterVisualCrossing room Wettervorhersage
attr WetterVisualCrossing stateFormat T: locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_temp° - H: locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_humidity - Wetter: locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_icon - Wind: locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_wspd km/h mit locations_xx.xxxxxx__yy.yyyyyyy_values_01_wgust km/h Boen
attr WetterVisualCrossing userReadings Regenmenge24h:locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_datetime:.*\
{\
my $hdmsum = 0;;;;\
my $hdmvalue = 0;;;;\
for my $i ("01" .. "24")\
{\
$hdmvalue = ReadingsVal("WetterVisualCrossing", "locations_xx.xxxxxx__yy.yyyyyyy_values_".$i."_precip",0);;;;\
$hdmsum = $hdmsum + $hdmvalue;;;;\
};;;;\
return sprintf("%.1f",$hdmsum);;;;\
}, \
Regenwahrscheinlichkeit24h:locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_datetime:.*\
{\
my $hdmvalue = 0;;;;\
my $hdmzwischen = 0;;;;\
my $hdmklammerkomplett = 1;;;;\
my $hdmtotal = 0;;;;\
for my $i ("01" .. "24")\
{\
$hdmvalue = ReadingsVal("WetterVisualCrossing", "locations_xx.xxxxxx__yy.yyyyyyy_values_".$i."_pop",0);;;;\
$hdmzwischen = 1 - ($hdmvalue / 100.0);;;;\
$hdmklammerkomplett = $hdmklammerkomplett * $hdmzwischen;;;;\
};;;;\
$hdmtotal = (1 - $hdmklammerkomplett) * 100.0;;;;\
return sprintf("%d",$hdmtotal);;;;\
}, \
WindWertMail:locations_xx.xxxxxx__yy.yyyyyyy_currentConditions_datetime:.*\
{\
my $hdmwindrichtung = 0;;;;\
my $hdmcompassPoint = 0;;;;\
\
for my $n ("01" .. "48")\
{\
if (ReadingsVal("WetterVisualCrossing", "locations_xx.xxxxxx__yy.yyyyyyy_values_".$n."_wgust",0)>69) {\
$hdmwindrichtung = ReadingsVal("WetterVisualCrossing", "locations_xx.xxxxxx__yy.yyyyyyy_values_".$n."_wdir",0);;;;\
\
\
if ($hdmwindrichtung < 22.5) {\
$hdmcompassPoint = "Norden";;\
} elsif ($hdmwindrichtung < 45) {\
$hdmcompassPoint = "Nord-Nordost";;\
} elsif ($hdmwindrichtung < 67.5) {\
$hdmcompassPoint = "Nordost";;\
} elsif ($hdmwindrichtung < 90) {\
$hdmcompassPoint = "Ost-Nordost";;\
} elsif ($hdmwindrichtung < 112.5){\
$hdmcompassPoint = "Osten";;\
} elsif ($hdmwindrichtung < 135) {\
$hdmcompassPoint = "Ost-Suedost";;\
} elsif ($hdmwindrichtung < 157.5){\
$hdmcompassPoint = "Suedost";;\
} elsif ($hdmwindrichtung < 180) {\
$hdmcompassPoint = "Sued-Suedost";;\
} elsif ($hdmwindrichtung < 202.5){\
$hdmcompassPoint = "Sueden";;\
} elsif ($hdmwindrichtung < 225) {\
$hdmcompassPoint = "Sued-Suedwest";;\
} elsif ($hdmwindrichtung < 247.5){\
$hdmcompassPoint = "Suedwest";;\
} elsif ($hdmwindrichtung < 270) {\
$hdmcompassPoint = "West-Suedwest";;\
} elsif ($hdmwindrichtung < 292.5){\
$hdmcompassPoint = "Westen";;\
} elsif ($hdmwindrichtung < 315) {\
$hdmcompassPoint = "West-Nordwest";;\
} elsif ($hdmwindrichtung < 337.5){\
$hdmcompassPoint = "Nordwest";;\
} elsif ($hdmwindrichtung <= 361) {\
$hdmcompassPoint = "Nord-Nordwest";;\
}\
return ReadingsVal("WetterVisualCrossing", "locations_xx.xxxxxx__yy.yyyyyyy_values_".$n."_wgust",0)." km/h Boen in ".$n." Stunden aus ".$hdmcompassPoint;;;;\
}\
\
};;;; \
return "normal";;;;\
}
######### das Filelog braucht es mMn für das Logproxy Device. Deshalb/trotzdem spaeter disabled, weil ich die Readings nicht mehr speichern wollte. Ohne Device hatte ich es nicht probiert
define FileLog_WetterVisualCrossing FileLog ./log/WetterVisualCrossing-%Y-%m-%d.log WetterVisualCrossing
attr FileLog_WetterVisualCrossing disable 1
attr FileLog_WetterVisualCrossing group Wetter
attr FileLog_WetterVisualCrossing logtype text
attr FileLog_WetterVisualCrossing nrarchive 3
######## den Namen hatte es noch von vormals Proplanta, ist aber egal
define LogproxyWetterProplanta logProxy
attr LogproxyWetterProplanta group Wetter
######### die Plots. Die zugehoerigen Dateien angehaengt
define SVG_FileLog_WetterVisualCrossing SVG FileLog_WetterVisualCrossing:SVG_FileLog_WetterVisualCrossing:CURRENT
attr SVG_FileLog_WetterVisualCrossing fixedoffset 6
attr SVG_FileLog_WetterVisualCrossing fixedrange 7days
attr SVG_FileLog_WetterVisualCrossing group Wetter
attr SVG_FileLog_WetterVisualCrossing room Wettervorhersage
define SVG_FileLog_WetterVisualCrossing_temperatur SVG FileLog_WetterVisualCrossing:SVG_FileLog_WetterVisualCrossing_temperatur:CURRENT
attr SVG_FileLog_WetterVisualCrossing_temperatur fixedoffset 6
attr SVG_FileLog_WetterVisualCrossing_temperatur fixedrange 7days
attr SVG_FileLog_WetterVisualCrossing_temperatur group Wetter
attr SVG_FileLog_WetterVisualCrossing_temperatur label "Temperatur min $data{min1} C - max $data{max1} C"
attr SVG_FileLog_WetterVisualCrossing_temperatur room Wettervorhersage
############## hdm WetterVisualCrossing Wetter Plot funktion ##################################
sub logProxy_WetterVisualCrossing2Plot($$$$;$$) {
my ($device, $fcValue, $from, $to, $fcHour, $expMode) = @_;
my $regex;
my @rl;
my $hdmreading;
my $hdmtime;
return undef if(!$device);
if ($fcValue =~ s/_$//)
{
$regex = "^locations_xx.xxxxxx__yy.yyyyyyy_values_[\\d]+_".$fcValue."\$";
}
$fcHour = 12 if(!defined $fcHour);
$expMode = "point" if(!defined $expMode);
#Log3 undef,2, "regex: ".$regex;
if( defined($defs{$device}) ) {
if( $defs{$device}{TYPE} eq "HTTPMOD" ) {
@rl = sort{
my ($an) = ($a =~ m/locations_xx.xxxxxx__yy.yyyyyyy_values_(\d+)_.*/);
#Log3 undef,2, "an: ".$an;
#Log3 undef,2, "a: ".$a;
my ($bn) = ($b =~ m/locations_xx.xxxxxx__yy.yyyyyyy_values_(\d+)_.*/);
$an <=> $bn or $a cmp $b;
}( grep /${regex}/,keys %{$defs{$device}{READINGS}} );
return undef if( !@rl );
} else {
Log3 undef, 2, "logProxy_WetterVisualCrossing2Plot: $device is not a HTTPMOD device";
return undef;
}
}
#Log3 undef,2, Dumper(@rl);
my $fromsec = SVG_time_to_sec($from);
my $tosec = SVG_time_to_sec($to);
my $sec = $fromsec;
my ($h,$hdmsec,$hdmmin,$hdmhour,$hdmmday,$hdmmon,$hdmyear,$hdmwday,$hdmyday,$hdmisdst);
my $timestamp;
my $reading;
my $value;
my $prev_value;
my $min = 999999;
my $max = -999999;
my $ret = "";
# while not end of plot range reached
while(($sec < $tosec) && @rl) {
#remember previous value for start of plot range
$prev_value = $value;
$reading = shift @rl;
($h) = $reading =~ m/^locations_xx.xxxxxx__yy.yyyyyyy_values_(\d+).*/;
$value = ReadingsVal($device,$reading,undef);
use Date::Parse;
$hdmreading = ReadingsVal($device, "locations_xx.xxxxxx__yy.yyyyyyy_values_".$h."_datetimeStr",undef);
#Log3 undef,2, "hdmvorCONV: ".$hdmreading;
$hdmtime = str2time($hdmreading);
#Log3 undef,2, "hdmreading: ".$hdmreading;
#Log3 undef,2, "hdmtime: ".$hdmtime;
#($hdmsec, $hdmmin, $hdmhour, $hdmmday, $hdmmon, $hdmyear, $hdmwday, $hdmyday, $hdmisdst) = localtime(ReadingsVal($device, "hfc".$h."_time",undef));
($hdmsec, $hdmmin, $hdmhour, $hdmmday, $hdmmon, $hdmyear, $hdmwday, $hdmyday, $hdmisdst) = localtime($hdmtime);
# necessary conversion of $mon and $year
$hdmmon += 1;
$hdmyear += 1900;
$timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $hdmyear, $hdmmon, $hdmmday, $hdmhour, $hdmmin, $hdmsec);
#Log3 undef,2, "timestamp: ".$timestamp;
$sec = SVG_time_to_sec($timestamp);
# skip all values before start of plot range
next if( SVG_time_to_sec($timestamp) < $fromsec );
# add first value at start of plot range
if( !$ret && $prev_value ) {
$min = $prev_value if( $prev_value < $min );
$max = $prev_value if( $prev_value > $max );
$ret .= "$from $prev_value\n";
}
# done if after end of plot range
last if($sec > $tosec);
$min = $value if( $value < $min );
$max = $value if( $value > $max );
# add actual controll point
$ret .= "$timestamp $value\n";
#Log 3, "$timestamp $value -0- $reading";
}
if(($sec < $tosec) && !@rl && ($expMode eq "day")) {
$timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $hdmyear, $hdmmon, $hdmmday, 23, 59, 59);
if(SVG_time_to_sec($timestamp) < $tosec) {
$ret .= "$timestamp $value\n";
}
else {
$ret .= "$to $value\n";
}
}
elsif(($sec > $tosec) && ($expMode eq "day")) {
$value = $prev_value + ($value - $prev_value)*(86400 + ($tosec - $sec))/86400;
$ret .= "$to $value\n";
}
return ($ret,$min,$max,$prev_value);
}
############## end hdm WetterVisualCrossing Wetter Plot funktion ##################################stylesheetPrefix ios12 2026.02.07 17:02:39 1: BOSEST: BOSEST_Set: BOSE_9884E307C182, source
$VAR1 = [
'tv'
];cmd 2026.02.07 17:04:23 1: BOSEST: BOSEST_Set: BOSE_9884E307C182, source
$VAR1 = [
'tv'
];define shellypstripg4_206ef10295f4 MQTT2_DEVICE shellypstripg4_206ef10295f4
attr shellypstripg4_206ef10295f4 readingList shellypstripg4_206ef10295f4:shellypstripg4-206ef10295f4/online:.* online\
shellypstripg4_206ef10295f4:shellypstripg4-206ef10295f4/events/rpc:.* { json2nameValue($EVENT) }
attr shellypstripg4_206ef10295f4 room MQTT2_DEVICE
# CFGFN
# CID shellypstripg4_206ef10295f4
# DEF shellypstripg4_206ef10295f4
# FUUID 6987632e-f33f-1cdf-e85c-ee182dfce592cdda
# IODev ratMQTT
# LASTInputDev ratMQTT
# MSGCNT 56
# NAME shellypstripg4_206ef10295f4
# NR 82
# STATE ???
# TYPE MQTT2_DEVICE
# eventCount 58
# ratMQTT_CONN ratMQTT_192.168.178.22_63097
# ratMQTT_MSGCNT 56
# ratMQTT_TIME 2026-02-07 17:16:20
# READINGS:
# 2026-02-07 17:07:10 IODev ratMQTT
# 2026-02-07 17:16:20 dst shellypstripg4-206ef10295f4/events
# 2026-02-07 17:16:20 method NotifyStatus
# 2026-02-07 17:07:10 online true
# 2026-02-07 17:07:20 params_bthomedevice_200_battery 100
# 2026-02-07 17:16:20 params_bthomedevice_200_last_updated_ts 1770480980
# 2026-02-07 17:16:20 params_bthomedevice_200_packet_id 111
# 2026-02-07 17:16:20 params_bthomedevice_200_rssi -69
# 2026-02-07 17:11:20 params_bthomesensor_201_last_updated_ts 1770480680
# 2026-02-07 17:11:20 params_bthomesensor_201_value 49
# 2026-02-07 17:14:20 params_bthomesensor_202_last_updated_ts 1770480860
# 2026-02-07 17:14:20 params_bthomesensor_202_value 22.6
# 2026-02-07 17:08:09 params_events_1_channel -1
# 2026-02-07 17:08:09 params_events_1_component bthomedevice:200
# 2026-02-07 17:08:09 params_events_1_event single_push
# 2026-02-07 17:08:09 params_events_1_id 200
# 2026-02-07 17:08:09 params_events_1_idx 0
# 2026-02-07 17:08:09 params_events_1_sensors_1_1_id 200
# 2026-02-07 17:08:09 params_events_1_sensors_1_1_last_updated_ts 1770480489
# 2026-02-07 17:08:09 params_events_1_sensors_1_1_value 100
# 2026-02-07 17:08:09 params_events_1_sensors_46_1_id 201
# 2026-02-07 17:08:09 params_events_1_sensors_46_1_last_updated_ts 1770480489
# 2026-02-07 17:08:09 params_events_1_sensors_46_1_value 49
# 2026-02-07 17:08:09 params_events_1_sensors_69_1_id 202
# 2026-02-07 17:08:09 params_events_1_sensors_69_1_last_updated_ts 1770480489
# 2026-02-07 17:08:09 params_events_1_sensors_69_1_value 22.5
# 2026-02-07 17:08:09 params_events_1_ts 1770480489.45
# 2026-02-07 17:07:10 params_mqtt_connected true
# 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_0_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_0_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_0_apower 0.0
# 2026-02-07 17:16:00 params_switch_0_aprtpower 0.0
# 2026-02-07 17:16:00 params_switch_0_current 0.000
# 2026-02-07 17:16:00 params_switch_0_freq 50.01
# 2026-02-07 17:16:00 params_switch_0_pf 0.0
# 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_0_ret_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_0_ret_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_0_voltage 230.8
# 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_1_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_1_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_1_apower 0.0
# 2026-02-07 17:16:00 params_switch_1_aprtpower 0.0
# 2026-02-07 17:16:00 params_switch_1_current 0.000
# 2026-02-07 17:16:00 params_switch_1_freq 50.01
# 2026-02-07 17:16:00 params_switch_1_pf 0.0
# 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_1_ret_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_1_ret_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_1_voltage 230.9
# 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_2_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_2_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_2_apower 0.0
# 2026-02-07 17:16:00 params_switch_2_aprtpower 0.0
# 2026-02-07 17:16:00 params_switch_2_current 0.000
# 2026-02-07 17:16:00 params_switch_2_freq 50.01
# 2026-02-07 17:16:00 params_switch_2_pf 0.0
# 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_2_ret_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_2_ret_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_2_voltage 231.1
# 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_3_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_3_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_3_apower 0.0
# 2026-02-07 17:16:00 params_switch_3_aprtpower 0.0
# 2026-02-07 17:16:00 params_switch_3_current 0.000
# 2026-02-07 17:16:00 params_switch_3_freq 50.01
# 2026-02-07 17:16:00 params_switch_3_pf 0.0
# 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_1 0.000
# 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_2 0.000
# 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_3 0.000
# 2026-02-07 17:16:00 params_switch_3_ret_aenergy_minute_ts 1770480960
# 2026-02-07 17:16:00 params_switch_3_ret_aenergy_total 0.000
# 2026-02-07 17:16:00 params_switch_3_voltage 231.1
# 2026-02-07 17:16:20 params_ts 1770480980.36
# 2026-02-07 17:16:20 src shellypstripg4-206ef10295f4
#
setstate shellypstripg4_206ef10295f4 2026-02-07 17:07:10 IODev ratMQTT
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 dst shellypstripg4-206ef10295f4/events
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 method NotifyStatus
setstate shellypstripg4_206ef10295f4 2026-02-07 17:07:10 online true
setstate shellypstripg4_206ef10295f4 2026-02-07 17:07:20 params_bthomedevice_200_battery 100
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 params_bthomedevice_200_last_updated_ts 1770480980
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 params_bthomedevice_200_packet_id 111
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 params_bthomedevice_200_rssi -69
setstate shellypstripg4_206ef10295f4 2026-02-07 17:11:20 params_bthomesensor_201_last_updated_ts 1770480680
setstate shellypstripg4_206ef10295f4 2026-02-07 17:11:20 params_bthomesensor_201_value 49
setstate shellypstripg4_206ef10295f4 2026-02-07 17:14:20 params_bthomesensor_202_last_updated_ts 1770480860
setstate shellypstripg4_206ef10295f4 2026-02-07 17:14:20 params_bthomesensor_202_value 22.6
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_channel -1
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_component bthomedevice:200
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_event single_push
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_id 200
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_idx 0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_1_1_id 200
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_1_1_last_updated_ts 1770480489
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_1_1_value 100
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_46_1_id 201
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_46_1_last_updated_ts 1770480489
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_46_1_value 49
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_69_1_id 202
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_69_1_last_updated_ts 1770480489
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_sensors_69_1_value 22.5
setstate shellypstripg4_206ef10295f4 2026-02-07 17:08:09 params_events_1_ts 1770480489.45
setstate shellypstripg4_206ef10295f4 2026-02-07 17:07:10 params_mqtt_connected true
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_apower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_aprtpower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_current 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_freq 50.01
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_pf 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_ret_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_ret_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_ret_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_0_voltage 230.8
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_apower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_aprtpower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_current 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_freq 50.01
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_pf 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_ret_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_ret_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_ret_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_1_voltage 230.9
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_apower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_aprtpower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_current 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_freq 50.01
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_pf 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_ret_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_ret_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_ret_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_2_voltage 231.1
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_apower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_aprtpower 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_current 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_freq 50.01
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_pf 0.0
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_1 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_2 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_ret_aenergy_by_minute_3 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_ret_aenergy_minute_ts 1770480960
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_ret_aenergy_total 0.000
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:00 params_switch_3_voltage 231.1
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 params_ts 1770480980.36
setstate shellypstripg4_206ef10295f4 2026-02-07 17:16:20 src shellypstripg4-206ef10295f4Zitat von: TubeHead am 07 Februar 2026, 17:09:23Ich versuche jetzt mal, ob ich alleine dahinter komme, wie ich "morgige termine" mit DOIF fassen kann, um die Pixels anzusteuern. Kann also sein, da ich mich dazu noch mal melde...Dafür verwende ich das Modul Abfall: https://wiki.fhem.de/wiki/ABFALL
defmod myAbfall ABFALL Abfall
attr myAbfall calendarname_praefix 0
attr myAbfall date_style date
attr myAbfall delimiter_reading |
attr myAbfall delimiter_text_reading und
attr myAbfall room 00_A,Unsorted
attr myAbfall stateFormat {"heute ".ReadingsVal($name,"now_text","keine Tonne")."\
<br>".ReadingsVal($name,"next_text","")." in ".ReadingsVal($name,"next_days","").\
" Tag(en)\
<br> am ".ReadingsVal($name,"next_weekday","")}
attr myAbfall weekday_mapping Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
setstate myAbfall heute keine Tonne\
<br>Papier in 5 Tag(en)\
<br> am Donnerstag
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_date 21.02.2026
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_days 14
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_description
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_location XXXXXX
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_text Bioabfall
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_uid 771bc15115f74d2d381207c9a7db77b4googlecom
setstate myAbfall 2026-02-07 03:05:01 Bioabfall_weekday Samstag
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_date 19.02.2026
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_days 12
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_description
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_location XXXXX
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_text Leichtverpackungen
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_uid 6295763663e516a0e3ce2fa8c200ed5cgooglecom
setstate myAbfall 2026-02-07 03:05:01 Leichtverpackungen_weekday Donnerstag
setstate myAbfall 2026-02-07 03:05:01 Papier_date 12.02.2026
setstate myAbfall 2026-02-07 03:05:01 Papier_days 5
setstate myAbfall 2026-02-07 03:05:01 Papier_description
setstate myAbfall 2026-02-07 03:05:01 Papier_location XXXXXXX
setstate myAbfall 2026-02-07 03:05:01 Papier_text Papier
setstate myAbfall 2026-02-07 03:05:01 Papier_uid 466e495c3fdd071ffc55fa2dabe65118googlecom
setstate myAbfall 2026-02-07 03:05:01 Papier_weekday Donnerstag
setstate myAbfall 2026-02-07 03:05:01 Restabfall_date 13.02.2026
setstate myAbfall 2026-02-07 03:05:01 Restabfall_days 6
setstate myAbfall 2026-02-07 03:05:01 Restabfall_description
setstate myAbfall 2026-02-07 03:05:01 Restabfall_location XXXXXXX
setstate myAbfall 2026-02-07 03:05:01 Restabfall_text Restabfall
setstate myAbfall 2026-02-07 03:05:01 Restabfall_uid 8b4d88152540f37961bd9bc8d255f0c6googlecom
setstate myAbfall 2026-02-07 03:05:01 Restabfall_weekday Freitag
setstate myAbfall 2026-02-07 03:05:01 next Papier_5
setstate myAbfall 2026-02-07 03:05:01 next_date 12.02.2026
setstate myAbfall 2026-02-07 03:05:01 next_days 5
setstate myAbfall 2026-02-07 03:05:01 next_description
setstate myAbfall 2026-02-07 03:05:01 next_location XXXXXX
setstate myAbfall 2026-02-07 03:05:01 next_text Papier
setstate myAbfall 2026-02-07 03:05:01 next_weekday Donnerstag
setstate myAbfall 2026-02-07 03:05:01 state 5
defmod nNextDays notify myAbfall:next_days:.1 {\
my $art = ReadingsVal("myAbfall","next_text","");;\
ULANZI_SetCustomTonne("myULANZI",$art);;\
}\
Und dann noch in 99_myUtils (Quelle: https://forum.fhem.de/index.php?topic=140239.0sub ULANZI_SetCustomTonne {
my ($name, $tonne) = @_;
my %icon = ("Papier" => 12154,
"Restabfall" => 12155,
"Leichtverpackungen" => 12212,
"Bioabfall" => 12442);
my %data = (
textCase => "2",
scrollSpeed => "80",
text => "Tonne rausstellen",
icon => "$icon{$tonne}",
lifetime => "64800",
lifetimeMode => "0",
#pushIcon => "2",
repeat => "2",
color => "#FFFFFF"
);
ULANZI_SetCustom($name, "Tonne", \%data);
}
sub ULANZI_publish {
my ($name, $topic, $payload) = @_;
my $hash = $defs{$name};
my $devtopic = AttrVal($name, "devicetopic", undef);
my $payload_str = JSON->new->encode($payload);
IOWrite($hash, "publish", "$devtopic/$topic " . $payload_str);
}
sub ULANZI_SetCustom {
my ($name, $appname, $payload) = @_;
my $hash = $defs{$name};
ULANZI_publish($name, "custom/$appname", $payload);
}
defmod nULANZI_button notify myULANZI:button.* {\
if ($EVTPART0 eq "buttonSelect"){\
if (ReadingsNum("myAbfall","next_days",0) == 1){\
fhem ("set MQTT2_Server publish awtrix_bb70d4/custom/Tonne {}");;\
}\
}\
}