Ansteuern über DS2405 Bausteinen

Hallo,
irgendwie klappt es bei mir nicht so richtig bei der Scripterstellung!

Habe einen DS2405 als Eingang welcher einen anderen mit einer LED ansteuern sollte.
Ich wollte es mal als Stromstossschaltung haben. Was ich hinbekommen habe waren eine Aus-Schaltung!
Bei der Stromstossschaltung fangt die LED an zu blinken, wenn ich zu lange auf den Taster bleibe (Frequenz der Buszyklus).
Kann mir jemand hierzu einen Tipp geben wie diese Ansteuerung
sicher programmiert werden kann???.

<?
/*


IP-SYMCON Event Scripting


File : Garage.ips.php
Trigger : OnChange: Taster bzw. 1/sek.
Interval :
*/

$Taster = GetValueBoolean(„Taster“); //Übergibt den Stautus des Eingangs
$Licht = GetValueBoolean(„Licht“); //Soll den Status der LED abfragen

if($Taster == True)
{
echo „An“ ;
TMEX_F05_TogglePin(34835);
}
else
{
echo „Aus“ ;
}
?>

Vielen Dank im vorraus.

Gruß Uwe

P.S. Ich probiere und teste natürlich weiter!

Hallo,
hab ein Teilerfolg erreicht was dem schon sehr nahe kommt, wie ich
mir dies vorgstellt hatte.
Muß gestehen,dass ich mit dem Script edditieren erst seit kurzem angefangen habe und somit keine großen Erfahrungen habe.

Bei Triggered Variable habe ich nun On Change „Taster“ eingestellt imobigen Script.
Nun schaltet die LED beim tippen des Tasters ein und beim erneuten tippen,
wieder aus.
Das einzige was mich allerdings noch stört, das die Schalthandlungen auf eine
fallende Flanke meines Tasters erfolgen und dann auch nur wenn ich länger
als 1 Sekunde die Taste gedrückt habe.
Das Blinken ist aber nun weg :-)))

Hat jemand einen Tipp wie ich das optimieren kann.

Grüsse aus Rheinhessen

Uwe

Hallo Uwe,

Ich haette da vorher noch ein paar Fragen:

Wie sieht denn eigentlich Deine Schaltung hierzu aus? Und wie hast Du die beiden Instanzen im IPS eingerichtet, also welche Pollingzeit ist eingestellt? Mit was fuer einem Taster loest Du den Vorgang aus?

Gruss Torro

Hallo Torro,
hab in den Instancen die zwei Bausteine eingelernt und die Deviceadresse
sowie die Variablen Taster und Licht vergeben.
Bei Taster und Licht kein Invert und bei Taster Updateinterval:1 Sekunde.
Beim Licht war ich mir nicht sicher und habe ein Updateinterval von 0Sekunden,
da ich der Meinung war, dass dies ohnehin Aktionsbedingt gesetzt wird.
Der Taster ist ein AP Installationstaster.
Mein großes Problem ist wohl, dass ich keien Ahnung über die Logik von der Ansteuerung des DS2405 habe.
Wenn ich nur den Pegel immer invertieren kann mit TMEX_F05_TogglePin(34835); so wird wohl immer wenn der Pegel vom Taster länger als 1 Sekunde anliegt im nächsten Zyklus die LED „Licht“ wieder ausgeschaltet.
Ich muß da wohl noch was reinabauen, was erst den Status Licht festhält und nur eine Schalthandlung zulässt.
Ganz schön kompliziert.
Das tut mich als jungem Vater mit einer 6 wöchigen Tochter leicht überfordern.
Ich werde Morgen in der Mittagspause mal die 5 Möglichkeiten der Scriptevents unter die Lupe nehmen. Z.Z. ist OnChange „Taster“ eingestellt.

Tips, Hinweise auf einen Link werden natürlich immer dankend entgegen genommen.

Viele Grüsse aus Rheinhessen

Uwe

