Werte übergeben von einem zum anderen Gerät

Begonnen von Abercrombie1892, 21 März 2019, 21:49:48

Vorheriges Thema - Nächstes Thema

Abercrombie1892

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

Esjay

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

Abercrombie1892

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

DeeSPe

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

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

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

enno

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
Einfacher FHEM Anwender auf Intel®NUC

Abercrombie1892

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

enno

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
Einfacher FHEM Anwender auf Intel®NUC

Abercrombie1892

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.

DeeSPe

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

Abercrombie1892

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.

Abercrombie1892

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

Otto123

#13
Hi,

das hier wirfst Du in die Raw Def, 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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Abercrombie1892

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?