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 :-)
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
Hallo Otto,
hat super funktioniert. :-) Vielen Dank für die Hilfe.
Gruß Thomas