Blitzer anzeigen

Begonnen von bismosa, 06 August 2018, 15:21:12

Vorheriges Thema - Nächstes Thema

bismosa

Hallo!

@AnDiBaCkE
Ja...ein Modul wäre hier wohl praktisch...aber eigentlich bin ich auch zufrieden, wie es bei mir läuft. Wäre aber auch ein schönes Übungsprojekt....aber leider bin ich auch in zu vielen anderen Projekten schon drin...
Das sind mir noch zu viele ABER...aber wer weiß?  :)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

curt

Zitat von: bismosa am 07 Januar 2019, 20:29:16
Ja...ein Modul wäre hier wohl praktisch...

Ich weiß nicht, ob es für alles ein Modul braucht. Viel wichtiger ist -und darum möchte ich Dich sehr freundlich bitten- das gesamte Vorgehen im Wiki zu verewigen.

Begründung: Hier im Forum findet man solche schönen Lösungen nur zufällig, im Wiki ist das viel nachhaltiger.

BTW: Machst Du was mit FTUI als Frontend? Schaue Dir mal bitte https://wiki.fhem.de/wiki/FTUI_Widget_Maps an. Wenn ich recht erinnere, ist das von @eki und kann mehrere JSON-Ebenen. Ich selbst habe das Thema allerdings zurückgestellt: Bei mir gibt es die Karte, die Verkehrslage sowie testweise die Feuerlöscher (Testebene). Auf den ersten Blick wäre es sinnvoll, die Blitzer (auch) dort zu integrieren. Ich bin allerdings nicht sicher, ob das geht.
RPI 4 - Jeelink HomeMatic Z-Wave

bismosa

Hallo!

ZitatIch weiß nicht, ob es für alles ein Modul braucht
Ich weiß es auch nicht. Aber in einem Modul ist es viel praktischer als über mehrere Devices und einer langen Anleitung. Dafür ist es doch am Anfang sehr Aufwendig ein Modul zu erstellen...und ich habe da sehr wenig Erfahrung drin.

Zitatdas gesamte Vorgehen im Wiki zu verewigen
Hatte ich auch bereits drüber nachgedacht. Aber wieder verworfen. Ich finde den Ort hier bei den Codeschnipseln besser aufgehoben, da man ja schon im Thread bemerkt, wie unterschiedlich die einzelnen Lösungen aussehen können. Hier kann dann auch direkt die Diskussion dazu stattfinden.
Ich persönlich habe nur sehr wenig aus dem Wiki an Vorlagen verwendet. Oftmals waren die Informationen hier veraltet. Im Forum habe ich dann bessere Hinweise gefunden. Meine Meinung.
Wenn jemand Lust und Zeit hat, darf er gerne das Beispiel im Wiki veröffentlichen. Da habe ich kein Problem mit.

ZitatMachst Du was mit FTUI als Frontend? Schaue Dir mal bitte https://wiki.fhem.de/wiki/FTUI_Widget_Maps an
Ja. Das nutze ich genau so im FTUI. Per Label eingebunden. Da kann man den generierten HTML Code so verwenden. Mehr benötige ich hier nicht. Ich lasse mir nur eine kleine Warnung (In ROT) anzeigen, wenn ein Blitzer in der Nähe ist. Entweder gehe ich dann dichter an das Tablet um die Texte zu lesen oder ich fahre einfach besonnender ;)
Eine Anzeige als Map hatte ich nie vor.

@thorschtn @AnDiBaCkE
Auf welches Reading triggert ihr denn eigentlich? Aus dem "httpmod_blitzer"? Ich nutze in der TabletUI das Reading "Text" aus dem dummy. Hier könntet ihr doch auch einfach ein weiteres Reading erzeugen, das getriggert wird, wenn es eine Änderung gibt. Also z.B. im Bereich "getBlitzerText" wenn es eine Änderung gibt ein Reading "HasChanged" o.ä. setzen. Dann könnte man nur auf das eine Event reagieren.
Wenn ich es auf die schnelle gerade richtig gesehen habe, dann wird das reading Text im Dummy bei jedem Durchlauf neu geschrieben...und nie gelöscht.

