Velleman UBS-Board (P8055-1)

Hallo,

ich möchte gerne ein Velleman USB-Board einbinden, im Forum gibt es dazu ja über die Jahre mehrere Beiträge. Die digitalen Eingänge funktionieren einwandfrei, soweit ich die bisherigen Beiträge verstehe, muss man die Übrigen Ein-/ Ausgänge über eine PHP-Skript ansprechen. Da ich mich erst seit kurzer Zeit mit IP-Symcon beschäftige und mit den Skripten erst so langsam warm werde meine Frage: gibt es eventuell im Forum dazu ein fertiges Skript?

Vielen Dank & gute Wünsche für 2013

Ecoli

Es gibt die Funktion:


VELLE_WriteDigitalChannel($id, $kanal, $wert);

paresy

Hallo paresy,

danke für den Hinweis. Ich habe versucht, das mit einem Skript umzusetzen. Die Variable Output2 soll den
Ausgang 2 des Boards schalten. Das Skript heißt output2.

So sieht das Skript aus:

<?
$status = GetValueBoolean (35502 /[Velleman USB\Digitaloutput2]/);
If ($status == true)
{
VelleUSB_WriteDigitalChannel(47590 /[Velleman USB]/, 3, true);
}
else
{
VelleUSB_WriteDigitalChannel(47590 /[Velleman USB]/, 3, false);
}
?>

Wenn ich den Wert der Variablen manuell ändere und das Skript in der Verwaltungskonsole manuell ausführe, schaltet
der Ausgang am Board ordnungsgemäß um (LED an/aus).

Ohne manuelle Ausführung des Skirpts passiert aber nichts. Sicher habe ich da etwas übersehen/ vergessen.
Woher „weiß“ das Skript, dass es ablaufen soll, wenn sich die Variable Output2 ändert, das ist wohl das Problem.

Gruß

Ecoli

Woher „weiß“ das Skript, dass es ablaufen soll, wenn sich die Variable Output2 ändert, das ist wohl das Problem.

Man kann dem Script im Editor Ereignisse zuweisen. Ein passendes Ereignis wäre z.B. „Bei Variablenänderung“. Siehe http://www.ip-symcon.de/service/dokumentation/konzepte/ereignisse/

Tommi

Hallo Tommi,

prima, funktioniert jetzt einwandfrei.

Danke & Gruß

Ecoli

Hallo,

ich habe jetzt noch ein Darstellungsproblem der Ausgänge als Schalter im WebFront:

Mein angeschlossenes Wired-Modul bietet mir folgende Ansicht zum Schalten von Ausgängen:

Mit Click auf An/ Aus löst man den Schaltvorgang aus.

Meine Variable Digitaloutput wird allerdings nur so, nicht schaltbar dargestellt:

Wo mache ich da einen Fehler bzw. wie kann ich die „schaltbare“ Darstellung erreichen?

Gruß

Ecoli

Du mußt in Deinem Script sagen: führe das Script aus wenn: Webfront oder Execute dich aufruft.

Also Dein jetziges Programm mit dieser Zeile anfangen:


<?
if($_IPS['SENDER'] == "WebFront") OR "Execute" {

Und am Ende Deines Script die geschweifte Klammer zumachen:

}
?>

Eigendlich mußt Du die Script auslösung über Variable zurücknehmen, sonst wird das Script zweimal aufgerufen, einmal weil die Webfront ruft und dann nochmal, weil die Variable sich änderte, ändert am Zustand aber nicht’s, glaube ich.

Gruß Helmut

Hallo Helmut,

was muss ich für ‚SENDER‘ eintragen? Oder tatsächlich ‚SENDER‘?

Ich habe versucht, das Skript wie du vorgeschlagen hast zu ändern und bekomme Fehlermeldungen zur Syntax.

Kannst du mir auf die Sprünge helfen?

Danke & Gruß

Ecoli

Ich sollte Nachts nichts machen…

Die Lösung ist wahrscheinlich in dem Variablenprofi zu finden. Die Boolsche muß das ~Switch bekommen und dann läuft es auch ohne IPS Sender …

Versuch das mal zu ändern, in der Variable.

Gruß Helmut

Vellremann.png

Hallo Helmut,

ich war schon über die späte Antwort erstaunt! Das Forum scheint nie zu schlafen :slight_smile:

Danke für den Vorschlag, hatte ich auch schon probiert, hat nicht den gewünschten Effekt. Mit dieser Einstellung sehe ich im WebFront zwar dann zwei Schalter (An/Aus), aber die lösen keine Schaltfunktion aus.

Vielleicht noch einmal die Frage an alle:

Wie kann man im WebFront eine Variable (hier Beispiel Digitaloutput2) mit einem An/Aus-Schalter schalten? Wie bekommt man den Variablenwert (true/false) „in ein Skript“, damit dann dort in Abhängigkeit vom Rückgabewert eine Aktion ausgelöst werden kann?

Dafür gibt es sicher schon eine Umsetzung mittels PHP-Skript. Ich komme trotz Probieren nicht weiter und habe auch im Forum über die Suchfunktion keine Lösung gefunden.

Gruß

Ecoli

Ist zwar wieder Nacht, ev. wieder Blödsinn, aber egal. Erweitere mal Deinen Code um das Setzen der Variable auf True oder False:
in der "War EIN, soll AUS -Schleife:

setValueBoolean (deine ID /*[Vellemann Test\Digitaloutput2]*/,false);

und in der "War AUS, soll EIN-Schleife:

setValueBoolean (deine ID /*[Vellemann Test\Digitaloutput2]*/,true);

und schaumal:
Du fragst ist die Variable True und schaltest Die dann wieder auf true, da war sie aber schon
.

Zumindest in dem Tread weiter oben schreibst Du das.

Gleiche Bedingungen: Variable ruft Script auf wie in den vorherigen Tread.
.
.
.

Mein TestCode, getestet mit meinem SupertruppaHID-Funkmodul funktionoggelt damit, ist auch HID:

<?
$status = GetValueBoolean (20975 /*[Vellemann Test\Digitaloutput2]*/);
If ($status == true)
{
//VelleUSB_WriteDigitalChannel(37848 /*[HID]*/, 3, false);
HID_SendEvent(37848 /*[HID]*/, 0, chr(0x01).chr(0x85).chr(0x03));
setValueBoolean (20975 /*[Vellemann Test\Digitaloutput2]*/,false);
}
else
{
//VelleUSB_WriteDigitalChannel(37848 /*[HID]*/, 3,true);
HID_SendEvent(37848 /*[HID]*/, 0, chr(0x01).chr(0x85).chr(0x03));
setValueBoolean (20975 /*[Vellemann Test\Digitaloutput2]*/,true);
}
?>

Gruß Helmut

Hallo Helmut,

so funktioniert es bei mir jetzt:


<?
$status = GetValueBoolean (25865 /*[Velleman USB\Digitaloutput1]*/);
If ($status == true)
 {
VelleUSB_WriteDigitalChannel(47590 /*[Velleman USB]*/, 1, false);
setValueBoolean (25865 /*[Velleman USB\Digitaloutput1]*/,false);
}
else
{
VelleUSB_WriteDigitalChannel(47590 /*[Velleman USB]*/, 1, true);
setValueBoolean (25865 /*[Velleman USB\Digitaloutput1]*/,true);
}
?>

Wenn ich den Code nach deinem Vorschlag umsetze, dann ist die Anzeige der Schalter im Vergleich zum Ausgang (LED) invers. Dahinter steckt sicher eine höhere Logik, die ich aber momentan nicht weiter ergründen werde…

Vielen Dank für die Hilfe und Grüße

Ecoli