Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

bugster_de

Wenn donotnotify auf true steht, dann werden keine notifications erzeugt, ergo wird dein notify unten nie angesprungen. Wenn es auf false steht, dann wird für alles ein notify erzeugt ergo deine Logfile Einträge.

Schau mir in der Modul Beschreibung auf Seite 1 mal das Argument ampl an. Das macht genau das was du willst

Zrrronggg!

Habe Slim-Server und SB-Radio und SB Classic und setze das ganze schon seit Jahren ein, länger als ich Fhem benutze (ich habe zu SB1 Zeiten angefangen, die liegt noch irgendwo rum, ausgemustert wegen keine WPA Unterstützung).

Deswegen würde ich an sich das Modul gerne nutzen.

Mein Problem ist: Mir fällt zu verrecken nicht ein wozu. Alle Funktionen lassen sich übers Webfrontend des Servers prima steuern und auch die SB FB hab ich schneller zur Hand als mein Smartphone, mit ich dann Fhem sage würde es solle Slimserver sagen, er solle SBRadio sagen... hm...

Ausser: Automatisch laut Musik abspielen, wenn die Alarmanlage auslöst.


Oder anders: was sind eure Einsatzscenarien?
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

marvin78

Ich nutze keine echten Squeezeboxen. Ich habe ein paat Cubietrucks mit squeezelte. Einsatzzwecke bei mir sind:


  • Boxen einschalten bei playStatus playing
  • Boxen aussschalten, nachdem der playStatus 4 Minuten nicht mehr auf playing steht (watchdog)
  • automatische Raumsynchronisation bei bestimmten Ereignissen (man kann sich hier eine Art Party Mode vorstellen)
  • Die Synchronisation über das Webfronten des LMS ist doch etwas kompliziert. Mit FHEM und etwas Perl-Code habe ich mir das deutlich vereinfacht
  • Ich bin gerade dabei, mir meine eigene Fernbedienung für das ganze zu basteln, welche auch andere Mediendienste im Haus einbezieht (eine Oberfläche für alles)

bugster_de

#378
ZitatMir fällt zu verrecken nicht ein wozu
naja, wir zwingen ja keinen, das Ding einzusetzen :-)

Vorneweg: ich habe hier im Thread auch mal geschrieben, dass die FHEM Module nicht dazu dienen sollen, die komplette LMS Funktionalität nochmal in FHEM abzubilden. das macht überhaupt keinen Sinn, da der LMS aber auch dedizierte Apps wie iPENG das viel besser können und aus meiner Sicht sehr gute User Interfaces bieten (und um ehrlich zu sein: ich setzte mich nicht tagelang ans programmieren, nur wil jemand die 8,- € für iPENG nicht ausgeben will :) )
Sprich die FHEM Module sollen dazu dienen, bestimmte Szenen zu automatisieren. Ich kann ja das Licht auch am Schalter an der Wand ein- und ausschalten. Dazu brauche ich FHEM nicht. Ich brauche aber FHEM dann, wenn ich etwas Automatisieren möchte. Auch kann ich alle Rolläden im Haus von Hand hoch- und runterfahren. Aber wenn FHEM sich zeitgesteuert darum kümmert und auch den Sonnenschutz selbst übernimmt steigert das die Bequemlichkeit. Und sollte man auch die SB Module hier sehen: zur Nutzung um bestimmte Szenen mittels eines Klicks anzusteuern.

Mein Szenarien:
- ich habe im Badezimmer ein paar Deckenlautsprecher und einen Intertechno Schalter (Baumarkt-Funkwandsender). Damit ich morgens im Halbschlaf nicht auf dem Tablet rummachen muß, drücke ich nur auf den Taster. Der SB-Server wird dann eingeschaltet, der Verstärker ein, die Lautsärke auf 30% gesetzt und Bayern 3 eingeschaltet. Wenn ich im Bad fertig bin, schalte ich das ganze wieder aus.
- ich habe das Telefon Modul (FB_Callmonitor) auf FHEM installiert. Wenn nun ein Anruf eingeht, dann liest FHEM die Lautsärke der Player aus und setzt die Lautstärke auf 10%. Sobald das Telefonat zu Ende ist, wird die Lautstärke wieder auf den vorherigen Wert zurück gesetzt. Diese Funktion ist mittels eines Enable Schalters im Frontend ausschaltbar.
- Samstags ist ja Arbeitstag am Haus. Damit ich von der Fussball-Bundesliga nichts verpasse während ich im Haus rumlaufe, schalte ich alle Player im Haus in den Synchro-betrieb und stelle auf "SWR1 Stadion". Das geht mittels eines Webschalters in FHEM