Eigentlich müsste es sich auch so erweitern lassen, dass die Readings nur neu geschrieben/gelöscht werden, wenn es Änderungen gibt.
Vermutlich wäre ein ReadingsBulkUpdate hier praktisch. Ich habe aber keine Erfahrung ob dies auch außerhalb eines Moduls funktioniert.
Allerdings müsste dies im Device httpmod_blitzer passieren...

Mir fehlt leider die Zeit mich gerade intensiv damit auseinander zu setzen. Habe gerade noch ein paar andere Baustellen offen.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

MadMax-FHEM

#63
Zitat von: AnDiBaCkE am 07 Januar 2019, 19:39:21
Hallo!
Wenn ich wieder zu Hause bin teste ich auch gleich den Vorschlag von thorschtn. Vielen Dank für die Unterstützung.

@Bismosa: Ich bin ja für ein eigenes Modul  8) Leider habe ich davon keine Ahnung aber ich werde es mir einmal vom Weihnachtsmann wünschen! Vielleicht klappt's  :P

Gruß,
AnDiBaCkE

und @thorschtn:

statt den gesamten Inhalt zu merken/speichern und zu vergleichen kann man (so mache ich das bei TelegramMeldungen) auch einfach ein Reading im Blitzer-Device setzen (mittels: setreading Blitzer msgSent now / was als "Wert" gesetzt wird [hier: now ;) ] ist quasi egal) und dann einfach vor dem (erneuten) Senden prüfen wann zuletzt gesendet wurde (mittels ReadingAge("Blitzer","msgSent",0) ) und beispielsweise frühestens nach 10s/1m etc. wieder was senden...

@bismosa: vielen Dank für den Code!

EDIT: da war ich knapp zu langsam ;) aber ähnlich
Zitat von: bismosa am 08 Januar 2019, 13:26:34
@thorschtn @AnDiBaCkE
Auf welches Reading triggert ihr denn eigentlich? Aus dem "httpmod_blitzer"? Ich nutze in der TabletUI das Reading "Text" aus dem dummy. Hier könntet ihr doch auch einfach ein weiteres Reading erzeugen, das getriggert wird, wenn es eine Änderung gibt. Also z.B. im Bereich "getBlitzerText" wenn es eine Änderung gibt ein Reading "HasChanged" o.ä. setzen. Dann könnte man nur auf das eine Event reagieren.
Wenn ich es auf die schnelle gerade richtig gesehen habe, dann wird das reading Text im Dummy bei jedem Durchlauf neu geschrieben...und nie gelöscht.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

curt

Zitat von: bismosa am 08 Januar 2019, 13:26:34
Zitatdas gesamte Vorgehen im Wiki zu verewigen
Hatte ich auch bereits drüber nachgedacht. Aber wieder verworfen. Ich finde den Ort hier bei den Codeschnipseln besser aufgehoben, da man ja schon im Thread bemerkt, wie unterschiedlich die einzelnen Lösungen aussehen können. Hier kann dann auch direkt die Diskussion dazu stattfinden.
Ich persönlich habe nur sehr wenig aus dem Wiki an Vorlagen verwendet. Oftmals waren die Informationen hier veraltet. Im Forum habe ich dann bessere Hinweise gefunden. Meine Meinung.

Ich sehe das genau anders-herum. Zig Seiten Diskussion. Und man weiß nicht, ob es es noch und welche der Versionen funktioniert. Riesiger Zeitaufwand, oft für nichts.

Zitat von: bismosa am 08 Januar 2019, 13:26:34
Das nutze ich genau so im FTUI. Per Label eingebunden. Da kann man den generierten HTML Code so verwenden. Mehr benötige ich hier nicht. Ich lasse mir nur eine kleine Warnung (In ROT) anzeigen, wenn ein Blitzer in der Nähe ist.

