FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Abercrombie1892 am 21 März 2019, 21:49:48

Titel: Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 21 März 2019, 21:49:48
hallo leute,

ich hoffe die Betreffanzeige passt soweit.

ich möchte von meinem Raumfeldgerät die Lautstärke ( von 0-100 ) auf meinen Pioneer Receiver kopieren. Also wenn ich in der Raumfeldapp die Lautstärke auf 50% hochdrehe, soll der Receiver auf 50% gehen. Hintergrund ist der, das der Connector über digital output verbunden ist und damit leider keine Lautstärkesteuerung mehr über die App geht.

am liebsten wäre mir das ganze in beide Richtungen, wenn ich über Fernbedienung vom Receiver die Lautstärke erhöhe, soll auch die Anzeige bei dem Connector erhöht werden und sich spiegeln.

vielleicht hat jemand einen Tip für mich.

Danke
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Esjay am 21 März 2019, 22:28:05
Nabend.
Schau dir mal notify in Kombination mit $EVENT bzw. $EVTPART an.

Also nach dem Motto

define notify123 Pioneer:volume set Receiver $EVENT

Grüße
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 22 März 2019, 08:12:56
Zitat von: Esjay am 21 März 2019, 22:28:05
Nabend.
Schau dir mal notify in Kombination mit $EVENT bzw. $EVTPART an.

Also nach dem Motto

define notify123 Pioneer:volume set Receiver $EVENT

Grüße

Vielen Dank für den Tip. Schau ich mir heut Abend mal an
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: DeeSPe am 22 März 2019, 08:32:25
Zitat von: Esjay am 21 März 2019, 22:28:05
Nabend.
Schau dir mal notify in Kombination mit $EVENT bzw. $EVTPART an.

Also nach dem Motto

define notify123 Pioneer:volume set Receiver $EVENT

Grüße

ACHTUNG:
In $EVENT steckt auch noch ein Doppelpunkt wenn das Event Reading und Value enthält.
Ich würde folgendes Vorschlagen (damit sind beide Richtungen "erschlagen"):

defmod n_Volumechange notify (Pioneer|Raumfeld):volume:.* {\
  my $v = $EVTPART1;;\
  if ($NAME eq "Pioneer") {\
    fhem "set Raumfeld:FILTER=volume!=$v volume $v";;\
  } else {\
    fhem "set Pioneer:FILTER=volume!=$v volume $v";;\
  }\
}


Pinoeer und Raumfeld entsprechend mit den Devicenamen ersetzen.
Die FILTER sind dazu da um beim jeweils anderen Device kein neues Event auszulösen wenn der Wert schon übereinstimmt.

Gruß
Dan
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: CoolTux am 22 März 2019, 08:47:56
Zitat von: DeeSPe am 22 März 2019, 08:32:25
ACHTUNG:
In $EVENT steckt auch noch ein Doppelpunkt wenn das Event Reading und Value enthält.
Ich würde folgendes Vorschlagen (damit sind beide Richtungen "erschlagen"):

defmod n_Volumechange notify (Pioneer|Raumfeld):volume:.* {\
  my $v = $EVTPART1;;\
  if ($NAME eq "Pioneer") {\
    fhem "set Raumfeld:FILTER=volume!=$v volume $v";;\
  } else {\
    fhem "set Pioneer:FILTER=volume!=$v volume $v";;\
  }\
}


Pinoeer und Raumfeld entsprechend mit den Devicenamen ersetzen.
Die FILTER sind dazu da um beim jeweils anderen Device kein neues Event auszulösen wenn der Wert schon übereinstimmt.

Gruß
Dan

Da ich das ziehmlich interessant finde hätte ich da auch eine kleine Lösung

Achtung nur Codeteile für das DEF, bitte selber vervollständigen

n_Volumechange notify (PIONEER|RAUMFELD):volume:.* {
  my %h = ( PIONEER => 'RAUMFELD', RAUMFELD => 'PIONEER' );
  fhem("set $h{$NAME}:FILTER=volume!=$EVTPART1 volume $EVTPART1");
}

Ich habe den Code nicht getestet, kann sein das ich einen Typo drin habe, dann bitte einfach noch mal kurz über den Code schauen.
Dan seine Lösung ist für nicht Perl Leute einfacher zu verstehen. Meine wäre einfach elegant  ;D
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: DeeSPe am 22 März 2019, 08:56:06
Zitat von: CoolTux am 22 März 2019, 08:47:56
Meine wäre einfach elegant  ;D

Angeber! ;)

Diese wollte ich extra nicht vorschlagen wegen:
Zitat von: CoolTux am 22 März 2019, 08:47:56
Dan seine Lösung ist für nicht Perl Leute einfacher zu verstehen.

Gruß
Dan

