vermutlich übersehe ich gerade etwas oder blicke es nicht.
Ich möchte einen Alexa Befehl über IPS ausführen der alle Lichter ein-/ausschaltet, wenn möglich auch alle dimmt.
Nun habe ich aber Geräte über HMIP und Hue in IPS eingebunden, vermutlich kommen demnächst noch weitere
Module/Gerätetypen hinzu (leider).
Wie müsste ich dies anstellen, wie müsste ein Ereignis aussehen das dies schaltet?
ich würde alle Lichter in IPS-Alexa anlegen und diese dann in der Alexa-App in eine Gruppe fassen. Diese Gruppe schaltet dan auf Befehl alle enthaltenene Lichter ein oder aus (so hab ich es bei mir gemacht).
Es gibt sogar standardmäßig eine Funktion, die man aktivieren kann in der Alexa-App. Nennt sich „Alexa, gute Nacht“ und schaltet alle gelisteten Lampen aus.
Ja die Option gäbe es sicherlich auch, als reiner Sprachbefehl auch ok.
Aber zusätzlich über ein Webfront lässt es sich dann nicht schalten, als Sekundärlösung.
Alexa ist hier das Ziel aber es sollte auch „mal“ über das Webfront schaltbar sein (wenn Alexa einem nicht versteht, Krank, heißer,…).
Mittels Script alle Lichter schalten und dann kann man das Script in dem Alexa Modul unter „Expertenoptionen“ als Szene einbauen. Somit kann man es per IPS b edienen oder als Sprachbefehl ausführen.
Script uns ich, ohje.
Lerne zwar immer wieder neu dazu aber damit stehe ich, noch, auf Kriegsfuß.
Hab das Skript auf mich angepasst, glaube ich mal.
Wie bekomme ich die Hue da rein?
Was muss ich wo angeben?
Und woher weiß das Script ob das meine HMIP ist?
<?
/* ----------------------------------------------------------------------
Alle Lichter aus / anschalten
Dieses Script ermittelt alle Lichter anhand eines Profils und schaltet
diese ein bzw. aus.
Wird das Skript normal aufgerufen, schaltet es aus. Über runScriptEX kann
aber auch der Wert mitgegeen werden:
IPS_RunScriptEx(<SCRIPTID>, Array("VALUE"=>true, "FORCE"=>true);
$c_profiles: string, Variablenprofil das geprüft werden soll
$c_force: true/false, Wenn TRUE wird auf jeden Fall geschalten, egal
ob der aktuelle Wert in IPS bereits den Zielwert hat.
Bei Systemen ohne Rückkanal notwendig.
$c_delay: integer, Millisekunden Pause bis zum nächsten Schaltvorgang
----------------------------------------------------------------------*/
$c_profiles[] = "Licht";
$c_profiles[] = "Lichter";
$c_force = false; // S.o.
$c_delay = 250;
/* End of configuration ------------------------------------------------*/
DEFINE("HOME_MATIC","{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
// status Lesen -
$stat = @$_IPS['VALUE'];
settype($stat, "boolean");
$force = (isset($_IPS['FORCE']))? $_IPS['FORCE'] : $c_force;
settype($force, "boolean");
// Alle Lichter ausschalten (mit Profil Licht!)
$a_var = IPS_GetVariableList();
foreach($a_var as $varid){
$var_info = IPS_GetVariable($varid);
$var_prof = (!empty($var_info["VariableCustomProfile"]))?
$var_info["VariableCustomProfile"] :
$var_info["VariableProfile"];
$var_data = getValue($varid);
if(in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
// Übergeordnete Instanz ermitteln.
$instid = IPS_GetParent($varid);
$inst_info = IPS_GetInstance($instid);
switch($inst_info["ModuleInfo"]["ModuleID"]){
case HOME_MATIC:
HM_WriteValueBoolean($instid, "STATE", $stat);
break;
} // Switch
IPS_Sleep($c_delay);
} // if
}
?>
Zusätzlich habe ich noch einen Schalter in die Webfront integriert um Ohne Alexa schalten zu können.