Ehe ich aufwändig das Fahrrad neu erfinde: Zeigst Du bitte den Code?
RPI 4 - Jeelink HomeMatic Z-Wave

bismosa

Hallo!
ZitatIch sehe das genau anders-herum. Zig Seiten Diskussion. Und man weiß nicht, ob es es noch und welche der Versionen funktioniert. Riesiger Zeitaufwand, oft für nichts.
Dafür halte ich alles im ersten Beitrag auf Stand. Das ist im WiKi meist nicht so einfach...aber Du kannst gerne einen Wiki Eintrag machen.
Ich hatte öfter den anderen Fall, das Beispiele aus dem Wiki extrem veraltet waren...

ZitatZeigst Du bitte den Code?
Beitrag #1 ?

Und im FTUI noch ein einfaches Label:

<div data-type="label"
     data-device="blitzer"
     data-get="Text"
     ></div>


Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

curt

Danke.

Aber nun habe ich es kaputt gemacht:

Zitat
ERROR:
syntax error at ./FHEM/99_myUtils.pm line 116, near ""!!" 99_" Global symbol "$device" requires explicit package name (did you forget to declare "my $device"?) at ./FHEM/99_myUtils.pm line 122. Global symbol "@rl" requires explicit package name (did you forget to declare "my @rl"?) at ./FHEM/99_myUtils.pm line 124. Can't redeclare "my" in "my" at ./FHEM/99_myUtils.pm line 127, near "" syntax error at ./FHEM/99_myUtils.pm line 131, near "}" Global symbol "$device" requires explicit package name (did you forget to declare "my $device"?) at ./FHEM/99_myUtils.pm line 131. Global symbol "@rl" requires explicit package name (did you forget to declare "my @rl"?) at ./FHEM/99_myUtils.pm line 133. syntax error at ./FHEM/99_myUtils.pm line 134, near "}" syntax error at ./FHEM/99_myUtils.pm line 139, near "}" Can't redeclare "my" in "my" at ./FHEM/99_myUtils.pm line 144, near "" ./FHEM/99_myUtils.pm has too many errors.

In der Ausgabezeile habe ich die Nummerierung sowie das scheinbar unsinnige "!!" gelöscht. Das sieht doch nicht schön aus.

Am fehlenden "!!" stört er sich aber erst, seitdem ich auch noch die Nummerierung löschte. Gna.

Hab mal bitte eine Idee.
RPI 4 - Jeelink HomeMatic Z-Wave

bismosa

Hallo,

zeig mal bitte Deine myUtils. Vielleicht fehlt irgendwo ein semikolon o.ä.?

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

curt

Ich habe gesehen, dass Du im Script aus irgendwelchen Gründen nach "!!" suchst. Aber das gibt es nun nicht mehr. Keine Ahnung, ob das relevant ist.


