Hauptmenü

Neueste Beiträge

#1
Multimedia / Aw: [Neues Modul] BOSE SoundTo...
Letzter Beitrag von FlatTV - 07 Februar 2026, 22:41:25
@pah
Sorry das ich das mal so unpräzise mache, ist dir der hier durchgerutscht oder mit Absicht entfernt?
sub BOSEST_setSource($$) {
     my ($hash, $source) = @_;
     $hash->{helper}{switchSource} = uc $source;
-
-    if($hash->{helper}{switchSource} eq "") {
-        return undef;
-    }
#2
Heizungssteuerung/Raumklima / Aw: Vitoconnect - Verbesserte ...
Letzter Beitrag von stefanru - 07 Februar 2026, 21:20:08
Ok, da ist aber etwas falsch an den Werten!
Vor dem externen Wärmetauscher sollte die temp nicht 32,7 Grad sein. Es scheint 8,5 oder 6,3 zu sein, wenn ich das richtig sehe
Das würde eher hinter den internen zum Heizkreis passen.
Es soll ja beim Verdampfen Wärme von außen aufnehmen.
Das geht nur wenn die Temp unter der Außen Temp liegt.
Im Laufe des Verdampfens wird es noch kälter hat aber Wärme aufgenommen der Druck sinkt halt immer weiter bis es dann zum Kompressor kommt.
Da wird dann Verflüssigt mit hohem Druck und du kommst auf die 64,4.
Die wird dann an die Heizung abgegeben.
Danach sollte die temp dann minimal unter dem Heizkreis Rücklauf liegen
Dann wird der Druck wieder reduziert und das Spiel geht von vorne los.

Siehe mal mein Bild:Du darfst diesen Dateianhang nicht ansehen.
#3
TabletUI / Aw: [FTUI3] Beispiele, Anregun...
Letzter Beitrag von Salvi5 - 07 Februar 2026, 21:18:20
Da ich recht stolz auf meine neue Ftui3-Wandpanel-Seite bin, und auch mal meinen Dank loswerden möchte,
an alle, die sich mit so viel Enthusiasmus dafür engagieren, stelle ich mal ein paar Beispiele hier rein.
Nochmal: Danke! Ftui3 läuft schnell auf dem Raspi4 und hat beim Erstellen wenig Probleme gemacht.
Mehr Doku wäre gut, aber die Beispiele und die nette KI von nebenan haben viel geholfen.

Gruß Mike

Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen.
#4
Multimedia / Aw: [Neues Modul] BOSE SoundTo...
Letzter Beitrag von Prof. Dr. Peter Henning - 07 Februar 2026, 20:39:15
Muss wohl. In dem ios12 Stylesheet ist irgendetwas faul - und, wie vermutet, hat es etwas mit der lokalen Konfiguration des FHEMWEB zu tun.

LG

pah
#5
Wettermodule / VisualCrossing Api via httpmod...
Letzter Beitrag von holle75 - 07 Februar 2026, 19:49:31
Für alle, die vielleicht Wetter ausserhalb Deutschlands in höchster Auflösung brauchen, schreibe ich mal meinen VisualCrossing Api Weg zusammen (https://www.visualcrossing.com/weather-api/ ... "sign up for free" --- 1000 Abfragen pro Tag).

Das meiste an Code ist aus allen möglichen Informationen aus dem Forum zusammengebastelt. Ich bin kein Programmierer. Und schön ist sicherlich anders.

Entstanden ist das Ganze, weil alle Wettermodule früher oder später nicht mehr für Italien funktioniert haben und ich spezielle Infos weiterführend brauche (explizite Windwarnungen, Solar, Regenwahrscheinlichkeit, etc).

Es ist recht komplex (für mein Dafürhalten), aber liefert einen grafischen Überblick des zukünftigen Wetters an jedem Ort der Welt. Dies erstaunlich akurat.

Alle Userreadings habe ich mal dringelassen, vielleicht braucht es jemand.

httpmod device RAW (x=euer longitude, y=euer latitude, w=key von visualcrossing gilt es anzupassen. Auch in 99_myUtil.pm. Am besten mit einem Editor mit Replace-Funktion):

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&deg - 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

99_myUtil.pm (hier auch x und y beachten)
############## 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 ##################################

Wenn Interesse besteht, gibt es auch noch eine separate Abfrage des täglichen Wetters mit Wetterwarnungen zum zB implementieren in ftui.

#6
FRITZ!Box / Aw: Keine stabile FRITZBOX Ver...
Letzter Beitrag von JoWiemann - 07 Februar 2026, 18:50:14
Hallo VB,

der kryptische Text ist die Rückgabe aus dem gescheiterten nonBlocking Aufruf.

Ich kann mich allerdings erst wieder in eine Woche mit Deinem Problem befassen. Bin wandern.

Grüße Jörg
#7
Multimedia / Aw: [Neues Modul] BOSE SoundTo...
Letzter Beitrag von FlatTV - 07 Februar 2026, 17:28:34
Ich habe gerade meinen eigenen Post gelesen, liegt es etwa daran?stylesheetPrefix ios12
Ich werde schwach...
ohne ,,attr WEB stylesheetPrefix ios12"
WebIF
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'
        ];
#8
MQTT / Aw: mqtt2.template: Contributi...
Letzter Beitrag von the ratman - 07 Februar 2026, 17:21:52
grüß euch ...

ich bin gerade am rumprobieren, wie gut shelly für mich funktionieren könnte.
dazu hab' ich mir zum testen eine shelly 4-fachsteckdose und einen shelly blu ht zugelegt.
der blu ht ist über die steckdose eingebunden und sendet auch werte an den mqtt-server (den ich aus mir unerfindlichen gründen tatsächlich alleine zum laufen bringen konnte *g*).

jetzt müsste ich ja ein template angeben - was nehme ich da, oder wird hier eines für meine kombi erstellt? ahnung hab' ich natürlich 0 - ich weiß ja nicht mal, ob mein device schon fertig ist, oder mit einem template verbessert werden könnte, helfe aber gerne bei neuen templates mit, wenn man mir sagt, was benötigt wird ... ich bring hier mal den plug+blu:

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-206ef10295f4
#9
Kalendermodule / Aw: Calendar, CalView & Co
Letzter Beitrag von Nobbynews - 07 Februar 2026, 17:16:37
Zitat 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


Meine Ulanzi steuere ich über das reading next_days an:
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.0
sub 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);
}


Durch Drücken der mittleren Taste an der Ulanzi kann die Anzeige beendet werden:
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 {}");;\
  }\
 }\
}
#10
Kalendermodule / Aw: Calendar, CalView & Co
Letzter Beitrag von TubeHead - 07 Februar 2026, 17:09:23
 ;D  ;D  ;D
Ich hatte gerade die gleiche Idee und ein komplettes FHEM-Update gemacht. Jetzt funktioniert das...  O:-)

War da mal in den vergangenen Monaten eine Version mit einer Macke? Scheint so... Und bei meinem Glück habe ich natürlich genau die noch gehabt...
Nun gut... Das Problem wäre gelöst... Gut das wir drüber gesprochen haben  ;)

Ich 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...