Hi, ich hoffe ihr könnt einem neuling helfen.
ausgangsituation:
ein wasserbehälter (pool) soll via ips automatisch den wasserstand in einem bstimmten bereich halten.
als (sensor-) sender hab ich ein FS20 S4M 2/4-Kanal-Sendemodul gedacht.
als empfänger ein FS20 SM4 Empfangsmodul.
von der wasserleitung geht es über ein 230V magnetventil (aus alter waschmaschine) in den pool.
die "wasser-"hardware aus FS20-Empfängerund und ventil hab ich schon gebaut und gestestet. der direkt betrieb mit der fernbedienung klappt auch wunderbar.
das script zur steuerung hab ich auch schon geschrieben. funktioniert im testbetrieb mit einem glas wasser auch schon ganz gut.
herkömmliche „wassersensoren“ erzeugen ein „dauersignal“. der sender will aber nur impulse.
da ich mit zwei sensoren arbeiten will (leer und voll) um einen füllbereich abzudecken, brauch ich eigentlich bei jedem sensor zwei signale.
sensor 1 (voll):
der sensor soll ein „false“ senden wenn er trocken ist und ein „true“ wenn er im wasser ist.
für sensor 2 (leer)gilt das gleiche.
durch diese doppelte kontrolle sind wasserschwankungen durch schwimmen weitgehend ignorierbar
somit kann ich mir vier zustände anzeigen lassen:
leer, wird gefüllt
normal, wird gefüllt
normal, ventil zu
voll, ventil zu
das problem:
was für eine schaltung muss ich mir zwischen sensor und sender bauen um aus dem dauersignal meine beiden impulse zu generieren?
zum verständnis kommt hier noch mein script:
<?
/*
*******************************
IP-SYNCOM Event Scripting
*******************************
*/
//File: pool.ips.php
// Varibalen
$becken_voll = GetValueBoolean ("sender.pool.Pool_Sensor_1.Status");
$becken_leer = GetValueBoolean ("sender.pool.Pool_Sensor_2.Status");
$ventil = GetValueBoolean ("Empfänger.Pool.Pool_Switch_1.Status");
// Wasser Hoch
if (("$becken_voll" == 1) // Status "Becken Voll"
&&
("$becken_leer" == 1)) //Status "Becken Leer"
{
IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF"); //Magnetventil Zu
echo "Wasserstand Hoch<br><br>Magnetventil zu"; // Textausgabe
}
// Wasser Niedrig
elseif (("$becken_voll" == 0) // Status "Becken Voll"
&&
("$becken_leer" == 0)) //Status "Becken Leer"
{
IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_ON"); //Magnetventil auf
echo "Wasserstand Niedrig<br><br>Magnetventil Offen"; // Textausgabe
echo "<br> Füllung läuft!"; // Textausgabe
}
// Füllen
elseif (("$becken_voll" == 0) // Status "Becken Voll"
&&
("$becken_leer" == 1) //Status "Becken Leer"
&&
("$ventil" == 1)) //Magnetventil Offen
{
echo "Wasserstand Normal<br><br>Magnetventil Offen"; // Textausgabe
echo "<br> Füllung läuft!"; // Textausgabe
}
// Wasserstand Normal
elseif (("$becken_voll" == 0) // Status "Becken Voll"
&&
("$becken_leer" == 1)
&&
("$ventil" == 0)) //Status "Becken Leer"
{
IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF"); //Magnetventil Zu
echo "Wasserstand Normal<br><br>Magnetventil zu"; // Textausgabe
}
Else
{
IPS_RunScript ("Empfänger.Pool.Pool_Switch_1_OFF"); // Ventil ZU
Echo " SENSORFEHLER !!!"; // Fehlermeldung
}
?>
ich hoffe ihr könnt mir helfen, oder mir natürlich auch andere möglichkeiten zeigen.
ich bedanke mich auf jedefall schon mal im voraus dafür.
dirk