P.S. Es ist immer wieder toll zu sehen welche Lösungsansätze es so gibt um am Ende das selbe Ergebnis zu erzielen.
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: enno am 22 März 2019, 08:57:16
Das werde ich bei mir auch mal testen. Habe aber vermutlich das Problem, dass Volume bei den beiden Geräten nicht == ist. 35 bei  Pioneer entspricht 42 bei Raumfeld. Gibt es dafür auch eine elegante Lösung? Ich würde es mit einem Faktor versuchen...

Gruss
  Enno
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 22 März 2019, 09:28:50
Zitat von: enno am 22 März 2019, 08:57:16
Das werde ich bei mir auch mal testen. Habe aber vermutlich das Problem, dass Volume bei den beiden Geräten nicht == ist. 35 bei  Pioneer entspricht 42 bei Raumfeld. Gibt es dafür auch eine elegante Lösung? Ich würde es mit einem Faktor versuchen...

Gruss
  Enno

Wie meinst du das? Du kannst dir doch die entsprechende Lautstärke einstellen über die Raumfeld App. Ob da nun 35 oder 42 steht is doch völlig egal. Wenn du den Connector über toslink dran hast, gibt er ja
eine feste Lautstärke an den Verstärker.


Vielen Dank an euch.. geiles Forum
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: enno am 22 März 2019, 11:13:43
Zitat von: Abercrombie1892 am 22 März 2019, 09:28:50
Wie meinst du das? Du kannst dir doch die entsprechende Lautstärke einstellen über die Raumfeld App. Ob da nun 35 oder 42 steht is doch völlig egal. Wenn du den Connector über toslink dran hast, gibt er ja
eine feste Lautstärke an den Verstärker.

Ich hatte die Namen der Geräte in der Frage gelassen, nutze aber was (Yamaha) komplett anderes. Da geht das leider nicht.  Daher die Frage nach z.B. einem Faktor.

Gruss
  Enno
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 22 März 2019, 16:01:31
Zitat von: DeeSPe am 22 März 2019, 08:32:25
ACHTUNG:
In $EVENT steckt auch noch ein Doppelpunkt wenn das Event Reading und Value enthält.
Ich würde folgendes Vorschlagen (damit sind beide Richtungen "erschlagen"):

defmod n_Volumechange notify (Pioneer|Raumfeld):volume:.* {\
  my $v = $EVTPART1;;\
  if ($NAME eq "Pioneer") {\
    fhem "set Raumfeld:FILTER=volume!=$v volume $v";;\
  } else {\
    fhem "set Pioneer:FILTER=volume!=$v volume $v";;\
  }\
}


Pinoeer und Raumfeld entsprechend mit den Devicenamen ersetzen.
Die FILTER sind dazu da um beim jeweils anderen Device kein neues Event auszulösen wenn der Wert schon übereinstimmt.

Gruß
Dan

läuft soweit richtig gut. nur kommt es ab und an vor das er anfängt mit der lautstärke hin und her zuspringen wie in einer endlosschleife. muss dann erst den verstärker ausschalten, dann klappt es wieder.
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: DeeSPe am 22 März 2019, 20:40:57
Zitat von: Abercrombie1892 am 22 März 2019, 16:01:31
läuft soweit richtig gut. nur kommt es ab und an vor das er anfängt mit der lautstärke hin und her zuspringen wie in einer endlosschleife. muss dann erst den verstärker ausschalten, dann klappt es wieder.

event-on-change-reading gesetzt bei beiden Devices?

Gruß
Dan
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 22 März 2019, 21:06:00
Zitat von: DeeSPe am 22 März 2019, 20:40:57
event-on-change-reading gesetzt bei beiden Devices?

Gruß
Dan

ist bei beiden gesetzt.
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 28 März 2020, 17:54:40
hallo,

vielleicht kann mir jemand nochmal helfen bei dem thema. wollte heute den code wieder bei fhem einfügen, aber ich bekomme ihn nicht mehr eingefügt.

defmod n_Volumechange notify (Sonos_Wohnzimmer|Denon):Volume|volume:.* {
  my $v = $EVTPART1;;
  if ($NAME eq ,,Denon") {
    fhem "set Sonos_Wohnzimmer:FILTER=Volume!=$v Volume $v";;
  } else {\
    fhem "set Denon:FILTER=volume!=$v volume $v";;
  }
}


