Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

sebbi2k5

Hallo Reiner,

ich danke die vielmals! Das hat funktioniert!

Danke Danke Danke :-)

Top Community!

Gruß
Sebastian

DeeSPe

Zitat von: Reinerlein am 17 April 2017, 21:45:54
Hi Sebastian,

ich fürchte das wird unschön, da du die Leerzeichen wahrscheinlich doppelt maskieren musst:
1. Damit sie bei Fhem ankommen
2. Damit sie als ein Parameter im Modul ankommen

Versuch mal

set+Sonos_Bad+StartRadio+1LIVE%2520diggi%2520-%2520Multimedia%2520-%25201LIVE
Das ist noch einigermaßen lesbar :)

Grüße
Reiner

Noch einfacher wäre die Sender in der Sonos App umzubenennen (ohne Leerzeichen).
Dann sind sie erstens kürzer und man ist die lästigen Leerzeichen ein für alle Male los.

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

Reinerlein

Hi Dan,

das geht aber doch nur, wenn man sie als Favorit hinzufügt...
Das ist manchmal aber nicht der gewünschte Weg, bzw. wird irgendwann unübersichtlich in den Favoriten...

Ich verwende meistens den Weg über den regulären Ausdruck, dort kann man die Leerzeichen einfach mit einem Punkt beschreiben:

set Sonos_Bad StartRadio /1LIVE.diggi.-.Multimedia.-.1LIVE/

das sieht dann kodiert so aus:

set+Sonos_Bad+StartRadio+%2F1LIVE.diggi.-.Multimedia.-.1LIVE%2F

und ist damit meiner Meinung nach besser lesbar, bzw. man kann es im Kopf kodieren...

Grüße
Reiner

Phiolin

Habe gerade einen Fehler bei der Speech Ausgabe bekommen in Verbindung mit dem Cache der Dateien auf Hash-Basis:
2017.04.18 23:01:09 3: msg Sonos_Schlafzimmer: ID=1492549269.20823.1 TYPE=au
dio ROUTE=Sonos_Schlafzimmer STATUS=OK PRIORITY=0 TITLE='Announcement' MSG='
Teilweise bedeckt. Höchsttemperatur 9 °C. Wind aus NO mit 10 bis 15 km/h.'
2017.04.18 23:01:09 2: SONOS1: Beim Ermitteln des Hash-Wertes ist ein Fehler
aufgetreten: Wide character in subroutine entry at ./FHEM/00_SONOS.pm line
4034.


Jemand eine Idee, wo hier das Problem ist? Andere Texte scheinen problemlos zu funktionieren.
Dieser hier kommt per ReadingsVal in einem Notify aus dem Wunderground Modul (forecast Text).
Scheint mir aber auch eher ein perl Problem zu sein?

Reinerlein

Hi Phiolin,

an der Stelle wird der Hash gebildet:

$digest = '_'.sha1_hex(lc($text));

Der Text ist der in MSG=""?

Hast du mal versucht, diesen Text direkt per Speak auszugeben? Also nicht durch das msg-Modul...
Ich denke, da gibt es mal wieder irgendein UTF8 Problem. Leider ist Perl in dieser Hinsicht relativ unkooperativ, und muss immer wieder getreten werden :)

Ich möchte nicht ausschließen, dass ich da was einbauen muss, nur weiß ich noch nicht so richtig was. Ich könnte vor dem Hash bilden erstmal alle Nicht-ASCII-Zeichen aus dem Text entfernen, bin aber nicht sicher, ob das der Grund ist...

Grüße
Reinerlein

Phiolin

#2840
Auch direkt geht es leider nicht:

set Sonos_Schlafzimmer speak 20 de
Meistens klar. Vereinzelt Frost möglich. Höchsttemperatur 9 °C. Wind aus NO mit 10 bis 15 km/h.


2017.04.19 06:42:22 2: SONOS4: Beim Ermitteln des Hash-Wertes
ist ein Fehler aufgetreten: Wide character in subroutine entry
at ./FHEM/00_SONOS.pm line 4034.


Werde mal schauen, ob ich das mit meinen bescheidenen Perl Kenntnissen weiter eingrenzen kann.

Es liegt schon mal am "ö" und am Grad-Zeichen. Also wirst du mit UTF-8 wohl recht haben. Ohne diese Zeichen geht die Ausgabe.

Phiolin

#2841
Für mich funktioniert diese Variante hier:

$digest = '_'.sha1_hex(lc(encode("iso-8859-1", $text, 0)));

Zwar wird in Zeile 4027 auch schon via

$text = SONOS_Utf8ToLatin1($text);

nach Latin1 decodiert, aber offenbar bleiben da wohl noch irgendwelche Leichen übrig. Da das erneute encode nach iso-8859-1 dann nur für die Hash-Generierung genommen wird, sollte es wohl keine weiteren Folgeschäden geben? Bei meinen Tests funktioniert die Sprachausgabe und der Hash-Cache jetzt auf jeden Fall auch für diesen Text mit Sonderzeichen.
Alternativ könnte man vielleicht auch direkt in SONOS_Utf8ToLatin1 einen entsprechenden Fix anbringen.

Masterfunk

Zitat von: Reinerlein am 16 April 2017, 00:34:16
Hi Detlef,

OK, ich habe jetzt mal den Anfang bis song als Erkennung eingebaut, also

