Problem HM Aktor für x Sekunden Einschalten

Hallo,

mhmhm…gibt mir zu denken.:eek: Jedoch wie stellt man das dann im IPS korrrekt dar?

Kann mir jemand mal ein Bespiel dafür geben wie das eingebunden wird damit es mit der „On_Time“ funktioniert? Vielleicht ein wenig „Step by Step“ Anleitung damit ich sehe welchen Fehler ich in meiner Konfig habe.

Gruß Steve

Wie schaltest Du den Aktor ein ? Über ein Skript ? Dann einfach in diesem Skript vor dem Einschaltbefehl die Zeile mit „ON_TIME“ rein.

Skript ...
HM_WriteValueFloat(12345 , "ON_TIME", 2);      Zeit in Sekunden
HM_WriteValueBoolean(12345, "STATE", true);   Schaltbefehl Aktor ein
Skript weiter ...

Gruß
Bruno

Hallo zusammen

Eine Step-by-Step Anleitung? Okay, hier nachfolgend was und wie ich es gemacht habe:

  1. Zuerst unter der Kategorie „Garage“ eine neue Instanz hinzufügen und als „System“ Homematic wählen und „Weiter“.

  1. Jetzt auf den Button „Suchen“ klicken und danach den Aktor von Homematic betätigen. Jetzt müsste dieser gefunden werden.

  1. Diese Instanz haben ich für mich „Garagentor öffnen/schliessen“ genannt.

  1. Für die Skripte habe ich mir eine separate Kategorie erstellt und dieser ganz einfach den Namen „Skript“ gegeben.

Auf die Kategorie „Skript“ drücken, rechte Maustaste und „Objekt hinzufügen“ und dann weiter unten „Skript hinzufügen“. Jetzt zwischen den Fragezeichen folgendes per Copy & Paste hinzufügen:
HM_WriteValueFloat(12345 , „ON_TIME“, 2);
HM_WriteValueBoolean(12345, „STATE“, true);

Bei den Zahlen 12345 müsst ihr die ID des vorher hinzugefügten Homeaktors eingeben:

  1. Jetzt doppelklickt ihr den die im Bild ersichtliche Variable an. Bei mir heisst diese Befehl (habe ich umbenennt und weiss nicht mehr auswendig wie das hier Original hiess), denn jetzt müssen wir den Skript mit dem Befehl verlinken:

Auf dem jetz erscheinendem Fenster klickt ihr auf „Weiter“ und erhält das nachfolgende Fenster:
Bild6.PNG

oben bei eigenes Profil habe ich für mich „ShutterMove“ gewählt. Viel wichtiger ist jetzt aber das Verlinken des angelegten Skripts. Hierfür geht ihr unten, dort wo „eigene Aktion“ steht. Rechts daneben den Button „Auswählen“ anklicken und im iPS-Baum den Skript anwählen.
Bild6.PNG

So, liebe Leute, das ist das was ich gemacht habe. Keine Gewähr auf Professionalität. Ihr habt eine Step-by-Step Anleitung gewünscht. Da ich weiss wie man sich als Laie mit iPS fühlt, habe ich mir gedacht, nach dem nsrracer nach einer sochen gefragt hat, dies hier zu erstellen. Vielleicht hilft es ja dem Einen oder Anderem.

Viele Grüsse

Mascar

Warum macht ihr euch das Leben so schwer. :confused:

In IPS kann man sich Konfiguratoren anlegen, diese lesen die Geräte aus. Bei HM z.B. einen Homematic Konfigurator erstellen, die Geräte werden eingelesen. Das gewünschte Gerät auswählen und erstellen. Es wird alles benötigte angelegt. Fertig. :smiley:

Steht aber auch alles in der Doku, und das nicht erst seit gestern!

HomeMatic: IP-Symcon :: Automatisierungssoftware

Hallo,
also ich verzweifel gerade, bei mir funktioniert die ON_TIME nur wen ich über WebFront schalte.
Sobald ich zb. den HM Unterputzschalter oder mit Fernbedienung das Licht einschalte geht das
nicht. Woran könnte das den liegen oder viel mehr wie bekomme ich das hin?

