Wert aus Reading in einem anderem Device als Attribut Speichern

Begonnen von Moerk, 11 Februar 2022, 10:14:22

Vorheriges Thema - Nächstes Thema

Moerk

Hallo zusammen,

ich stehe hier grade vor einer Wand  ::)

Es soll die aktuelle Lautstärke vom Radio in einem Dummy gespeichert werden. Ziel ist das ich bei einem bestimmten Event eine definierte Lautstärke einstellen möchte, und wenn das vorbei ist soll die vorherige Lautstärke wieder hergestellt werden.

Ich habe das Attribute definiert und es ist auch da, wenn ich aber versuche es zu füllen kommt da immer mein Befehl an mit dem ich das tun möchte.

Also wenn ich eingebe
attr dumMorning Start_Radio_Volume {return (ReadingsVal("BOSE","volume",10)}

steht im Attribut: {return (ReadingsVal("BOSE","volume",10)}

oder wenn ich es ohne Perl mache

attr dumMorning Start_Radio_Volume ReadingsVal("BOSE","volume",10)

wird zu ReadingsVal("BOSE","volume",10)

Kann jemand meinen Fehler erkennen, was mache ich falsch?

Herzlichen Dank im voraus,
Mörk
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI

DeeSPe

{
  fhem 'attr dumMorning Start_Radio_Volume '.ReadingsNum('BOSE','volume',10);
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Beta-User

...vermutlich geht das auch mit set magic...
Zitat

       
  • {(perlExpression)} with the result of perlExpression. The $DEV variable is additionally available, designating the set device name.
These replacements are also known as "set magic".
Aber "man" stellt sich zwei Fragen:
- warum denn einen dummy
- warum per Attribut...?

Warum nicht einfach ein setreading auf das Ausgangsdevice "loslassen"?
setreading BOSE volumesaved {(ReadingsVal('BOSE','volume',10))}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DeeSPe

Mit setreading muss man aber nicht zwangsweise auf Perl wechseln:
setreading BOSE volumesaved [r:BOSE:volume]

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Moerk

Vielen Dank für eure Antworten,
Zitat von: DeeSPe am 11 Februar 2022, 10:17:42
{
  fhem 'attr dumMorning Start_Radio_Volume '.ReadingsNum('BOSE','volume',10);
}


Das funktioniert für mich auf jeden Fall und wird meine Lösung!

ZitatAber "man" stellt sich zwei Fragen:
- warum denn einen dummy
Der Dummy schaltet den Zustand ein das ich im Bad bin.
Daraufhin sollen bestimmte Werte gespeichert werden (Lautstärke, Sender, aber auch Licht-Dimmlevel, Rolladenposition usw) und statt dessen sollen von mir definierte Werte eingestellt werden.
Wenn ich aus dem Bad verschwinde mache ich den dummy wieder aus und alles wird wie vorher. Das geht so in die Richtung WAF  8)
Den Dummy habe ich damit ich auch eine solide 'zustandsanzeige' habe, auf das Event vom dummy schalten reagieren 2 DOIF's und zaubern.

Zitat- warum per Attribut...?
Was wäre eine Alternative für dieses vorhaben? Es werden wie gesagt mehrere Werte werden.

ZitatWarum nicht einfach ein setreading auf das Ausgangsdevice "loslassen"?
Weil ich ja dann nicht die Lautstärke zu einem bestimmten Zeitpunkt habe.

Aber für mich passt das mit dem Weg von Dan   :)

Viele Grüße,
Mörk
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI

Beta-User

Zitat von: Moerk am 11 Februar 2022, 11:10:25
Aber für mich passt das mit dem Weg von Dan   :)
...dann ist ja alles gut...

Zitat
Was wäre eine Alternative für dieses vorhaben? Es werden wie gesagt mehrere Werte werden.
Die Alternative heiß "Reading" und kann per "setreading" gesetzt werden - wo auch immer (von mir aus auch in irgendeinem dummy, wenn es sein muss).

Zitat
Weil ich ja dann nicht die Lautstärke zu einem bestimmten Zeitpunkt habe.
Den Einwand verstehe ich nicht, aber s.o..

Mich stören bei der "Attribut-Lösung" die roten Fragezeichen (ja, ich weiß, das kann man unterdrücken). Ich will in der Konfiguration möglichst im laufenden Betrieb nichts ändern, und für "Kleinigkeiten", die man nur zwischenspeichern will, sind m.E. Readings die bessere Wahl. Aber jeder wie er mag.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Moerk

Ich versuche zu lernen und vielleicht ist dein Weg ja tatsächlich der bessere, auf jeden Fall nimmst auch du dir Zeit für mein Problem und dafür schon mal vielen Dank!

Was ich mit dem Reading verstanden habe ist, das dieses im Dummy aktualisiert wird wenn es sich auch im Radio ändert.
Was will ich erreichen? Ich möchte wissen wie laut das Radio zum Zeitpunkt X ist. Anschließend ändere ich die Lautstärke. Wenn sich nun das Reading aktualisiert wäre die Information von Zeitpunkt X überschrieben.
Daher nutze ich ein Attribut welches sich eben nicht ändert wenn ich das nicht explizit überschreibe. So kann sich die Lautstärke vom Radio beliebig oft ändern ohne das es den gespeicherten wert beeinflusst.


Ist aber alles quatsch, denn ich kann das Reading so triggern das es sich nur dann aktualisiert wenn das Event auftritt (in einem Fall der Dummy geht auf ON) und dann ist dass die sauberere Lösung wegen dem Fragezeichen  :o
FHEM auf RaspberryPI mit Homematic IP CCU3,  Video Türsprechanlage ALP-600, BOSE SoundTouch, Shellys über MQTT, Selbstgautes über MQTT, TabletUI