Temperaturwerte und Schaltzustände der UVR 1611 können mit diesem Plugin auf KNX GAs und auf RRDs geschrieben werden. Dokumentation steht im Code, viel Erfolg beim Einsatz!
Danke übrigens ans Forum für die vielen Tips und Beispiele, ohne die es sicherlich viel länger dauern würde sowas hier umzusetzen!
Fragen bitte hier posten!
Gruß
Micha
Danke übrigens ans Forum für die vielen Tips und Beispiele, ohne die es sicherlich viel länger dauern würde sowas hier umzusetzen!
Code:
#!/usr/bin/perl use strict; # ****************************************************************************** # Das Plugin liest Werte der UVR 1611 über BL-Net ein, legt sie in RRDs ab und # sendet sie auf den Bus. # Im Onlineschema des BL-Net müssen die Variabeln der zu lesenden Ein-/Ausgänge # innerhalb der Tags [UVR1611DATEN] [/UVR1611DATEN] eingetragen sein. Dies kann # z.B. im META Tag "Description" manuell vor dem Übertragen mit dem Memory # Manager hinzugefügt werden. # Beispiel: # <meta name="Description" content="<!-- [UVR1611DATEN]$n1a0|$n1a1|$n1a2| # $n1d0|$n1d1[/UVR1611DATEN] -->" /> # Info zum Schema: http://doku.uvr1611.at/doku.php/de/onlineschema/onlineschema # Analog dazu müssen hier die Arrays @knxGA, @knxDPT, @rrdName im Abschnitt # [Definition der Variabeln] gefüllt werden. # Beispiel: # my @knxGA = ('1/6/100','1/6/101','1/6/102','1/7/100','1/7/101'); # my @knxDPT = (9.001,9.001,9.001,1.001,1.001); # my @rrdName = ('aussen_temp','innen_temp','vorlauf_temp','ventilHzRL_bool','anforderungBrenner_bool'); # ****************************************************************************** # vorübergehedes disablen des Plugins: # return "disabled"; # plugin nicht zyklisch ausführen # $plugin_info{$plugname.'_cycle'} = 0; # plugin zyklisch ausführen $plugin_info{$plugname.'_cycle'} = $wg_config{''}{'rrd_interval'}; # Eine KNX GA abonnieren: Plugin wird aufgerufen, sobald ein Paket an diese GA # kommt. Der Inhalt des Pakets steht dann in $msg. # $plugin_subscribe{'7/0/15'}{$plugname} = 1; # Definition der Variabeln my @knxGA = ('1/6/100','1/6/101','1/6/102','1/7/100','1/7/101'); my @knxDPT = (9.001,9.001,9.001,1.001,1.001); my @rrdName = ('aussen_temp','innen_temp','vorlauf_temp','ventilHzRL_bool','anforderungBrenner_bool'); my $uvrUrl = 'http://192.168.0.1/GRAFIK1.htm'; # Falls keine Zahl vom BL-Net übertragen wird sollten folgende Werte als boolean true (1) erkannt werden my @booleanTrue = ('EIN','ON','ein','true'); my $tempValue; use LWP::Simple; my $urlContent = get($uvrUrl); return 'UVR-Datenabfrage fehlgeschlagen für $uvrUrl' unless defined $urlContent; $urlContent =~ /\[UVR1611DATEN\](.+)\[\/UVR1611DATEN\]/; my @uvrVars = split(/\|/,$1); my $counter = 0; my $dbgOut; foreach (@knxGA){ $tempValue = $uvrVars[$counter]; $tempValue =~ /([\d*,-])/; # nur 0-9 und - und , herausfiltern $tempValue =~ s/\,/./g; # , durch . ersetzen # plugin_log($plugname, '***'.$tempValue.'***'); if ($tempValue !~ /[+-]?\d+[.,]?d*/) { # plugin_log($plugname, 'tempValue ist keine zahl'); foreach my $x (@booleanTrue) { if ($tempValue eq $x) { $tempValue = '1'; # plugin_log($plugname, 'tempValue wird 1 zugewiesen'); last; } } if ($tempValue ne '1') { $tempValue = '0'; # plugin_log($plugname, 'tempValue wird 0 zugewiesen'); } } if($_ ne ''){ knx_write($_, $tempValue, $knxDPT[$counter]); plugin_log($plugname, "knx_write($_, $tempValue, $knxDPT[$counter])"); } if($rrdName[$counter] ne ''){ update_rrd($rrdName[$counter],'',$tempValue); plugin_log($plugname, "update_rrd($rrdName[$counter],'',$tempValue)"); } # plugin_log($plugname, $dbgOut.'--- '.$counter.':'.$rrdName[$counter].'*'.$uvrVars[$counter].'*'.$tempValue.'*'.$_.'*'.$knxDPT[$counter]); $counter++; } # plugin_log($plugname, "@uvrVars -- @knxGA"); return $counter." Werte von UVR abgefragt"; # Copyright (C) 2012 Michael Schneider # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>
Gruß
Micha
Kommentar