Hauptmenü

[Gelöst] Setreading in einem DOIF

Begonnen von grappa24, 27 November 2024, 16:13:35

Vorheriges Thema - Nächstes Thema

grappa24

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

FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

TomLee

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

grappa24

Danke,

bis auf das do always war mein DOIF also in Ordnung, lag tatsächlich daran, dass "[HEOSPlayer376628887:currentImageUrlOld]" zeitweise nicht belegt war.

FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

TomLee

Vorschlag das ohne zusätzliche (Eventhandler-) Definition im selben Device via userReadings umzusetzen:

attr HEOSPlayer376628887 userReadings currentImageUrl:playStatus:.stop {ReadingsVal($name,'currentImageUrlOld','error')}

grappa24

du hast immer schöne Lösungen  8)

... das mit dem userReadings hatte ich als erstes versucht, bin aber an der Syntax gescheitert  ::)
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

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 ... >:(
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

TomLee

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 ?

grappa24

#7
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 ...



FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...