folgende Skripts gehen bei mir nur per Webfront oder App

<?
if($IPS_VALUE)

{
 HM_WriteValueFloat(58884 /*[My @Home\Küche\Beleuchtung\Decken Leuchte]*/  , "ON_TIME", 10.0);
 HM_WriteValueBoolean(58884 /*[My @Home\Küche\Beleuchtung\Decken Leuchte]*/  , "STATE", true);
}

?>
<?

 if($IPS_VALUE)
 {
 HM_WriteValueFloat(58235 /*[My @Home\Kinderzimmer\Beleuchtung\Ambiente Mond]*/  , "ON_TIME", 1800.0);
 HM_WriteValueBoolean(58235 /*[My @Home\Kinderzimmer\Beleuchtung\Ambiente Mond]*/  , "STATE", true);
 }
 else
 {
 HM_WriteValueBoolean(58235 /*[My @Home\Kinderzimmer\Beleuchtung\Ambiente Mond]*/  , "STATE", false);
 }

?>

bitte um Hilfe da bei uns daheim mehr mit Schaltern, Fernbedienung gesteuert wird.

Hallo,

soweit ich das überblicke, kannst Du das Verhalten des Tasters nur über den HM-Konfigurator beeinflussen. Hier kannst Du bei „Verweildauer im Zustand EIN“ einen Wert setzen, der auch bei der manuellen Bedienung des Tasters berücksichtigt wird.

Gruß
Walter

jo so habe ich es ja auch laufen nur möchte ich nicht unbedingt zwischen zwei Programmen Arbeiten, gibt es keine möglichkeit das auch über IPS zu machen?

Verstehe ja das Rumgezicke nicht … die Direktverknüpfung ist ja schon im zweiten Programm, warum also nicht noch den Aktor einstellen ???

gibt es keine möglichkeit das auch über IPS zu machen?

Sicherlich ne schwierige Möglichkeit: Schick bei Aktualisierung der Fernbedienung das Einschalt-Skript verzögert hinterher. Ansonsten die Direktverknüpfung lösen und nur über IPS schalten.

PS: Bitte nicht jammern, wenn dann die LED nicht mehr grün wird :wink:

Die Ursprungsfrage woran das liegen kann, ist mit Nachdenken selbst zu beantworten. :smiley:

Gruß
Bruno

hmmnn… doch da Zicke ich mal rum, es ist doch sehr umständlich und vor allem unübersichtlich.
Bei nur einem Actor muss ich viele Scripte und einstellungen machen zb.:

1x Actor mit der Aussenbeleuchtung:

  • Fernbedienung = Ereignis mit PHP Code on_Time
  • Webfront = PHP Script on_Time
  • An/- Abwesendheit Tracker mit 3 Personen „jeweils“ = Ereignis mit PHP Code on_Time
  • Homematic Konfigurator = für den Taster auf die Zeit stellen

Das ist ist für ein Actor schon eine Menge, wen ich jetzt noch überlege das ich ganz viele habe, verliere ich den Totalen überblick :frowning:

PS: Bitte nicht jammern, wenn dann die LED nicht mehr grün wird

Das kann man so einstellen, das die trotzdem noch Grün wird :wink:
BTW: Es reicht ein Script, welches verschiedene Trigger hat. Gerade das ist übrigens der Vorteil von IPS :wink:

lG
//Sven

Fb, Webfront und Tracker triggern jeweils das php-Skript mit On_Time, für was willst Du überall den Code hinterlegen?

Ich hab das Script von Rainer mal probiert. (Script Timer) Weil das ja Hardware unabhängig funktioniert.
Hab die ID´s meines HM Schalters eingetragen. Leider bekomme ich schon in der 4 Zeile einen Fehler: Parse error: in [Konstrukt\Test\Script Timer\Scripttimer] on line 4. In der Zeile steht nur : case"Variable":

Wahrscheinlich muss ich die „Variable“ irgendwie gegen was austauschen?

Hat jemad eine Idee? :slight_smile:

Gruß Thomas

PS wie füge ich das Script so ein das es auch vernünftig dagestellt wird?

