IPSTools - Tools für Monitor, Maus und mehr ...

Ich hab noch mal eine Frage:

Wie kann ich die Zeit, in der die Maus nicht bewegt wurde, zum Ausschalten des Bildschirms nutzen wenn der Screen z.B. auch durch einen Bewegungsmelder eingeschaltet werden soll? Dann wird ja keine Maus bewegt und der Zähler läuft munter weiter. Wenn ich jetzt prüfe ob die Maus seit mehr als X Sekunden nicht bewegt wurde um den Screen aus zu schalten wenn das der Fall ist, würde er ja immer recht schnell nach dem Einschalten wieder aus geschaltet.

Kann man das innerhalb von IPS lösen oder muss ich die MouseIdle Funktion auf der.NET Seite anpassen um die Zeit zurück zu setzen setzten wenn der Bildschirm an geht, also das Programm anpassen?

Puh - ich stehe vor dem gleichen Problem, heute kommt mein Bewegungsmelder und mit dem möchte ich das Display meines WeTabs schalten.

Ich werde vermutlich auf ein zeitgesteuertes Ereignis für’s ausschalten setzen, dass MouseIdleSince und den Bewegungsmelder-Status jede Minute prüft und dann bei 5 Minuten Inaktivität ausschaltet.

Also in Pseudo-Code würde das so aussehen:
If (MouseIdleSince >= 300 UND Variablenaktualisierung_Bewegungsmelder >= 300)
{ WeTab-Display AUS}

Zusätzlich wird bei Bewegung ein sofortiges Einschalt-Script gestartet, und wenn der Status von MouseIdleSince unter 10 ist (Grenzunterschreitung) dann wird ebenfalls sofort eingeschaltet. Ob es wirklich so geht wird sich aber heute erst noch zeigen - sobald DHL da war ;-).

Viele Grüße,
Markus

EDIT: Habe gerade gelesen das du auch ein WeTab nutzt… g. Ich bin mit dem Teil ganz zufrieden - muss mir nur noch Gedanken machen wie ich das Teil an die Wand bekomme :slight_smile:

Ja, halt uns mal auf dem laufenden.

Ich hab übrigens eine Dockingstation besorgt und das WeTab auf ein kleines Regal gestellt. So kann ich es auh mal zum Surfen nutzen wenn ich mag.

So - DHL war da & es läuft wie vermutet:

Hintergrundinfo zum HM-Bewegungsmelder:
Die HomeMatic Bewegungsmelder setzen selbständig eine Variable MOTION True / False. Nach einer erkannten Bewegung wird die Variable MOTION für 5 Minuten auf TRUE gesetzt, anschließend aktiv durch Homematic auf FALSE geändert.

IP-Symcon Steuerung:
ich habe 2 Scripte angelegt, eines für Display an & eines für Display aus

