So, ich habe es geschafft :-)
UPDATE 30.01.2016: Den Code für den Gong habe ich nun komplett in die 99_MyUtils.pm verschoben!
Der MPLAYER blockiert beim abspielen des Gongs FHEM NICHT mehr!
Zuerst benötigt Ihr die mp3 Dateien. Diese kopiert Ihr bitte ins Verzeichnis /opt/fhem/Sound/.
Der folgende Code kommt in die 99_MyUtils.pm
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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 ($volume == "TEST") {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 80 /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 00) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
} }
ERKLÄRUNG:
Die IF-Anweisung konvertiert Zeitangabe nach 13 Uhr zu 12 Stunden. Also sprich, wenn es 13 Uhr ist, dann ist es für die SUB 1 Uhr. Ist es 17 Uhr, dann ist es für die SUB 5 Uhr.
Bei den mplayer Zeilen wird je nach Anzahl der Minuten der entsprechende Gong abgespielt!
Natürlich könnt Ihr die Sounds auch durch andere ersetzen. Dann müsst Ihr den Dateiname und gegebenenfalls das Verzeichnis hinter mplayer anpassen.
Zum testen könnt Ihr in FHEM einfach {WandUhr("TEST")} eingeben.
Um den Gong im Normalbetrieb zu starten, verwendet bitte den Befehl {WandUhr(LAUTSTÄRKE)}, wobei LAUTSTÄRKE einem Wert zwischen 0 und 100 entspricht.
Damit Ihr nun die Uhr auch abschalten könnt, benötigt Ihr noch diesen Dummy:
define Wanduhr_dummy dummy
attr Wanduhr_dummy setList on off
Setzt Ihr diesen nun auf on (set Wanduhr_dummy on), ertönt die Uhr im Stundentakt (bzw im 15 Minutentakt).
Um das Ganze nun als Uhrsimulation abspielen zu lassen, benötigt man noch eine DOIF-Anweisung.
define Wanduhr DOIF ([Wanduhr_dummy] eq "on" and [?10:00:00-21:59:59] and [+:15]) ({WandUhr(83)})
DOELSEIF ([Wanduhr_dummy] eq "on" and [?22:00:00-09:59:59] and [+:15]) ({WandUhr(75)})
attr Wanduhr do always
Wer den 15 Minuten Gong nicht möchte, der sollte den folgenden Code verwenden:
define Wanduhr DOIF ([Wanduhr_dummy] eq "on" and [?10:00:00-21:59:59] and [:00]) ({WandUhr(83)})
DOELSEIF ([Wanduhr_dummy] eq "on" and [?22:00:00-09:59:59] and [:00]) ({WandUhr(75)})
attr Wanduhr do always
Euch viel Spaß mit der Uhr :-)
UPDATE 03.10.2018
Da sich in Rasbian Strech der mplayer zu mpv geändert hat, habe ich den Code der WandUhr 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.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 &")};
} }
Zum einbinden in FHEM einfach die komplette Sub-Routine in der 99_MyUtils.pm austauschen. Der Rest bleibt wie in der Anleitung!
So auf die Schnelle würde ich sagen ein at und $hour nutzen.
Du brauchst halt den Gong als mp3 und ein Device, welches dieses ausgeben kann.
Die Idee finde ich cool.
Diese Art der Umsetzung hätte den Vorteil, das man für die Nacht quasi pausieren kann...
vb
Als Device für die Ausgabe würde natürlich der Raspberry Pi reichen. Daran habe ich einen Bluetooth Sender, der 2 Bluetooth Geräte gleichzeitig mit der Audiowiedergabe versorgen kann.
Über eine ELRO Funksteckdose würde ich dann einen Bluetooth-Lautsprecher einschalten um dort die Soundausgabe zu realisieren.
Ich muss mich da mal intensiv mit beschäftigen und herumbasteln. Sollte mir eine Umsetzung dieser Idee gelingen, werde ich diese natürlich gerne auch für andere zur Verfügung stellen.
Ich habe einen FS20 SIG2 in Verwendung. Der steckt in einer Steckdose und ist mit einer Speicherkarte ausgestattet. Auf der sind die MP3s, die per set-Befehl aus fhem heraus abgespielt werden können.
Als Muster war auf der Speicherkarte schon u.a. eine Standuhr, die 9 x schlägt. Die läutet nun morgens und abends so aus Gag bei mir.
Mit dem SIG2 kann man bis zu 100 verschiedene Sounds abspielen und ich gebe über das Teil akustische Meldungen von fhem aus aus.
Elektrolurch
Das ist auch eine Möglichkeit!
Ich möchte das Ganze aber Softwareseitig umsetzen.
Mein einziges Problem ist es, eine Sub-Routine zu schreiben, die die aktuelle Stunde ausliest und dann eine MP3 Datei (mit Gong) über mplayer so oft abspielt, wie die aktuelle Stunde ist.
Wenn ich die habe, ist der Rest mit DOIF kein Problem mehr.
Ich würde den einfachen Weg gehen und 12 mp3s erstellen und die dann per at oder DOIF nutzen
Das wäre auch eine Möglichkeit!
Wenn ich in FHEM {$hour} eingebe, bekomme ich die Stundenzahl angezeigt. Wie bekomme ich diese denn in ein dummy?
So, wenn man sich auskennt, ist es ein Kinderspiel, so etwas zu programmieren.
Ich habe rumprobiert und gelesen usw.
Und was soll ich sagen?
Es funktioniert *freu*
Ich muss nun das ganze noch zusammen bauen. Danach gibt es den Code im ersten Beitrag :-)
So eines muss man noch testen oder wenn es wer weis, noch besser:
würde das so jede Stunde zwischen 10 und 22 Uhr auslösen?
define Wanduhr DOIF ([09:00-21:00]) ({WandUhr()})
attr Wanduhr do always
attr Wanduhr wait 3600
So, es hat sich da eine richtig geniale Lösung gefunden, wie man den Gong stündlich ansprechen kann.
define Wanduhr DOIF ([?10:00-22:00) and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
Ich habe das erste Post angepasst!
So, nun hat die Uhr auch einen Viertelstunden Gong.
Wer möchte, kann den Gong einfach mit Hilfe der DOIF erweitern. Alles dazu im ersten Post!
Da hat sich ein Klammerfehler eingeschlichen:
define Wanduhr DOIF ([?10:00-22:00) and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
So müsste es heißen:
define Wanduhr DOIF ([?10:00-22:00] and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
Nach 22:00 also ] statt )
Dann noch:
BigBenStrikes.mp3 im Archiv nennt sich bigbenstrikes.mp3, muss im Code angepasst werden (oder die Datei umbenannt), da sie sonst nicht gefunden wird ;)
Für Linuxneulinge:
Umbenennen geht so:
mv bigbenstrikes.mp3 BigBenStrikes.mp3
Vielen Dank!
Da ist mir wohl beim packen der Dateien ein Fehler unterlaufen!
Und evtl. ist es schlau, den mplayer mit dem Parameter
−really−quiet
aufzurufen.
Sonst werden die Logfileeinträge doch recht lang...
Dann könnte man noch mit & den mplayer in den Hintergrund schicken, so dass fhem wärend der Soundausgabe nicht blockiert und ungehindert weiter läuft (jedenfalls unter Linux und OSX. Unter Windows könnte es in die Hose gehen, müsste wer testen)
Zusammen sähe es dann beispielsweise so aus:
system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 120 −really−quiet &")
* ist immer noch ungünstig, siehe PPS weiter unten ;)
Oder so:
([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
DOELSEIF ([{sprintf("%02d:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90 −really−quiet &")})
DOELSEIF ([{sprintf("%02d:30",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90 −really−quiet &")})
DOELSEIF ([{sprintf("%02d:45",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90 −really−quiet &")})
PS:
Ich hab es noch nicht ausprobiert!
PPS:
Jetzt habe ich es selber mal probiert.
Folgende Verbesserung wäre noch sinnvoll:
sub WandUhr()
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
if($Stunden >= 13) { $Stunde = $Stunden - 12 };
if($Stunden == 0) { $Stunde = $Stunden + 12 };
if($Stunden <= 12) { $Stunde = $Stunden };
system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 120 /opt/fhem/Sound/BigBenStrikes.mp3 -volume 120 -loop $Stunde −really−quiet &");
}
Habe also die beiden mplayer Aufrufe zu einem einzigen gemacht.
Ansonsten würde das zuerst gestartete BigBen dafür sorgen, dass das BigBenStrikes nicht abgespielt wird.
Ob man das 1. -volume 120 braucht, weiß ich nicht. Zumindest schadet es augenscheinlich nicht. (Ich könnte mir vorstellen, dass es sonst Ärger mit einem Text2Speech geben könnte, bzw. dessen Lautstärke)
Das -loop wiederholt nur den 2ten Sound (wie gewünscht)
Das -really-quiet unterbindet alle Logfileeinträge (wirkt also auf die ganze "Playlist")
8) Hallo
erhalte error reading does not exist: [Wanduhr_dummy:state]
Uhr kommt nicht zur erwarteten Uhrzeit ...
nur über manuelles {WandUhr()}
MFG Harway
Du musst den Dummy anlegen:
define Wanduhr_dummy dummy
Dann kannst du mit set Wanduhr_dummy on
die Uhr sozusagen einschalten.
Der Vorteil dieser Variante ist, dass du den Gong so zeitgesteuert an/ausschalten kannst. Kann bei der Nachtruhe von Vorteil sein.
Entweder mit at, oder mit einem DOIF. Oder natürlich händisch...
Ein DOIF Besipiel sähe so aus:
define Wanduhr_Zeitschalter DOIF ([05:55]) (set Wanduhr_dummy on) DOELSEIF ([23:05]) (set Wanduhr_dummy off)
:) ok hab ich gemacht erste Ansage kam ..
wenn das hier keine Bedeutung hat .. ist alles ok
Meldung:
Bogus entry Wanduhr_dummy without TYPE
mfg
Hallo!
Da ich ja in Sachen Perl noch Anfänger bin, war ich froh, dass ich das mit der Uhr überhaupt hinbekommen habe.
Deshalb vielen Dank für die Verbesserungen, welche ich gleich mal bei mir übernommen habe.
Wenn ich darf, übernehme ich die Verbesserungen in den ersten Post!
Logisch darfst du.
Gemeinsam mehr erreichen :)
Die & Lösung hat noch einen Schönheitsfehler:
Es wird immer der Rückgabewert -1 gegeben, was für eine fehlerhafte Ausführung des Befehls steht. Auch wenn es rein kosmetischer Natur ist. Irgendwie ging die auch weg, ich weiß nur nicht, wie. Hatte was mit 0 zu tun.
Das mit der -1 war von Anfang an da. Ich habe auch mal recherchiert aber nichts dazu gefunden
Warum benutzt Du bei time nicht gleich %r und sparst dir die Umrechnung?
Danke für den Tip!
Ich kenne mich bis jetzt noch gar nicht wirklich mit Perl aus. Deshalb war ich froh, das mit der Uhr überhaupt hin zu bekommen.
Da muss ich mich mal schlau machen, wie das benutzt werden kann.
Habe mal einige Takte "So lang der alte Peter" gemacht.
Könnten die älteren Semester kennen als Pausenzeichen der ARD. Wer mal Bayern 3 im Radio gehört hat, kennt es auch.
Gibt 30 Minuten, 60 Minuten und Glockenschlag...
(meiner Frau ist das Gebimmel 15 und 45 zu viel ;) )
Edit:
Und noch eine Slow-Version angehängt, falls die aus dem Archiv zu schnell ist ;)
Edit 2:
Noch die MIDI Datei, dann könnt ihr selber damit machen was ihr wollt :)
Andere Takte für die 4tel Schläge nehmen, Tempo verändern, anderes Instrument etc...
Eine sehr schöne Melodie!
Gefällt mir.
Eine weitere Idee wäre ja auch, das man zu jeder vollen Stunde eine andere Melodie abspielen lässt. Das benötigt zwar etwas mehr Code, wäre aber bestimmt auch eine ganz nette "Spielerei".
Hm ja.
Dann sollte man aber gleich die Dateinamen als Variablen setzen. Dann kann man die einfach per at oder so zur gewünschten Zeit setzen, was meinst?
ZitatAusserdem habe ich mal noch etwas wegen der Sommerzeit hinzugefügt. Allerdings kann ich das erst testen, wenn die Uhr auch umgestellt wird!
Also ich hab das nicht.
Es ging auch so wunderbar. Vermutlich stellt mein Debian selber die Zeit um, so dass hier ein händisches korrigieren unnötig ist.
Also bei mir funktioniert die Uhr auch richtig. Aber ich habe die Sommerzeitanpassung mit drin.
ich wollte mal deinen Code bei mir übertragen, jedoch will ich dass mein Tablet diese Sounds abspielt,
daher verwende ich anstatt den
system ("mplayer
... Befehlen diese:
fhem ("set androidTablet audioPlay http://192.168.178.26/sounds/BigBen.mp3");
fhem ("set androidTablet audioPlay http://192.168.178.26/sounds/BigBenStrikes.mp3");
nun funktioniert das oben aber leider nicht ganz so toll, da immer nur die erste Datei abgespielt wird, wie hier schon beschrieben wurde.
Hat mir jemand eine Idee wie ich das trotzdem lösen könnte? Da ich leider nicht weiter komme :(
Das Tablet selber ist mit der WebView App eingebunden. Und das abspielen funktioniert ansonsten auch sehr gut, nur halt das mit den Stundenschlägen bekomme ich wie oben gesagt nicht hin.
8) wie setzt man diese Zeile für den Gong um
system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 90 /opt/fhem/Sound/BigBenStrikes.mp3 -volume 90 -loop $Stunde −really−quiet &");
set Gong3 playTone 45 spielt BigBen
set Gong3 playTone 44 spielt BigBenStrikes
a. bekomme den loop nicht hin ..
b. wenn ein PlayTone auf einen weiteren folgt wird der erste abgebrochen - dazu muss dann
eine kleine Pause - die für das Abspielen reicht - hinein .. oder gibt es eine Paramater im Gong dafür?
@Miggi
Das ist genau das Problem welches man direkt mit dem mplayer auch bekommt, wenn man ihn mit & in den Hintergrund schickt. Der Stundengong weiß nicht, dass schon ein mplayer läuft, daher geht das in die Hose.
Bei Benutzung des mplayers ist es easy, da hängt man die Dateien quasi einfach in der Kommandozeile aneinander.
Die Frage ist, wie man das in deinem Fall am elegantesten löst.
Vermutlich ist es am schlausten, wenn du 12 Audiodateien anlegst. Die nennst du dann 1.mp3 2.mp3 3.mp3 etc...
Dann kannst du die Variable $Stunde nehmen, um die richtige Datei abzuspielen.
Zitatfhem ("set androidTablet audioPlay http://192.168.178.26/sounds/$Stunde.mp3");
Hab es aber nicht probiert!
Wie du die mp3 Dateien erzeugen kannst:
http://wiki.ubuntuusers.de/mp3wrap
(Geht aber auch mit cat und ggfs einer Reperatur des Headers...)
@harway2007
Wenn ich ehrlich bin, verstehe ich dein Problem nicht?
Oder willst du die alte Peter Variante und bekommst es nicht hin?
Ich hab mir noch mal die Sache mit der Fehlerausgabe bei den 15 Minuten-Gongs angesehen.
FHEM gibt generell bei jedem MPlayer-Aufruf, der direkt aus FHEM heraus aufgerufen wird, dieses -1 aus. Woran könnte das liegen?
Weil funktionieren tut es ja!
Weil fhem schon weitermacht, bevor der Befehl erfolgreich ausgeführt worden ist.
Daher kann fhem gar nicht wissen, ob der Befehl fehlerfrei durchging. Deshalb die Fehlermeldung.
Hey Toto1973,
deine DOIF Anweisung hat es in die Commandref vom DOIF geschaft :)
http://fhem.de/commandref_DE.html#DOIF
Glückwunsch :)
@Rince
Okey danke das hatte ich mir auch schon überlegt dachte aber ich frag hier erstmal nach ob es nicht eine andere Lösung für gibt. Werde nochmal Bescheid geben, wie bzw ob es geklappt hat!
Danke aufjedenfall!
Das ist ja der Hammer!
Vor 6 Wochen wusste ich noch nicht mal, wie ich den FHEM auf einem Raspberry zum laufen bekommen...
??? es geht noch mal um den Lösungsvorschlag:
für die Anzahl der Stunden den Stundengong schlagen lassen:
ein Vorschlag war 12 mp3s zu erzeugen und dann
fhem ("set androidTablet audioPlay http://192.168.178.26/sounds/$Stunde.mp3");
(Hinweis: es wird $hour+1 in der Wanduhr benutzt wird)
ALSO ES WIRD SCHWIERIG:
der Gong benötigt vorne drei Stellen z.B. 050.mp3 051.mp3
kann man einfach vorher $Stunde = $"0" + $"5" + $hour setzen hier bis Neun?
ergibt das 051 052 053 054 für $Stunde?
ab 10 dann $Stunde = $"0" + $"6" + ($hour=$hour-10)
(ergibt dann 060 061 062)
als Funktion ... und der Syntax? das es sich um Zahlen und Buchstaben handelt !
wäre es nicht einfacher einen Ton der in z.B. in Ton 044 steht x mal Abzuspielen mit einer Mini Pause zwischen
den einzelnen Ausgaben ?
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") (set Gong3 playTone 044)
hier wird er einmal gespielt ...
da ich nicht weiss wie man eine Schleife mit eigener Variabel und Bedingungen macht ..
scheitere ich ..
::) in C würde eine Schleife so aussehen:
int i;
for(i=0; i<$hour; i++) {
printf("jetzt GONGT es i mal bis der Wert von $hour erreicht ist", i+1);
}
...
ZitatALSO ES WIRD SCHWIERIG:
der Gong benötigt vorne drei Stellen z.B. 050.mp3 051.mp3
kann man einfach vorher $Stunde = $"0" + $"5" + $hour setzen hier bis Neun?
ergibt das 051 052 053 054 für $Stunde?
ab 10 dann $Stunde = $"0" + $"6" + ($hour=$hour-10)
(ergibt dann 060 061 062)
als Funktion ... und der Syntax? das es sich um Zahlen und Buchstaben handelt !
wäre es nicht einfacher einen Ton der in z.B. in Ton 044 steht x mal Abzuspielen mit einer Mini Pause zwischen
den einzelnen Ausgaben ?
Ich versteh nix. Aber passiert öfter.
Warum soll da irgend etwa 3-Stelliges stehen?
Was du vorschlägst unten, x Wiederholungen zu erzeugen, macht doch das Skript aus dem ersten Posting.
Wenn du für jede Stunde 1 eigene MP3 willst, dann meine ich 1 MP3. Da wird dann nix mehr geloopt oder so, sondern die Melodie und die Gongschläge sind in 1 MP3 zusammengefasst. Ergo sind es 12 MP3 Dateien.
Da wir in $Stunde eh die Stunde haben, können wir die 12 MP3s einfach nach dem Wert in $Stunde benennen. 1.mp3, 2.mp3,... 12.mp3
Also erzeugen wir irgendwie (Cubase, Audacity, MusicMaker, cat) 12 individuelle MP3s, 1 für jede Stunde.
Dann hat jedes Geloope und jede Schleife keine Existenzberechtigung mehr. Das ist nötig, wenn Melodie und Glockenschlag nicht individuell abespielt werden können.
Solangean den mplayer hat, ist es ziemlich überflüssig :)
ich bin ein Stück weiter ..
habe die Routine von derron hier gefunden :
# playToneEx
# perl playTone Erweiterung zur Nutzung des Repeat Features
# params: 1=Device, 2=MP3 File Nr, 3=Count
# { playToneEx("Tuergong.1.MP3","54","3") }
# { playToneEx("Tuergong.1.MP3","54",30) }
sub playToneEx($$$) {
my ($device, $tone, $repeat) = @_;
my $repeatStr = "";
if ($device && $tone) ......
jetzt muss ich nur noch wissen wie die $hour Zahl in die SubRoutine übergeben wird:
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({playToneEx("Gong3","44","&hour")})
.. klappt leider nicht ...
also bei mir funktioniert es jetzt auch mit dem Gong einwandfrei! Danke nochmal Rince.
Für die nächsten Lade ich noch die Gongs hoch. Muss ja nicht jeder nochmal machen müssen!
8) sehr nett von miggi .. DANKE
aber hinter meiner gesuchten Lösung für den Gong steckt das ich gerne
wissen möchte wie man eine Variable an eine SUB übergibt ..
wie übergebe ich also eine Variable - hier $hour oder $hour+1
an eine SUB wie diese hier:
([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
DOELSEIF ([{sprintf("%02d:00:01",$hour+1)}] and [Wanduhr_dummy:state] eq "on") (set Gong3 playTone 45)
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({playToneEx("Gong3","44",$hour)})
die rot markierte Stelle funktioniert so nicht ..
eine DOELSIF für die 12 mp3 Files wüsste ich auch nicht
zu schreiben ..
inspiriert von diesem Eintrag hier hab ich auch eine Ansage der Uhrzeit über Sonos realisiert.
Im Anhang hab ich mal die dazughörigen MP3´s anghängt, evtl. kann die jemand gebrauchen. Hört sich nett an.
Zitat von: harway2007 am 11 April 2015, 01:19:26
([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
DOELSEIF ([{sprintf("%02d:00:01",$hour+1)}] and [Wanduhr_dummy:state] eq "on") (set Gong3 playTone 45)
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({playToneEx("Gong3","44",$hour)})
kannst du denn die Methode playToneEx hier vielleicht auch noch kurz beschreiben? Oder was hast du denn vor?
Du willst mit dem rot markierten doch den "Gong3" mit der Lautstärke 44 $hour mal abspielen richtig?
Mit
{playToneEx()} ruft man ja Methoden auf (siehe {WandUhr()} ). Leider kann ich dir mit den Import- und Export Parametern nicht wirklich weiterhelfen, da für mich Perl noch ein wenig ein Rätsel ist in anderen Programmiersprachen hätte ich das auch locker hinbekommen, dann hätte ich auch nicht die 12 verschiedenen MP3's erstellt.
Edit:Zitat von: harway2007 am 09 April 2015, 00:16:07
# playToneEx
# perl playTone Erweiterung zur Nutzung des Repeat Features
# params: 1=Device, 2=MP3 File Nr, 3=Count
# { playToneEx("Tuergong.1.MP3","54","3") }
# { playToneEx("Tuergong.1.MP3","54",30) }
sub playToneEx($$$) {
my ($device, $tone, $repeat) = @_;
my $repeatStr = "";
if ($device && $tone) ......
okey hab das leider nicht gesehen sry.
Du kannst es mal so probieren, weiß aber nicht ob das so funktioniert, wie gesagt bin in Perl auch noch ein Neuling:
sub produkt
{
my($faktor1,$faktor2)=@_;
return($faktor1*faktor2);
}
print produkt(3,7); # 21
Müsste eigentlich funktionieren ( http://wiki.perl-community.de/Wissensbasis/SubroutinenParameterUndRueckgabewerte (http://wiki.perl-community.de/Wissensbasis/SubroutinenParameterUndRueckgabewerte) )
danke .. aber das versteh ich auch nicht
ich wollte doch nur einen Wert aus der SUB haben hier §Stunde
- darin sollte sich die Anzahl der Stunden befinden ..
der Aufruf sollte aus dieser SUB erfolgen
sub WandUhr()
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
if($Sommerzeit == 1) { $Stunden + 1 };
if($Stunden <= 12) { $Stunde = $Stunden };
if($Stunden >= 13) { $Stunde = $Stunden - 12 };
if($Stunden == 0) { $Stunde = 12 };
return $Stunde
}
in Orange mein Versuch ..
dann einsetzen in den Aufruf
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({playToneEx("Gong3","44",$Stunde)})
die Funktion macht folgendes : auf dem Hardwaremodul GONG (Name Gong3) den Song Nummer "44" x-mal abspielen ($Stunde)
bei 6 Uhr eben 6 mal ..
im Song 44 steckt der MP3 Ton von dem Stundenschlag vom Westminster
nochmals zur Kontrolle die Funktion mit einer Zahl an der Stelle §Stunde - funktioniert prima !
DOELSEIF ([{sprintf("%02d:00:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({playToneEx("Gong3","44",6)})
Das return $irgendwas klappt nicht.
Entweder du schreibst das innerhalb der sub in einen Dummy (quasi ein fhem$, der Dummy), oder du ziehst das DOIF in die sub rein. Ob das aber geht, weiß ich nicht. Im Prinzip dürfte nichts dagegen sprechen.
:o pardon wie würde das dann aussehen..
welchen Code schlägst du vor ..
Hallo!
Da ich mit der Lautstärke zwischen Radio und dem Gong "Probleme" habe, habe ich mir eine Lautstärken Anpassung gebastelt.
Der Gong wird ja mit einer fest eingestellten Lautstärke abgespielt. Läuft nun SRadio, dann wird die Wiedergabe leiser. Und um die Lautstärke wieder auf den alten wert zu setzten, habe ich mir dieses DOIF gebastelt:
define SRadio_play DOIF ([SRadio:state] eq "playing" and [10:00 - 23:00] and [:01] or [:16] or [:31] or [:46]) (set SRadio VOLUME [Dum_Volume_D])
Der Dummy Dum_Volume_D steuert bei mir über Slider die Lautstärke von SRadio.
Hallo DieterL,
vielen Dank für die Zeitansage. harway2007 Ich vermute Du hast einen FM Funkgong mit MP3 Wiedergabe. Ich würde auch gerne eine Wanduhr mit Zeitansage basteln. Bist Du in der Angelegenheit weiter gekommen? Das Problem ist ja das die MP3 dreistellig hinterlegt sind und die MP3 Nummer nicht immer der Zeit entsprechen (wenn zum Beispiel schon von anderen belegt).
Um 1 müsste zum Beispiel ein set gong_MP3 playTone 123 erfolgen und um 2 Uhr ein set gong_MP3 playTone 124 . Bekommt man das zum Beispiel über ein einfaches DOIF hin? Ich habe das trotz dem Hinweis von rince nicht in der doif commandref gefunden.
Wo ist den $hour überhaupt hinterlegt?
Gruß
Micha
Hallo - nein das Problem ist noch nicht gelöst..
siehe bitte mal die Einträge vom 9.4 und 11.4
es ging darum die &hour (Stunde) auszulesen und diesen Wert
zu benutzen um den Gong für die Stunde x mal anzusteuern ...
Also erst kommt der Hauptgong für die Stunde
dann der Stundenschlag bei 7 Uhr eben 7 mal ..
Gruss Harway
Hallo
Im log bekomme ich dieses Playing −really−quiet.
File not found: '−really−quiet'
Failed to open −really−quiet
Funktionieren tut es aber
Außerdem schreibt er mir den log voll
[code] jump to the end
Clip info:
Title: Big Ben
Artist: Troy Rumrich
Album: www.Traummusik.com
Year: 2014
Comment: ??Nur f�r den privaten Gebrauc
Genre: Other
Load subtitles in /opt/fhem/sound/
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
Home directory not accessible: Permission denied
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 0.0 (00.0) of 2.0 (02.0) ??,?%
A: 0.0 (00.0) of 2.0 (02.0) ??,?%
A: 0.1 (00.0) of 2.0 (02.0) ??,?%
A: 0.1 (00.0) of 2.0 (02.0) ??,?%
A: 0.1 (00.0) of 2.0 (02.0) ??,?%
A: 0.1 (00.1) of 2.0 (02.0) ??,?%
A: 0.1 (00.1) of 2.0 (02.0) 0.4%
A: 0.2 (00.1) of 2.0 (02.0) 0.4%
A: 0.2 (00.1) of 2.0 (02.0) 0.4%
A: 0.2 (00.2) of 2.0 (02.0) 0.5%
A: 0.2 (00.2) of 2.0 (02.0) 0.4%
A: 0.3 (00.2) of 2.0 (02.0) 0.4%
A: 0.3 (00.2) of 2.0 (02.0) 0.5%
A: 0.3 (00.3) of 2.0 (02.0) 0.5%
A: 0.3 (00.3) of 2.0 (02.0) 0.5%
A: 0.4 (00.3) of 2.0 (02.0) 0.5%
A: 0.4 (00.3) of 2.0 (02.0) 0.6%
A: 0.4 (00.4) of 2.0 (02.0) 0.6%
A: 0.4 (00.4) of 2.0 (02.0) 0.6%
A: 0.4 (00.4) of 2.0 (02.0) 0.6%
A: 0.5 (00.4) of 2.0 (02.0) 0.6%
A: 0.5 (00.4) of 2.0 (02.0) 0.7%
A: 0.5 (00.5) of 2.0 (02.0) 0.7%
A: 0.5 (00.5) of 2.0 (02.0) 0.7%
A: 0.6 (00.5) of 2.0 (02.0) 0.7%
A: 0.6 (00.5) of 2.0 (02.0) 0.8%
A: 0.6 (00.6) of 2.0 (02.0) 0.8%
A: 0.6 (00.6) of 2.0 (02.0) 0.8%
A: 0.6 (00.6) of 2.0 (02.0) 0.8%
A: 0.7 (00.6) of 2.0 (02.0) 0.8%
A: 0.7 (00.7) of 2.0 (02.0) 0.8%
A: 0.7 (00.7) of 2.0 (02.0) 0.8%
A: 0.8 (00.7) of 2.0 (02.0) 0.9%
A: 0.8 (00.7) of 2.0 (02.0) 0.9%
A: 0.8 (00.7) of 2.0 (02.0) 0.9%
A: 0.8 (00.8) of 2.0 (02.0) 0.9%
A: 0.8 (00.8) of 2.0 (02.0) 0.9%
A: 0.9 (00.8) of 2.0 (02.0) 0.9%
A: 0.9 (00.8) of 2.0 (02.0) 0.9%
A: 0.9 (00.9) of 2.0 (02.0) 0.9%
A: 0.9 (00.9) of 2.0 (02.0) 0.9%
A: 1.0 (00.9) of 2.0 (02.0) 0.9%
A: 1.0 (00.9) of 2.0 (02.0) 1.0%
A: 1.0 (01.0) of 2.0 (02.0) 1.0%
A: 1.0 (01.0) of 2.0 (02.0) 1.0%
A: 1.1 (01.0) of 2.0 (02.0) 1.0%
A: 1.1 (01.0) of 2.0 (02.0) 1.0%
A: 1.1 (01.0) of 2.0 (02.0) 1.0%
A: 1.1 (01.1) of 2.0 (02.0) 1.0%
A: 1.1 (01.1) of 2.0 (02.0) 1.0%
A: 1.2 (01.1) of 2.0 (02.0) 1.0%
A: 1.2 (01.1) of 2.0 (02.0) 1.0%
A: 1.2 (01.2) of 2.0 (02.0) 1.0%
A: 1.2 (01.2) of 2.0 (02.0) 1.0%
A: 1.3 (01.2) of 2.0 (02.0) 1.1%
A: 1.3 (01.2) of 2.0 (02.0) 1.0%
A: 1.3 (01.2) of 2.0 (02.0) 1.1%
A: 1.3 (01.3) of 2.0 (02.0) 1.1%
A: 1.4 (01.3) of 2.0 (02.0) 1.1%
A: 1.4 (01.3) of 2.0 (02.0) 1.1%
A: 1.4 (01.4) of 2.0 (02.0) 1.1%
A: 1.4 (01.4) of 2.0 (02.0) 1.1%
A: 1.4 (01.4) of 2.0 (02.0) 1.1%
A: 1.5 (01.4) of 2.0 (02.0) 1.1%
A: 1.5 (01.4) of 2.0 (02.0) 1.1%
A: 1.5 (01.5) of 2.0 (02.0) 1.1%
A: 1.5 (01.5) of 2.0 (02.0) 1.1%
A: 1.6 (01.5) of 2.0 (02.0) 1.1%
A: 1.6 (01.5) of 2.0 (02.0) 1.1%
A: 1.6 (01.6) of 2.0 (02.0) 1.1%
A: 1.6 (01.6) of 2.0 (02.0) 1.1%
A: 1.7 (01.6) of 2.0 (02.0) 1.1%
A: 1.7 (01.6) of 2.0 (02.0) 1.2%
A: 1.7 (01.7) of 2.0 (02.0) 1.1%
A: 1.7 (01.7) of 2.0 (02.0) 1.1%
A: 1.7 (01.7) of 2.0 (02.0) 1.2%
A: 1.8 (01.7) of 2.0 (02.0) 1.2%
A: 1.8 (01.7) of 2.0 (02.0) 1.2%
A: 1.8 (01.8) of 2.0 (02.0) 1.2%
A: 1.8 (01.8) of 2.0 (02.0) 1.2%
A: 1.9 (01.8) of 2.0 (02.0) 1.2%
A: 1.9 (01.8) of 2.0 (02.0) 1.2%
A: 1.9 (01.9) of 2.0 (02.0) 1.2%
A: 1.9 (01.9) of 2.0 (02.0) 1.2%
A: 2.0 (01.9) of 2.0 (02.0) 1.2%
A: 2.0 (01.9) of 2.0 (02.0) 1.2%
A: 2.0 (02.0) of 2.0 (02.0) 1.2%
A: 2.0 (02.0) of 2.0 (02.0) 1.2%
A: 2.1 (02.0) of 2.0 (02.0) 1.2%
A: 2.1 (02.0) of 2.0 (02.0) 1.2%
A: 2.1 (02.0) of 2.0 (02.0) 1.2%
A: 2.1 (02.1) of 2.0 (02.0) 1.2%
A: 2.1 (02.1) of 2.0 (02.0) 1.2%
A: 2.2 (02.1) of 2.0 (02.0) 1.2%
A: 2.2 (02.1) of 2.0 (02.0) 1.2%
A: 2.2 (02.2) of 2.0 (02.0) 1.2%
A: 2.2 (02.2) of 2.0 (02.0) 1.2%
A: 2.3 (02.2) of 2.0 (02.0) 1.3%
A: 2.3 (02.2) of 2.0 (02.0) 1.3%
A: 2.3 (02.3) of 2.0 (02.0) 1.3%
A: 2.3 (02.3) of 2.0 (02.0) 1.3%
A: 2.4 (02.3) of 2.0 (02.0) 1.3%
A: 2.4 (02.3) of 2.0 (02.0) 1.3%
A: 2.4 (02.3) of 2.0 (02.0) 1.3%
A: 2.4 (02.4) of 2.0 (02.0) 1.3%
A: 2.4 (02.4) of 2.0 (02.0) 1.3%
A: 2.5 (02.4) of 2.0 (02.0) 1.3%
A: 2.5 (02.4) of 2.0 (02.0) 1.3%
A: 2.5 (02.5) of 2.0 (02.0) 1.3%
A: 2.5 (02.5) of 2.0 (02.0) 1.3%
A: 2.6 (02.5) of 2.0 (02.0) 1.3%
A: 2.6 (02.5) of 2.0 (02.0) 1.3%
A: 2.6 (02.6) of 2.0 (02.0) 1.3%
A: 2.6 (02.6) of 2.0 (02.0) 1.3%
A: 2.6 (02.6) of 2.0 (02.0) 1.3%
A: 2.7 (02.6) of 2.0 (02.0) 1.3%
A: 2.7 (02.7) of 2.0 (02.0) 1.3%
A: 2.7 (02.7) of 2.0 (02.0) 1.3%
A: 2.7 (02.7) of 2.0 (02.0) 1.3%
A: 2.8 (02.7) of 2.0 (02.0) 1.3%
A: 2.8 (02.7) of 2.0 (02.0) 1.3%
A: 2.8 (02.8) of 2.0 (02.0) 1.3%
A: 2.8 (02.8) of 2.0 (02.0) 1.3%
A: 2.9 (02.8) of 2.0 (02.0) 1.3%
A: 2.9 (02.8) of 2.0 (02.0) 1.3%
A: 2.9 (02.9) of 2.0 (02.0) 1.3%
A: 2.9 (02.9) of 2.0 (02.0) 1.3%
A: 3.0 (02.9) of 2.0 (02.0) 1.3%
A: 3.0 (02.9) of 2.0 (02.0) 1.3%
A: 3.0 (03.0) of 2.0 (02.0) 1.3%
A: 3.0 (03.0) of 2.0 (02.0) 1.3%
A: 3.0 (03.0) of 2.0 (02.0) 1.3%
A: 3.1 (03.0) of 2.0 (02.0) 1.3%
A: 3.1 (03.0) of 2.0 (02.0) 1.3%
A: 3.1 (03.1) of 2.0 (02.0) 1.3%
A: 3.1 (03.1) of 2.0 (02.0) 1.3%
A: 3.2 (03.1) of 2.0 (02.0) 1.3%
A: 3.2 (03.1) of 2.0 (02.0) 1.3%
A: 3.2 (03.2) of 2.0 (02.0) 1.3%
A: 3.2 (03.2) of 2.0 (02.0) 1.3%
A: 3.2 (03.2) of 2.0 (02.0) 1.3%
A: 3.3 (03.2) of 2.0 (02.0) 1.3%
A: 3.3 (03.3) of 2.0 (02.0) 1.3%
A: 3.3 (03.3) of 2.0 (02.0) 1.3%
A: 3.4 (03.3) of 2.0 (02.0) 1.3%
A: 3.4 (03.3) of 2.0 (02.0) 1.3%
A: 3.4 (03.3) of 2.0 (02.0) 1.3%
A: 3.4 (03.4) of 2.0 (02.0) 1.3%
A: 3.4 (03.4) of 2.0 (02.0) 1.3%
A: 3.5 (03.4) of 2.0 (02.0) 1.3%
A: 3.5 (03.4) of 2.0 (02.0) 1.3%
A: 3.5 (03.5) of 2.0 (02.0) 1.3%
A: 3.5 (03.5) of 2.0 (02.0) 1.3%
A: 3.6 (03.5) of 2.0 (02.0) 1.3%
A: 3.6 (03.5) of 2.0 (02.0) 1.3%
A: 3.6 (03.6) of 2.0 (02.0) 1.3%
A: 3.6 (03.6) of 2.0 (02.0) 1.3%
A: 3.7 (03.6) of 2.0 (02.0) 1.3%
A: 3.7 (03.6) of 2.0 (02.0) 1.3%
A: 3.7 (03.6) of 2.0 (02.0) 1.3%
A: 3.7 (03.7) of 2.0 (02.0) 1.3%
A: 3.7 (03.7) of 2.0 (02.0) 1.3%
A: 3.8 (03.7) of 2.0 (02.0) 1.3%
A: 3.8 (03.7) of 2.0 (02.0) 1.3%
A: 3.8 (03.8) of 2.0 (02.0) 1.3%
A: 3.8 (03.8) of 2.0 (02.0) 1.3%
A: 3.9 (03.8) of 2.0 (02.0) 1.3%
A: 3.9 (03.8) of 2.0 (02.0) 1.3%
A: 3.9 (03.9) of 2.0 (02.0) 1.3%
A: 3.9 (03.9) of 2.0 (02.0) 1.3%
A: 4.0 (03.9) of 2.0 (02.0) 1.3%
A: 4.0 (03.9) of 2.0 (02.0) 1.3%
A: 4.0 (04.0) of 2.0 (02.0) 1.3%
A: 4.0 (04.0) of 2.0 (02.0) 1.3%
A: 4.0 (04.0) of 2.0 (02.0) 1.3%
A: 4.1 (04.0) of 2.0 (02.0) 1.3%
A: 4.1 (04.0) of 2.0 (02.0) 1.3%
A: 4.1 (04.1) of 2.0 (02.0) 1.3%
A: 4.1 (04.1) of 2.0 (02.0) 1.3%
A: 4.2 (04.1) of 2.0 (02.0) 1.3%
A: 4.2 (04.1) of 2.0 (02.0) 1.3%
A: 4.2 (04.2) of 2.0 (02.0) 1.3%
A: 4.2 (04.2) of 2.0 (02.0) 1.3%
A: 4.3 (04.2) of 2.0 (02.0) 1.3%
A: 4.3 (04.2) of 2.0 (02.0) 1.3%
A: 4.3 (04.3) of 2.0 (02.0) 1.3%
A: 4.3 (04.3) of 2.0 (02.0) 1.3%
A: 4.3 (04.3) of 2.0 (02.0) 1.3%
A: 4.4 (04.3) of 2.0 (02.0) 1.3%
A: 4.4 (04.3) of 2.0 (02.0) 1.3%
A: 4.4 (04.4) of 2.0 (02.0) 1.3%
A: 4.4 (04.4) of 2.0 (02.0) 1.3%
A: 4.5 (04.4) of 2.0 (02.0) 1.3%
A: 4.5 (04.4) of 2.0 (02.0) 1.3%
A: 4.5 (04.5) of 2.0 (02.0) 1.3%
Playing −really−quiet.
File not found: '−really−quiet'
Failed to open −really−quiet.
Playing /opt/fhem/sound/BigBen_30.mp3.
libavformat version 56.32.100 (internal)
Audio only file format detected.
Clip info:
Title: Big Ben
Artist: Troy Rumrich
Album: www.Traummusik.com
Year: 2014
Comment: ?Nur f�r den privaten Gebrauch
Genre: Other
Load subtitles in /opt/fhem/sound/
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
Home directory not accessible: Permission denied
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 0.0 (00.0) of 7.0 (07.0) ??,?%
A: 0.0 (00.0) of 7.0 (07.0) ??,?%
A: 0.1 (00.0) of 7.0 (07.0) ??,?%
A: 0.1 (00.0) of 7.0 (07.0) ??,?%
A: 0.1 (00.0) of 7.0 (07.0) ??,?%
A: 0.1 (00.1) of 7.0 (07.0) ??,?%
A: 0.1 (00.1) of 7.0 (07.0) 0.5%
A: 0.2 (00.1) of 7.0 (07.0) 0.5%
A: 0.2 (00.1) of 7.0 (07.0) 0.5%
A: 0.2 (00.2) of 7.0 (07.0) 0.5%
A: 0.2 (00.2) of 7.0 (07.0) 0.5%
A: 0.3 (00.2) of 7.0 (07.0) 0.5%
A: 0.3 (00.2) of 7.0 (07.0) 0.5%
A: 0.3 (00.3) of 7.0 (07.0) 0.5%
A: 0.3 (00.3) of 7.0 (07.0) 0.5%
A: 0.4 (00.3) of 7.0 (07.0) 0.5%
A: 0.4 (00.3) of 7.0 (07.0) 0.5%
A: 0.4 (00.4) of 7.0 (07.0) 0.5%
A: 0.4 (00.4) of 7.0 (07.0) 0.5%
A: 0.4 (00.4) of 7.0 (07.0) 0.5%
A: 0.5 (00.4) of 7.0 (07.0) 0.5%
A: 0.5 (00.4) of 7.0 (07.0) 0.5%
A: 0.5 (00.5) of 7.0 (07.0) 0.5%
A: 0.5 (00.5) of 7.0 (07.0) 0.5%
A: 0.6 (00.5) of 7.0 (07.0) 0.5%
A: 0.6 (00.5) of 7.0 (07.0) 0.5%
A: 0.6 (00.6) of 7.0 (07.0) 0.5%
A: 0.6 (00.6) of 7.0 (07.0) 0.5%
A: 0.7 (00.6) of 7.0 (07.0) 0.5%
A: 0.7 (00.6) of 7.0 (07.0) 0.5%
A: 0.7 (00.7) of 7.0 (07.0) 0.6%
A: 0.7 (00.7) of 7.0 (07.0) 0.6%
A: 0.8 (00.7) of 7.0 (07.0) 0.6%
A: 0.8 (00.7) of 7.0 (07.0) 0.6%
A: 0.8 (00.7) of 7.0 (07.0) 0.7%
A: 0.8 (00.8) of 7.0 (07.0) 0.7%
A: 0.8 (00.8) of 7.0 (07.0) 0.7%
A: 0.9 (00.8) of 7.0 (07.0) 0.7%
A: 0.9 (00.8) of 7.0 (07.0) 0.7%
A: 0.9 (00.9) of 7.0 (07.0) 0.7%
A: 0.9 (00.9) of 7.0 (07.0) 0.7%
A: 1.0 (00.9) of 7.0 (07.0) 0.8%
A: 1.0 (00.9) of 7.0 (07.0) 0.8%
A: 1.0 (01.0) of 7.0 (07.0) 0.8%
A: 1.0 (01.0) of 7.0 (07.0) 0.8%
A: 1.1 (01.0) of 7.0 (07.0) 0.8%
A: 1.1 (01.0) of 7.0 (07.0) 0.8%
A: 1.1 (01.0) of 7.0 (07.0) 0.8%
A: 1.1 (01.1) of 7.0 (07.0) 0.9%
A: 1.1 (01.1) of 7.0 (07.0) 0.9%
A: 1.2 (01.1) of 7.0 (07.0) 0.9%
A: 1.2 (01.1) of 7.0 (07.0) 0.9%
A: 1.2 (01.2) of 7.0 (07.0) 0.9%
A: 1.2 (01.2) of 7.0 (07.0) 0.9%
A: 1.3 (01.2) of 7.0 (07.0) 0.9%
A: 1.3 (01.2) of 7.0 (07.0) 0.9%
A: 1.3 (01.3) of 7.0 (07.0) 0.9%
A: 1.3 (01.3) of 7.0 (07.0) 1.0%
A: 1.3 (01.3) of 7.0 (07.0) 1.0%
A: 1.4 (01.3) of 7.0 (07.0) 1.0%
A: 1.4 (01.4) of 7.0 (07.0) 1.0%
A: 1.4 (01.4) of 7.0 (07.0) 1.0%
A: 1.4 (01.4) of 7.0 (07.0) 1.0%
A: 1.5 (01.4) of 7.0 (07.0) 1.0%
A: 1.5 (01.4) of 7.0 (07.0) 1.0%
A: 1.5 (01.5) of 7.0 (07.0) 1.0%
A: 1.5 (01.5) of 7.0 (07.0) 1.0%
A: 1.6 (01.5) of 7.0 (07.0) 1.0%
A: 1.6 (01.5) of 7.0 (07.0) 1.0%
A: 1.6 (01.6) of 7.0 (07.0) 1.1%
A: 1.6 (01.6) of 7.0 (07.0) 1.1%
A: 1.6 (01.6) of 7.0 (07.0) 1.0%
A: 1.7 (01.6) of 7.0 (07.0) 1.1%
A: 1.7 (01.7) of 7.0 (07.0) 1.1%
A: 1.7 (01.7) of 7.0 (07.0) 1.1%
A: 1.7 (01.7) of 7.0 (07.0) 1.1%
A: 1.8 (01.7) of 7.0 (07.0) 1.1%
A: 1.8 (01.7) of 7.0 (07.0) 1.1%
A: 1.8 (01.8) of 7.0 (07.0) 1.1%
A: 1.8 (01.8) of 7.0 (07.0) 1.1%
A: 1.9 (01.8) of 7.0 (07.0) 1.1%
A: 1.9 (01.8) of 7.0 (07.0) 1.1%
A: 1.9 (01.9) of 7.0 (07.0) 1.1%
A: 1.9 (01.9) of 7.0 (07.0) 1.1%
A: 2.0 (01.9) of 7.0 (07.0) 1.1%
A: 2.0 (01.9) of 7.0 (07.0) 1.1%
A: 2.0 (02.0) of 7.0 (07.0) 1.1%
A: 2.0 (02.0) of 7.0 (07.0) 1.2%
A: 2.1 (02.0) of 7.0 (07.0) 1.2%
A: 2.1 (02.0) of 7.0 (07.0) 1.2%
A: 2.1 (02.0) of 7.0 (07.0) 1.2%
A: 2.1 (02.1) of 7.0 (07.0) 1.2%
A: 2.1 (02.1) of 7.0 (07.0) 1.2%
A: 2.2 (02.1) of 7.0 (07.0) 1.2%
A: 2.2 (02.1) of 7.0 (07.0) 1.2%
A: 2.2 (02.2) of 7.0 (07.0) 1.2%
A: 2.2 (02.2) of 7.0 (07.0) 1.2%
A: 2.3 (02.2) of 7.0 (07.0) 1.2%
A: 2.3 (02.2) of 7.0 (07.0) 1.2%
A: 2.3 (02.3) of 7.0 (07.0) 1.2%
A: 2.3 (02.3) of 7.0 (07.0) 1.2%
A: 2.4 (02.3) of 7.0 (07.0) 1.2%
A: 2.4 (02.3) of 7.0 (07.0) 1.2%
A: 2.4 (02.3) of 7.0 (07.0) 1.2%
A: 2.4 (02.4) of 7.0 (07.0) 1.2%
A: 2.4 (02.4) of 7.0 (07.0) 1.2%
A: 2.5 (02.4) of 7.0 (07.0) 1.2%
A: 2.5 (02.4) of 7.0 (07.0) 1.2%
A: 2.5 (02.5) of 7.0 (07.0) 1.2%
A: 2.5 (02.5) of 7.0 (07.0) 1.2%
A: 2.6 (02.5) of 7.0 (07.0) 1.2%
A: 2.6 (02.5) of 7.0 (07.0) 1.2%
A: 2.6 (02.6) of 7.0 (07.0) 1.2%
[/code
damit das LOG übersichtlich bleibt muss beim mplayer folgendes in die config (/etc/mplayer/mplayer.conf) geschrieben werden:
really-quiet="1"
lirc=no
so ähnliches muss es auch beim mpg123-Player funktionieren, nur kann ich das nicht sagen, weil ich den nicht habe.
Moin Leute,
ich bekomme im Logfile leider folgende Meldungen (mit Fehlern):
Playing /opt/fhem/Sound/BigBen.mp3.
libavformat version 53.21.1 (external)
Mismatching header version 53.19.0
Audio only file format detected.
Clip info:
Title: Big Ben
Artist: Troy Rumrich
Album: www.Traummusik.com
Year: 2014
Comment: ?Nur f�r den privaten Gebrauch
Genre: Other
Load subtitles in /opt/fhem/Sound/
==========================================================================
Requested audio codec family [mpg123] (afm=mpg123) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 53.35.0 (external)
Mismatching header version 53.32.2
AUDIO: 44100 Hz, 2 ch, floatle, 128.0 kbit/4.54% (ratio: 16000->352800)
Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio)
==========================================================================
Home directory / not ours.
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
[AO_ALSA] alsa-lib: confmisc.c:768:(parse_card) cannot find card '0'
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:392:(snd_func_concat) error evaluating strings
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:1251:(snd_func_refer) error evaluating name
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[AO_ALSA] alsa-lib: conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
[AO_ALSA] alsa-lib: pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 44100Hz Channels: Stereo Format floatle
[AO SDL] using aalib audio driver.
[AO SDL] Unsupported audio format: 0x1d.
[AO SDL] Unable to open audio: No available audio device
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video
Playing /opt/fhem/Sound/BigBenStrikes.mp3.
Audio only file format detected.
Clip info:
Title: Westmister
Artist:
Album:
Year: 2015
Comment:
Genre: Speech
Load subtitles in /opt/fhem/Sound/
==========================================================================
Requested audio codec family [mpg123] (afm=mpg123) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, floatle, 117.3 kbit/4.16% (ratio: 14664->352800)
Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio)
==========================================================================
Home directory / not ours.
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
[AO_ALSA] alsa-lib: confmisc.c:768:(parse_card) cannot find card '0'
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:392:(snd_func_concat) error evaluating strings
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[AO_ALSA] alsa-lib: confmisc.c:1251:(snd_func_refer) error evaluating name
[AO_ALSA] alsa-lib: conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[AO_ALSA] alsa-lib: conf.c:4720:(snd_config_expand) Evaluate error: No such file or directory
[AO_ALSA] alsa-lib: pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 44100Hz Channels: Stereo Format floatle
[AO SDL] using aalib audio driver.
[AO SDL] Unsupported audio format: 0x1d.
[AO SDL] Unable to open audio:
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video
Playing .
File not found: '−really−quiet'
Failed to open −really−quiet.
Exiting... (End of file)
Ich habe nichts am Code für die 99_MyUtils verändernt.
Den mplayer habe ich (hoffentlich richtig?) nachinstalliert
sudo apt-get install mplayer
Dann natürlich die 99_MyUtils gespeichert. Das hat auch ohne Fehlermeldung geklappt. Aufruf von
{WandUhr()}
zeigt ein "-1" an, es wird aber kein Sound abgespielt. Die Logfile sieht wie oben aus. Wenn ich das Logfile richtig verstehe, fehlen diverse Codecs?!
Wenn ich jedoch die Zeile
mplayer /opt/fhem/Sound/BigBen.mp3 -volume 90
auf der RasperryPi Kommandozeile auslöse dann wird der Ton gespielt.
Auch wenn ich die ganze Zeile in die Kommandozeile schreibe
mplayer /opt/fhem/Sound/BigBen.mp3 -volume 90 /opt/fhem/Sound/BigBenStrikes.mp3 -volume 90 -loop $Stunde −really−quiet &
bekomme ich einen Fehler:
ZitatThe loop option must be an integer: −really−quiet
Error parsing option on the command line: -loop
MPlayer svn r34540 (Raspbian), built with gcc-4.6 (C) 2000-2012 MPlayer Team
Was mache ich falsch bzw habe ich übersehen?
Zitat von: miggi am 06 April 2015, 03:35:16
daher verwende ich anstatt den
system ("mplayer
... Befehlen diese:
fhem ("set androidTablet audioPlay http://192.168.178.26/sounds/BigBen.mp3");
fhem ("set androidTablet audioPlay http://192.168.178.26/sounds/BigBenStrikes.mp3");
nun funktioniert das oben aber leider nicht ganz so toll, da immer nur die erste Datei abgespielt wird, wie hier schon beschrieben wurde.
Ich kann dir bei deinem Problem wohl leider nicht helfen, was mich aber interessiert ist, wie du dein Device "androidTablet" angelegt hast, sodass dein FHEM (bspw von einem RaspberryPi) über das Netzwerk
auf das Tablet eine Sounddatei, die auch wiederum im Netzwerk liegt, anspielt. Ist das Quasi dann wie ein Benachrichtungston als würde eine SMS kommen?
Danke.
Zitat
Das Tablet selber ist mit der WebView App eingebunden. Und das abspielen funktioniert ansonsten auch sehr gut, nur halt das mit den Stundenschlägen bekomme ich wie oben gesagt nicht hin.
Hat er doch geschrieben.
Ich finde das so interessant das ich vor habe das in das AMAD Modul mit ein zu bauen. Allerdings als Benachrichtigungton mit einer lokalen Datei (also auf dem Tablet liegend)
Dann sagt man dem Modul nur noch welche Datei er abspielen soll.
Danke sehr für diese Inspiration. Die Idee mit der Wanduhr ist wirklich mal prima, zumal ich keine Uhr im Wohnzimmer habe und immer mein Handy greifen muß.
Gruß
Leon
Zitat von: CoolTux am 15 September 2015, 10:36:02
Hat er doch geschrieben.
Ohweija, danke fürs draufstupsen!
Kein Problem.
Grüße
Zitat von: Toto1973 am 11 März 2015, 12:31:05
Um das Ganze nun stündlich abspielen zu lassen, benötigt man noch eine DOIF-Anweisung. Ausserdem spielt die Uhr nun alle 15 Minuten den richtigen Gong:
([Wanduhr_dummy:state] eq "on" and [:00]) ({WandUhr()})
DOELSEIF ([:15] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 83 −really−quiet &")})
DOELSEIF ([:30] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 83 −really−quiet &")})
DOELSEIF ([:45] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 83 −really−quiet &")})
attr Wanduhr do always
Wer den 15 Minuten Gong nicht möchte, der benötigt nur die erste Zeile!
Und wo muss ich diese erste Zeile (ich will nur den stündlichen Gong - erstmal) einfügen? :o
Und die letzte Zeile brauche ich absolut nicht, wenn ich nur den stündlichen Gong möchte?
Hallo
Lese Dich bitte in DOIF ein. Wiki und Commandref helfen da. Dann weisst Du bescheid.
Zitat von: chr2k am 15 September 2015, 11:23:28
Ohweija, danke fürs draufstupsen!
Konnt leider net früher reinschauen, hat es sich dann für dich erledigt? Kannst sonst auch hier im Wiki nachschauen.
Falls noch was brauchst sagst halt Bescheid :)
http://www.fhemwiki.de/wiki/WebViewControl (http://www.fhemwiki.de/wiki/WebViewControl)
Danke, das war der passende Hinweis. Klappt nun.
Ich hätte jetzt gerne einen Taster mit dem ich den Befehl {WandUhr()} triggern kann. Also so, als würde ich diesen Befehl in die Kommandozeile schreiben und auf Enter drücken.
Ich vermute mal, dass ich auch etwas mit nem Dummy und einer DOIF Funktion machen muss, aber ich meine Versuche mir aus diversen Codes hier im Foum war zusammen zu klauen/basteln sind gescheitert. Kann mir bitte jemand auf das richtige Gleis helfen?
Zitat von: miggi am 15 September 2015, 20:13:37
Konnt leider net früher reinschauen, hat es sich dann für dich erledigt?
Kein Thema! Trotzdem Danke für deine jetztige Reaktion. War gerade dabei mir die App usw downzuloaden.
Zitat von: chr2k am 15 September 2015, 20:28:10
Kein Thema! Trotzdem Danke für deine jetztige Reaktion. War gerade dabei mir die App usw downzuloaden.
alles klar :-)
Zitat von: miggi am 15 September 2015, 20:13:37
Falls noch was brauchst sagst halt Bescheid :)
http://www.fhemwiki.de/wiki/WebViewControl (http://www.fhemwiki.de/wiki/WebViewControl)
Oder ich schaue hier bzw frage her: http://forum.fhem.de/index.php/topic,10628 (http://forum.fhem.de/index.php/topic,10628)
Zitat von: chr2k am 15 September 2015, 20:47:44
Oder ich schaue hier bzw frage her: http://forum.fhem.de/index.php/topic,10628 (http://forum.fhem.de/index.php/topic,10628)
ja das kannst natürlich auch machen :) da hab ichs ja auch her.
Zitat von: chr2k am 15 September 2015, 20:26:08
Ich hätte jetzt gerne einen Taster mit dem ich den Befehl {WandUhr()} triggern kann. Also so, als würde ich diesen Befehl in die Kommandozeile schreiben und auf Enter drücken.
Ich vermute mal, dass ich auch etwas mit nem Dummy und einer DOIF Funktion machen muss, aber ich meine Versuche mir aus diversen Codes hier im Foum war zusammen zu klauen/basteln sind gescheitert. Kann mir bitte jemand auf das richtige Gleis helfen?
Womöglich ist mein Beitrag untergengangen, daher zitiere ich mich mal :-)
Weiß da jemand was?
Wie soll denn dieser "Taster" aussehen?
define taster_dummy dummy
attr taster_dummy setList on off
define uhr DOIF ([taster_dummy] eq "on") ({WandUhr()})
Zitat von: Toto1973 am 16 September 2015, 16:59:53
Wie soll denn dieser "Taster" aussehen?
define taster_dummy dummy
attr taster_dummy setList on off
define uhr DOIF ([taster_dummy] eq "on") ({WandUhr()})
Das funktioniert zwar (technisch) aber nicht wie gewünscht/gedacht.
Ich brauche einen Taster (keinen Schalter) der den Befehl {WandUhr()} triggert, aber nicht irgendwas auf ein oder aus schaltet. Scheinbar ist es nämlich so, dass wenn ich auf Off klicke die Gesamte Gong Funktion deaktiviert ist. So solls ja nicht sein. Es soll ein Button geben der, egal wie eine optionale Zeitschaltuhr programmiert ist, oder was für Abhängigkeiten da nch mit drin hängen, einmalig den Befehl ausführt und dann nichts merh tut.
Zitat von: Toto1973 am 11 März 2015, 12:31:05
([Wanduhr_dummy:state] eq "on" and [:00]) ({WandUhr()})
DOELSEIF ([:15] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 83 −really−quiet &")})
DOELSEIF ([:30] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 83 −really−quiet &")})
DOELSEIF ([:45] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 83 −really−quiet &")})
attr Wanduhr do always
Wenn ich die obigen Zeilen per copy&paste in die 99_myUtils.pm einfüge bekomme ich beim speichern selbiger folgende Fehlermeldung:
syntax error at ./FHEM/99_myUtils.pm line 64, near "Wanduhr_dummy:"
Zeile 64 entspricht in meiner Utils-Datei die Leerzeile über der ersten Zeile des oben genannten Codes.
Was mache ich falsch? :'(
Zitat von: chr2k am 21 September 2015, 19:24:01
Was mache ich falsch? :'(
Du versucht ein DOIF als sub zu verwenden.
Aber die erste Zeile ([Wanduhr_dummy:state] eq "on" and [:00]) ({WandUhr()})
kommt in dei Utils.pm?
Nein.
In der ersten Zeile wird mit
{WandUhr()}
die sub Wanduhr in der 99_myUtils.pm aufgerufen.
Edith: Das steht aber auf der ersten Seite im ersten Beitrag :o
Und wo gehört diese erste Zeile hin? :-\
Wo die restlichen des DOIF auch hin gehören.
In die Konfig.
Edith: Aber auch DAS steht im ersten Beitrag auf der ersten Seite.
Wie wäre es wenn du dir den Beitrag mal ab der ersten Seite durchlesen anfängst.
Zitat von: Puschel74 am 21 September 2015, 20:20:45
Edith: Aber auch DAS steht im ersten Beitrag auf der ersten Seite.
Wie wäre es wenn du dir den Beitrag mal ab der ersten Seite durchlesen anfängst.
Ich habe mit dem ersten Beitrag meine Gehversuche mit der Wanduhr gemacht. Die ging mal kurzzeitig und dann auf einmal nicht mehr - keine Ahnung wieso.
Also alles was mit der Uhr zu tun hat gelöscht und neu angelegt und nun die "Probleme".
Ich denke, dass ich das DOIF nun richtig definiert und angelegt habe.
Wenn ich nun aber die Uhr mit {WandUhr()} testen will bekomme ich diese Meldung zurück:
Undefined subroutine &main::WandUhr called at (eval 11956) line 1.
Weil - wie die Meldung schon besagt
ZitatUndefined subroutine &main::WandUhr called at (eval 11956) line 1.
a) die sub Wanduhr in der 99_myUtils.pm nicht existiert oder
b) kein reload 99_myUtils gemacht wurde nachdem die sub eingetragen wurde.
Und "lustigerweise" bekomme ich, wenn ich den Code, der in die 99_myutil Datei rein gehört hinein kopiere beim speichern dieser folgende Meldung:
Unmatched right curly bracket at ./FHEM/99_myUtils.pm line 51, at end of line syntax error at ./FHEM/99_myUtils.pm line 51, near "}" syntax error at ./FHEM/99_myUtils.pm line 63, near "}"
Vorher gings auch.
Dann lösch das } vor
sub WandUhr()
Edith: @Toto lösch bitte im ersten Beitrag das erste }
Anfänger können mit der resultierenden Fehlermeldung nichts anfangen.
Zitat von: chr2k am 21 September 2015, 20:37:51
Vorher gings auch.
Wetten das nicht.
Zitat von: Puschel74 am 21 September 2015, 20:40:33
Dann lösch das } vor sub WandUhr()
Muss das { nach sub WandUHr() auch weg?
Zitat von: chr2k am 21 September 2015, 20:43:02
Muss das { nach sub WandUHr() auch weg?
Hab ich das geschrieben :o
Tipp: Lies dir im Wiki mal den Beitrag durch wie man die 99_myUtils.pm anlegt und dann schau dir mal in der 99_Utils.pm an wie eine sub aufgebaut ist.
Zitat von: Puschel74 am 21 September 2015, 20:44:19
Hab ich das geschrieben :o
Nein, aber ich werde doch Fragen dürfen?!
Danke für die Hilfe @Puschel
Zitat von: chr2k am 21 September 2015, 20:50:56
Nein, aber ich werde doch Fragen dürfen?!
Und einen Beitrag der mit der Frage nichts zu tun hat unnötig aufblähen?
Klar darfst du das.
Mist, memo an mich. Nicht immer versuchen zu helfen.
Den Fehler auf der ersten Seite hier im Beitrag habe ich berichtigt!
Danke für den Hinweis
Hallo!
Ich habe meinen Wanduhr mal überarbeitet.
Jetzt ist es Möglich, der Wanduhr einen Parameter für die Lautstärke mit zu geben. Mir war der/die Gong(s) Abends zu laut. Daher nun diese Anpassung.
Der Code für die 99_MyUtils.pm sieht nun so aus:
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume")};
} }
Mit dieser Anpassung werden die Gong-Files alle mit der übergebenen Lautstärke abgespielt.
Zum Aufrufen einfach {WandUhr(Lautstärke)}, wobei Lautstärke durch einen Wert zwischen 0 und 100 zu ersetzen ist, in FHEM eingeben.
Des weiteren wird nun immer zur vollen Stunde der Stunden-Gong abgespielt, um 15 nach der Viertelgong, um 30 nach der Halbgong usw.
Um nun alle 15 Minuten einen Gong zu erhalten, kann man das folgende DOIF verwenden:'
define Wanduhr DOIF ([?10:00-19:59:59] and [+:15]) ({WandUhr(85)})
DOELSEIF ([?20:00-09:59:59] and [+:15]) ({WandUhr(75)})
Bei diesem Beispiel wird zwischen 10:00 und 19:59 Uhr die Wanduhr mit der Lautstärke 85, und von 20:00 bis 09:59 Uhr mit der Lautstärke 75, abgespielt.
Da man ja im Moment die WandUhr nicht testen kann, habe ich noch eine Zeile hinzugefügt:
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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 ($volume == "TEST") {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 80 /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 00) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
} }
Gibt man nun in FHEM {WandUhr("TEST")} ein, kann man den Gong testen. Dieser wird dann mit der Lautstärke 80 abgespielt.
Weitere Änderung:
Ich habe es endlich geschafft, den mplayer in den Hintergrund zu schicken, so das FHEM nicht mehr blockiert wird, solange der Gong abgespielt wird! :-)
Sehr schön!
Muss man das manuell updaten oder ist deine Uhr eingecheckt?
Da es sich ja um kein Modul handelt sondern um Code, muss diese Änderung natürlich manuell vorgenommen werden!
Anzupassen ist da natürlich der Code in der 99_MyUtils.pm, hier einfach die Sub für die Wanduhr löschen und die neue Sub einfügen, und die DOIF, bei welcher man am Besten genau so vorgeht!
Hallo,
kann mir einer sagen warum die Lautsärke sich nicht mehr anpassen lässt? Bis vor ca. 14 Tagen hat die Volume Absenkung in den Abendstunden problemlos funktioniert.
Ich habe keine Fehlermeldung gefunden und die Funktion ist vorhanden. Leider nur einheitlich "laut".
Also da ja über ein Update nichts von meinem Code verändert wird, muss das Problem wo anders liegen.
Vielleicht liegt es eventuell an der Zeitumstellung (ist einfach nur reine Vermutung)?
Wie sieht denn der Code aus, womit Du die Uhr "aufrufst"?
Meiner sieht wie folgt aus:
define Wohnzimmeruhr DOIF ([Wanduhr_dummy] eq "on") (set wz_Lautsprecher on)
DOELSEIF ([Wanduhr_dummy] eq "off") (set wz_Lautsprecher off)
DOELSEIF ([?Wanduhr_dummy] eq "on" and [?10:00:00-19:59:59] and [+:15]) ({WandUhr(83)})
DOELSEIF ([?Wanduhr_dummy] eq "on" and [?20:00:00-09:59:59] and [+:15]) ({WandUhr(75)})
Die ersten beiden Zeilen steuern das ein aus Ausschalten meines Lautsprechers. Die Zeilen 3 und 4 dann die Wanduhr an sich. Die Lautstärke wird ja in der Klammer übergeben!
Hier ist mein 99_myUtils Eintrag:
#Wanduhr
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde -volume $volume")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume")};
} }
Und hier der fhem Eintrag:
#Wanduhr
define Wanduhr_dummy dummy
attr Wanduhr_dummy setList on off
define Wanduhr DOIF ([Wanduhr_dummy] eq "on" and [?10:00:00-19:59:59] and [:00]) ({WandUhr(63)}) DOELSEIF ([Wanduhr_dummy] eq "on" and [?20:00:00-09:59:59] and [:00]) ({WandUhr(25)})
attr Wanduhr do always
Update:
Habe gerde in der LOG diesen Eintrag gefunden.
2016.04.18 12:09:26 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 15.
2016.04.18 12:09:26 1: PERL WARNING: Useless use of addition (+) in void context at ./FHEM/99_myUtils.pm line 31.
2016.04.18 12:09:26 1: PERL WARNING: Subroutine WandUhr redefined at ./FHEM/99_myUtils.pm line 24.
MPlayer svn r34540 (Raspbian), built with gcc-4.6 (C) 2000-2012 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing /opt/fhem/Sound/BigBen.mp3.
libavformat version 53.21.1 (external)
Mismatching header version 53.19.0
Audio only file format detected.
Clip info:
Title: Big Ben
Artist: Troy Rumrich
Album: www.Traummusik.com
Year: 2014
Comment: ?Nur f�r den privaten Gebrauch
Genre: Other
Load subtitles in /opt/fhem/Sound/
==========================================================================
Requested audio codec family [mpg123] (afm=mpg123) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 53.35.0 (external)
Mismatching header version 53.32.2
AUDIO: 44100 Hz, 2 ch, floatle, 128.0 kbit/4.54% (ratio: 16000->352800)
Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio)
==========================================================================
Home directory / not ours.
W: [pulseaudio] core-util.c: Failed to open configuration file '//.pulse//daemon.conf': Permission denied
W: [pulseaudio] daemon-conf.c: Failed to open configuration file: Permission denied
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
Home directory / not ours.
W: [pulseaudio] core-util.c: Failed to open configuration file '//.pulse//daemon.conf': Permission denied
W: [pulseaudio] daemon-conf.c: Failed to open configuration file: Permission denied
AO: [alsa] 48000Hz 2ch floatle (4 bytes per sample)
Video: no video
Starting playback...
Zu Deiner Sub, benutze mal lieber diese hier:
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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 ($volume == "TEST") {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 65 /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 00) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
} }
Das verhindert, das der Raspberry während dem abspielen blockiert. Wenn der Code ausgetauscht wurde, bitte FHEM neu starten und dann kannst Du mit {WandUhr("TEST")} ausprobieren, ob die Sub geht.
Zu Deinem Code des DOIF, das sollte so alles passen.
Nur zum Player, da scheint etwas mit den Rechten nicht zu passen!
W: [pulseaudio] core-util.c: Failed to open configuration file '//.pulse//daemon.conf': Permission denied
Hallo
Ich bin schon seit tagen an der Uhr dran, aber es kommt kein Ton. Habe es auch schon mit
{WandUhr(100)} und
{WandUhr("TEST")}
probiert.
Hier meine Einstellungen:
99_myUtils.pm:
###Wanduhr#######
sub WandUhr($)
{
my($volume)=@_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
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 ($volume == "TEST") {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume 99 /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde < /dev/null >&0 2>&0 &")};
if ($Minuten == 00) {system ("mplayer /opt/fhem/Sound/BigBen.mp3 -volume $volume /opt/fhem/Sound/BigBenStrikes.mp3 -loop $Stunde")};
if ($Minuten == 15) {system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 30) {system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
if ($Minuten == 45) {system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume $volume < /dev/null >&0 2>&0 &")};
} }
define Wanduhr_dummy dummy
attr Wanduhr_dummy room Wanduhr
attr Wanduhr_dummy setList on off
define Wanduhr DOIF ([Wanduhr_dummy] eq "on" and [?08:00:00-21:59:59] and [+:15]) ({WandUhr(100)})\
DOELSEIF ([Wanduhr_dummy] eq "on" and [?22:00:00-07:59:59] and [+:15]) ({WandUhr(75)})
attr Wanduhr do always
Log:
2016.09.22 19:44:07 1: PERL WARNING: Useless use of addition (+) in void context at ./FHEM/99_myUtils.pm line 32.
2016.09.22 19:45:00 2: Wanduhr: {WandUhr(100)}: -1
PERL WARNING: Argument "TEST" isn't numeric in numeric eq (==) at ./FHEM/99_myUtils.pm line 37.
Bin leider nicht so bewandert in Perl ;D Habe mir den Code mal angeschaut, aber nichts gefunden...
Würde mich freuen, wenn mir jemand helfen könnte.
Ich würde gerne zu Weihnachten ein Weihnachtliche Glockenspiel nehmen statt den BigBen. Hat da zufällig jemand was?
Die Idee gefällt mir. Muss ich mich mal umhören, was es da so gibt, an Melodien...
Ich dachte da an einen kurzen Jingle von Last Christmas vom !wham. Wollte da nicht gleich das ganze Lied spielen lassen. Lach.
Ich suche auch schon.
Sehr coole Sache hier! Ich hab das mal auf Sonos umgebaut. Der Code dafür lautet:
sub WandUhr($) {
my ($volume) = @_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
my $i = 1;
my $gong = '|BigBenStrikes|';
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) {
fhem("set Sonos_Esszimmer Speak $volume de |BigBen|");
while ($Stunde >= $i) {
$sound = $sound.' '.$gong;
$i++};
fhem("set Sonos_Esszimmer Speak $volume de $sound");
};
if ($Minuten == 15) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_15|")};
if ($Minuten == 30) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_30|")};
if ($Minuten == 45) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_45|")};
}
}
Weil ich damit aber keine WAF bekomme, habe ich auch das DOIF zum Abspielen geändert:
define Wanduhr_Spielzeit DOIF ([Wanduhr] eq "on" and [?({firstAlarm()})-23:00:01] and [+:15] and [S4mini_Bluetooth] ne "present" and [isHome] eq "on") ({WandUhr(40)})
{firstAlarm()} ist eine Funktion, mit der ich die Uhrzeit des ersten Alarms aus meinem Sonos-Wecker auslese, S4mini_Bluetooth das Handy meiner Frau, dass bei Anwesenheit die Wanduhrfunktion aussetzen, isHome unser Zuhause-Status. Wanduhr selbst ist ein Dummy zum manuellen An- und Abschalten.
Vielleicht kann's jemand brauchen.
Bei mir wird die SONOS Variante leider nicht sauber abgespielt, die mp3's werden gekürzt, die Glockenschläge fallen teilweise ganz aus.
Da ist der WAF eher unterirdisch.
Unabhängig davon.... bzw. was mir aufgefallen ist, muss das nicht
if($Sommerzeit == 1) { $Stunde=$Stunden + 1 };
statt
if($Sommerzeit == 1) { $Stunden + 1 };
lauten?
So bekomme ich einen Fehler weniger im Log.
Die Idee mit Last Christmas fand ich sehr interessant, ich habe da mal was zusammengebaut und hier angehängt.
Gruß Heiko
Cool. Danke Dir. Schaue ich mir morgen mal an.
Stimmt, die Sonos-Variante hakt etwas. Ich hab sie etwas umgebaut, jetzt werden alle mp3's sauber abgespielt:
sub WandUhr($) {
my ($volume) = @_;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Stunde = "";
my $i = 1;
my $gong = '|BigBenStrikes|';
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 = '|BigBen|';
while ($Stunde >= $i) {
$sound = $sound.' '.$gong;
$i++};
fhem("set Sonos_Esszimmer Speak $volume de $sound");
};
if ($Minuten == 15) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_15|")};
if ($Minuten == 30) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_30|")};
if ($Minuten == 45) {fhem("set Sonos_Esszimmer Speak $volume de |BigBen_45|")};
}
}
Der Trick besteht darin, erst das komplette mp3-file über die while-Schleife zusammen zu bauen und dann einmal auszugeben.
Zitat von: Resyncer am 02 Dezember 2016, 21:25:55
Unabhängig davon.... bzw. was mir aufgefallen ist, muss das nicht
if($Sommerzeit == 1) { $Stunde=$Stunden + 1 };
statt
if($Sommerzeit == 1) { $Stunden + 1 };
lauten?
nein
if($Sommerzeit == 1) { $Stunden += 1 };
Ich komm nicht drauf...
if ($Minuten == 00) {system ("mplayer /opt/fhem/Sound/BigBenStrikes.mp3 -volume 60")};
Dies funktioniert einwandfrei.
Aber der Code
if ($Minuten == 01) {fhem("set LED_Herz on")};
schaltet nicht das gewünschte Device in FHEM auf on.
Auch ein ändern mit Leertasten zwischen der jeweiligen ( und ) und dem " oder auch nach {fhem oder auch in Kombination schaffen keine Abhilfe.
Im Wikientrag über die MyUtils steht es in diversen Beispielen so
if ($Minuten == 01) {fhem( "set LED_Herz on" )};
Aber das geht bei mir nicht. Wie oben geschrieben.
Weiß da jemand bitte Rat? Danke.
Gruß
Christian
Hallo,
ist jetzt schon das zweite Jahr mit Wanduhr zur Weihnachtszeit bei mir.
Damals hatte ich die Steuerung meiner Wanduhren (1x mit Glockenspiel, 1x mit Big Ben) über Ftui mit drei Dummy's (Switches) umgesetzt. Dummy 1 hat das Glockenspiel ein/aus, Dummy 2 den BigBen ein/aus und der Dummy 3 die Funktion Wanduhr über das DOIF ein oder aus geschaltet. Nicht optimal aber erfüllte seinen Zweck.
Ist ja schon paar Tage "Weihnachtszeit" aber gar nicht mehr an die Wanduhr gedacht und somit nicht eingeschaltet.
Auch kann man sich vorstellen das es nicht die beste Lösung zur Steuerung der Wanduhren war.
Hab mir dazu, mit einem Jahr mehr Erfahrung, paar Gedanken gemacht. Herausgekommen ist eine Steuerung der Wanduhren über das FTUI mit nur einem Switch (und auch nur einem Dummy) inklusive automatischem einschalten des Glockenspiel zur Weihnachtszeit.
Mir gefällt die Lösung für zwei oder mehr Routinen (Wanduhren) und das automatische um/einschalten zur Weihnachtszeit sehr gut darum wollt ich sie teilen.
Mehr oder weniger ist die Umsetzung auch schnell gemacht. Der Dummy aus dem ersten Post wird wie folgt angepasst:
defmod du_Wanduhr dummy
attr du_Wanduhr room Wanduhr
attr du_Wanduhr setList state:Glockenspiel,BigBen,off
attr du_Wanduhr webCmd Glockenspiel:BigBen:off
setstate du_Wanduhr Glockenspiel
setstate du_Wanduhr 2017-12-10 13:14:59 state Glockenspiel
Das DOIF sieht nun so aus:
defmod 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)})
attr doif_du_Wanduhr do always
attr doif_du_Wanduhr room Wanduhr
setstate doif_du_Wanduhr initialized
setstate doif_du_Wanduhr 2017-12-10 13:38:06 Device TV
setstate doif_du_Wanduhr 2017-12-10 12:17:57 cmd 0
setstate doif_du_Wanduhr 2017-12-10 13:38:06 e_TV_STATE on
setstate doif_du_Wanduhr 2017-12-10 13:14:59 e_du_Wanduhr_STATE Glockenspiel
setstate doif_du_Wanduhr 2017-12-10 12:17:57 state initialized
setstate doif_du_Wanduhr 2017-12-10 12:17:57 timer_01_c01 11.12.2017 10:00:00
setstate doif_du_Wanduhr 2017-12-10 12:17:57 timer_02_c01 10.12.2017 20:00:01
setstate doif_du_Wanduhr 2017-12-10 13:30:00 timer_03_c01 10.12.2017 13:45:00
setstate doif_du_Wanduhr 2017-12-10 12:17:57 timer_04_c02 11.12.2017 10:00:00
setstate doif_du_Wanduhr 2017-12-10 12:17:57 timer_05_c02 10.12.2017 20:00:01
setstate doif_du_Wanduhr 2017-12-10 13:30:00 timer_06_c02 10.12.2017 13:45:00
Und weils hier (https://forum.fhem.de/index.php/topic,80713.msg727743.html#msg727743) die Tage um das schalten zur Weihnachtszeit ging hab ich noch ein zusätzliches DOIF definiert daß das Glockenspiel zur richtigen Zeit (hier ab 25.11. - 08.01.) aktiviert, sonst den BigBen.
defmod Weihnachtszeit DOIF (([00:00] or ["^global$:^MODIFIED $SELF$"]) and ($md ge "11-25" or $md le "01-08")) (set du_Wanduhr Glockenspiel) DOELSE (set du_Wanduhr BigBen)
attr Weihnachtszeit cmdState on|off
attr Weihnachtszeit do always
attr Weihnachtszeit room Wanduhr
setstate Weihnachtszeit on
setstate Weihnachtszeit 2017-12-10 13:14:59 Device global
setstate Weihnachtszeit 2017-12-10 13:14:59 cmd 1
setstate Weihnachtszeit 2017-12-10 13:14:59 cmd_event global
setstate Weihnachtszeit 2017-12-10 13:14:59 cmd_nr 1
setstate Weihnachtszeit 2017-12-10 13:14:59 state on
setstate Weihnachtszeit 2017-12-10 13:14:59 timer_01_c01 11.12.2017 00:00:00
Der Switch im FTUI (siehe auch Bilder im Anhang zu den jeweiligen Status ;D) :
<header>Wanduhr</header>
<div class="hbox items-space-around">
<div class="vbox">
<div class="large"
data-type="switch"
data-device="du_Wanduhr"
data-states='["Glockenspiel","BigBen","off"]'
data-set-states='["BigBen","off","Glockenspiel"]'
data-colors='["black","black","#808080"]'
data-background-colors='["cornflowerblue","cornflowerblue","#3D4C66"]'
data-icons='["fa-bell-o","fa-university","fa-power-off"]'>
</div>
<div data-type="label"
data-device="du_Wanduhr"
data-get="state"
class="cell darker">
</div>
</div>
</div>
Schönen 2.Advent
Das sieht ja schon einmal super aus. Hast du den Code in der 99_MyUtils.pm auch noch verändert bzw. angepasst? Auf Seite 1 wurde nur die sub WandUhr($) definiert. Oder habe ich da etwas übersehen. ;)
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)})
Hallo nochmal,
meiner kleinen Nichte würde ich so auch gerne die Uhr etwas näher bringen, allerdings auf nem Echo-Device (siehe hier (https://forum.fhem.de/index.php/topic,77458.0.html)).
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")};
}
}
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 &")};
An deiner mplayer-Variante bin ich dran aufgrund dieses (https://forum.fhem.de/index.php/topic,80865.msg729204.html#msg729204) 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.
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!
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
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.
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