Wie erstellt man einen Taster (keinen Schalter) ?

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

gruss Roman

Hallo, ich baue gerade genau diese Funktion per Modus direkt auf die Wago. Wenn Sie läuft, stelle ich es dir bereit

Gesendet von meinem HTC Desire

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

so
nun hab ichs so einigermassen hingekriegt
ne Bool angelegt mit aktionsskript wie folgend
und zwar so:

<?

if(($_IPS['SENDER'] == "TimerEvent") or getValueBoolean(19407 /*[Drücktaster]*/))
{
    //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);
}
?>

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

Hi,

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

so habe nun folgenden code

<?

$tasterID =($_IPS['VARIABLE']);
$taster = getValueBoolean($_IPS['VARIABLE']);

if(($_IPS['SENDER'] == "TimerEvent") or $taster)
{
    //Aus Befehl
    SetValueBoolean($tasterID, false);  // ausschalten

    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    SetValueBoolean($tasterID, true);  // einschalten

    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 1);
}
?>

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

<? 

if(($_IPS['SENDER'] == "TimerEvent") or getValueBoolean(19407 /*[Drücktaster]*/)) 
{ 
    //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'], 1); 
} 
?> 

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?

gruss Roman

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.

switch.php (Serveranwendung)

<?php header(‚Access-Control-Allow-Origin: *‘);if(isset($_GET[‚ADR1‘]) && isset($_GET[‚VALUE1‘])){
file_get_contents(‚http://usr:pwd@192.168.x.y/WRITEPI?ADR1=‘. $_GET[‚ADR1‘] .’&VALUE1=’.$_GET[‚VALUE1‘].’&FORMAT1=%d’);
print $_GET[‚ADR1‘] . " Value: ". $_GET[‚VALUE‘];
}
?>

mouse.php (die wird mit dem Browser geöffnet)

<?php header(‚Access-Control-Allow-Origin: *‘); ?><html><head>
<title>Test</title>
<script type=„text/javascript“>
<!–
function request(uri){
var xmlHttp = null;

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", uri, false ,"admin", "wago");
xmlHttp.send( null );

console.log(xmlHttp.responseText);
return xmlHttp.responseText;
}
function onbutton(merker){
request(„switch.php?ADR1=“ + merker + „&VALUE1=1&FORMAT1=%d“);
}

function onup(merker){
request(„switch.php?ADR1=“ + merker + „&VALUE1=0&FORMAT1=%d“);
}
–>
</script>
<style type=„text/css“>
<!–
input[type=button]{
width:200px;
height:200px;
}
–>
</style>
</head><body>
<input type=„button“ value=„Dimm auf“
onmousedown=„onbutton(‚MX5.3‘);“
onmouseup=„onup(‚MX5.3‘);“>
<input type=„button“ value=„Dimm ab“
onmousedown=„onbutton(‚MX5.4‘);“
onmouseup=„onup(‚MX5.4‘);“>
</body></html>

hi

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']);