juhhhuu.:slight_smile:
Ich habe jetzt drei Varianten die voll gut funzzen.
Ein Script simmuliert die AUS-Schaltung mit einem herkömmlichen
AUS-Schalter.
Ein Script simmuliert eine Stromstosschaltung (Eltako, Flip-Flop) mit einen oder mehreren parallel geschalteten Taster und
ganz zum Schluß
habe ich einen Script der mir einen Treppenhausautomat (Zeitschaltung)
nach stellt.
Und es funktioniert echt super!
Will die Scripte demnächst einstellen. Sind zwar noch nicht in der Praxis erprobt, da diese bei mir auf dem Tisch nur fliegend und experimentel verdrahtet sind.

Würde mich aber freuen, falls Teilnehmer die Sripte kritsch prüfen könnten (Bin nähmlich noch Anfänger).
Vielen dank schon mal an Torro und HJH die mir schon mal ne Grobe Richtung gegeben haben.

Grüsse aus Rheinhessen
Uwe

hier die Ergebnisse zur Zensur.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Licht_1.ips.php
Instances Infos:    Taster Invert Status: true
Update 1 Sekunde  und Licht Invert Status:false,
Update 1 Sekunde.

Trigger  :    On Change "Taster"
Timerinterval: 0 Sekunden
*/
$Taster= GetValueBoolean("Taster"); //Fragt den Status des Tasters ab und setzt die Variable $Taster
if($Taster == true)
{
TMEX_F05_TogglePin(62038);
}
else
{
}
?>
<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Licht_2.ips.php
Instances Infos:    Taster Invert Status: true
Update 1 Sekunde  und Licht Invert Status:false,
Update 1 Sekunde.

Trigger  :    On Change "Taster"
Timerinterval: 0 Sekunden
*/
$Taster= GetValueBoolean("Taster"); //Fragt den Status des Tasters ab und setzt die Variable $Taster
$Licht= GetValueBoolean("Licht"); //Fragt den Status des Licht ab und setzt die Variable $Licht

if($Taster == true and $Licht == false) //prüft ob Taster gedrückt und Licht aus ist
{
TMEX_F05_TogglePin(62038);             // schaltet demnach Licht an!
}
else
{
}
if($Taster == false and $Licht == true) //prüft obt Taster losgelasen wurde und das Licht noch brennt
{
TMEX_F05_TogglePin(62038);              // schaltet demnach das Licht aus!
}
else
{
}
?>
<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Licht_3.ips.php
Instances Infos:    Taster Invert Status: true
Update 1 Sekunde  und Licht Invert Status:false,
Update 1 Sekunde.

Trigger  :    On Change "Taster"
Timerinterval: 0 Sekunden
*/
$Taster= GetValueBoolean("Taster"); //Fragt den Status des Tasters ab und setzt die Variable $Taster
$Licht= GetValueBoolean("Licht"); //Fragt den Status des Licht ab und setzt die Variable $Licht

if($Taster == true and $Licht == false) //prüft ob Taster gedrückt und Licht aus ist
{
TMEX_F05_TogglePin(62038);             // schaltet demnach Licht an!
}
else
{
}
if($Taster == false and $Licht == true) //prüft obt Taster losgelasen wurde und das Licht noch brennt
{IPS_Sleep (60000);                     //verzögert die nächste Anweisung mit 60000ms (60sek.)
TMEX_F05_TogglePin(62038);              // schaltet demnach das Licht aus!
}
else
{
}
?>

Hallo bastelwasti,

Deine Scripte sehen gut aus. Ich würde nur
else { }
komplett löschen. Wenn Du keinen Else-Zweig brauchst, dann kannst Du ihn auch weglassen.

Also aus:

if($Taster == true and $Licht == false) //prüft ob Taster gedrückt und Licht aus ist
{
TMEX_F05_TogglePin(62038);             // schaltet demnach Licht an!
}
else
{
} 

wird dann:

if($Taster == true and $Licht == false) //prüft ob Taster gedrückt und Licht aus ist
{
TMEX_F05_TogglePin(62038);             // schaltet demnach Licht an!
}