Ausblick:
gerade das morgens Aufsteh-Szenario werde ich noch deutlich aufblasen: ich habe ja auch Module für die Fritzbox DECT Telefone geschrieben, so dass die Weck-Funktionalität mittels FHEM gesteuert werden kann. Im Prinzip soll das wie folgt ablaufen
- aus dem Google Kalender wird mein erster Termin ausgelesen. Auf dieser Basis dann minus 1,5h ist die Weckzeit
- zur Weckzeit geht der Wecker runter. Das kann entweder durch die DECT Telefone an der fritzbox passieren oder durch den Wecker im SB-Radio
- zur Weckzeit wird die Kafeemaschine eingeschaltet und schonmal Kaffee gemacht (der Kaffeevollautomat "braucht" daher noch einen Arduino :)
- der LMS Server wird eingechaltet (via RCC Modul aus dem Contrib Bereich), der Verstärker für das Badezimmer wird eingeschaltet und Bayern 3 abgespielt
- der Rolladen im Bad wird einen Schlitzbreit geöffnet
- Sollte nicht innerhalb einer bestimmten Wartezeit eine Reaktion erfolgen (z.B. Licht im Badezimmer wird manuell eingeschaltet und an FHEM gemeldet), dann kann man davon ausgehen, dass man verschlafen hat. Ergo wird der Weckmechanismus heftiger und macht z.B. den Rolladen im Schlafzimmer auf

Alternativ kann man natürlich auch abends die Weckzit am SB-Radio einstellen. Dieses wird dann nachts durch FHEM ausgelesen und auf Basis dieser Weckzeit dann der Mechanismus oben gestartet. SB-Radio hat den schicken Vorteil, dass man die Lautstärke ganz langsam hochfahren kann.
das hat jetzt direkt nicht zwingend mit den FHEM Modulen für SB zu tun, aber die sind da zentraler Bestandteil



Zrrronggg!

#379
Zitat
ZitatMir fällt zu verrecken nicht ein wozu
naja, wir zwingen ja keinen, das Ding einzusetzen :-)

Natürlich.  Ich glaube du verstehst mich falsch: ich WILL das Teil ja einsetzen, schon weil es GEHT.
Mir fehlt es nur an Anwendungsfällen.
Daher dachte ich, ich frage mal, was andere damit überhaupt machen.

Die Badezimmernummer ist jedenfalls schon mal eine Idee.

Die naheliegende Thematik "wecken" kommt bei mir nicht zum tragen, da ich mich nicht wecken lasse. (jedenfall sehr selten)
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

bugster_de

Wegen Wecken: den Luxus habe ich nicht. Ich mus morgens leider wegen Geld verdienen aufstehen :)

Zrrronggg!

Äh ja, arbeiten muss ich auch. Ich hab aber den Vorteil, dass es nicht ganz so wichtig ist, wann genau ich anfange.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Matscher

Ich verwende das Modul nur mit der Talk Funktion. Am Haupteingang habe ich einen 4 Kanal Funkschalter mit dem ich verschiedene Dinge abfragen kann, bevor ich das Haus verlasse. Zum einen ist es der Fensterstatus, ob alle wichtigen Fenster und Türen geschlossen sind und natürlich die Temperatur. Das alles funktioniert super, da die SqueezeBox unweit vom Eingang entfernt ist und ich sie gut mit 60% Volume höre. Was natürlich für die Ansage automatisch angepasst wird.
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

bugster_de

auch eine coole Anwendung !

Was mir dabei wieder einfällt: die Doku zum Modul ist nach wie vor dürftig. Ich komme einfach nicht dazu. Wer erstellt man einen ersten Beitrag im Wiki zur Squeezebox Unterstützung?

MarcoE

Hallo,
gibt es eine einfache Möglichkeit, den Zustand eines Players zu speichern und wiederherzustellen?
Ich suche sowas, um bei einem Anruf die Lautstärke heruntergefahren wird (wenn der Player läuft) und danach wieder auf die alten Einstellungen zu gehen.
Ebenso wäre es hilfreich um nach einem "talk" Aufruf wieder die vorher gespielte Musik laufen zu lassen, da danach der Player auf stop steht.
Hat jemand da schon etwas oder eine elegante Idee?

bugster_de

Hallo MarcoE,

lies einfach zwei Einträge weiter oben: da steht, dass ich genau sowas realisiert habe.