„Display an“-Trigger:

  • Grenzunterschreitung der Variable MouseIdleSince (15, keine(!) nachfolgende Ereignisse
  • Bestimmter Wert der Variable MOTION (True)

„Display aus“-Trigger:

  • Grenzüberschreitung der Variable MouseIdleSince (200, keine(!) nachfolgende Ereignisse
  • Bestimmter Wert der Variable MOTION (False)

Löst das deine Problemstellung, oder hab ich die eigentliche Problematik noch nicht erkannt? Also bei mir läuft’s wie geplant - wie zuverlässig das so ist sieht man allerdings erst im Langzeittest…

Viele Grüße und ein schönes Wochenende,
Markus

Hallo,

Ich möchte Andreas für diese super Tool danken. Es funktioniert auf Anhieb ohne Probleme.

Ich habe es gestern auf einem Wetab eingerichtet und mit einem Bewegungsmelder gekoppelt.

Klappt einwandfrei.

Gruß
Christian

So, mein Melder ist auch gekommen und ich wollte eigentlich jede bewegung zum Einschalten nutzen und das WeTab selber nach 2 Minuten den Bildschirm abschalten lassen.

Das Erste geht leider nicht, weil Motion immer auf true bleibt wenn der Melder mehrfach auslöst und nur die Zeit sich ändert. Hat da jemand eine Idee?

Das Zweite hakelt auch noch. Ich hab im WeTab die EInstellung Bildschirm aus nach 2 Minuten das geht wenn ich drauf tippe auch. Wenn ich den Bildschirm durch den Bewegungsmelder einschalten lasse blitzt er nur kurz auf und geht sofort wieder aus. Was kann das sein?

Keiner eine Idee?

Die Antwort zum Ersten hast Du dir ja selbst schon gegeben.:wink:

Das Erste geht leider nicht, weil Motion immer auf true bleibt wenn der Melder mehrfach auslöst und nur die Zeit sich ändert. Hat da jemand eine Idee?

Triggere das Skript auf „Aktualisierung“ und nicht auf „Änderung“ des Bewegungsmelders.


include("59418.ips.php"); // IPSTools Libary
$motion   = GetValue(44168 /*[Erdgeschoß\Küche / Esszimmer\Bewegungsmelder\Bewegung]*/);
$duration  = GetValue(50385 /*[Erdgeschoß\Küche / Esszimmer\Touchdisplay aktiv\Bildschirm aktivieren\Duration]*/);
if($IPS_SENDER == "TimerEvent")
{
 IPSTools_SetScreenPower(false);
 IPS_SetScriptTimer($IPS_SELF, 0);
 IPS_LogMessage('Touchdisplay Küche', 'Ausgeschaltet');
 SetValue(33823 /*[Erdgeschoß\Küche / Esszimmer\Touchdisplay aktiv\Status]*/, false);
 return;
}
if($IPS_VARIABLE == 44168 /*[Erdgeschoß\Küche / Esszimmer\Bewegungsmelder\Bewegung]*/) {
 if($motion) {
  IPSTools_SetScreenPower(true);
    IPS_SetScriptTimer($IPS_SELF, $duration*60);
  IPS_LogMessage('Touchdisplay Küche', 'Eingeschaltet');
  SetValue(33823 /*[Erdgeschoß\Küche / Esszimmer\Touchdisplay aktiv\Status]*/, true);
 }
}

$duration ist eine Int-Variable mit der ich die An-Dauer des Displays steuere.

Mit dem Zweiten kann ich Dir leider nicht helfen da ich kein WeTab habe.

Danke Werner, dann werde ich das WeTab einfach mal umstellen, damit es nicht selber den Monitor aus schaltet.

Mir ist da auch noch eine andere Idee gekommen. Ich könnte das Ausschalten über die Maus Inaktivität steuern und beim Einschalten über den Melder diese Zeit auf 0 zurück setzten. Dafür müsste ich zwar die Tools anpassen aber das ist ja kein Problem.

Ganz herzlichen Danke für das super Tool - klasse Arbeit!

Zwei Anmerkungen würde ich noch in die Wiki mit aufnehmen.

Zum Thema: "Socket Instance „IPSTools_Socket“ anlegen, Host: localhost, Port 7002 ":

Hier würde ich noch „Client“ ergänzen, es gibt ja auch einen „Server-Socket“ :slight_smile: und als localhost würde ich „IP-Adresse des Clients, also die vom zu steuernden Rechner“ ergänzen.

Ansonsten ggf. noch weiter oben statt „Prefix“ - „Suffix“ schreiben.

Nur so als Anregung!

Danke nochmal!

Hi,

Danke für den Hinweis - es würde mich aber auch überhaupt nicht stören, wenn Du da gleich selber Hand anlegst …:wink:

Dem Screenshot im Wiki zufolge sollten die Sekunden in der Variable doch hochzählen, oder? Bei mir bleibt dauerhaft eine 0 stehen. Woran könnte das liegen?

Grüße
galleto

Hallo galleto,

Ist das Autom. Senden in den IPSTools aktiviert?

Ansonsten öffne mal das Debugging Fenster bei der Socket Instanz und schau, ob da was empfangen wird…

Beides: ja

Trotzdem bleibt die Variabel MouseIdleSince auf „0 Sek“ (Aktualisiert: Nie).

In den Variablen-Optionen ist „Schreibgeschützt“ ausgegraut, aber auch kein Haken drin.

Grüße
galleto

OK, dann liegt der Fehler vermutlich im Empfangs Script:
Stimmt die Zuordnung Register Variable - Script.
Poste mal das Script, eventuell ist da einfach nur ein Schreibfehler drinnen…

:confused:

<?

define ("c_ID_MouseIdleSince",  22692 /*[IPStools\MouseIdleSince]*/);

if ($IPS_SENDER=='RegisterVariable') {
   $Params = explode(';', $IPS_VALUE);

   switch($Params[0]) {
      case 'MouseIdleSince':
         SetValueInteger(c_ID_MouseIdleSince, (int)$Params[1]);
         break;
      default:
   }
}

?>

Dank und Grüße
galleto

Hmm, sieht in Ordnung aus…
Öffne die Register Variable, dort sollte als Ziel Script, das Script eingetragen sein, das Du gerade gepostet hast.
Ansonsten kannst Du auch noch mal bei der Register Variable mit dem Debug Window kontrollieren, ob die Daten ankommen.

:smiley:

…und der IPSTool-Socket muss als übergeordnete Instanz ausgewählt werden.

Beides fehlte mir. Da muss man als blutiger Anfänger auch erstmal drauf kommen…

Danke Dir!

Grüße
galleto

EDIT sagt: Man kann drauf kommen: RegisterVariable: IP-Symcon :: Automatisierungssoftware :rolleyes:

Hatte dasselbe Problem. Das Ausschalten über die System-/Energieeinstellungen scheint mehr als den Monitor zu deaktivieren (Grafikkarte?). Wenn man danach über die Tools den Monitor zurückholt, dann klappt das zwar prinzipiell. Es wird aber nur kurz „kein Signal“ angezeigt und der Monitor verabschiedet sich wieder. Das könnte Dein Aufblitzen sein.

Gelöst habe ich es für mich über den Bewegungsmelder. Meldet der nach seiner internen 4-Minuten-Sperre „abwesend“, geht der Monitor über die Tools aus. Bei der nächsten Bewegung kommt der Monitor über die Tools wieder.

Grüße
galleto

Ist es notwendig, dass die Tools jede Änderung der Variablen MouseIdleSince auch als Meldung ausgeben oder könnte man das abschalten? Falls ja: Wie?

Grüße
galleto