PS wie füge ich das Script so ein das es auch vernünftig dagestellt wird?

2te Zeile ganz rechts PHP dann wird es formatiert dargestellt.


<?
switch($_IPS['SENDER'])
{
case "Variable":
   IPS_SetScriptTimer($_IPS['SELF'], 2);
   HM_WriteValueBoolean(13818, "STATE", true);
   break;
case "TimerEvent":
   IPS_SetScriptTimer($_IPS['SELF'], 0);
   HM_WriteValueBoolean(13818, "STATE", false);
   break;
}
?>

OK ein Problem gelöst…ka warum die Sternchen da drin sind?

Variable als Trigger eingetragen?

„Triggern“ bedeutet doch so viel wie Auslösendes Ereignis. Hab noch kein auslösendes Ereignis. Ich wollte den Code Schnipsel für ein anderes Script benutzen. Mir geht es darum „Irgendwas“ ein/aus und nach einer bestimmten voreingestellten Zeit automatisch aus/ein zu schalten. Dafür ist Dein Script doch gedacht…:confused: hoffe ich

Besten dank schon mal.

Irgendetwas, muss das Script ja starten, dass ist in diesem Fall nun mal eine Variable. Dann startet der Timer.

Ich blick das irgendwie nicht. Ich hab ein Ereignis (HM Schalter) hinzugefügt. Das Script wird bei Aktualisierung der endsprechenden Variable ausgelöst. Aber das Ergebnis ist das gleiche. Muss an stelle des Wortes „Variable“ zB. die ID der auslösenden Variable rein? Hab es natürlich probiert funktioniert aber nicht. Was macht der Befehl „Case“ denn?

Das Problem sind meine Kenntnisse in Bezug auf PHP. Ich verstehe das Script nicht ganz. Ich hab mal das was ich weiss aufgeschrieben:


<?
switch($_IPS['SENDER'])
{
       case "Variable":
            IPS_SetScriptTimer($_IPS['SELF'], 2);              // Startet den Timer Hier 2 Sec. ??
            HM_WriteValueBoolean(13818,*"STATE", true); //Schaltet den Aktor ein
       break;
       case "TimerEvent":
             PS_SetScriptTimer($_IPS['SELF'], 0);              //Stopt den Timer.
             HM_WriteValueBoolean(13818, "STATE", false); //Schaltet den Aktor aus
        break;
}
?>

Ob das so richtig ist? Ka. Kannst Du mir das Script erklären? So das ich das verstehe…Ich geb mir Mühe, versprochen!

Kann passieren :wink:

Bitte erst mal richtig schreiben

<?
switch($_IPS['SENDER'])
{
       case "Variable":
            IPS_SetScriptTimer($_IPS['SELF'], 10);              // Startet den Timer Hier 10 Sec. ??
            HM_WriteValueBoolean(13818, "STATE", true); //Schaltet den Aktor ein
       break;
       case "TimerEvent":
             IPS_SetScriptTimer($_IPS['SELF'], 0);              //Stopt den Timer.
             HM_WriteValueBoolean(13818, "STATE", false); //Schaltet den Aktor aus
        break;
}
?>

Ob das so richtig ist?

Erklärung stimmt so, Dein Problem sind irgendwelche Zeichen im Skript (* vor STATE, I fehlt).

(Die 10 sek. stammen aus meinem Versuch gerade)

Gruß
Bruno

Besten dank an Bruno,

Warum die Sternchen immer erscheinen weiß ich auch nicht. Ich arbeite am Mac per Teamviewer auf dem IP-Symcon Windows Recher Zuhause. Beim Copy/Past von dort werden an stelle der Leerzeichen Sternchen eingesezt!?

Hab das Script von Deinem Post eingefügt. Es läuft ohne Fehler durch, aber ohne das dass Licht angehen würde.
Muss das Script zwingend von einem Ereignis gestartet werden? Bin ja gerade nicht Zuhause…
Manuell läuft es wie gesagt durch. Aber eben ohne das der Aktor auf „true“ geht.

Vieleicht noch eine Idee?

Gruß Thomas