ich bins wiedermal da mich das Thema nicht ganz loslässt
ist es per Skript möglich das Loslassen des Touch oder der Maustaste zu erkennen?
ich frage darum weil zb bei einem sleider ist die info ja auch irgendwo da
(solange gedrückt lässt er sich verschieben beim losslassen sendet er die werte)
oder sehe ich das falsch
also ich wäre hoch interessiert wenn das klappen würde
aber ich glaube es liegt am System an sich
beim onclick der als Auslöser bei IPS ist
eigentlich ist onclick definiert als maus drücken und wieder loslassen so ist das Ereignis gegeben
aber das scheint jeder etwas anders zu machen
zB beim Explorer kann ich die maus gedrückt halten es wird ausgelöst
beim Iphone ändert sich die Variable erst beim loslassen
eine Idee zu meinem Storentaster Problem habe ich schon angedacht indem ich beim onClick toggle und spätestens nach maxzeit die variable resete somit könnte ich durch doppelklick (oder eben doppel touch weil Touchscreen) tasten
bei einem klick steht das Signal bis maxzeit an, was bedeutet das der Storen eh in die Selbst Haltung geht und somit der einklick eine fahrt auf endanschlag bedeutet
nun noch ne Frage : kann man auch Zeiten Kleiner 1s einstellen?
und Könnte man das „19407“ durch irgendwas ersetzen so das die Skriptauslösende Variable genommen wird?
das ersetzen der zahl durch $_IPS[‚VARIABLE‘] führt nicht zum ziel obwohl die doch die ID der auslösenden Variable geben sollte
hmm ich hab die logic noch nicht ganz begriffen, aber eben bin blutiger anfänger
versuch’s mal mit einzelnen Anweisungen. PHP hat es nicht so mit verschachteln von Befehlen.
<?
$taster = getValueBoolean($_IPS['VARIABLE']);
// wobei das hier gleiches bewirken sollte: $_IPS(['VALUE'])
if(($_IPS['SENDER'] == "TimerEvent") or $taster) //diese Zeile leuchtet mir nicht ein! Soll nur bei Timerablauf oder immer erfolgen, dann kannst sie auch weglassen
{
//Aus Befehl
SetValueBoolean(19407 /*[Drücktaster]*/, false); // ausschalten
//Timer ausschalten
IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
//An Befehl
SetValueBoolean(19407 /*[Drücktaster]*/, true); // einschalten
//Timer anschalten
IPS_SetScriptTimer($_IPS['SELF'], 5);
}
?>
Die Zeile bedeutet dass es bei Timer Ablauf oder Taster auf true ist erfolgen soll, wenn ich Taster weglasse läufts immer die Volle Zeit, so kann ich den Taster durch ein 2ten klick wieder abschalten vor Beendigung der Zeit
Gesendet von meinem Gedanken-Maschine Interface mit einem digital Technik Konverter
nun aber das Problem das der Timer nicht ausschaltet
bei Klick geht’s auf true , nochmals klick auf false aber wenn er true ist bleibt er true, der timer wirkt nicht
ich traue mich wieder mal anzufragen ob man mein Code noch vereinfachen kann
am liebsten dahingehend dass die variable verändert wird von der her zugegriffen wird
mit meinem für einen Taster geschriebenen code geht’s aber nur mit der fixen ID was bedeuten würde für jeden Taster ein eigenes Skript zu machen
eine übernahme der ID von der auslösenden Variable würde vieles erleichtern
und nochmal am Rande die Frage : ne kleine Zeit als 1s ist nicht möglich oder?
Ich habe das ganze mal unabhängig von IP-Symcon gebaut. Vielleicht kann man die ja über den IP-Symcon Server in die Seite integrieren.
Anzupassen sind IP/Benutzer der Wago + die Merker. Es wird solange der Button gehalten wird der Merker (hier MX5.3 und MX5.4) auf true gesetzt. Damit kann man z.B. Rolladen/Dimmer-Taster nachbauen.
ich bin wieder beim Thema Wago Jalousien Steuerung
Tipp oder Fahrbetrieb
nun funktionierts einigermassen so wie ich möchte habe aber noch ein paar Unklarheiten
Frage 1:
wenn der Timer abgelaufen ist soll die integer variable auf 0= stop gesetzt werden
SetValue(47972, 0); //integer var
warum geht das nur direkt, da dies die integer ist die das Skript auslöst sollte das nicht auch gehen über $_IPS[‚VARIABLE‘] anstatt die variable aussen mit 47972, aber irgendwie bring ich das nicht hin ausser direkt über die id angesprochen
Frage 2:
warum brauchts das?
SetValue($_IPS[‚VARIABLE‘], $_IPS[‚VALUE‘]);
wird der wert erst mit dem Skript geändert?
code:
<?php
switch ($_IPS['VALUE']) { case 0: // stop
//Timer anschalten
IPS_SetScriptTimer($_IPS['SELF'], 0);
SetValue(49244, 0); //auf Out
SetValue(46670, 0); //ab Out
//echo "i ist gleich 0";
break;
case 1: // Auf Step
//Timer anschalten
IPS_SetScriptTimer($_IPS['SELF'], 2);
SetValue(49244, 1);//auf Out
//echo "i ist gleich 1";
break;
case 2: // Ab Step
IPS_SetScriptTimer($_IPS['SELF'], 2);
SetValue(46670, 1); //ab Out
//echo "i ist gleich 2";
break;
case 3: // Auf
IPS_SetScriptTimer($_IPS['SELF'], 5);
SetValue(49244, 1); //auf Out
//echo "i ist gleich 3";
break;
case 4: // Ab
IPS_SetScriptTimer($_IPS['SELF'], 5);
SetValue(46670, 1); //ab Out
//echo "i ist gleich 4";
break;
default:
echo "i ist nicht zwischen 0..4";
}
if($_IPS['SENDER'] == "TimerEvent")
{
//Aus Befehl
SetValue(47972, 0); //integer var
//SetValue($_IPS['VARIABLE'], 0);
//Timer ausschalten
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
else{
//An Befehl-> wird im case gemacht
//Timer anschalten
//IPS_SetScriptTimer($_IPS['SELF'], 5);
}
;
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);