^x-sonos-http:song
als regulären Ausdruck.

Passt das bei den meisten (am Besten bei allen :) ) Titeln?

Grüße
Reiner

Baust Du das noch ein?

Gruß Detlef

Reinerlein

Hi,

@Phiolin: Ich habe deinen String bei mir getestet, und er funktioniert normal. Auch mit den Umlauten. Das bedeutet, dass irgendwie das Message-Modul etwas ausgibt, was mein Modul nicht mag. Und auf dem Weg über das Forum zu mir in die Kommandozeile wird es in etwas Funktionierendes umgewandelt :(
Was du herausgefunden hast deutet darauf hin, dass aus dem msg-Modul eben ISO8859-1 rasukommt.

Mit welchem Editor editierst du deine Texte? Könnte es von dir bereits als ISO8859-1 reingeschrieben worden sein? Wobei ich nicht weiß, wie man das mit einem Browser hinbekommen kann... komisch...

@Masterfunk: Ich habe es schon drin, konnte es nur noch nicht einchecken, da ich noch etwas im Test habe, was ich noch nicht veröffentlichen kann. Da gab es Gestern noch unschärfen...

Grüße
Reiner

Masterfunk

Zitat von: Reinerlein am 19 April 2017, 10:34:26
@Masterfunk: Ich habe es schon drin, konnte es nur noch nicht einchecken, da ich noch etwas im Test habe, was ich noch nicht veröffentlichen kann. Da gab es Gestern noch unschärfen...

Eilt ja auch nicht.
Wollte nur das es nicht in Vergessenheit gerät. ;-)

Gruß Detlef


Phiolin

#2845
Zitat von: Reinerlein am 19 April 2017, 10:34:26
Hi,

@Phiolin: Ich habe deinen String bei mir getestet, und er funktioniert normal. Auch mit den Umlauten. Das bedeutet, dass irgendwie das Message-Modul etwas ausgibt, was mein Modul nicht mag. Und auf dem Weg über das Forum zu mir in die Kommandozeile wird es in etwas Funktionierendes umgewandelt :(
Was du herausgefunden hast deutet darauf hin, dass aus dem msg-Modul eben ISO8859-1 rasukommt.

Mit welchem Editor editierst du deine Texte? Könnte es von dir bereits als ISO8859-1 reingeschrieben worden sein? Wobei ich nicht weiß, wie man das mit einem Browser hinbekommen kann... komisch...

Bei mir ist es dagegen so, dass ich, wenn ich genau den String aus dem Forum kopiere, auch den Fehler bekomme (Safari/MacOS).
set Sonos_Schlafzimmer speak 20 de Meistens klar. Vereinzelt Frost möglich. Höchsttemperatur 9 °C. Wind aus NO mit 10 bis 15 km/h.

Der Fehler liegt wohl auch nicht im MSG Modul, da ich die Meldung auch bekommen, wenn ich über

set Sonos_Schlafzimmer speak 20 de [wu.Gladbeck:fc0_text]

den Text direkt aus dem Wunderground Forecast Reading hole.
Ein kurzer Blick ins Wunderground Modul lässt mich zumindest vermuten, dass dort die über JSON ausgelesenen Daten alle UTF-8 codiert sein sollten. Scheint wohl ein eher komplexeres Problem zu sein. ;)
Gebe ich manuell einen String per Tastatur mit entsprechenden Zeichen ein, funktioniert übrigens alles normal...

Kurze Info: Habe das "Problem" im Wunderground Modul wohl identifiziert, siehe hier.

Spartacus

Hallo Reinerlein,
ich habe gerade festgestellt, dass eine meiner Funktionen nicht mehr funktioniert. Du hattest diese Funktion mir damals gebastelt, da ich checken wollte, ob zwei Player in der gleichen Gruppe sind. Das klappt aber nicht mehr. Hier der Fehler:
Undefined subroutine &main::SONOS_getDeviceDefHash called at ./FHEM/99_mySonosUtils.pm line 16
Offenbar gibt es diese Routine nicht mehr.

Die Funktion sameGroup:
# prüfe gleiche Gruppe
#
sub sameGroup($$) {
my ($first, $second) = @_;
my $groups = CommandGet(undef, SONOS_getDeviceDefHash(undef)->{NAME}.' Groups');

while ($groups =~ m/\[(.*?)\]/ig) {
my @member = split(/, /, $1);

return 1 if (SONOS_isInList($first, @member) && SONOS_isInList($second, @member));
}
return 0;
}


Was muss ich da jetzt ändern, oder gibt es dazu einen Workaround?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Reinerlein

Hi Christian,

jaa, da habe ich eine interne Umbenennung durchgeführt, um die Prozeduren harmonischer zu benennen.
Die heißt jetzt "SONOS_getSonosPlayerByName"...

Sorry.

Grüße
Reiner

Spartacus

Hi Reinerlein,
Besten Dank dafür, es läuft wieder...
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Fixel2012

Hallo zusammen,

ich wollte nur mal kurz fragen, wie lange es durchschnittlich dauert bis der Player in Fhem wieder als "appeared" gekennzeichnet wird, nach dem er neugestartet bzw wieder eingeschaltet wurde.

Ist es Ratsam, seine Player auszuschalten, bzw werden alle Player immer Ordnungsgemäß wieder eingebunden?

Danke, Gruß
Fixel
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify