Hallo zusammen
Da ich seit bald zwei Wochen Besitzer von einem Wiregate bin möchte ich hier auch meinen kleinen Beitrag leisten.
Ich habe über längere Zeit nach einer präzisen und kostengünstigen Lösung für die Messung des Füllstands meiner Regenwasserzisterne gesucht. Fündig wurde ich bei Jens Dietrich, welcher eine Drucksonde baut mit einer 1-wire Anbindung. Leider wird der verwendete Chip nicht direkt vom Wiregate unterstützt. Das folgende Wiregate Plugin bindet diesen direkt ins KNX ein.
Ich habe in diesem Forum nach einem Beispiel gesucht, wie man "Fremdchips" ins Wiregate einbindet, habe aber nichts gefunden. Daher habe ich die schwache Hoffnung der erste zu sein ;-) Analog kann man natürlich auch andere Chips einbinden, die nicht direkt unterstützt werden.
Das Wiregate läuft übrigens wie geschmiert :-)
Markus
Da ich seit bald zwei Wochen Besitzer von einem Wiregate bin möchte ich hier auch meinen kleinen Beitrag leisten.
Ich habe über längere Zeit nach einer präzisen und kostengünstigen Lösung für die Messung des Füllstands meiner Regenwasserzisterne gesucht. Fündig wurde ich bei Jens Dietrich, welcher eine Drucksonde baut mit einer 1-wire Anbindung. Leider wird der verwendete Chip nicht direkt vom Wiregate unterstützt. Das folgende Wiregate Plugin bindet diesen direkt ins KNX ein.
Ich habe in diesem Forum nach einem Beispiel gesucht, wie man "Fremdchips" ins Wiregate einbindet, habe aber nichts gefunden. Daher habe ich die schwache Hoffnung der erste zu sein ;-) Analog kann man natürlich auch andere Chips einbinden, die nicht direkt unterstützt werden.
Das Wiregate läuft übrigens wie geschmiert :-)
Markus
Code:
# Dies ist ein Beispiel, wie man einen vom Wiregate nicht unter- # stützen 1-wire Chip in das KNX System einbinden kann. # # Plugin für eine stehende Regenwasserzisterne in Verbindung mit # einem DS2450 Chip. Beim Chip wird der Ausgang volt.A verwendet. # Gelegentlich liefert der Chip bei der Abfrage 0. In diesem Fall # wird mit einer nochmaligen Abfrage versucht der Fehler zu beheben. # # Der Name des Sensors kann mit dem Unix Kommando # owdir -s 4304 # im Wiregate abgefragt werden oder direkt im Internet Browser mit # http://wiregateXXX:3001 # wobei XXX mit der korrekten Nummer ergänzt werden muss. # Eigenen Aufruf-Zyklus auf 300 Sekunden (Default globales RRD-Intervall) setzen #$plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'}; $plugin_info{$plugname.'_cycle'} = 180; my $GA_PercentFull = "6/1/5"; my $GA_Wasserstand = "6/1/6"; my $GA_Wasservolumen = "6/1/7"; my $GA_SpannungsStoerung = "6/1/8"; my $GA_DrucksondenLeitungStoerung = "6/1/9"; my $TankVolumenInLiter = 12566; # in Liter my $TankWasserstandMax = 2560; # in Millimeter my $count = 5; my $volt_A_Variable = 0; while ($volt_A_Variable == 0 && $count > 0) { $volt_A_Variable = `owread -s 4304 /20.DB5C06000000/volt.A`; if ($volt_A_Variable == 0){ # wenn ein ungültiger Wert geliefert wurde => noch einmal abfragen $count--; usleep(100000); } }; if ($volt_A_Variable == 0){ # falls immer noch ungültig Abbruch ohne Fehlermeldung return "0 gelesen"; } #Störung auf der Versorgungsspannung: my $volt_B_Variable = `owread -s 4304 /20.DB5C06000000/volt.B`; my $ErrorPower_Variable = 0; if ($volt_B_Variable == 0){ # wenn 0 geliefert wurde => noch einmal abfragen zur Sicherheit $volt_B_Variable = `owread -s 4304 /20.DB5C06000000/volt.B`; if ($volt_B_Variable == 0){ # Störung gefunden $ErrorPower_Variable = 1; } } knx_write($GA_SpannungsStoerung, $ErrorPower_Variable, 1); #Störung auf der Drucksondenleitung überprüfen: my $volt_C_Variable = `owread -s 4304 /20.DB5C06000000/volt.C`; my $ErrorCable_Variable = 0; if ($volt_C_Variable > 2){ # Störung Drucksondenleitung gefunden $ErrorCable_Variable = 1; } knx_write($GA_DrucksondenLeitungStoerung, $ErrorCable_Variable, 1); my $PercentFull_Variable = $volt_A_Variable * 40; my $Wasserstand_Variable = $TankWasserstandMax * $volt_A_Variable / 2.5; my $Volumen_Variable = $TankVolumenInLiter * $volt_A_Variable / 2.5; knx_write($GA_PercentFull, $PercentFull_Variable, 5); knx_write($GA_Wasserstand, $Wasserstand_Variable, 7); knx_write($GA_Wasservolumen, $Volumen_Variable, 7); update_rrd("RegenWasserstandInProzent","",$PercentFull_Variable); update_rrd("RegenwasserHoehe","",$Wasserstand_Variable); update_rrd("RegenWasserVolumen","",$Volumen_Variable); return 0;
Kommentar