Hallo zusammen,
was ist denn hier falsch?
Falls mein Player stoppt möchte ich die Image-URL mit der "alten" (= gemerkten) Image-URL laden:
define n_set_old_imge_url DOIF ( [HEOSPlayer376628887:playStatus] eq "stop") (setreading HEOSPlayer376628887 currentImageUrl [HEOSPlayer376628887:currentImageUrlOld] )
attr n_set_old_imge_url room HEOS
# CFGFN
# DEF ( [HEOSPlayer376628887:playStatus] eq "stop") (setreading HEOSPlayer376628887 currentImageUrl [HEOSPlayer376628887:currentImageUrlOld] )
# FUUID 67473049-f33f-b5ae-c5de-4d5525f17d7a4b5e
# MODEL FHEM
# NAME n_set_old_imge_url
# NOTIFYDEV global,HEOSPlayer376628887
# NR 7181
# NTFY_ORDER 50-n_set_old_image_url
# STATE cmd_1
# TYPE DOIF
# VERSION 28546 2024-02-23 20:11:05
# eventCount 37
# READINGS:
# 2024-11-27 16:08:07 cmd 1
# 2024-11-27 16:08:07 cmd_event set_cmd_1
# 2024-11-27 16:08:07 cmd_nr 1
# 2024-11-27 16:08:07 error setreading HEOSPlayer376628887 currentImageUrl : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
#where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
#
# 2024-11-27 16:01:57 mode enabled
# 2024-11-27 16:08:07 state cmd_1
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# HEOSPlayer376628887:
# 0:
# playStatus ^HEOSPlayer376628887$:^playStatus:
# attr:
# cmdState:
# wait:
# waitdel:
# condition:
# 0 ::ReadingValDoIf($hash,'HEOSPlayer376628887','playStatus') eq "stop"
# do:
# 0:
# 0 setreading HEOSPlayer376628887 currentImageUrl [HEOSPlayer376628887:currentImageUrlOld]
# 1:
# helper:
# NOTIFYDEV global,HEOSPlayer376628887
# globalinit 1
# last_timer 0
# sleeptimer -1
# timerdev
# timerevent
# timerevents
# timereventsState
# triggerDev
# DOIF_eventa:
# cmd_nr: 1
# cmd: 1
# cmd_event: set_cmd_1
# error: setreading HEOSPlayer376628887 currentImageUrl : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
#where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
#
# cmd_1
# DOIF_eventas:
# cmd_nr: 1
# cmd: 1
# cmd_event: set_cmd_1
# error: setreading HEOSPlayer376628887 currentImageUrl : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
#where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
#
# state: cmd_1
# readings:
# all HEOSPlayer376628887:playStatus
# uiState:
# uiTable:
#
setstate n_set_old_imge_url cmd_1
setstate n_set_old_imge_url 2024-11-27 16:08:07 cmd 1
setstate n_set_old_imge_url 2024-11-27 16:08:07 cmd_event set_cmd_1
setstate n_set_old_imge_url 2024-11-27 16:08:07 cmd_nr 1
setstate n_set_old_imge_url 2024-11-27 16:08:07 error setreading HEOSPlayer376628887 currentImageUrl : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>\
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.\
setstate n_set_old_imge_url 2024-11-27 16:01:57 mode enabled
setstate n_set_old_imge_url 2024-11-27 16:08:07 state cmd_1
Hi,
generell, ohne do always löst dein DOIF nur einmal aus.
Die setreading-Fehlermeldung kommt, weil [HEOSPlayer376628887:currentImageUrlOld] nicht existiert und nix zurückgegeben wird. Schreibfehler ?
Gruß Thomas
Danke,
bis auf das do always war mein DOIF also in Ordnung, lag tatsächlich daran, dass "[HEOSPlayer376628887:currentImageUrlOld]" zeitweise nicht belegt war.
Vorschlag das ohne zusätzliche (Eventhandler-) Definition im selben Device via userReadings umzusetzen:
attr HEOSPlayer376628887 userReadings currentImageUrl:playStatus:.stop {ReadingsVal($name,'currentImageUrlOld','error')}
du hast immer schöne Lösungen 8)
... das mit dem userReadings hatte ich als erstes versucht, bin aber an der Syntax gescheitert ::)
Das Fiese bei diesen HEOS-Instanzen ist, dass sich die Readings bei Zustandsänderungen nicht selbst aktualisieren und ich für alle Änderungen (play, stop, channelWechsel, ...) ein
trigger WEB.* JS:location.reload(true)
einbauen muss ... >:(
ZitatDas Fiese bei diesen HEOS-Instanzen ist, dass sich die Readings bei Zustandsänderungen nicht selbst aktualisieren...
Ist das normal?
Hast dazu mal im dafür vorgesehenen Forumbereich gefragt ob das so sein muss oder der Modulautor da was machen kann?
Ist es bei allen so oder evtl. nur bei Dir?
Mit dem Attribut longpoll in der WEB-Definition hat es nix zu tun ?
Ich glaub, ich weiß wieder an was das liegt; ich hab mir für meine Floorpläne teilweise dummies gebaut, die natürlich über notifys mit den HEOS-Instanzen verbunden sind und die sich nicht von allein aktualisieren sondern ein Browser-Refresh benötigen ...