[erledigt] Frage zur "Event-Variable"

Begonnen von juemuc, 02 März 2023, 10:51:13

Vorheriges Thema - Nächstes Thema

juemuc

Hallo,

Über die Ereignissteuerung wird ja die Variable $EVENT und $EVPARTn mit n=0 - .. zur Verfügung gestellt. Nun habe ich das Problem, das in einem Fall nur $EVPART0 und $EVPART1 und in einem anderen Fall auch $EVPART2 und $EVPART3 gefüllt sind. Wenn diese nicht gefüllt sind, stehen sie auch nicht zur Verfügung.
Wie kann ich nun alle Infos aus der Variablen $EVENT zur Verfügung stellen, die nach $EVPART0 enthalten sind?

Bsp.: aus dem Event-Monitor: Fritzbox sip2_+1234567890: not in use oder
                                            Fritzbox sip2_+1234567890: active


Viele Grüße
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

$EVENT einfach selbst splitten, dann weißt Du, wieviele Elemente enthalten sind.


my @EVTPART = split(/ /,$EVENT);
my $anzahl = @EVTPART;


Auf die einzelnen Elemente kannst Du dann mit $EVTPART[0] bis $EVTPART[$anzahl-1] zugreifen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juemuc

Hallo betateilchen,

auf eine ähnliche Idee war ich auch schon gekommen. Allerdings wollte ich einfach den Part "$EVTPART0" löschen. Siehe auch https://forum.fhem.de/index.php/topic,132476.0.html

Hast Du da einen Tipp für mich?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

Mach doch bitte nicht zu jeder Deiner Fragen mehrere Threads auf, das macht überhaupt keinen Spaß, wenn man Dir helfen möchte und man immer erst kreuz und quer suchen muss, wo Du was geschrieben hast.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: juemuc am 02 März 2023, 12:37:10
Allerdings wollte ich einfach den Part "$EVTPART0" löschen.
...
Hast Du da einen Tipp für mich?

Klar. Nimm das bereits erwähnte array, entferne das erste Element und baue aus dem restliche array wieder einen String zusammen.


my @evt = split(/ /,$EVENT);
shift @evt;
return join(" ",@evt);
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juemuc

Zitat von: betateilchen am 02 März 2023, 12:54:06
Mach doch bitte nicht zu jeder Deiner Fragen mehrere Threads auf, das macht überhaupt keinen Spaß, wenn man Dir helfen möchte und man immer erst kreuz und quer suchen muss, wo Du was geschrieben hast.

Kann ich verstehen. Waren für mich am Anfang aber erst einmal 2 unterschiedliche Themen. Hier als Frage zur Variablen "EVENT" und im zweiten Thread Fragen zu Perl.
Das Ersetzen-Thema  benötige ich aber auch noch in abgewandelter Form. Kann ich in Perl nicht in einem String einen Wert suchen und ersetzen, der in einer Variablen steht?
Das Thema mit der Variable "EVENT" ist hier eigentlich mit Deinen Infos erledigt. Danke hierfür.


Viele Grüße
Jürgen.
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

Zitat von: juemuc am 02 März 2023, 13:17:39
Kann ich in Perl nicht in einem String einen Wert suchen und ersetzen, der in einer Variablen steht?

Doch, das geht natürlich.
Aber ausgerechnet die Variablen $EVENT und $EVTPARTx sind keine normalen perl Variablen, sondern eine FHEM Spezialität.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juemuc

Hallo Betateilchen,

auch mit diesen "Variablen" hat es funktioniert, wenn man vorher die "Perl-Besonderheiten" beachtet. In meinem Testfall war dummerweise ein "+" enthalten.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).