Ich habe mir ein Velleman USB Board gekauft. Mit der Testsoftware läuft es fehlerfrei, nur in IPS bekomm ich es nicht zum laufen. Auch die vielen Beiträge im Forum haben mir nicht weiter geholfen. Da ich mich noch nicht gut mit PHP auskenne, kann mir vielleicht einer helfen.
Wie müßte das Skript aussehen, wenn ich mit dem Digitaleingang 1 den Digitalausgang 1 schalten möchte?
Die Scripte hier im Forum habe ich nicht zum laufen gebracht. Die K8055D.dll ist in IPS-Ordner und die Instanz-ID habe ich auch angepaßt, aber es läuft nicht.
Für Hilfe wäre ich dankbar.
ich habe folgendes Szenario. Wenn eine Katze auf das Klo geht spricht der Bewegungsmelder an oder ein Taster im Bad gedrückt wird, dann wird meine Kontrollierte Wohnraumlüftung über ein Velleman Board eingeschaltet. Hier mal die zwei Scripte dazu:
Vielen Dank für die schnelle Antwort. Ich werde die Scripte mal ausprobieren. Die Scripte helfen mir sicher, mich in PHP weiter einzuarbeiten. Danke nochmals.
Es funzt auch soweit, aber der Digitalausgang 1 geht wieder aus.
Was muß man machen, dass der Ausgang ein bleibt, wenn der Eingang 3 kuzzeitig ein ist?
$status = (VelleUSB_ReadDigitalChannel (27345, 3))*1;
If ($status == true)
{
VelleUSB_WriteDigitalChannel(27345, 1, true);
}
else
{
VelleUSB_WriteDigitalChannel(27345, 1, false);//hiermit setzt Du ihn selbst wieder zurück.
}
Ich weiss ja nicht was Du vorhast, aber ich würde noch eine Variable Typ Boolean hinzunehem, welche vom Eingang 3 auf True oder false gesetzt wird und darüber meinen Status abfragen.
Eingang3 gibt einen Impuls Variable wird True, bei erneutem Impulse wird Variable false.
Somit bleibt dein Ausgang 1 solange anstehen bis Eingang3 die Varaible wieder auf false setzt.
Da ich mich mit php noch nicht weiter auskenne, weiß ich halt nicht, wie der Code dazu aussehen muß. Es soll praktisch der Ausgang 1 solange ein sein, solange auch der Eingang 3 ein ist.
Das Einlesen der Eingänge funzt, wenn ich die Variable „status1“ (ist dem Digitaleingang 1 in Instance Config zugeordnet) beobachte, bleibt diese solange auf true, solange ich den taste der an diesen Eingang angeschlossen ist, gedrückt halte. Der Eingang schaltet erst nach loslassen des Tatsers auf False.
Sorry Neeh Falsch…
Die digital eingänge können NUR auf aufgehende oder runtergehende flanken triggern… Das heisst das das script nur getriggert wird beim eindrucken oder loslassen des knopfes - nicht beides.
Also solte das script nach x-zeit uberprufen ob den eingang noch eingedruckt ist.
Habe zur zeit auch riese probleme die brenn-zeit meinem kessel mit zu bekommen. Beim einschalten wird die variable auf true gesetzt, das script wird getriggert und wirft pro minute eine 1 in die brennzahl-variable … aber jede minute muss uberpruft werden ob der brenner (ego digital eingang) noch brennt (noch eingeschaltet ist).
Wieso du 2x ds script zum triggeren bekommst ist mir ein rätsel … Ich wette mal das du im script die variable resettest und dadurch wird das script neu getriggert die das gegenuberstehende ausfuhrt.
stichwort : Set_Metaphore(blabla, timeout) (hilfe : wie wars wieder)
Diese funktion verbietet diesem script innerhalb von timeout neu zu triggeren. Das hiesse also das du ruhig die variable resetten kannst OHNE das das script neu angefeuert wird.
Nah ? Wie war das denn? Mein problem gewesen
Bei bedarf das script - nur etwas complexer wie oben - deshalb nur bei bedarf
Was muß eigentlich unter Script Events (Triggered Variables) eingestellt werden?
Warum der Eingang immer ein und aus geht, liegt wahrscheinlich daran, weil ich den Timer Intervall auf einer Sekunde stehen hatte und somit das Script immer wieder gestartet wurde. Mit „Set Metaphore“ kann ich als PHP-Einsteiger leider nichts anfangen.
Mit dem folgenden Script habe ich es geschafft was ich wollte, nämlich den Ausgang 1 auf true zu schalten, wenn der Eingang 1 true ist. Ich dachte ich hätte das schon mal so gehabt, aber da lief es nicht, aber egal jetzt funzt es.
<?
/*
File : Velle_Read_Dig.ips.php
Trigger :
Intervall: 1s
*/
$status = (VELLEUSB_ReadDigitalChannel(25302, 1));
if ($status == true)//Status Eingang 1 auf true abfragen
{
VELLEUSB_WriteDigitalChannel(25302, 1, true); //ist Eingang 1 true, dann schalte Ausgang 1 auf true
}
else //oder
{
VELLEUSB_WriteDigitalChannel(25302, 1, false);//ist Eingang 1 false, dann schalte Ausgang 1 auf false
}
?>
Ich habe nur noch ein kleines Problem, und zwar habe ich unter „Events“ den Timer Interval auf 1s eingestellt, damit ständig das Script läuft, wenn ich aber nur ganz kurz den Eingang bringe läuft das Script nicht an. Wie kann ich realisieren, das das Script so getriggert wird, damit es bei Änderung am Eingang 1 ausgeführt wird. Wenn ich die Variablen beobachte, die ich den Eingängen zugeordnet habe, so ändern diese nicht ihren Zustand von true nach false und umgekehrt, sondern sie werden nur zeitlich aktualisiert. Damit kann ich ja auch nicht diese Variablen in „OnChange“ Event einsetzen, oder geht das doch irgendwie?
Du wirdst wohl die ‚trigger‘ eigenschaften vom ersten eingang nutzen mussen um an zu schalten. Ich denke mal runter-gehende flanke (also ziehe 5V nach 0, oder: lege GND an input 1 um zu schalten).
Das ausschalten soll dan per abfragen vom eingang laufen wie dein script oben.
in kurze :
trigger variable anlegen und eintragen in die prop’s vom Velleman,
diese variable nutzen um dein script zu triggeren
das script so gestalten das wenn den ausgang geschaltet ist, ein scripttimer laufen lassen die pro x zeit den eingang scand und wenn false, ausgang ausschalten und scripttimer stoppen
Ich habe in der Config von Velleman für jeden Eingang eine Variable angelegt. Diese ändert sich aber nicht bei drücken des Tasters am Eingang 1. Wenn ich die Variable beobachte, ändert sich nur die Zeit unter „Updates“. Wenn die Variable aber ihren Zustand von true nach false oder umgekehrt nicht ändert, wie soll ich diese dann zum triggern nutzen?
variable anlegen und verknufen. Trigger high/low wählen:
high ist aufgehende flanke (einschalten)
low ist runtergehende … (bei ausschalten)
Zeitkritisch schalten :
2 eingänge hardwaremässig verbinden… 1e fur aufgehende, der andere beim ausschalten. Script durch beide events triggeren lassen.
Fertig.
Danke für deine Hilfe. Ich nehme an, du meinst die Variablen in der Instanz-Config des Velleman-Boards. Die sind angelegt, und zwar als „channel1, channel2“ usw., aber womit muß ich die verknüpfen?