NEWS
Szene Kino / Prüfung ob gerät gebootet ist
-
Hallo Leute habe eine Szene / Script geschrieben, welches meinen Kinoabend einleitet.
Es funktioniert und macht was es soll, möchte es aber etwas stabiler bzw. professioneller laufen lassen.
Speziell geht es um die Prüfschleife . Der nächste schritt wäre sich mal mit der Funktion 'for' auseinander zu setzen.
Aktuel prüfe ich nur ob nach einer Zeit X mein Multimediaplayer eingeschaltet ist und wenn nicht sende ioch das Signal nocheinmal.
Schöne fände ich es wenn ich die Prüfung nun in einer Schleife durchlaufen lasse, bis das Gerät eingeschaltet ist.
Der Knackpunkt ist, dass mein Multimediagerät nach dem es mit Strom versorgt wird direkt bootet und wenn niemand die Fernbedienung nach dem first boot bedient nach 15 Sekunden wieder runter fährt. diesen Zeitpunkt habe ich abgepasst und lasse das nach einer Zeit X wieder überprüfen und schalte nochmal ein, wenn es nicht geklappt hat…
Das geht bestimm auch schöner...
Jemand ne Idee? Oder ist irgendwo das 'for' erklärt?
//Scene Kino Wohnzimmer createState('javascript.0.Szenen.Multimedia.Kino', {def: 'false', type: 'boolean', name: 'Kino'}); createState('javascript.0.Szenen.Multimedia.Kino_PruefHDD', {def: 'false', type: 'boolean', name: 'Pruefung ob HDD an'}); var logging = true; const id1 = 'javascript.0.Szenen.Multimedia.Kino'; //Szene Start Stop const id2 = 'javascript.0.Status.Brandmelder.Anzahl_melden_Brand'; // Brand const id3 = 'javascript.0.alarm.out.alarm_strobe'; // Alarm const id5 = 'hm-rpc.0.PEQ0196501.1.STATE';//Licht Couch const id7 = 'wiffi-wz.0.root.192_168_1_52.w_lux';// Helligkeit const id8 = 'javascript.0.Rolladen.Couch.Automatik';// Automatik Rolladen Couch const id9 = 'hm-rpc.0.OEQ1299123.1.LEVEL';//Behanghöhe const id10 = 'sonoff.0.Multimedia_4CH_Wohnzimmer.POWER1';//TV const id11 = 'sonoff.0.Multimedia_4CH_Wohnzimmer.POWER3';//Receiver const id12 = 'sonoff.0.Multimedia_4CH_Wohnzimmer.POWER4';//HDD Player const id13 = 'sonoff.0.Multimedia_4CH_Wohnzimmer.POWER2';//DVB-T const id14 = 'harmony.0.Harmony Hub.Samsung TV.PowerOn';//TVon Harmony const id15 = 'harmony.0.Harmony Hub.Samsung TV.InputHdmi2';//TVKanal Harmony const id16 = 'harmony.0.Harmony Hub.Samsung TV.PowerOff';//TVoff Harmony const id17 = 'harmony.0.Harmony Hub.Samsung TV.VolumeDown';//TV leiser Harmony const id18 = 'harmony.0.Harmony Hub.Onkyo AV-Empfänger.PowerOn';//Receiver on Harmony const id19 = 'harmony.0.Harmony Hub.Onkyo AV-Empfänger.PowerOff';//Receiver off Harmony const id20 = 'harmony.0.Harmony Hub.Onkyo AV-Empfänger.InputTv/Cd';//Receiver Input TV/CD Harmony const id21 = 'harmony.0.Harmony Hub.Xtreamer Multimedia-Player.PowerToggle';//HDD on off Harmony const id22 = 'harmony.0.Harmony Hub.Xtreamer Multimedia-Player.Menu';//HDD Menue Button const id23 = 'ping.1.tinkerboard.192_168_1_39';//ping Prüfung ob an const id24 = 'javascript.0.Szenen.Multimedia.Kino_PruefHDD';// Prüfung // Licht aus Block function KinoLicht() { var Szene = getState(id1).val; var Brand = getState (id2).val; var Alarm = getState (id3).val; var LichtCouch = getState(id5).val; if(Szene === true && Brand === 0 && Alarm === false){ if(LichtCouch)setStateDelayed(id5, false, 2*1000); //Licht Couchtisch Wohnzimmer if(logging)log('Szene Kino aktiv Licht aus'); } } // Rolladen runter Block function KinoRollo() { var Szene = getState(id1).val; var Brand = getState (id2).val; var Alarm = getState (id3).val; var Helligkeit = getState(id7).val; var BehanghoeheCouch = getState(id9).val; if(Szene === true && Brand === 0 && Alarm === false && Helligkeit >1500){ setState(id8,false);//Rollo Couch Automatik if(BehanghoeheCouch >0)setStateDelayed(id9, 0 , 4*1000); if(logging)log('Szene Kino aktiv Rollo Couch Automatik deaktiviert und geschlossen'); }else{ if(Szene===false){ setState(id8,true);//Rollo Couch Automatik if(logging)log('Szene Kino inaktiv/deaktiviert Rollo Couch wieder auf Automatik '); } } } // Multimedia Geräte ein Block function KinoMedia() { var Szene = getState(id1).val; if(Szene===true){ setStateDelayed(id12,true,5*1000);//HDD Player Power ein setStateDelayed(id11,true,6*1000);//Receiver Power ein setStateDelayed(id10,true,7*1000);//TV Power ein setStateDelayed(id18,200,9*1000);//Receiver on Harmony setStateDelayed(id20,200,14*1000);//Receiver Input TV/CD Harmony setStateDelayed(id22,1000,112*1000);// HDD Menue button um Neustart zu verhindern setStateDelayed(id24,true,180*1000);// State zum prüfen if(logging)log('Szene Kino aktiv Multimedia Geräte ein'); sendTo("paw.0",'all',{send: 'say', text: 'Szene Kino wird eingeschaltet. Bitte warten bis die Geräte hochgefahren sind'}); }else{ setStateDelayed(id16,200,1*1000);//TV Power off Harmony setStateDelayed(id19,200,2*1000);//Receiver Power off Harmony setStateDelayed(id21,200,3*1000);//HDD Power off Harmony setStateDelayed(id10,false,6*1000);//TV Power off setStateDelayed(id11,false,9*1000);//Receiver Power off setStateDelayed(id12,false,29*1000);//HDD Power 0ff setState(id24,false);// State zum prüfen if(logging)log('Szene Kino inaktiv/deaktiviert Multimedia Geräte aus'); sendTo("paw.0",'all',{send: 'say', text: ' Szene Kino wird ausgeschaltet.'}); } } function Pruef() { var ping = getState(id23).val; if(ping===true){ if(logging)log ('HDD Player nach dem booten eingeschaltet geblieben'); }else{ setStateDelayed(id21,2000,60*1000); if(logging)log ('HDD Player wurde nach dem booten erneut eingeschaltet da er heruntergefahren war'); } } function TV() { var pingHDD = getState(id23).val; var SzeneHDD = getState(id1).val; if (pingHDD === true && SzeneHDD === true){ setState(id14,200);//TV on Harmony setStateDelayed(id15,200,10*1000);//TV umschalten auf HDMI 2 Harmony setStateDelayed(id17,4000,12*1000);// TV leise Harmony setStateDelayed(id13,false,14*1000);//DVB-T Power aus if(logging)log ('TV ein und umgeschaltet nachdem der HDD Player hochgefahren ist'); } } //Szene Trigger on(id1, function(dp) { KinoLicht(); KinoRollo(); KinoMedia(); }); //Prüf Trigger on HDD an on(id24, function(dp) { Pruef(); }); //TV Trigger wenn HDD an on(id23, function(dp) { TV(); });
-
> Es funktioniert und macht was es soll, möchte es aber etwas stabiler bzw. professioneller laufen lassen.
ist ne Aussage..
-
> Es funktioniert und macht was es soll, möchte es aber etwas stabiler bzw. professioneller laufen lassen.
ist ne Aussage..
Ja wenn ich so drüber nachdenke, liest es sich bescheuert. stimmt…
ich möchte halt versuchen das automatische runter fahren des HDD Player nach der Spannungszufuhr und die Programmierte Kontrolle ob gebootet, etwas stabiler realisieren. Wenn es aus irgendeinem Grund mal etwas läger dauert oder das IR signal der Harmony mal nicht durchkommt, weil der Hund gerade mal wieder davor steht usw..Dann klappt es halt eben nicht wie programmiert..
Deshalb die Frage ob das mit ner Schleife stabiler zu programmieren ist...