NEWS
[Aufruf] DENON & Marantz Adapter
-
Moin!
Schön, dass es ednlich einen Denon Adapter gibt.
Habe es installiert und bekomme bei der Adapterkonfig immer "File index.html not found"
Habe schon mal den Pi neu gebootet und auch iobroker upload denon gemacht.
Im Log steht
denon.0 2018-06-10 09:11:43.820 info Connection closed! denon.0 2018-06-10 09:11:43.819 error Error: connect EHOSTUNREACH 192.168.178.31:23 denon.0 2018-06-10 09:11:40.709 info Trying to connect to 192.168.178.31:23 denon.0 2018-06-10 09:11:10.702 info Connection closed! denon.0 2018-06-10 09:11:10.700 error Error: connect EHOSTUNREACH 192.168.178.31:23 denon.0 2018-06-10 09:11:07.591 info Trying to connect to 192.168.178.31:23
Die IP ist falsch aber wo kann ich die einstellen, wenn ich bei der Adapterkonfig einen Fehlermeldung bekomme? `
Moin,
die IP lässt sich im Admin einstellen, der bei dir wahrscheinlich eine Version < 3 hat. Ich werde mal die index.html bei Gelegenheit nachreichen, da ja der Admin3 noch nicht mal im stable ist.
beste Grüße
fox
-
Ich schrub bereits:
Habe schon mal den Pi neu gebootet und auch iobroker upload denon gemacht.
Das meintest du doch bestimmt oder? `
Bitte Adapter neu installieren (von Git, in npm ist es noch nicht drin) und hier Feedback geben obs klappt.
-
Bin weiter gekommen.
Hatte alles deinstalliert und wie auch zuvor per Github link installiert.
Jetzt wurde nach der IP gefragt und die richitge eingegeben.
Trotzdem bekomme ich nun folgende Meldung:
denon.0 2018-06-10 11:55:58.789 info Adapter connected to DENON-AVR: 192.168.178.20:23 denon.0 2018-06-10 11:55:58.749 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:58.741 info Starting DENON AVR adapter denon.0 2018-06-10 11:55:58.722 info starting. Version 0.1.4 in /opt/iobroker/node_modules/iobroker.denon, node: v6.12.0 denon.0 2018-06-10 11:55:55.027 info terminating denon.0 2018-06-10 11:55:54.994 info Stopping Denon AVR adapter... denon.0 2018-06-10 11:55:41.793 info Connection closed! denon.0 2018-06-10 11:55:41.791 error Error: connect ECONNREFUSED 192.168.178.20:23 denon.0 2018-06-10 11:55:39.707 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:39.700 info Starting DENON AVR adapter denon.0 2018-06-10 11:55:39.682 info starting. Version 0.1.4 in /opt/iobroker/node_modules/iobroker.denon, node: v6.12.0 denon.0 2018-06-10 11:55:35.728 info terminating denon.0 2018-06-10 11:55:35.681 info Stopping Denon AVR adapter... denon.0 2018-06-10 11:55:34.018 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:04.011 info Connection closed! denon.0 2018-06-10 11:55:04.010 error Error: connect ECONNREFUSED 192.168.178.20:23 denon.0 2018-06-10 11:55:04.008 info Trying to connect to 192.168.178.20:23
-
Ich habe noch eine Frage zum State SelectInput. Aus der Auswahlliste schalten klappt, ich würde ihn aber gerne direkt per Button setzen. Schreibe ich dann NET in den State stürzt der Adapter ab.
Im Script konnte man die jeweilige Nummer setzen, also 9 - NET, 10-Spotify usw. Liste auswählen ging auch.
Kann der State vielleicht anderes deklariert werden?
Grüße Brati
Von unterwegs gesendet…
-
Hg6806: Ich meine im Denon musste man irgend etwas via Webinterface frei schalten
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Bei mir funktioniert es nun. Nach einiger Zeit ging der Adapter grün.
Danke euch allen.
-
Bin weiter gekommen.
Hatte alles deinstalliert und wie auch zuvor per Github link installiert.
Jetzt wurde nach der IP gefragt und die richitge eingegeben.
Trotzdem bekomme ich nun folgende Meldung:
denon.0 2018-06-10 11:55:58.789 info Adapter connected to DENON-AVR: 192.168.178.20:23 denon.0 2018-06-10 11:55:58.749 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:58.741 info Starting DENON AVR adapter denon.0 2018-06-10 11:55:58.722 info starting. Version 0.1.4 in /opt/iobroker/node_modules/iobroker.denon, node: v6.12.0 denon.0 2018-06-10 11:55:55.027 info terminating denon.0 2018-06-10 11:55:54.994 info Stopping Denon AVR adapter... denon.0 2018-06-10 11:55:41.793 info Connection closed! denon.0 2018-06-10 11:55:41.791 error Error: connect ECONNREFUSED 192.168.178.20:23 denon.0 2018-06-10 11:55:39.707 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:39.700 info Starting DENON AVR adapter denon.0 2018-06-10 11:55:39.682 info starting. Version 0.1.4 in /opt/iobroker/node_modules/iobroker.denon, node: v6.12.0 denon.0 2018-06-10 11:55:35.728 info terminating denon.0 2018-06-10 11:55:35.681 info Stopping Denon AVR adapter... denon.0 2018-06-10 11:55:34.018 info Trying to connect to 192.168.178.20:23 denon.0 2018-06-10 11:55:04.011 info Connection closed! denon.0 2018-06-10 11:55:04.010 error Error: connect ECONNREFUSED 192.168.178.20:23 denon.0 2018-06-10 11:55:04.008 info Trying to connect to 192.168.178.20:23 ```` `
Um 11:55:58 schreibt er "connected", ab da sollte er grün sein und funktionieren. ECONNREFUSED kann unterschiedliche Ursachen haben, meistens wenn man schon eine Telnet-Verbindung aufgebaut hat.
-
Ich meine im Denon musste man irgend etwas via Webinterface frei schalten
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk `
Konfigurationen sollten wie folgt vorgenommen sein auf dem AVR: https://github.com/foxriver76/ioBroker. … v-receiver
-
Ich habe noch eine Frage zum State SelectInput. Aus der Auswahlliste schalten klappt, ich würde ihn aber gerne direkt per Button setzen. Schreibe ich dann NET in den State stürzt der Adapter ab.
Im Script konnte man die jeweilige Nummer setzen, also 9 - NET, 10-Spotify usw. Liste auswählen ging auch.
Kann der State vielleicht anderes deklariert werden? `
Ich verstehe leider noch nicht 100% was du meinst. Ich verstehe es so:
Die States wie selectInput, surroundMode lassen sich derzeit nur mit den Nummern setzen. Du würdest diese gerne auch mit dem Namen setzen können?
-
Oh, dann teste ich noch mal. Hatte über ctrl state die 9 gesetzt, was irgendwie nicht geklappt hat und NET als String auch nicht. Nr reicht auch, ich melde mich wieder…
Von unterwegs gesendet...
-
Oh, dann teste ich noch mal. Hatte über ctrl state die 9 gesetzt, was irgendwie nicht geklappt hat und NET als String auch nicht. Nr reicht auch, ich melde mich wieder…
Von unterwegs gesendet... `
Okay, also wenn du die Number rein schreibst, sollte es klappen, die Liste scheint auch zu klappen. Ich werde mal schauen, ob man den String auch annehmen kann in Zukunft, zumindest sollte ein Adapter-Absturz verhindert werden.
-
Hallo,
habe den Adapter mit einem Marantz SR7008 (3 Zonen) getestet.
Quick-Select gibt's beim SR7008 wohl nicht und die Buttons tun deswegen wohl auch nichts bei mir (heißt wohl ab Nachfolgermodell SR7009 Smartselect und wenn man dem Beitrag hier glauben kann, dann wird das wohl auch anders angesprochen: https://forum.fhem.de/index.php?topic=58452.0 Aber wie gesagt, kann's eh nicht testen.
Was ich als Funktion noch sinnvoll fände wäre der "Sleep mode":
MAIN ZONE SLEEP TIMER setting
***:001 to 120 by ASCII , 010=10min: SLPOFF<cr>, SLP010…120 <cr>Return SLP Status SLP? <cr>Sleep Timer anschalten kann man natürlich auch selbst, aber Status abfragen geht nicht, oder? Oder gibt's einen Weg, Rückmeldungen vom "expertCommand" zu bekommen? Das wäre ja insgesamt nett, dann wären Sachen, die mich sonst interessieren, (Treble, Bass, Loudness und Subwoofer Level, teilweise wohl pro Zone möglich), auch selbst realisierbar.
Am interessantesten fände ich (auch) eine Anzeige / Browse-Möglichkeit für I-Radio-Stationen oder für einen verfügbaren Medienserver. In der Marantz App ist das ja möglich, aber über HTTP oder Telnet Kommandos habe ich hierzu leider noch nichts gesehen. HEOS habe ich nicht.
Über http://192.168.1.XXX/NetAudio/art.asp-jpg lässt beim meinem Receiver das Logo des aktuell gespielten I-Radio-Senders anzeigen (getestet) und mit http://192.168.1.XXX/img/album%20art_S.png soll wohl das Cover des aktuell gespielten Songs gehen (noch nicht von mir getestet). Falls der Link bei allen Receivern gleich ist könnte man den ja auch in einen State ablegen (quasi als Gedächtnisstütze).
Das Schalten des Input per Nummer funktioniert bei mir. Das angepasste Widget dafür (hier für meinen SAT-Receiver; JPG muss natürlich angepasst werden) ist bei mir Folgendes (in Ursprungsversion eh mal von Bratis iobroker.click-Upload geklaut):
! [{"tpl":"tplBulbOnOffCtrl","data":{"oid":"","icon_off":"/vis.0/main/VUplus2Duo2.jpg","icon_on":"/vis.0/main/VUplus2Duo2.jpg","oidTrue":"denon.0.selectInput","oidFalse":"denon.0.selectInput","oidTrueValue":"6","oidFalseValue":"6","min":"0","max":"100","urlTrue":"","urlFalse":"","g_css_font_text":false,"g_last_change":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"g_fixed":false,"g_visibility":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","g_css_shadow_padding":false,"g_signals":false,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"g_gestures":false},"style":{"left":"643px","top":"75px","width":"50px","height":"50px","background-color":"#1b1818","border-style":"solid","border-color":"rgb(136, 136, 136)","border-width":"1px"},"widgetSet":"basic"}]
Ansonsten großen Dank für den Adapter.</cr></cr></cr>
-
Was ich als Funktion noch sinnvoll fände wäre der "Sleep mode":
MAIN ZONE SLEEP TIMER setting
***:001 to 120 by ASCII , 010=10min: SLPOFF<cr>, SLP010…120 <cr>Return SLP Status SLP?</cr></cr> `
Sollte machbar sein. Habe mir ein issue dazu eröffnet.
Sleep Timer anschalten kann man natürlich auch selbst, aber Status abfragen geht nicht, oder? Oder gibt's einen Weg, Rückmeldungen vom "expertCommand" zu bekommen? Das wäre ja insgesamt nett, dann wären Sachen, die mich sonst interessieren, (Treble, Bass, Loudness und Subwoofer Level, teilweise wohl pro Zone möglich), auch selbst realisierbar. `
Ich kann die Rückmeldung nicht dem Expert Command zuordnen, da permanent ein Datenstrom besteht. Daher leider nicht machbar.
Über http://192.168.1.XXX/NetAudio/art.asp-jpg lässt beim meinem Receiver das Logo des aktuell gespielten I-Radio-Senders anzeigen (getestet) und mit http://192.168.1.XXX/img/album%20art_S.png soll wohl das Cover des aktuell gespielten Songs gehen (noch nicht von mir getestet). Falls der Link bei allen Receivern gleich ist könnte man den ja auch in einen State ablegen (quasi als Gedächtnisstütze). `
Dazu bräuchte ich mal Rückmeldung von den neueren Receivern die anscheinend über kein Webinterface mehr verfügen. Ansonsten natürlich kein Problem das zu hinterlegen.
Alles in allem, danke für deine ausführlichen Anregungen.
-
Sleep Timer ist in der neusten Version enthalten.
Über npm sowie git installierbar. Konnte es selbst nur für die Main Zone testen.
Der Wert 0 schaltet den Sleep Timer wieder aus.
-
Was ich als Funktion noch sinnvoll fände wäre der "Sleep mode":
MAIN ZONE SLEEP TIMER setting
***:001 to 120 by ASCII , 010=10min: SLPOFF<cr>, SLP010…120 <cr>Return SLP Status SLP?</cr></cr> `
Sollte machbar sein. Habe mir ein issue dazu eröffnet. `
Super danke. Und schon implementiert und submitted, cool. Hab's gerade getestet, läuft für alle drei Zonen, sogar für krumme Werte (wie 3 Minuten).
Falls das mit der Rückgabe nicht klappt (Nachfrage siehe unten) könntest Du die folgenden Dinge noch mal auf die Liste setzen (muss ja aber nicht so fix sein…), hab leider noch kein Git-Account, muss ich mal ändern, um issue selbst machen zu können.
PSBAS UP <cr>BASS UP/DOWN direct change to **dB
PSBAS DOWN <cr>PSBAS 50<cr>, PSBAS 50 <cr>**:00 to 99 by ASCII , 50=0dB
AVR can be operated from -6 to +6(44 to 56)
PSBAS ? <cr>Return PSBAS Status
PSTRE UP <cr>Same as above for treble
PSTRE DOWN <cr>PSTRE **<cr>, e.g. PSTRE 50 <cr>PSTRE ? <cr>PSSWL ON <cr>Subwoofer Level Adjust = ON
PSSWL OFF <cr>Subwoofer Level Adjust = OFF
PSSWL UP <cr>PSSWL DOWN <cr>PSSWL **<cr>, e.g. PSSWL 50 <cr>--SUBWOOFER(1) Level Adjust
**:00,38 to 62 by ASCII , 50=0dB
PSSWL ? <cr>PSSWL2 UP <cr>same as above for 2nd subwoofer out
PSSWL2 DOWN <cr>PSSWL2 **<cr>, e.g. PSSWL2 50 <cr>
@foxriver76:Sleep Timer anschalten kann man natürlich auch selbst, aber Status abfragen geht nicht, oder? Oder gibt's einen Weg, Rückmeldungen vom "expertCommand" zu bekommen? Das wäre ja insgesamt nett, dann wären Sachen, die mich sonst interessieren, (Treble, Bass, Loudness und Subwoofer Level, teilweise wohl pro Zone möglich), auch selbst realisierbar. `
Ich kann die Rückmeldung nicht dem Expert Command zuordnen, da permanent ein Datenstrom besteht. Daher leider nicht machbar. `
Dazu hätte ich noch mal ne Verständnisfrage, wenn erlaubt…
Was passiert denn (intern), wenn man "SLP?<cr>" absetzt? Irgendeine Antwort muss der AVR doch geben. Wozu ist so ein Kommando sonst aufgeführt? Wenn die Antwort irgendwo im Stream kommt, kann man dann nicht nach SLP oder so suchen, sich merken, welches Kommando noch ne Antwort benötigt und dann einen zwei passende States wie "LastCommand" und "ReturnOfLastCommand" oder so machen? Wenn zu SLP dann nichts kommt ist meine Spekulation natürlich hinfällig.
Erstmal aber dank noch mal für's Update.</cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr></cr>
-
Okay, also wenn du die Number rein schreibst, sollte es klappen, die Liste scheint auch zu klappen. Ich werde mal schauen, ob man den String auch annehmen kann in Zukunft, zumindest sollte ein Adapter-Absturz verhindert werden. `
Ja, das mit den States ist so eine Sache. Ein ähnliches Problem habe ich auch gerade bei einem Adapter, wo ich dran arbeite. Eigentlich wäre es sinnvoll die Liste der States mit gleichem Key und Value zu erzeugen anstatt einen Key zu erfinden und den hoch zuzählen.
Das hat den Vorteil, dass man einen String auf den State schreiben oder aus der Liste auswählen kann. Wenn man einen Murks-String schreibt, muss man prüfen, ob das Gerät den Befehl ablehnt und den letzten State aktualisiert oder ob man den vorher noch prüft.
Auch ginge ein Array für die States zu nutzen. Das hat zumindest den Vorteil, dass bei Auswahl aus der Klappliste echte Integers als Index auf den State geschrieben werden. Dann könnte man, um auch Strings zu akzeptieren, es am Datentyp unterscheiden. Number -> index der States, String -> Name des Inputs.
Was meint ihr dazu?
Grüße
Daniel
-
Okay, also wenn du die Number rein schreibst, sollte es klappen, die Liste scheint auch zu klappen. Ich werde mal schauen, ob man den String auch annehmen kann in Zukunft, zumindest sollte ein Adapter-Absturz verhindert werden. `
Ja, das mit den States ist so eine Sache. Ein ähnliches Problem habe ich auch gerade bei einem Adapter, wo ich dran arbeite. Eigentlich wäre es sinnvoll die Liste der States mit gleichem Key und Value zu erzeugen anstatt einen Key zu erfinden und den hoch zuzählen.
Das hat den Vorteil, dass man einen String auf den State schreiben oder aus der Liste auswählen kann. Wenn man einen Murks-String schreibt, muss man prüfen, ob das Gerät den Befehl ablehnt und den letzten State aktualisiert oder ob man den vorher noch prüft.
Auch ginge ein Array für die States zu nutzen. Das hat zumindest den Vorteil, dass bei Auswahl aus der Klappliste echte Integers als Index auf den State geschrieben werden. Dann könnte man, um auch Strings zu akzeptieren, es am Datentyp unterscheiden. Number -> index der States, String -> Name des Inputs.
Was meint ihr dazu? `
So in etwa handhabe ich es derzeit. Ich habe Key, Value Paare und wenn jemand eins setzt, suche ich mir den Wert an Index 1 raus und sende ihn in Kombination mit dem Kommando.
Bsp State:
! ````
adapter.setObjectNotExists('zone2.selectInput', {
type: 'state',
common: {
name: 'zone2.selectInput',
role: 'Select Input',
type: 'number',
write: true,
read: true,
states: {
"0": "PHONO",
"1": "CD",
"2": "TUNER",
"3": "DVD",
"4": "BD",
"5": "TV",
"6": "SAT/CBL",
"7": "MPLAY",
"8": "GAME",
"9": "NET",
"10": "SPOTIFY",
"11": "LASTFM",
"12": "IRADIO",
"13": "SERVER",
"14": "FAVORITES",
"15": "AUX1",
"16": "AUX2",
"17": "AUX3",
"18": "AUX4",
"19": "AUX5",
"20": "AUX6",
"21": "AUX7"
}
},
native: {}
});! ````
Und dann kannst du wunderbar drauf zugreifen, insofern die Values für dich auch handelbar sind. Wenn jetzt jemand einen String setzt, kannst du ja einfach ein Array aus den Value Paaren nach dem String durchsuchen.
-
So in etwa handhabe ich es derzeit. Ich habe Key, Value Paare und wenn jemand eins setzt, suche ich mir den Wert an Index 1 raus und sende ihn in Kombination mit dem Kommando. `
Das Problem ist aber, dass man den Index kennen muss. Und wenn ich den State jetzt z.B. über ein Javascript steuere oder über die vis, dann muss ich die Zuordnung kennen. OK, hier indem Fall ist diese State-Liste ja statisch und ändert sich nicht. In meinem Fall ist die dynamisch, da ist das ehr nachteilig.Und dann kannst du wunderbar drauf zugreifen, insofern die Values für dich auch handelbar sind. Wenn jetzt jemand einen String setzt, kannst du ja einfach ein Array aus den Value Paaren nach dem String durchsuchen. `
So wie du es jetzt gemacht hast, kannst du aber nicht erkennen, ob jemand einen String drauf schreibt oder ein Index, da dieser ja auch ein String ist (z.B. "1"). Der Datentyp von InputSelect ist jetzt Number. So würde ich jetzt zwar erwarten, das bei Schreiben von 1 auch ein Number 1 rauskommt, aber akzeptiert der dann überhaupt Strings? Ganz sauber wäre es aber irgendwie nicht.Grüße
Daniel
-
Was passiert denn (intern), wenn man "SLP?<cr>" absetzt? Irgendeine Antwort muss der AVR doch geben. Wozu ist so ein Kommando sonst aufgeführt? Wenn die Antwort irgendwo im Stream kommt, kann man dann nicht nach SLP oder so suchen, sich merken, welches Kommando noch ne Antwort benötigt und dann einen zwei passende States wie "LastCommand" und "ReturnOfLastCommand" oder so machen? Wenn zu SLP dann nichts kommt ist meine Spekulation natürlich hinfällig.
Erstmal aber dank noch mal für's Update.</cr> `
Wenn man die Sleep Anfrage schickt, bekommt man eine Antwort im ähnlichen Format z.B. SLPOFF (Sleep Timer aus) oder SLP050 (für noch 50 Minuten). Häufig ist es auch so z. B. sendest du MV20 und bekommst auch MV20 bestätigt. Jedoch zweifle ich, dass das ganze im ms Bereich konsistent ist, wenn gleichzeitig z. B. über die Fernbedienung geschalten wird.
Es wäre ein leichtes, das letzte empfange Kommando in einem State zu speichern, dann könnte man sich für viele Fälle evtl. was basteln.
-
So in etwa handhabe ich es derzeit. Ich habe Key, Value Paare und wenn jemand eins setzt, suche ich mir den Wert an Index 1 raus und sende ihn in Kombination mit dem Kommando.
Das Problem ist aber, dass man den Index kennen muss. Und wenn ich den State jetzt z.B. über ein Javascript steuere oder über die vis, dann muss ich die Zuordnung kennen. OK, hier indem Fall ist diese State-Liste ja statisch und ändert sich nicht. In meinem Fall ist die dynamisch, da ist das ehr nachteilig.
Ja korrekt, stellt in meinem Fall kein Problem dar. Bei einer dynamischen Situation, wäre es wohl das schlauste, wenn man direkt nach dem Kommando oder zumindest mittels contains den Wert finden kann.
Und dann kannst du wunderbar drauf zugreifen, insofern die Values für dich auch handelbar sind. Wenn jetzt jemand einen String setzt, kannst du ja einfach ein Array aus den Value Paaren nach dem String durchsuchen.
So wie du es jetzt gemacht hast, kannst du aber nicht erkennen, ob jemand einen String drauf schreibt oder ein Index, da dieser ja auch ein String ist (z.B. "1"). Der Datentyp von InputSelect ist jetzt Number. So würde ich jetzt zwar erwarten, das bei Schreiben von 1 auch ein Number 1 rauskommt, aber akzeptiert der dann überhaupt Strings? Ganz sauber wäre es aber irgendwie nicht.
Ich habe es derzeit noch nicht implementiert, nach dem String zu suchen. Ich hatte vorhin mal exemplarisch ein String in die Number geschrieben und er hatte ihn zumindest angenommen ohne abzuschmieren. Ja sauber ist es nicht, jedoch könnte man nur Strings annehmen und dann abprüfen ob es Key oder Value matched, wenn ich gerade kein Denkfehler drin habe.