[gelöst] MyUtils Dateinamen aus Variable zusammensetzen

Begonnen von dat234, 22 März 2020, 13:16:45

Vorheriges Thema - Nächstes Thema

dat234

Hallo an die FHEM Gemeinde,

ich möchte über das Modul Echodevice die Teimer auslesen und auf einen Nixie Display darstellen. Also eine Wall Clock mit Nixie Röhren. Das funktioniert auch soweit recht gut. Leider gibt es bei dem Auslesen der Timer über das Echodevice Modul eine Zeitverzögerung von 60 Sekunden. Ist unschön aber nicht das aktuelle Problem.

Mein Problem ist, dass Amazon die Anzahl der Timer in den Readings ändert und die Timer in unterschiedlichen Timernummern startet.
Beispiel:

Internals:
   CFGFN     
   DEF        XXXXXXXXXXXXXXX G09147039365026R
   FUUID      5e6cd389-f33f-63c8-c345-370efdc0a1a65139
   IODev      Echodevice
   LOGINMODE  IODEV
   NAME       ECHO_G09147039365026R
   NR         595749
   NTFY_ORDER 50-ECHO_G09147039365026R
   STATE      connected
   TYPE       echodevice
   model      Echo Gen3
   OLDREADINGS:
   READINGS:
     2020-03-22 12:54:57   BrowserLanguage de,en-US;q=0.7,en;q=0.3
     2020-03-22 12:54:57   BrowserUserAgent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
     2020-03-14 13:52:25   COOKIE_MODE     IODEV
     2020-03-22 12:54:56   channel         -
     2020-03-22 12:54:56   currentAlbum    -
     2020-03-22 12:54:56   currentArtist   -
     2020-03-22 12:54:56   currentArtwork  -
     2020-03-22 12:54:56   currentTitle    -
     2020-03-22 12:54:56   currentTuneInID -
     2020-03-22 12:55:36   deviceAddress   Bei mir Zuhause! :-) , DE
     2020-03-22 12:55:37   dnd             off
     2020-03-22 12:55:36   microphone      false
     2020-03-22 12:55:33   model           Echo Gen3
     2020-03-22 12:54:57   mute            off
     2020-03-22 12:55:34   online          true
     2020-03-22 12:54:56   playStatus      stopped
     2020-03-22 12:55:33   presence        present
     2020-03-22 12:54:57   progress        0
     2020-03-22 12:54:57   progresslen     0
     2020-03-22 12:54:57   repeat          off
     2020-03-22 12:54:57   shuffle         off
     2020-03-14 13:52:27   state           connected
     2020-03-22 12:55:36   timeZoneId      Europe/Berlin
     2020-03-22 13:01:32   timer_01_id     017139aa-82f1-36ca-8ce1-9124b60bba64
     2020-03-22 13:01:32   timer_01_remainingtime 0
     2020-03-22 13:01:32   timer_02_id     25d5a858-4462-30ec-8e08-014887cfc594
     2020-03-22 13:01:32   timer_02_remainingtime 854
     2020-03-22 12:07:32   timer_03_id     44dde46c-35ca-381e-955c-3414e47ab408
     2020-03-22 12:07:32   timer_03_remainingtime 0
     2020-03-22 12:07:32   timer_04_id     4c9b4462-9619-3331-9978-6dfca734d87b
     2020-03-22 12:07:32   timer_04_remainingtime 0
     2020-03-22 12:07:32   timer_05_id     5d5bd18d-0795-37f6-b3fb-7e087fb7e79b
     2020-03-22 12:07:32   timer_05_remainingtime 0
     2020-03-22 12:07:32   timer_06_id     6706ad77-649c-371d-b4ec-81fd187fcf4e
     2020-03-22 12:07:32   timer_06_remainingtime 0
     2020-03-22 12:07:32   timer_07_id     6917a7f1-05aa-3e34-949b-f016f3f29f2f
     2020-03-22 12:07:32   timer_07_remainingtime 0
     2020-03-22 12:07:32   timer_08_id     710b98f8-d24c-3b1d-a806-75ef5148277e
     2020-03-22 12:07:32   timer_08_remainingtime 0
     2020-03-22 12:07:32   timer_09_id     8f18ee73-a64d-3a41-b1f4-7e9a71b44df8
     2020-03-22 12:07:32   timer_09_remainingtime 0
     2020-03-22 12:07:32   timer_10_id     b947d9e6-fae9-357d-8643-2fcef1993cab
     2020-03-22 12:07:32   timer_10_remainingtime 0
     2020-03-22 12:07:32   timer_11_id     c3b5bc00-fe09-31c5-8de3-325f70c0788a
     2020-03-22 12:07:32   timer_11_remainingtime 0
     2020-03-22 12:07:32   timer_12_id     c59b87b9-90f0-321c-bdab-6bc62e5a4b40
     2020-03-22 12:07:32   timer_12_remainingtime 0
     2020-03-22 12:07:32   timer_13_id     c87ed24b-e4a6-3aca-8a9e-cab7d0d564ef
     2020-03-22 12:07:32   timer_13_remainingtime 0
     2020-03-22 12:07:32   timer_14_id     d257562b-7447-34eb-bd1f-4ea21c47b5a8
     2020-03-22 12:07:32   timer_14_remainingtime 0
     2020-03-22 12:07:32   timer_15_id     f0ed85ba-bed0-353e-834d-086f09882bc9
     2020-03-22 12:07:32   timer_15_remainingtime 0
     2020-03-22 11:27:32   timer_16_id     b428d04d-9528-3a53-b00f-c9a2272ed081
     2020-03-22 11:27:32   timer_16_remainingtime 18600
     2020-03-22 11:27:32   timer_17_id     b947d9e6-fae9-357d-8643-2fcef1993cab
     2020-03-22 11:27:32   timer_17_remainingtime 0
     2020-03-22 11:27:32   timer_18_id     beec7cb1-9ceb-386d-b1ef-a10615a6d8ff
     2020-03-22 11:27:32   timer_18_remainingtime 21891
     2020-03-22 11:27:32   timer_19_id     c272a291-5735-3fb6-ad80-2374d14e970d
     2020-03-22 11:27:32   timer_19_remainingtime 7278
     2020-03-22 11:27:32   timer_20_id     c3b5bc00-fe09-31c5-8de3-325f70c0788a
     2020-03-22 11:27:32   timer_20_remainingtime 0
     2020-03-22 11:27:32   timer_21_id     c59b87b9-90f0-321c-bdab-6bc62e5a4b40
     2020-03-22 11:27:32   timer_21_remainingtime 0
     2020-03-22 11:27:32   timer_22_id     c87ed24b-e4a6-3aca-8a9e-cab7d0d564ef
     2020-03-22 11:27:32   timer_22_remainingtime 0
     2020-03-22 11:27:32   timer_23_id     d257562b-7447-34eb-bd1f-4ea21c47b5a8
     2020-03-22 11:27:32   timer_23_remainingtime 0
     2020-03-22 11:27:32   timer_24_id     e8659d1a-35ca-3916-b8b4-97d2bf45e830
     2020-03-22 11:27:32   timer_24_remainingtime 28840
     2020-03-22 11:27:32   timer_25_id     f0ed85ba-bed0-353e-834d-086f09882bc9
     2020-03-22 11:27:32   timer_25_remainingtime 0
     2020-03-22 13:01:32   timer_count     2
     2020-03-22 13:01:32   timer_id        017139aa-82f1-36ca-8ce1-9124b60bba64
     2020-03-22 13:01:32   timer_remainingtime 0
     2020-03-22 13:01:34   version         3658075268
     2020-03-22 13:01:33   voice           alexa timer auf fünfzehn minuten
     2020-03-22 13:01:33   voice_timestamp 1584878444727
     2020-03-22 13:00:57   volume          27
     2020-03-22 13:00:41   volume_alarm    30
     2020-03-22 13:01:37   wakeword        ALEXA


