Wohnzimmer Uhr (Gong jede Stunde) über FHEM simulieren

Begonnen von Toto1973, 11 März 2015, 12:31:05

Vorheriges Thema - Nächstes Thema

TomLee

Zitatdefmod doif_du_Wanduhr DOIF ([du_Wanduhr] eq "Glockenspiel" and [?10:00:00-20:00:01] and [+:15] and [TV] eq "off") )({WandUhr_Glockenspiel(10)} DOELSEIF ([du_Wanduhr] eq "BigBen" and [?10:00:00-20:00:01] and [+:15] and [TV] eq "off") ({WandUhr_BigBen(10)})

TomLee

#106
Hallo nochmal,

meiner kleinen Nichte würde ich so auch gerne die Uhr etwas näher bringen, allerdings auf nem Echo-Device (siehe hier).
Hab die Routine soweit angepasst. Klappt auch alles, die $sound-mp3 zur vollen Stunde wird auch gespielt, die darauf folgenden Wiederholungen der ..._Strikes.mp3 Datei ($gong) jedoch nicht. (gerade die sollen ja jede Stunde von der Kleinen gezählt werden). Die wird gar nicht abgespielt, nicht einmal und auch keine Wiederholung.
Ich seh eigentlich keinen Fehler, beim Versuch den Code zu verstehen (kann kein Perl) stellt sich mir jetzt auch die Frage woher das Script den weiß wann die Datei zu Ende gespielt ist und bspw. die Wiederholung folgen soll.
Hat das vlt. was damit zu tun das die Dateien aus der Musikbibliothek gestreamt werden und es da zu zeitlichen Problemen kommt.

Bin da für jeden Ratschlag dankbar.


sub WandUhr_GlockenspielE($) {
  my ($volume) = @_;
  my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
  my $Stunde = "";
  my $i = 1;
  my $gong = '2e072704-aa9b-4460-a9c8-12345678';
  my $sound = '';
  if (defined ($volume)) {
  if($Sommerzeit == 1) { $Stunden + 1 };
  if($Stunden <= 12) { $Stunde = $Stunden };
  if($Stunden >= 13) { $Stunde = $Stunden - 12 };
  if($Stunden == 0) { $Stunde = 12 };
  if ($Minuten == 00) {
  $sound = 'd35dfe52-f99d-49f2-af39-87654321';
  while ($Stunde >= $i) {
  $sound = $sound.' '.$gong;
  $i++};
  fhem("set EG_Echo_Wohnzimmer volume $volume;set EG_Echo_Wohnzimmer track $sound");
  };
  if ($Minuten == 15) {fhem("set EG_Echo_Wohnzimmer volume $volume; set EG_Echo_Wohnzimmer track 4417f908-5712-445e-b009-123")};
  if ($Minuten == 30) {fhem("set EG_Echo_Wohnzimmer volume $volume; set EG_Echo_Wohnzimmer track 96cbec63-3cf9-43bc-8403-1234")};
  if ($Minuten == 45) {fhem("set EG_Echo_Wohnzimmer volume $volume;set EG_Echo_Wohnzimmer track 10d6bcb1-0c06-4a4d-bd4e-12345")};
  }
  }
 

Toto1973

Bei Dir im Code fehlt in der Zeile, die den Stundengong abspielt, etwas.
Die Wiederholung wird vom mplayer mit dem Befehl -loop gesteuert.
In meinem Code wird für Loop als die Stundenanzahl genommen.

if ($Minuten == 00) {fhem "set SRadio VOLUME $volume";system ("mplayer /opt/fhem/Sound/BigBen.mp3 /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

TomLee

An deiner mplayer-Variante bin ich dran aufgrund dieses Threads die Tage. Klappt aber noch nicht, Bluetooth-Verbindung besteht jedoch noch kein  Sound. Ich selbst nutze die Sonos-Variante. Alles super.
Nach meinem Verständnis verlangt die  "Echo-Variante" keine anderen Befehle wie das Sonos-Beispiel. Bin der Meinung das 1:1 umgesetzt zu haben.(Die Namen der mp3 ersetzt und fertig). Darum meine Frage warums nicht geht.

Toto1973

Auf Seite 1 gibt es ein Update für Alle, die Ihren Raspberry auf Rasbian Strech upgedatet haben. Dort gibt es nun nämlich Unterschiede zum mplayer!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Ingo298

#110
Ich habe mein System auf Buster umgestellt, dementsprecht auch wie auf Seite beschrieben den Gong angepasst.

sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
if(defined ($volume))
{
if($Stunden <= 12) { $Stunde = $Stunden };
if($Stunden >= 13) { $Stunde = $Stunden - 12 };
if($Stunden == 0) { $Stunde = 12 };

if ($volume == "TEST") {system ("mpv /opt/fhem/Sound/BigBen_15.mp3 --volume=50");system ("mpv /opt/fhem/Sound/BigBenStrikes.mp3 --volume=50 --loop=$Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 00) {system ("mpv /opt/fhem/Sound/BigBen.mp3 --volume=$volume");system ("mpv /opt/fhem/Sound/BigBenStrikes.mp3 --volume=$volume --loop=$Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 15) {system ("mpv /opt/fhem/Sound/BigBen_15.mp3 --volume=$volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 30) {system ("mpv /opt/fhem/Sound/BigBen_30.mp3 --volume=$volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 45) {system ("mpv /opt/fhem/Sound/BigBen_45.mp3 --volume=$volume < /dev/null >&0 2>&0 &")};
} }


Playing: /opt/fhem/Sound/BigBen_15.mp3
(+) Audio --aid=1 (mp3 2ch 44100Hz)
File tags:
Artist: Troy Rumrich
Album: www.Traummusik.com
Album_Artist: www.Traummusik.com
Comment: ??Nur für den privaten Gebrauch! Alle Rechte beim Autoren!
Composer: London
Date: 2014
Genre: Andere
Title: Big Ben

AO: [alsa] 44100Hz stereo 2ch s16
A: 00:00:00 / 00:00:04 (0%)
A: 00:00:00 / 00:00:04 (1%)
A: 00:00:00 / 00:00:04 (3%)
A: 00:00:00 / 00:00:04 (4%)
A: 00:00:00 / 00:00:04 (5%)



Leider wird der Log jetzt immer gefüllt, Fhem blockiert und der Stundengong ist immer einer zuviel (statt z.B 14:00 Uhr = 2 werden 3 Gong) abgespielt.

Kennt jemand das Problem, gibt es evtl. dafür eine Lösung ??

Update:

Ein Teil konnte ich lösen, mit
{system ("mpv /opt/fhem/Sound/BigBen.mp3 --volume=$volume --\{ /opt/fhem/Sound/BigBenStrikes.mp3 --loop=$Stunde --\} < /dev/null >&0 2>&0 &")};


wird Fhem nicht mehr blockiert und der Log bleibt frei von einträgen. Problem bleibt die Anzahl der Gong's
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

Toto1973

Da müsste man wohl noch eine Zeitanpassung (Sommer oder Winterzeit) einbauen.
Aber eigentlich funktioniert der Code ja mit der Uhr vom Raspberry oder PC. Daher solltest Du mal die Uhrzeit Deines Systems überprüfen.
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Ingo298

#112
Wie es aussieht kommt es vom mpv, dieser spielt bei --loop=2 den Titel 3 mal ab.
Die Uhrzeit passt habe es  mit date geprüft Ergebnis

pi@raspberrypi:~ $ date
Fr 24. Jan 14:39:34 CET 2020


Edit

if($Stunden <= 12) { $Stunde = $Stunden - 1};
if($Stunden >= 13) { $Stunde = $Stunden - 13 };
if($Stunden == 0) { $Stunde = 11 };


so funktioniert es
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT