NEWS
Warte bis "true" dann führe Aktion aus.
-
Hallo,
gibte es eine Möglichkeit über Skript (gerne auch nur über Szenen) auf das vollständige Starten meines Onkyo Receivers zu warten, bis sich dieser über Netzwerk (feste IP) meldet?
Ich hätte gerne, dass wenn ich eine Szene starte, z.B. "TV an" das dann der Befehl an "onkyo" nicht mehrfach gesendet werden muss (da ja der Receiver zuvor aus gewesen sein kann, oder aber auch an und z.B. gerade die Szene "Musik" eingeschalten war.
Jetzt habe ich das so gelöst, dass bei der jeweiligen Szene der Befehl sofort und einmal 45 Sekunden später gesendet wird. Das klappt über den Onkyo Adapter zu 70% und über den Harmony Adapter zu 0% (da hier der gleiche Befehl immer nur einmal ausgeführt werden kann).
Deshalb wäre es perfekt, wenn ich den Befehl an Onkyo "schalte auf HDMI1" erst senden könnte, wenn dieser auch wirklich für den Empfang bereit ist.
Könnte mir dabei jemand helfen?
LG Enrico
-
Jetzt habe ich das so gelöst, dass bei der jeweiligen Szene der Befehl sofort und einmal 45 Sekunden später gesendet wird. Das klappt über den Onkyo Adapter zu 70% und über den Harmony Adapter zu 0% (da hier der gleiche Befehl immer nur einmal ausgeführt werden kann). `
Hi, ich verstehe diese stelle nicht in deinem post ?
Bei mir zuhause ist die logik (was ist an und aus) im Harmony, der weis also welche geraete an sind.
In Harmony habe ich activiteiten definiert und diese steuern perfect alle IR geraete an, mit iObroker steure ich diese activitaeten and und baue nicht die Harmony logik nach in iObroker.
Wie benutzt du den harmony ? Ich habe z.b. Harmony + Onkyo receiver + TV + Schuessel.
Activitaet = Tv Schaun / Schuessel Schaun / Musiek Hoeren (diese startet die richtigen gerate)
Steuern= Per VIS wert im harmony objecten der activiteit auf 1 schalten.
Da Harmony die lautstaerke nicht kennt loese ich das mit dem onkyo adapter, der gibt mir den genauen wert der rest geht alles ueber Harmony
Greetz,
Dutch
-
Ah ok. Ich hätte vielleicht dazu sagen/schreiben sollen, dass bei mir alle Geräte über Homematic stromlos geschaltet werden. Daher sie werden nicht über Harmony oder Onkyo Adapter auf Standby geschaltet. Wenn ich jetzt eine Szene aus dem Zustand "aus" starte, dann dauert es, bis sich der Receiver im Netzwerk angemeldet hat. Und das wird der Steuerung zum Verhängnis. Alle Befehle werden stumpf gesendet und eben nicht überprüft, ob sie auch angekommen sind. Und das würde ich gerne ändern. Aber nicht damit, alle Geräte (auch nicht eins) im Standby zu lassen.
MfG Enrico
-
Ah ok. Ich hätte vielleicht dazu sagen/schreiben sollen, dass bei mir alle Geräte über Homematic stromlos geschaltet werden. Daher sie werden nicht über Harmony oder Onkyo Adapter auf Standby geschaltet. Wenn ich jetzt eine Szene aus dem Zustand "aus" starte, dann dauert es, bis sich der Receiver im Netzwerk angemeldet hat. Und das wird der Steuerung zum Verhängnis. Alle Befehle werden stumpf gesendet und eben nicht überprüft, ob sie auch angekommen sind. Und das würde ich gerne ändern. Aber nicht damit, alle Geräte (auch nicht eins) im Standby zu lassen.
MfG Enrico `
AH ok das erklaehr die Harmony geschichte….
Dan fallen mir nur noch 2 sachen ein fuer dein scenario/frage: Mit festen delay arbeiten oder den status irgendwo herbekommen. Dazu 2 moeglichkeiten:
-
Du baust die logik auf deinem HomeMatic geraet (wen AN kein delay, wen aus schalte ein ... delay ... schalte onkyo)
-
Logic mit nem PING und erst wen der PING den onkyo findet schalten
Greetz,
Dutch
-
-
Gute Idee. Nur wie setze ich das um? Also brauche ich ja eine Funktion: Wenn "True" oder "Ping" dann "schalte um auf HDMI3". Funktioniert das irgendwie in einer Szene? oder geht das mit script?
MfG Enrico
-
Gute Idee. Nur wie setze ich das um? Also brauche ich ja eine Funktion: Wenn "True" oder "Ping" dann "schalte um auf HDMI3". Funktioniert das irgendwie in einer Szene? oder geht das mit script?
MfG Enrico `
Wert auslesen geht am besten per Script zB per blockly.
Bin gerade unterwegs wen du brauchst/möchtest kan ich dir in der Stunden ein blockly Beispiel geben dazu
(Also logic der Aktion basiert auf Status des hm Schalter und Dan wohl/kein delay für ausführen Aktivität)
Mit Ping bin ich leider überträgt, das müsste auch per Script gehen weiß aber nicht wie zu realisieren.
Denke Mal Schalter + feste Zeit ist auch zuverlässiger da ich davon ausgehe das der Receiver eventuell bereits auf ein Ping reagiert befohr er einen IT Switch acceptieren kan
Greetz
Dutch
Sent from my iPhone using Tapatalk
-
das Angebot nehme ich gerne an. So ein Beispiel würde mir doch sehr helfen.
MfG Enrico
-
- Logic mit nem PING und erst wen der PING den onkyo findet schalten `
Dafür gibt es den ioBroker.ping Adapter. Den ping-Erfolg kann man einfach http://forum.iobroker.net/viewtopic.php?f=21&t=5914#p60755 auswerten.
- Logic mit nem PING und erst wen der PING den onkyo findet schalten `
-
- Logic mit nem PING und erst wen der PING den onkyo findet schalten
Dafür gibt es den ioBroker.ping Adapter. Den ping-Erfolg kann man einfach [http://forum.iobroker.net/viewtopic.php?f=21&t=5914#p60755](http://forum.iobroker.net/viewtopic.php?f=21&t=5914#p60755) auswerten.
Danke Paul hab ich total ubersehen in aller eile !
das Angebot nehme ich gerne an. So ein Beispiel würde mir doch sehr helfen.
MfG Enrico `
Machen wir dafuer gibt es ja communitys
Also hier mal ein blockly wobei ich ganz einfach den status eines HM schalters ueberpruefe ober er an oder aus ist.
Ist der schalter an = direckt commando auf wert fuer Onkyo receiver
Ist der Schalter aus = Delay beim einschalten des onkyo
Hier der code um diesen block in dein system zu kopieren:
!
<block xmlns="http://www.w3.org/1999/xhtml" type="controls_if" id="?5f2Q;%s3J)j`=w+(JJm" x="113" y="112.99999999999994"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_compare" id="qcKV[)q6u}?V#KQ=%Z9^"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Q@vB@|0x82t1MV(4_K#D"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ0165864.2.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="Mt^s4uN(2xfLS{3s,#cC"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="update" id="4a[{alj:Vq2aGq@!|n[~"><mutation delay_input="false"></mutation> <field name="OID">harmony.0.Woonkamer.Onkyo_AV_Receiver.PowerOn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="gA)m;Nv-1-4JRZCz{)w="><field name="TEXT">1</field></block></value> <next><block type="comment" id="{=BTv2=d]A!Y8yG^:I4]"><field name="COMMENT">Bei kontrolle schalter = AN kein delay schalte</field></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="M]xH9[ITv+6Nc{,Kc1+F"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="6xrYTG:3rg=YzM`u9-_w"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.MEQ0165864.2.STATE</field></block></value> <value name="B"><block type="logic_boolean" id="7Lpn`xX+)/].)XML6/qo"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO1"><block type="comment" id="~6?Ql)MAmo);:Y3d!b+5"><field name="COMMENT">Bei kontrolle schalter = AUS schalte mit delay</field> <next><block type="timeouts_settimeout" id="^tFK[S8%S)zp%d5;,r-f"><field name="NAME">timeout</field> <field name="DELAY">1000</field> <statement name="STATEMENT"><block type="update" id="kU~2dFzbn3M5@__qyh4^"><mutation delay_input="false"></mutation> <field name="OID">harmony.0.Woonkamer.Onkyo_AV_Receiver.PowerOn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="6!J?[c)l#ii*_{;b}|yf"><field name="TEXT">1</field></block></value></block></statement></block></next></block></statement></block> !
Und als script:
var timeout; if (getState("hm-rpc.0.MEQ0165864.2.STATE").val == true) { setState("harmony.0.Woonkamer.Onkyo_AV_Receiver.PowerOn"/*Onkyo_AV_Receiver:PowerOn*/, '1', true); // Bei kontrolle schalter = AN kein delay schalte } else if (getState("hm-rpc.0.MEQ0165864.2.STATE").val == false) { // Bei kontrolle schalter = AUS schalte mit delay timeout = setTimeout(function () { setState("harmony.0.Woonkamer.Onkyo_AV_Receiver.PowerOn"/*Onkyo_AV_Receiver:PowerOn*/, '1', true); }, 1000); }
Pass aber bitte auf dies ist nur ein teil der loesung naemlich logik ueberpruefe den statu der steckdose und schalte demnach den verstaerker.
Jetzt musst du noch:
-
Bestimmen wie du dieses script startest, z.b. eine variable anlegen welche due mit scene adapter auf true setzt. Javascript reagiert dan z.b. auf diese variabele
-
Wen in deiner scenen logic auch das einschalten der steckdose aufgenommen ist, muss dieses script natuerlich davor laufen
Da ich deine situation nicht genau kennen etwas schwierig genau die schritten oder ein end-to-end loesung als beispiel zu geben.
Ich gehe jetzt mal dumweg davon aus das dus alles mit scenen geschaltet has und nur logic fuer delay einschalen verstaerker hinzufuegen moechtest ?
Es waere auch logissch die stekdose in der ElseIf einzubauen.
Den trigger/art von script und in welche kombination haengt von deinen wunsch und realisierung ab
Also:
-
Mach dir einen plan wie deine scenario aussieht und unter welchen bedingungen was gemacht werden soll
-
Ist dir egal op script/blockly oder scene oder hast du da wuensche ? Wen ja macht dir nen plan was wohl und nicht geht z.b. scene und anders geloest werden muss (wie if/then delay)
-
Definieren was dein trigger sein wird, ein script muss auch gestartet werden das geht z.b. per variabelen aenderung,
PS: mit scene kannst du auch ein script an oder ausschalten, z.b. die blocke welche ich gepostet haben.
Dan verlegtst du das einschalten des receiver auf ein script, diesen script activierst du mit deiner scene und am ende noch block hinzufuegen script wieder aus.
habe nochmal nachgedacht ueber den ping, das wird nicht gehen.
Bei mir getested und wie befuerchtet is der ping schneller da als das onkyo auf ein IR signal reagiert. Da er aber immer glaich lang zum starten brauch ist ein fester delay schon OK denke ich mal ?
Greetz,
Dutch
- Logic mit nem PING und erst wen der PING den onkyo findet schalten