################################################################
###                        Blitzer                           ###
################################################################
# https://forum.fhem.de/index.php/topic,90014.0.html
#
sub getBlitzer(){
    my $httpDev = "httpmod_blitzer";
    my $BlitzerDev = "blitzer";
    my $lat = AttrVal($BlitzerDev,"lat",undef);
    my $lng = AttrVal($BlitzerDev,"lng",undef);
my $maxkm = AttrVal($BlitzerDev,"maxkm",undef);
    if (!defined $lat){
        Log 5,"[getBlitzer] lat ist nicht definiert!";
    }
    if (!defined $lng){
        Log 5,"[getBlitzer] lng ist nicht definiert!";
    }
if (!defined $maxkm){
        Log 5,"[getBlitzer] maxkm ist nicht definiert!";
    }
    # Da unbekannt ist, wie viele es gibt...durchprobieren
    my @Liste;
    for(my $i=1;$i<100;$i++){
        my $num = sprintf("%02d", $i);
        Log 5,"[getBlitzer] Reading: $num";
        my $Poi_lat = ReadingsVal($httpDev,"pois_".$num."_lat",undef);
        my $Poi_lng = ReadingsVal($httpDev,"pois_".$num."_lng",undef);
        last if !defined $Poi_lat;
#Log 1,"[getBlitzer] Reading: $Poi_lat";
        last if !defined $Poi_lng;
        Log 5,"[getBlitzer] lat/lng: $Poi_lat $Poi_lng";
        my $Poi_street = ReadingsVal($httpDev,"pois_".$num."_street","keine");
        my $Poi_vmax = ReadingsVal($httpDev,"pois_".$num."_vmax","kA");
        if (!defined $Poi_vmax){
            $Poi_vmax = ".";
        }
        if ($Poi_vmax eq ""){
            $Poi_vmax = ".";
        }
        Log 5,"[getBlitzer] $Poi_street $Poi_vmax";
               
        #Entfernung zur Home-Koordinate (Luftlinie)
        #Berechnung nach: https://www.kompf.de/gps/distcalc.html
        #Einfache Variante
        my $dx = 71.5 * abs($lng - $Poi_lng);
        my $dy = 111.3 * abs($lat - $Poi_lat);
my $distance = sqrt($dx * $dx + $dy * $dy);
       
#MaxEntfernung einbeziehen
if (not $distance > $maxkm){
Log 5,"[getBlitzer] distance: $distance";
        push @Liste, [ $distance, $Poi_street, $Poi_vmax, $Poi_lat, $Poi_lng ];
} else {
Log 5,"[getBlitzer] $distance > $maxkm";
}

       
    }
    my $out = join(", ", @Liste)."\n";
    Log 5,"[getBlitzer] $out";
    my @ListeSort = sort {$a->[0] <=> $b->[0]} @Liste;
    my $out = join(", ", @ListeSort)."\n";
    Log 5,"[getBlitzer] $out";
   
    #Eintragen ins Dummy-Device
    #Eintragungen erst löschen
    fhem("deletereading $BlitzerDev .*", 1);
   
    my $Text="";
    my $Anzahl = scalar(@ListeSort);
    for (my $i=0;$i<$Anzahl;$i++) {
        my $num = sprintf("%02d", $i);
        Log 5,"[getBlitzer] Num: $num";
        fhem("setreading $BlitzerDev ".$num."Entfernung ".$ListeSort[$i][0]);
        fhem("setreading $BlitzerDev ".$num."Strasse ".$ListeSort[$i][1]);
        fhem("setreading $BlitzerDev ".$num."VMax ".$ListeSort[$i][2]);
       
        #Ort
        fhem("sleep 1; \{getBlitzerOrte(".$ListeSort[$i][3].",".$ListeSort[$i][4].",'$num','$BlitzerDev')};");
       
    }
    fhem("sleep 3; \{getBlitzerText('$BlitzerDev')};");
    #fhem("setreading $BlitzerDev Text $Text");
   
}
sub getBlitzerOrte($$$$){
#https://nominatim.openstreetmap.org/search/52.xxxxx%208.xxxx?format=json&addressdetails=1
    my $Poi_lat = shift;
    my $Poi_lng = shift;
    my $num = shift;
    $num = sprintf("%02d", $num);
    my $BlitzerDev = shift;


my $hash = {};
  $hash->{'blitzerdev'} = $BlitzerDev;
$hash->{'num'} = $num;
my $param = {
           url        => "https://nominatim.openstreetmap.org/reverse?format=json&lat=".$Poi_lat."&lon=".$Poi_lng,
           timeout    => 5,
           method     => "GET",            # Lesen von Inhalten
   hash       => $hash,            # Muss gesetzt werden, damit die Callback funktion wieder $hash hat
           header     => "",
           callback   =>  \&getBlitzerOrteCallback   # Diese Funktion soll das Ergebnis dieser HTTP Anfrage bearbeiten
    };
#agent: FHEM/1.0\r\nUser-Agent: FHEM/1.0\r\nAccept: application/json

    HttpUtils_NonblockingGet($param);      # Starten der HTTP Abfrage. Es gibt keinen Return-Code.

}