my $MM_lastvolume;
# ------------------------------------------------------------------------
#  Phone rings / call starts
# ------------------------------------------------------------------------
sub MM_CB_Phone_begin( $ ) {
    my ( $event ) = @_;
   
    if( ReadingsVal( "MM_MUTE_MUSIC", "state", "on" ) eq "on" ) {
$MM_lastvolume = ReadingsVal( "SB_PLAYER_000000000001", "volume", 30 );
   
# reset the music to its initial value
fhem( "set SB_PLAYER_000000000001 volume 10" );
fhem( "set SB_PLAYER_000000000004 mute" );
    }
}

# ------------------------------------------------------------------------
#  Phone stops ringing / call ended
# ------------------------------------------------------------------------
sub MM_CB_Phone_end( $ ) {
    my ( $event ) = @_;

    if( ReadingsVal( "MM_MUTE_MUSIC", "state", "on" ) eq "on" ) {
# reset the music to its initial value
fhem( "set SB_PLAYER_000000000001 volume $MM_lastvolume" );
fhem( "set SB_PLAYER_000000000004 mute" );
    }
}


Die Funktion dann jeweils durch einen notify auf FB_CALLMONITOR aufrufen.

Zum Thema talk:
auch das wurde in diesem Thread schon mehrfach hoch und runter diskutiert. Bitte also erstmal lesen, und dann noch offene Fragen stellen. Im Code des Moduls ist das zwar drin, was von einem anderen Entwickler implementiert wurde. Status ist:
- das talk geht nicht wieder zurück auf den letzten Status
- der andere Entwickler blickt seinen eigenen Code nicht mehr
- der andere Entwickler ist seit Wochen hier nicht mehr aktiv

Sprich, wenn ich mal irgendwann Zeit haeb,. dann fixe ich das. Ich will die Hoffnung hier aber nicht zu hoch hängen, da die Komplexität des Themas enorm hoch ist.

MarcoE

Hallo,
danke für die Antwort- den ersten Teil hatte ich tatsächlich übersehen. Hatte aber auch gehofft, daß es so eine Art "store/restore" Methode gibt, mit der man den kompletten Zustand sichern und wiederherstellen kann ohne jedes einzelne Attribut massieren zu müssen (z.B. gibt es zwar einen state aber eben nur für get- für set muß ich dann on oder off rufen).
Das mit dem talk hatte ich schon gelesen, für meinen Zweck brauche ich auch keinen echten Aufsetzpunkt mitten im Lied. Mir würde reichen, wenn ich zuvor herausbekommen könnte welcher Stream läuft gerade oder welches Lied oder welche Playlist läuft aktuell. Aber ok- that's life...
Vielen Dank!
Marco

MarcoE

Hallo,
mittels des ampl Arguments schalte ich einen dummy. Nun habe ich zwei Notifies auf diesem Dummy um den Baßverstärker und den Rest kurz hintereinanderzuschalten. Schalte ich von der Konsole den Dummy ein und aus passt alles. Aber wenn der Dummy durch die Squeezeboxen ein- oder ausgeschaltet wird reagiert der notify überhaupt nicht (aber die Änderung des dummy sehe ich im webfrontend)

Hat da jemand eine Idee, was da schief läuft (oder ich falsch mache)?

Danke und Gruß,
Marco

Puschel74

Hallo,

du postest deine Frage im falschen Bereich.
Du postet deine Frage ohne den Code den du verwendest - die Glaskugeln sind leider aus.
Du lässt uns nicht am Inhalt deines Logfiels teil haben.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

MarcoE

#389
Hallo,
ich hatte gedacht, das wäre vielleicht schon etwas bekanntes, daher ohne Coding usw. Aber hier kommt es:
define Squeezeserver SB_SERVER 192.168.178.28
attr Squeezeserver alivetimer 120
attr Squeezeserver doalivecheck true
attr Squeezeserver maxcmdstack 200
attr Squeezeserver maxfavorites 30

define SqueezeBox_Kueche SB_PLAYER 00:04:20:2c:62:ad
attr SqueezeBox_Kueche amplifier play
attr SqueezeBox_Kueche coverartheight 50
attr SqueezeBox_Kueche coverartwidth 50
attr SqueezeBox_Kueche donotnotify true
attr SqueezeBox_Kueche fadeinsecs 10
attr SqueezeBox_Kueche idismac true
attr SqueezeBox_Kueche room Wohnung
attr SqueezeBox_Kueche serverautoon true
attr SqueezeBox_Kueche ttslanguage de
attr SqueezeBox_Kueche ttslink http://translate.google.com/translate_tts?ie=UTF-8
attr SqueezeBox_Kueche volumeLimit 100
attr SqueezeBox_Kueche volumeStep 10

