Hauptmenü

eigenartiges Phänomen

Begonnen von Kharim, 19 Februar 2016, 20:24:05

Vorheriges Thema - Nächstes Thema

Kharim

Hallo Zusammen,

habe hier ein (für mich)  recht eigenartiges Phänomen:

*20:18:00 {
if (ReadingsVal("Wetter", "temp_c", "") > -1 && (ReadingsVal("Wetter", "fc1_low_c", "") < 2 || ReadingsVal("Wetter", "fc2_low_c", "") < 2) ){
fhem("set TV pause");
system ("cvlc --play-and-exit /Sounds/frost.mp3");
fhem("sleep 4; set TV play");
}
}


Ich frage hier die aktuelle Temperatur (>-1) und die angesagte Min Temp von heute und Morgen ab (<2).
Wenn dies der Fall ist wird der folgende Code ausgeführt - soweit ok.

fhem("set TV pause");
system ("cvlc --play-and-exit /Sounds/frost.mp3");
fhem("sleep 4; set TV play");

Nun passiert aber folgendes:
Ohne das Sleep erfolgt die mp3 Wiedergabe und danach ein ultra kurzes Pause/Play.
Mit dem Sleep erfolgt eine m3 Wiedergabe und erst DANACH eine 4 Sekunden Pause in der Wiedergabe.....

Warum in aller Welt?
Ich will eigentlich den TV pausieren, die mp3 Wiedergeben und danach den TV weiter laufen lassen....


Ich hoffe ihr könnt helfen.
Kharim
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

crusader

Das http Kommando an den TV wird zunächst nur nur in eine Warteschlange gestellt.

Die würde auch ziemlich zügig abgearbeitet werden,  wenn du fhem nicht mit einem brutalen system-Aufruf blockieren würdest.

Das 'Zauberzeichen' & wird helfen.

Kharim

Verdammt, das kommt davon wenn man nicht den "Original-Code" im Beitrag schreibt, sondern den letzen Versuch  :o

Original hatte ich das & drin, aber ohne Sleep -> Dennoch das benannte Problem.
Daher der nächste Versuch ohne & um eben zwischen Pause und Play bewusst zu blockieren.
Nun mit Sleep und & funktioniert es soweit, wenn ich das Sleep der mp3 Länge anpasse.

Geht das auch eleganter? Also ohne ein händisches Anpasen der Sleep-Länge an die Mp3 Länge?
Wie müsste eine Befehlsstruktur aussehen, die die Befehle wirklich nacheinander ausführt,
(Sozusagen erst Mp3 Wiedergeben wenn Pause gesetzt, Erst Play wenn mp3 zu ende...)

Danke
Kharim
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)

crusader

#3
Zitat von: Kharim am 20 Februar 2016, 15:50:18

Geht das auch eleganter? Also ohne ein händisches Anpasen der Sleep-Länge an die Mp3 Länge?

...

Klar.
Schreibe ein Shell-Script, welches den vlc-player aufruft (ohne &) und anschließend eine Fertigmeldung an fhem absetzt:


cvlc --play-and-exit /Sounds/frost.mp3
/opt/fhem/fhem.pl 7072 "trigger global VLC_Stop"


Das script rufst Du in Deinem system-Aufruf (mit &) auf baust Dir ein zweites 'notify', welches auf 'VLC_Stop' reagiert und das TV wieder einschaltet.

Ob das eleganter ist, liegt im Auge des Betrachters.

Kharim

Ein sehr interessanter Gedanke.
Du gibst sozusagen die mp3 extern wieder und sendest dann ein Signal von extern ins Fhem hinein?!

Wie ist das /opt/fhem/fhem.pl 7072 "trigger global VLC_Stop" zu verstehen?
Ich kenne trigger nur in Form von trigger Schalter ON/OFF. Das würde ja bedeuten global müsste eine  Variable sein?
Global ist doch aber eine Gruppe/Raum/Bereich in Fhem oder?

(Gibts dazu Lesestoff / Anleitungen? Habe auf Anhieb nichts gefunden.)

Dank dir,
Kharim
Raspberry Pi 2 + Minibian + 2x MAX Cube CUN (868/433Mhz) + Thermostate + Fensterkontakte + Taster+RGB-LED Band über pigpiod + TFA Sensoren 30.3169/3125
Raspberry Pi 2 + Minibian +Z-Wave (USB) + Bewegungsmelder + Fensterkontakt + Sirene + SMS Steuer-/Benachrichtigung (ohne Internet)