Da Du nach if nur eine Anweisung benutzt könntest Du dort die { } - Klammern auch weglassen, aber sie schaden ja nicht.

Ich wünsche einen schönen Abend.

Christoph.

Hallo Christoph,
vielen Dank für den Hinweis. Ich wußte nicht, dass es auch ohne geht.
Aber dank deinen Tipp werde ich das in kürze bei mir rauslöschen und alle Schaltungen nochmals antesten.

Liebe Grüsse
aus Rheinhessen

Uwe

Statt


if($Taster == true and $Licht == false)

kann man bei boolschen Ausdrücken auch schreiben


if ($Taster && !$Licht) 

Wenn man schon auf Gleichheit prüft, müßte man konsequenter Weise auf Typgleichheit prüfen , alse mit „===“ arbeiten.

Tommi

Hi,

und das würde ich dir raten auch anders zu lösen:

if($Taster == false and $Licht == true) //prüft obt Taster losgelasen wurde und das Licht noch brennt
{IPS_Sleep (60000);                     //verzögert die nächste Anweisung mit 60000ms (60sek.)
TMEX_F05_TogglePin(62038);              // schaltet demnach das Licht aus!
} 

Gruß
Tom

Hallo Uwe

Ich werde nicht Müde zu erwähnen, dass es sowas zum nachlesen in Tonis kleinem Programmierhandbuch gibt. :rolleyes:

Gruß,

Toni

Hallo Tom,

ja, dann aber bitte an den Hinweis von Tommi (===) denken.
== false kann daneben gehen.

Da ich in vielen unterschiedlichen Sprachen programmiere, habe ich mir angewöhnt unter php den Status so abzufragen:

$Licht= 0+GetValueBoolean("Licht");

Dann ist $Licht==0, wenn die Lampe aus ist und ==1, wenn das Lämpchen brennt.

Ich wünsche einen schönen Abend.

Christoph.

Hi,

mein Hinweis bezog sich auf diese Zeile:

{IPS_Sleep (60000);

Sollte man so nicht machen.

Gruß
Tom

Danke an alle … ich werde Scriptvarianten def. durchtesten und bestimmt daraus lernen.
Habe übrigens meinen Inputbaustein Hardwaretechnisch erweitert und werde dies baldigst für Intressenten einstellen.

@ Tonic. Wer nicht fragt bleibt dumm und dumme Fragen gibt es nicht, da man nie auslernt.
Bleib daher bitte etwas sachlicher! Der Hinweis auf diesen Link hätte absolut gereicht. Dieses Dokument kenne ich tatsächlich noch nicht. Deshalb meinen Dank an Dir :wink:

Ich werde es mir bestimmt reinziehen.

Gruss Uwe

Ich finde, er hat es genau so gemeint und auch neutral formuliert. :confused:

Tommi

Hallo Tonic, hallo Tommi,
ich weiß euch jetzt nicht genau zuzuordnen, aber nachdem ich nun die letzen drei Wochen alles an Anleitung Online durchgelesen habe, vermute ich das Tonic evtl. doch sachlich war mit dem „nicht müde…“.
Ich gehe davon aus,das viele Anleitungen und Dokus aus Eure Feder stammte.
Bitte nimm daher meine Entschuldigung an.

Bei einigen Artikeln und Anleitungen habe ich sachliche Hinweise über nicht mehr funktionierende Links bzw. Fallen in denen ich reingefallen bin.
An wenn kann ich die INfos geben???

Gruss Uwe

P.S. Mit meiner Hardware Programmierung komme ich grade nicht weiter, da meine 2 Monate junge Tochter nach dem Feierabend mich voll fordert :slight_smile:

Gruss

Uwe

In meinen Augen gabs dort nichts zu entschuldigen. War halt ein Misverständnis, sowas kommt vor. :cool:

Dennoch: Entschuldigung angenommen.

Viel Spaß noch im Forum :wink:

Gruß,

Toni