define FileLog_SqueezeBox_Kueche FileLog /usr/local/FHEM/var/log/SqueezeBox_Kueche-%Y.log SqueezeBox_Kueche
attr FileLog_SqueezeBox_Kueche logtype text
attr FileLog_SqueezeBox_Kueche room SB_PLAYER

define SqueezeBox_Wohnzimmer SB_PLAYER 00:04:20:23:66:88 ampl:amplifier_Dummy
attr SqueezeBox_Wohnzimmer amplifier on
attr SqueezeBox_Wohnzimmer coverartheight 50
attr SqueezeBox_Wohnzimmer coverartwidth 50
attr SqueezeBox_Wohnzimmer donotnotify true
attr SqueezeBox_Wohnzimmer fadeinsecs 10
attr SqueezeBox_Wohnzimmer idismac true
attr SqueezeBox_Wohnzimmer room Wohnung
attr SqueezeBox_Wohnzimmer serverautoon true
attr SqueezeBox_Wohnzimmer ttslanguage de
attr SqueezeBox_Wohnzimmer ttslink http://translate.google.com/translate_tts?ie=UTF-8
attr SqueezeBox_Wohnzimmer volumeLimit 100
attr SqueezeBox_Wohnzimmer volumeStep 10

define FileLog_SqueezeBox_Wohnzimmer FileLog /usr/local/FHEM/var/log/SqueezeBox_Wohnzimmer-%Y.log SqueezeBox_Wohnzimmer
attr FileLog_SqueezeBox_Wohnzimmer logtype text
attr FileLog_SqueezeBox_Wohnzimmer room SB_PLAYER

define amplifier_Dummy dummy
attr amplifier_Dummy room Wohnung
define Lautsprecher FS20 6634 10
attr Lautsprecher IODev CUL
attr Lautsprecher model fs20st
attr Lautsprecher room Wohnung

define FileLog_Lautsprecher  FileLog /usr/local/FHEM/var/log/Lautsprecher-%Y.log Lautsprecher
attr FileLog_Lautsprecher logtype text
attr FileLog_Lautsprecher room FS20

define BassLautsprecher FS20 6634 20
attr BassLautsprecher IODev CUL
attr BassLautsprecher model fs20st
attr BassLautsprecher room Wohnung

define FileLog_BassLautsprecher  FileLog /usr/local/FHEM/var/log/BassLautsprecher-%Y.log BassLautsprecher
attr FileLog_BassLautsprecher logtype text
attr FileLog_BassLautsprecher room FS20

define LautsprecherOn_ntfy notify amplifier_Dummy:on set BassLautsprecher on;; sleep 2;; set Lautsprecher on
define LautsprecherOff_ntfy notify amplifier_Dummy:off set Lautsprecher off;; sleep 2;; set BassLautsprecher off



Im Log erscheint nicht viel.
Hier das Log der SqueezeBox_Wohnzimmer:

2014-09-26_07:55:12 SqueezeBox_Wohnzimmer off

Bei Loglevel 5 für die SqueezeBox kommt dann im Logfile folgendes (beim Einschalten):

2014.09.26 07:59:25 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:25 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:25 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:25 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:25 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:mode ARGS:stop...
2014.09.26 07:59:25 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:25 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:power ARGS:1 0 seq_no:45...
2014.09.26 07:59:43 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:prefset ARGS:server power 1...
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:menustatus ARGS:ARRAY(0x3b3d740) add 00:04:20:23:66:88...
2014.09.26 07:59:43 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:displaynotify ARGS:showbriefly HASH(0x3b61468)...
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:pause ARGS:0...
2014.09.26 07:59:44 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:menustatus ARGS:ARRAY(0x3737d80) add 00:04:20:23:66:88...
2014.09.26 07:59:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 07:59:47 5: SB_PLAYER_Set: called with ?
2014.09.26 07:59:48 5: SB_PLAYER_Set: called with ?


hier noch das Ausschalten:

2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:power ARGS:0 0 seq_no:46...
2014.09.26 08:01:44 4: SB_PLAYER_Amplifier(SqueezeBox_Wohnzimmer): called
2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:prefset ARGS:server power 0...
2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:menustatus ARGS:ARRAY(0x38d8d28) add 00:04:20:23:66:88...
2014.09.26 08:01:44 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving
2014.09.26 08:02:14 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer CMD:prefset ARGS:server snLastSyncUp 1411711334...
2014.09.26 08:02:14 5: SB_PLAYER_Parse: SqueezeBox_Wohnzimmer: leaving


Hilft das irgendwie? Ich kann es auch gerne woanders posten- ich dachte nur, es hinge vielleicht _nur_ mit dem Squeezebox Modul zusammen.
Danke und Gruß,
Marco