define n_Volumechange notify (Sonos_Wohnzimmer|Denon):Volume|volume:.* {   my $v = $EVTPART1;   if ($NAME eq ,,Denon") {     fhem "set Sonos_Wohnzimmer:FILTER=Volume!=$v Volume $v";   } else {\     fhem "set Denon:FILTER=volume!=$v volume $v";   } }: Unrecognized character \xC2; marked by <-- HERE after  undef; { <-- HERE near column 698 at (eval 181451340) line 1.

2020.03.28 16:59:01 1: ERROR evaluating my $EVTPART1='2';my $TYPE='n_Volumechange';my $EVTPART22='3';my $EVTPART4='5';my $EVTPART27='8';my $EVTPART9='0';my $EVTPART25='6';my $EVTPART7='8';my $EVTPART10='1';my $EVTPART16='7';my $EVTPART19='0';my $EVTPART18='9';my $EVTPART11='2';my $EVTPART0='1';my $EVTPART14='5';my $EVTPART6='7';my $EVTPART13='4';my $EVTPART8='9';my $EVTPART20='1';my $NAME='n_Volumechange';my $EVTPART26='7';my $EVTPART29='0';my $EVTPART28='9';my $EVTPART21='2';my $EVTPART23='4';my $SELF='n_Volumechange';my $EVTPART24='5';my $EVTPART17='8';my $EVTPART2='3';my $EVTPART12='3';my $EVTPART15='6';my $EVTPART3='4';my $EVTPART5='6';my $EVENT='1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0';{return undef; {   my $v = $EVTPART1;   if ($NAME eq ,,Denon") {     fhem "set Sonos_Wohnzimmer:FILTER=Volume!=$v Volume $v";   } else {\     fhem "set Denon:FILTER=volume!=$v volume $v";   } }}: Unrecognized character \xC2; marked by <-- HERE after  undef; { <-- HERE near column 698 at (eval 181452103) line 1.

der hintergrund ist ist hier. ich betreibe jetzt einen sonos connect am receiver und habe diesen auf einen festen laustärkepegel gestellt. den slider kann ich dennoch bedienen und ich wollte diesen dann sozusagen an den denon koppeln um auch über die sonos app die laustärke zuändern.

im event monitor wird mir der Sonos Volumewert angezeigt bei änderung
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Otto123 am 29 März 2020, 10:43:25
Hi,

das hier wirfst Du in die Raw Def (https://wiki.fhem.de/wiki/Import_von_Code_Snippets), in deinem Code fehlten fast alle \ am Zeilenende (ungetestet)
defmod n_Volumechange notify (Sonos_Wohnzimmer|Denon):Volume|volume:.* {\
  my $v = $EVTPART1;;\
  if ($NAME eq "Denon") {\
    fhem "set Sonos_Wohnzimmer:FILTER=Volume!=$v Volume $v";;\
  } else {\
    fhem "set Denon:FILTER=volume!=$v volume $v";;\
  }\
}

Gruß Otto
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 29 März 2020, 11:05:06
guten morgen otto und vielen dank für deine antwort

ich habe das mal in die rawdef geschrieben und erhalte diesen fehler

Unrecognized character \xE2; marked by <-- HERE after ($NAME eq <-- HERE near column 37 at (eval 2807341) line 3.

eine frage mal noch dazu. bei dem denon wird volume kleingeschrieben und bei sonos Volume gross. hab ich das soweit denn richtig angepasst?
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Otto123 am 29 März 2020, 11:10:54
Da hast hast Du einen bösen (meist copy und Paste fehler) die bösen, falschen Anführungszeichen
if ($NAME eq ,,Denon") -> if ($NAME eq "Denon")

Habe meinen Code editiert!

Der Trigger vom notify, da bin ich nicht ganz sicher/sattelfest. Eventuell besser so:
(Sonos_Wohnzimmer|Denon):Volume|volume:.* -> (Sonos_Wohnzimmer|Denon):(Volume|volume):.*
oder noch besser so:
(Sonos_Wohnzimmer|Denon):[Vv]olume:.*

Allerdings stimmt doch deine if Logik nicht: if ($NAME eq "denon") {set sonos...}

das muss doch genau andersrum?
Gruß Otto
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 29 März 2020, 13:26:05
defmod n_Volumechange notify (Sonos_Wohnzimmer_Sonos|Denon):[Vv]olume:.* {\
  my $v = $EVTPART1;;\
  if ($NAME eq "Sonos_Wohnzimmer_Sonos") {\
    fhem "set Denon:FILTER=volume!=$v volume $v";;\
  } else {\
    fhem "set Sonos_Wohnzimmer_Sonos:FILTER=Volume!=$v Volume $v";;\
  }\
}


da haut er mir jetzt den fehler raus

Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at (eval 7638550) line 2.


Edit: nachdem ich den Code nochmal abgetippt hatte, ging es und das ganze läuft tip top. Vielen vielen Dank
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Otto123 am 29 März 2020, 13:53:11
Das sieht komisch aus : Sonos_Wohnzimmer_Sonos war in deinem ersten Code nicht so und ist ungewöhnlich - aber möglich :)
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Abercrombie1892 am 08 Dezember 2020, 17:42:26
hallo in die runde. kann man dieses notify an eine bedingung knüpfen, damit es nur reagiert, wenn Sonos Wohnzimmer läuft?

mfg.
Titel: Antw:Werte übergeben von einem zum anderen Gerät
Beitrag von: Otto123 am 08 Dezember 2020, 20:48:14
Ja|Nein|Vielleicht :)