Hi,
wenn Du die Variable bearbeitest kannst Du ihr ein Profil zuordnen und da kannst Du dann angeben das „Status offen“ rot und „Status zu“ grün sein soll.
Denke er meint den immer grünen Skript-Button, bei dem er die Farbe abhängig vom Status ändern möchte.
Oder gibt es einen Weg wie man in der gleichen Kachel noch den Status anzeigen könnte, zB mit Einfärben der Kachel selbst?
Hi,
ich habe es bei mir mit einer boolschen Variable gelöst. Der Variablen habe ich das Profile ~Switch und mein eigentliches Script als Aktionsscript eingetragen. Von der Variablen ein Link auf die Visu und dann wird es schön grün und durchsichtig dargestellt je nachdem ob Garage auf oder zu ist. Drücke ich in der Visu den Button wird mein Script aufgerufen und je nach Status wird Garage geöffnet oder geschlossen.
Moin Golly,
Du hast ja ein Script das macht was Du willst. In der Console klicke mit der rechten Maustaste auf dein Script, wähle Objekt hinzufügen und Variable aus. Jetzt gibst Du der Variablen einen Namen, meineswegen Tor Status, soll Boolean sein. In Profil- und Aktionseinstellungen wählst Du als Profil erstmal ~switch und bei eigene Aktion wählst Du dein Script aus.
Wenn Du alles richtig gemacht hast kannst Du es testen mit rechter Maustaste auf die Variable, Befehl testen und dann änderst Du den Wert, OK und zum Schluss schalten wählen. Jetzt sollte dein Script ausgeführt werden und was machen.
Diese Variable verlinkst Du mit deiner Visu und Du hast einen Schalter der seine Zustand ändert.
Zum Schluss musst Du ein bißchen fine tunen so das der Zustand zum Tor passt. Wenn Du die Variable änderst aber nicht schalten sondern simulieren wählst wird die Variable geändert ohne das dein Script aufgerufen wird.
Hi,
so ist es bei mir auch. Ich habe dafür ein Ereignis ans Script gehängt so das es auch Änderungen am wirklichen Status des Gerätes mitbekommt. In diesem Fall kopiere ich den Status in meine Variable rein.
Ereignis geht auch mit rechte Maustaste auf Script, Objekt hinzufügen, Ereignis, ausgelöst und dann auf deinen Status zeigen lassen.
Reagieren kannst Du darauf mit:
if (isset($_IPS['EVENT']) && ($_IPS['EVENT'] == <ID von deinem Ereignis>)){
$status = GetValue(<ID Status des Gerätes>);
if ($status == <Wert von geschlossen>) SetValue(<ID von der Schaltervariablen>, true);
else SetValue(<ID von der Schaltervariablen>, false);
return;
}
Die Test Variable leuchtet jetzt gelb, wenn ich einmal drauf gedrückt hab. Leuchtet dann sofort und bei nochmaligen drücken ist es wieder aus.
Glaub ich hab die Variablen falsch zugeordnet.
Hi,
eigentlich ist die erste Zeile überflüssig. Die if-Konstruktion soll dafür sorgen das der Status der eigentlichen Variablen in diese Dummy-Variable geschrieben wird.
Guten Morgen Ralf,
muss mich echt entschuldigen. Ich glaub ich verstehe die Variablen Zuordnung nicht.
"<ID von deinem Ereignis "verstehe ich den „Taster“ bei mir Variable 49859
<ID Status de Gerätes> = die Variable , die mir das Signal der Garage offen/geschlossen gibt : 49034
„<ID von der Schaltervariablen“ Das verstehe ich nicht, ist das die gleiche wie der Taster 49859?
Ich habe eine Taster Variable 49859, die ich später auf die Visu verlinke 23376 !?
Dann habe ich eine Variable, die mir den Status des Tores anzeigt ( true offen , false zu) 49034
Und ein skript 20402, dass an der Taster Variable hängt
In meinem Skript hab ich dann den Befehl an die SPS mit Write bit und der Pause dazwischen,
<?php
if (isset($_IPS['EVENT']) && ($_IPS['EVENT'] == 49859)){
$status = GetValue(49034);
if ($status == false) SetValue(49859, true);
else SetValue(49859, false);
return;
}
S7_WriteBit(39046, true); //Gerät einschalten
sleep(1);
S7_WriteBit(39046, false); //Gerät einschalten
//Start writing your scripts between the brackets
?>
Ich habe versucht es einfacher und übersichtlicher zu gestalten.
<?php
$ID1 = die ID von dem richtigen Status deines Tors
$ID2 = die ID von dem falsche (Visu) Status
switch ($_IPS['SENDER']){
case "Variable":
IPS_LogMessage( "RBsoft" , "richtiger Status geändert" );
SetValue($ID2, GetValue($ID1);)
return;
case "Execute":
case "WebFront":
case "Action":
case "VoiceControl":
IPS_LogMessage( "RBsoft" , "falscher (Visu) Status geändert" );
S7_WriteBit(39046, true); //Gerät einschalten
sleep(1);
S7_WriteBit(39046, false); //Gerät einschalten
return;
}
?>
Jetzt kannst Du auch im IPS Logfile sehen was passiert ist. Steht da „richtiger Status geändert“ drin so wurde das Tor wirklich geöffnet oder geschlossen und der Status für die Visu sollte sich entsprechend geändert haben. Wenn das nicht im Log erscheint ist das Ereignis beim Script vielleicht noch nicht richtig und reagiert nicht auf dein Tor. Das kannst Du auch in der Console an Hand der Zeiten der Variablen und Ereignissen erkennen.
Wenn Du das Script einfach in der Console, per Variable ändern oder auch Alexa änderst sollte „falscher (Visu) Status geändert“ im Logfile stehen.
Hi,
noch ein kleiner Tip: Du kannst der virtuellen Variablen ein ICon zuweisen das erscheint dann statt des Standard-Switch Icons. Mein Garagentor hat im Schalter ein symbolisches Garagentor.