Hallo,
nachdem ich hier schon viele tolle Ideen gefunden habe, die ich umsetzen konnte, benötige ich Eure Hilfe. Ich lese aus einer Sonos Box den "currentSender" aus und lege diese Info in einer eigenen dummy-Gerät ab. Dies funktioniert bestens. Wenn ich allerdings diesen Wert wieder an die Box übergeben will (nachdem diese z.B. ohne Strom war), funktioniert es nicht. Hier mein Coding:
define letzter_currentSender dummy
attr letzter_currentSender room Bad
define letzter_currentSender_Notify notify Sonos_Bad:currentSender.* { my $s = ReadingsVal("Sonos_Bad", "currentSender", "ANTENNE%201");; fhem("set letzter_currentSender $s") }
attr letzter_currentSender_Notify room Bad
define Sonos_Bad_Appeared_Notify notify Sonos_Bad:presence:.appeared { if (ReadingsVal("Sonos_Bad", "currentSender", "") eq "") { fhem ("set Sonos_Bad StartFavourite letzter_currentSender NoStart") } }
attr Sonos_Bad_Appeared_Notify room Bad
Ich habe auch schon folgende Varianten ausprobiert:
"letzter_currentSender"
value("letzter_currentSender")
Alles ohne erfolgt. Wo liegt mein Fehler?
Viele Grüße
juemuc
ICh denke es wäre schön, wenn Du code-tags evrwenden würdest - das hilft bei der Lesbarkeit.
Ich denke eines der Problem ist, dass due zwar den text letzter_currentSender im 2. Notify übergibst aber eigentlich den status des Devices auslesen willst, wie im ersten notify und dann diesen wert im set verwenden.
Also so etwas wie
define Sonos_Bad_Appeared_Notify notify Sonos_Bad:presence:.appeared {my $s = (ReadingsVal("letzter_currentSender", "state", "ANTENNE%201");; if ((ReadingsVal("Sonos_Bad", "currentSender", "") eq "") { fhem ("set Sonos_Bad StartFavourite $s NoStart") } }
Wobei ich das jetzt nicht getestet habe
ZitatICh denke es wäre schön, wenn Du code-tags evrwenden würdest
Also wieder mein angepinnter Beitrag nicht gelesen >:(
@juemuc
Warum nicht?
Was muss ich am Titel
ZitatBitte unbedingt vor Eurem ersten Post hier lesen.
ändern das Anfänger den Beitrag auch sehen/lesen?
Bitte nicht böse sein aber ich frag das eigentlich recht häufig nach und bekomme nie eine Antwort - abgesehen davon das der Beitrag nicht gelesen (oder verstanden) wird.
Zu schwer geschrieben?
Zuviel an Infos?
Was kann ich verbessern?
@Puschel74
Ich habe nicht nur die Beträge für Anfänger gelesen sondern auch einige Stunden schon mit der Recherche. Ich hatte gehofft es richtig umgesetzt zu haben. Wie setze ich code-tags ein?
Ich bin kein Programmierer und versuche durch Anpassung von gefundenen code-schnipsel meine Wünsche umzusetzen. Ich ändere gerne die Darstellung, wenn es mir einer erklärt.
@viegener
Ich werde es später mal versuchen umzusetzen. Danke für den Tipp.
Viele Grüße
juemuc
Hallo viegener,
leider funktioniert es so nicht. Ich habe es wie folgt umgesetzt:
# letzter-currentSender als dummy definieren
define letzter_currentSender dummy
# currentSender aus Sonos-Box auslesen und unter letzter_currentSender ablegen
define letzter_currentSender_Notify notify Sonos_Bad:currentSender.* { my $s = ReadingsVal("Sonos_Bad", "currentSender", "ANTENNE%201");; fhem("set letzter_currentSender $s") }
#wenn die Box wieder Strom hat, soll der Inhalt aus letzter_currentSender in das Feld currentSender übergeben werden
define Sonos_Bad_Appeared_Notify notify Sonos_Bad:presence:.appeared { if (ReadingsVal("Sonos_Bad", "currentSender", "") eq "") { my $s = ReadingsVal("letzter_currentSender", "state", "ANTENNE%201");; fhem ("set Sonos_Bad StartFavourite $s NoStart") } }
Wenn ich $s durch ANTENNE%201 ersetze, funktioniert es problemlos. Hier wird "Antenne 1" sofort zur Verfügung gestellt.
@puschel74
Ich hoffe ich habe es nun besser gemacht :-)
Viele Grüße
juemuc
Ich kann nur vermuten, dass es vielleicht am fehlenden rul encoding liegt?
was steht denn in state vom dummy?
was kommt zurück, wenn Du folgendes eingibst:
{ return ReadingsVal("letzter_currentSender", "state", "ANTENNE%201") }
Zitat von: viegener am 18 Dezember 2016, 15:54:53
Ich kann nur vermuten, dass es vielleicht am fehlenden rul encoding liegt?
was steht denn in state vom dummy?
was kommt zurück, wenn Du folgendes eingibst:
{ return ReadingsVal("letzter_currentSender", "state", "ANTENNE%201") }
Ich glaube ich habe den Fehler gefunden. Der Inhalt von currentSender ist nicht identisch mit dem Inhalt der Favoriten. Damit kann es auch nicht funktionieren. Ich muss nun nach einem neuen Weg suchen um mein Ziel zu erreichen. Danke für Deine Unterstützung.
Viele Grüße
juemuc
Du kannst ja die Favoriten nach Deinem Geschmack benennen, damit sollte das doch gehen, oder?
Zitat von: viegener am 18 Dezember 2016, 16:40:49
Du kannst ja die Favoriten nach Deinem Geschmack benennen, damit sollte das doch gehen, oder?
Im Prinzip ja. Allerdings müsste ich dann eine Zuordnung zwischen den Sendern und den Favoriten hinterlegen (wegen der Leerzeichen). Einfacher wäre es wohl, wenn ich alle Einstellungen sichern könnte und diese dann wiederherstelle. Habe aber noch keine Idee, wie ich dies umsetzen kann.
Viele Grüße
juemuc
Oder die Leerzeichen einfach durch %20 ersetzen?