Die Anzahl der Timer ist aktuell 2. Bei Bedarf wird die Anzahl der Timer erhöht. Ist auch sehr schön im List zu sehen, die Readings gehen bis Timer 25. Nach einer bestimmten Zeit wird die Anzahl der Timer von Amazon auf 1 zurückgesetzt. Allerdings werden bis dahin für die neuen Timer neue Readings aufgemacht. In  diesem List ist der Timer01 inaktiv, der Timer02 aber aktiv.
Mein Nixie Display wird über http angesprochen und soll immer den Timer mit dem frühsten Ablauf anzeigen. Daher muss ich mir immer alle verfügbaren Timer auslesen.
Meine Idee war ein Sub in den MyUtils.
Über eine Schleife wird ein Zähler bis zur Anzahl der Timer hochgezählt und das entsprechende Reading gelesen.

sub echo_timer_anzeigen_neu()
{
my $echo_timer_anzahl=(ReadingsVal("timer_echo_keller_anzahl","state",0));
my $echo_timer_neu = 0;
my $echo_timer=(ReadingsVal("timer_echo_keller","state",0));
my $i = 0;
while($i < $echo_timer_anzahl + 1) {
$echo_timer_neu=(ReadingsVal("ECHO_G09147039365026R","timer_$i_remainingtime",0));
$i++;
}
if ($echo_timer != 0 && $echo_timer_neu < $echo_timer) {$echo_timer = $echo_timer_neu;}
if ($echo_timer == 0){$echo_timer = $echo_timer_neu;}
GetHttpFile("192.168.2.39","/timer.htm?timer_hour=0&timer_min=0&timer_sec=$echo_timer&action=settimer");
}


Der Zähler ist die $i und muss auch in den Namen des Reading eingesetzt werden.
$echo_timer_neu=(ReadingsVal("ECHO_G09147039365026R","timer_$i_remainingtime",0));

Hier gibt mir FHEM aber einen Fehler aus.
ERROR:
Global symbol "$i_remainingtime" requires explicit package name (did you forget to declare "my $i_remainingtime"?) at ./FHEM/99_myUtils.pm line 397.


Wie kann der Name des Readings mit dem Wert von $i ergänzt werden?
Andere Lösungen und Ideen sind natürlich auch gerne gesehen.

Passt auf Euch auf!
Bleibt gesund und bleibt zu Hause!

Grüße aus Bayern :-)


Otto123

#1
Stichwort concatenation ;)
Eventuell schon so:
$echo_timer_neu=(ReadingsVal("ECHO_G09147039365026R","timer_".$i."_remainingtime",0));

Zumindest funktioniert sowas in der FHEM Kommandozeile:
{my $i=5;;"willi".$i."lustig"}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dat234

Hallo Otto,

hat super funktioniert. :-) Vielen Dank für die Hilfe.

Gruß Thomas