Hi Andreas,
hab ich mal gemacht:
dann hört man den Gong und die Lampe blinkt duaerhaft „rot“.
- Frage, wo in den Script kann ich angeben welche Gong/MP3 abgespielt werden soll und wo ist angegeben, welche LED Farbe blinken soll, hier das Script aus dem Workflow:
<?php
/* =====================================================================================================
*
* IPSWorkflow Script
*
* Dieses Skript wurde von einem Workflow des IPSStudio erzeugt, bitte nehmen Sie keine Änderungen
* an dem Skript vor, da dieses beim nächsten Speichervorgang ansonsten wieder überschrieben werden.
*
* Generiert
* at: 30.09.2018 16:08:37
* von: IPSStudio
* ID: 15535 /*[Alarm_scharf]*/
*
* Benutzte Objekte:
* 29799 /*[Geräte\Diele_EG\MP3-Tür_Ton]*/ - Geräte.Diele_EG.MP3-Tür_Ton
* 24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ - Geräte.Diele_EG.MP3-Türgong_Licht
*
* Generierte Ereignisse:
* 36046 /*[Alarm_scharf\Bei Aktualisierung M2]*/ - Alarm_scharf.Bei Aktualisierung M2
*
* ===================================================================================================== */
$executionID = round(microtime(true)*1000)-(IPS_GetKernelStartTime()*1000);
SendDebug($_IPS['SELF'], 'S||||'.$executionID, '', 0);
$M2 = new IPSEntityModuleOnUpdate($_IPS, 36046 /*[Alarm_scharf\Bei Aktualisierung M2]*/);
$M1 = new IPSEntityInstance($_IPS, 29799 /*[Geräte\Diele_EG\MP3-Tür_Ton]*/);
$M3 = new IPSEntityInstance($_IPS, 57694 /*[Geräte\Handsender\Handsender_scharf Jens]*/);
$M5 = new IPSEntityInstance($_IPS, 24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/);
if ($M3->Evaluate()) {
SendDebug($_IPS['SELF'], 'M3|PRESS_SHORT|M2|SetValue|'.$executionID,$M3->GetValue('PRESS_SHORT'),0);
$M2->SetValue($M3->GetValue('PRESS_SHORT'));
}
if ($M2->Evaluate()) {
SendDebug($_IPS['SELF'], 'M2|GetFired|M1|STATE|'.$executionID,$M2->GetFired(),0);
$M1->SetValue('STATE', $M2->GetFired());
SendDebug($_IPS['SELF'], 'M2|GetFired|M5|STATE|'.$executionID,$M2->GetFired(),0);
$M5->SetValue('STATE', $M2->GetFired());
}
$M1->Evaluate();
$M5->Evaluate();
/* -----------------------------------------------------------------------*/
function SendDebug($id, $message, $data, $format) {
if (is_numeric($data)) {
$data = (string)round($data, 2);
}
IPS_SendDebug($id, $message, $data, $format);
}
/* -----------------------------------------------------------------------*/
class IPSEntityModuleOnUpdate {
private $ips;
private $id;
private $value;
private $isFired;
public function __construct($ips, $id) {
$this->ips = $ips;
$this->id = $id;
}
public function Evaluate() {
$this->isFired = $this->ips['SENDER'] == 'Variable' && $this->ips['EVENT'] == $this->id;
return $this->isFired;
}
public function SetValue($value) {
$this->value = $value;
}
public function GetValue() {
return $this->value;
}
public function GetFired() {
return $this->isFired;
}
public function GetNotFired() {
return !$this->isFired;
}
}
/* -----------------------------------------------------------------------*/
class IPSEntityInstance {
private $ips;
private $id;
public function __construct($ips, $id) {
$this->ips = $ips;
$this->id = $id;
}
public function SetValue($ident, $value) {
IPS_RequestAction($this->id, $ident, $value);
}
public function GetValue($ident) {
return GetValue(IPS_GetObjectIDByIdent($ident, $this->id));
}
public function Evaluate() {
return true;
}
}
SendDebug($_IPS['SELF'], 'F||||'.$executionID, '', 0);
?>
Beim unscharf schalten passiert mit dem Handsender nix, im IPS View kann ich jedoch die LED ausbekommen, wenn ich den Workflow den Wert auf „false“ stelle, jedoch macht er das wohl nicht beim Drücken des Handsenders:
Also der Türgong fällt also automatisch in den Status „false“, die LED bleibt dann jedoch „true“, generell auch ok, wenn es scharf ist, doch soll dann auch ausgehen, wenn ich unscharf schalte.
Danke und Gruß
BH