sub getBlitzerOrteCallback($) {
    my ($param, $err, $data) = @_;
    my $hash = $param->{hash};
    my $BlitzerDev = $hash->{blitzerdev};
my $num = $hash->{num};

    if($err ne "")      # wenn ein Fehler bei der HTTP Abfrage aufgetreten ist
    {
        Log3 "[getBlitzerOrte]", 3, "error while requesting ".$param->{url}." - $err";   # Eintrag fürs Log
    }
#Log 1,"[getBlitzerOrte] $BlitzerDev ".$param->{data}." ".$param->{url}." ".$param->{httpheader}." ".$param->{code};
#Log 1,"$data";
my $Ort = "";
my ($Ort) = $data =~ m/suburb":"([^"]+)"/;
if ((!defined $Ort) or ($Ort eq "")){
#Log 1, "[getBlitzerOrteCallback] search city_district";
        ($Ort) = $data =~ m/city_district":"([^"]+)"/;
#Log 1, "[getBlitzerOrteCallback] $Ort";
    }
if ((!defined $Ort) or ($Ort eq "")){
#Log 1, "[getBlitzerOrteCallback] search town $data";
        ($Ort) = $data =~ m/town":"([^"]+)"/;
#Log 1, "[getBlitzerOrteCallback] $Ort";
    }
if ((!defined $Ort) or ($Ort eq "")){
#Log 1, "[getBlitzerOrteCallback] search village $data";
        ($Ort) = $data =~ m/village":"([^"]+)"/;
#Log 1, "[getBlitzerOrteCallback] $Ort";
    }
    if ((!defined $Ort) or ($Ort eq "")){
#Log 1, "[getBlitzerOrteCallback] $Ort";
Log 5, "[getBlitzerOrteCallback] ".$param->{url};
Log 5, "[getBlitzerOrteCallback] $data";
        $Ort = ".";
    }
    my ($building) = $data =~ m/building":"([^"]+)"/;
    if ((!defined $building) or ($building eq "")){
        $building = ".";
    }
    Log 5,"[getBlitzerOrteCallback] $Ort $building";
    #Log 1,"[getBlitzerOrte] ".$decoded_json->{address}->{suburb}->[0];
    fhem("setreading $BlitzerDev ".$num."Ort $Ort");
fhem("setreading $BlitzerDev ".$num."Building $building");
}

sub getBlitzerText($){
    my $BlitzerDev = shift;
    my $Text="<html> <p align='left'>";
    for(my $i=0;$i<100;$i++){
        my $num = sprintf("%02d", $i);
        my $Entf = ReadingsVal($BlitzerDev,$num."Entfernung",undef);
last if !defined $Entf;
my $Ort = ReadingsVal($BlitzerDev,$num."Ort",".");
if ($Ort eq "."){$Ort = " "};
my $building = ReadingsVal($BlitzerDev,$num."Building",0);
if ($building eq "."){$building = " "};
        my $Strasse = ReadingsVal($BlitzerDev,$num."Strasse"," ");
        my $VMax = ReadingsVal($BlitzerDev,$num."VMax"," ");
        if (not $Text eq "<html> <p align='left'>"){
            $Text = $Text."\n <br>";   
        }
        $Text = $Text."$Ort $Strasse $building Max $VMax km/h (".sprintf("%.1f", "$Entf")."km)";
    }
$Text = $Text."</p></html>";
    fhem("setreading $BlitzerDev Text $Text");
}

##########

RPI 4 - Jeelink HomeMatic Z-Wave

bismosa

Hallo!
Zitatdass Du im Script aus irgendwelchen Gründen nach "!!" suchst
Öhm...nö? Nicht das ich mich gerade daran erinnern könnte. Oder was meinst Du genau?

Kannst Du mir Sagen welches die Zeile 116 ist?

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

curt

Zitat von: bismosa am 09 Januar 2019, 08:22:44
Hallo!Öhm...nö? Nicht das ich mich gerade daran erinnern könnte. Oder was meinst Du genau?

Das ist zu streichen, Fehler meinerseits. Diese Zeile taucht in sub DWD auf ...
$expMode = "point" if(!defined($expMode));grep "!!" 99_myUtils.pm*

Der schnelle Blick war zu schnell ...

Zitat von: bismosa am 09 Januar 2019, 08:22:44
Kannst Du mir Sagen welches die Zeile 116 ist?

Ich verstehe den Hintergrund der Frage nicht.
RPI 4 - Jeelink HomeMatic Z-Wave

bismosa

Hallo,

ZitatIch verstehe den Hintergrund der Frage nicht.
In der Fehlermeldung steht:
syntax error at ./FHEM/99_myUtils.pm line 116
daher möchte ich gerne wissen, welches diese Zeile sein kann. Dann kann man gezielter nach dem Fehler suchen.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

AnDiBaCkE

Hallo bismosa,

Zitat@thorschtn @AnDiBaCkE
Auf welches Reading triggert ihr denn eigentlich? Aus dem "httpmod_blitzer"? Ich nutze in der TabletUI das Reading "Text" aus dem dummy. Hier könntet ihr doch auch einfach ein weiteres Reading erzeugen, das getriggert wird, wenn es eine Änderung gibt. Also z.B. im Bereich "getBlitzerText" wenn es eine Änderung gibt ein Reading "HasChanged" o.ä. setzen. Dann könnte man nur auf das eine Event reagieren.
Wenn ich es auf die schnelle gerade richtig gesehen habe, dann wird das reading Text im Dummy bei jedem Durchlauf neu geschrieben...und nie gelöscht.

Eigentlich müsste es sich auch so erweitern lassen, dass die Readings nur neu geschrieben/gelöscht werden, wenn es Änderungen gibt.
Vermutlich wäre ein ReadingsBulkUpdate hier praktisch. Ich habe aber keine Erfahrung ob dies auch außerhalb eines Moduls funktioniert.
Allerdings müsste dies im Device httpmod_blitzer passieren...

Mir fehlt leider die Zeit mich gerade intensiv damit auseinander zu setzen. Habe gerade noch ein paar andere Baustellen offen.

Ich habe es in beiden versucht, httpmod und Dummy und mit allen möglichen Readings.
Mit ReadingAge habe ich nichts zum Laufen bekommen und habe mir nun aus Zeitgründen die 2x Dummylösung von thorschtn gebaut.
Ist zwar nicht elegant aber funktioniert.

Vielen Dank!

Gruß,
AnDiBacKe
FHEM auf RasPi2
CUL und HMLAN Adapter

MadMax-FHEM

Zitat von: AnDiBaCkE am 09 Januar 2019, 21:47:17
Hallo bismosa,

Ich habe es in beiden versucht, httpmod und Dummy und mit allen möglichen Readings.
Mit ReadingAge habe ich nichts zum Laufen bekommen und habe mir nun aus Zeitgründen die 2x Dummylösung von thorschtn gebaut.
Ist zwar nicht elegant aber funktioniert.

Vielen Dank!

Gruß,
AnDiBacKe

Hallo AnDiBacKe,

wenn's läuft... ;)

Falls du etwas schlanker werden willst evtl. mal hier schauen: https://forum.fhem.de/index.php/topic,95598.msg884655.html#msg884655

Statt dem Dummy (dmTelegramSends) kannst du das auch direkt im Blitzer-HTTPMOD oder so "speichern".
Ich habe den Dummy nur, da das meine generelle Sammelstelle für Telegram-Nachrichten ist...
$SignalDevice brauchst du auch nicht, kann ja ein fester Reading-Name sein ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

curt

@bismosa
Ich habe die letzte Sicherung von 99_myUtils.pm eingespielt und dann nochmals die Nummerierung sowie "!!" entfernt. Nun geht es.
RPI 4 - Jeelink HomeMatic Z-Wave