|
 |
|

03.02.2012, 16:14
|
|
Benutzer
|
|
Registriert seit: 10.02.2010
Ort: Bei Bamberg
Beiträge: 158
|
|
"Müllverwaltung"
Hallo zusammen,
ich habe (nachdem ich trotz eMail-Reminder kürzlich mal wieder vergessen hatte die Mülltonne rauszustellen), mich mal an einem Müll-Script versucht (Ich entschuldige mich jetzt schon für den gleich folgenden Spaghetti-Code  ).
Die Idee war folgende:
Es gibt bei uns vier verschiedene Arten von Müll (Restmüll, Papier, Bio und gelber Sack (Wertstoff)). Die Termine habe ich in vier separate Dateien abgelegt (wäre wahrscheinlich auch eleganter in einer csv-Datei gegangen, aber mit den separaten Dateien war es für mich am einfachsten). Ich habe diese unter /etc/userfiles/abfall/*.csv abgelegt (aufgrund mangelnder Linux-Kenntnisse weiß ich nicht, ob das Verzeichnis optimal ist, aber kann ja nach Belieben geändert werden). In diesen vier Dateien sind die Termine für die Abholungen eingetragen (Wichtig: müssen im Format TT.MM.JJJJ sein).
Am einfachsten (für nicht-Linuxianer) lassen sich die Dateien meiner Meinung nach mit WinSCP :: Download kopieren.
Da das Script nicht überprüft, ob Termine in der Vergangenheit sind, sollten nur kommende Termine eingetragen werden.
Da ich auf der Visu nicht allzuviel Platz für vier Abholtermine verschwenden wollte, und es bei uns auch recht selten vorkommt, dass verschiedene Tonnen am selben Tag geholt werden, habe ich den Zustand der einzelnen Tonnen addiert. Somit ergibt sich ein Gesamtwert, der auch an die Visu übergeben wird (z.B. hat Restmüll 1 und Biomüll 4, wenn also beide am nächsten Tag geholt werden, wird eine 5 übergeben).
An der Visu kann der jeweils eingeblendete Abholtermin bestätigt werden. Je nachdem ob es noch weitere gibt, werden dann diese zum Bestätigen eingeblendet oder das Feld bleibt leer.
Zu guter letzt habe ich noch zur visuellen Darstellung im Haus RGB- LED´s angesteuert, die, wenn Müll am nächsten Tag geholt wird, entsprechend die Farbe ändern (in dem Script werden sie von standard hellblau auf pink geändert).
Hier mal der Code:
Code:
$plugin_info{$plugname.'_cycle'} = 900;
$plugin_subscribe{"4/3/99"}{$plugname} = 1;
$plugin_subscribe{"1/2/150"}{$plugname} = 1;
use Date::Calc qw(:all);
### Formatieren des Datums
my ($Jahr, $Monat, $Tag) = Today();
my ($mJahr,$mMonat,$mTag) = Add_Delta_Days(Today(),1);
$Tag = ($Tag < 10) ? "0".$Tag : $Tag;
$Monat = ($Monat < 10) ? "0".$Monat : $Monat;
$mTag = ($mTag < 10) ? "0".$mTag : $mTag;
$mMonat = ($mMonat < 10) ? "0".$mMonat : $mMonat;
my $heute = $Tag . "." . $Monat . "." . $Jahr;
my $morgen = $mTag . "." . $mMonat . "." . $mJahr;
my $muellwert = 0;
my $multiplier = 1;
### Hier werden die vier Dateien ausgelesen und bei Bedarf die entsprechende Variable aktualisiert
### Die Dateien müssen genauso heißen (rest.csv, papier.csv etc.):
my @muellarten = ("rest","papier","bio","wertstoff");
foreach my $muell(@muellarten){
if (($plugin_info{"next_".$muell} eq "") or ($plugin_info{"next_".$muell} eq $heute)) {
$plugin_info{"confirm_".$muell} = 0;
open(File,'</etc/userfiles/abfall/'.$muell.'.csv');
my @muellfile = <File>;
$plugin_info{"next_".$muell} = trim(shift(@muellfile));
close(File);
open(File,'>/etc/userfiles/abfall/'.$muell.'.csv');
foreach my $line(@muellfile){
print File $line;
};
close(File);
}
if (($plugin_info{"next_".$muell} eq $morgen) and ($plugin_info{"confirm_".$muell} != 1)){
$muellwert+= $multiplier;
}
$multiplier*=2;
}
### Hier wird die Bestätigung der Visu abgefangen und verarbeitet
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq "4/3/99") {
SELECT:{
if ($muellwert >= 8){&confirm_muell("wertstoff",8); last SELECT; }
if ($muellwert >= 4){&confirm_muell("bio",4); last SELECT; }
if ($muellwert >= 2){&confirm_muell("papier",2); last SELECT; }
if ($muellwert == 1){&confirm_muell("rest",1); last SELECT; }
}
#Hier wird überprüft, ob das Licht eingeschaltet ist, und falls ja werden die Farben auf "Standard" geändert
if (($muellwert == 0) and (knx_read("1/2/120",1) eq "100.0")){
&set_farbe(80,100,100);
}
}
knx_write("4/3/100",$muellwert,5.010);
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq "1/2/150" and $msg{'data'} eq "01") {
if ($muellwert >0) { # and ((Now())[0] >=18)) { Hier wäre es möglich, erst ab 18.00 Uhr die Farbe zu ändern.
&set_farbe(100,0,80);
} else {
&set_farbe(80,100,100);
}
}
sub confirm_muell {
$plugin_info{"confirm_".$_[0]} = 1;
$muellwert-=$_[1];
}
sub set_farbe {
knx_write("1/2/120",$_[0]);
knx_write("1/2/130",$_[1]);
knx_write("1/2/140",$_[2]);
}
return $muellwert;
Ich habe es so geschrieben, dass das Lesen und Schreiben der Dateien nur einmal je Abholzyklus stattfindet um die Ausführungszeit des Scriptes möglichst kurz zu halten.
Es wird für die Berechnung des nächsten Tages noch das Paket libdate- calc- perl benötigt. Dies kann mittels apt-get install libdate- calc- perl an der Konsole installiert werden.
Die GA 1/2/150 ist der Präsenzmelder, der die LED´s ein/ausschaltet.
4/3/99 und 4/3/100 sind "unechte" GA´s die nur für die "Kommunikation" mit der Visu notwendig sind.
1/2/120, 130 und 140 sind die einzelnen RGB-Farben der LED´s.
Zu guter letzt wären noch die Einstellungen an der Visu (CometVisu). Diese habe ich in der visu_config.xml wie folgt gelöst:
Unter <Mappings> habe ich folgendes hinzugefügt:
Code:
<mapping name="Muell">
<entry value="0"> </entry>
<entry value="1">Restmüll morgen</entry>
<entry range_min="2" range_max="3">Papiermüll morgen</entry>
<entry range_min="4" range_max="7">Biomüll morgen</entry>
<entry range_min="8" range_max="15">Gelber Sack morgen</entry>
</mapping>
<mapping name="Muell_confirm">
<entry value="99">Bestätigen</entry>
</mapping>
Und dann noch die eigentliche Darstellung im Page-Bereich:
Code:
<info mapping="Muell">
<label>Müll:</label>
<address transform="" readonly="false" variant="">4/3/100</address>
</info>
<trigger value="99" mapping="Muell_confirm" styling="RedGreen" align="left">
<label> </label>
<address transform="" readonly="false" variant="">4/3/99</address>
</trigger>
Im Anhang habe ich noch zwei Bilder der Visu.
Ich denke, dass man die Lösung in den seltensten Fällen 1:1 übernehmen kann, aber ich dachte, ich stelle es mal zur Verfügung, evtl. dient es ja auch als kleine Inspiration für ähnliche Vorhaben.
Über Verbesserungsvorschläge und Feedback würde ich mich natürlich auch freuen.
Viele Grüße
Christian
|

10.02.2012, 13:27
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Hast Du schon mal bei deinem Entsorger nachgefragt ob sie einen Abfallkalender als Datei haben.
Meiner hat ein iCal-Kalender-Datei, die kann man einfach mit einem Plugin auslesen.
Man sucht in der Datei nach dem aktuellen Datum und 8Zeilen weiter steht die Art der Abfallentsorgung.
Ich habe zur Zeit auch so ein Plugin in Arbeit.
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

10.02.2012, 15:48
|
|
Benutzer
|
|
Registriert seit: 10.02.2010
Ort: Bei Bamberg
Beiträge: 158
|
|
Hi Netfritz,
zum downloaden gibt es nur einen Abfallkalender als pdf-Datei. Deshalb muss ich da aktuell einmal pro Jahr die Termine abtippen. Da ich das aber zusätzlich noch für ein Excel-Makro nutze, welches aus den Terminen meine Kalendereinträge für Outlook erstellt, ist es halb so wild. Eine Datei wäre natürlich noch schöner, würde beides ersparen. Muss ich bei Gelegenheit mal nachfragen, ob die bei uns eine Datei zur Verfügung stellen.
Danke für die Info.
__________________
Viele Grüße
Christian
|

10.02.2012, 18:22
|
|
Benutzer
|
|
Registriert seit: 19.08.2009
Beiträge: 485
|
|
Zitat von NetFritz
Hallo
Meiner hat ein iCal-Kalender-Datei, die kann man einfach mit einem Plugin auslesen.
Art der Abfallentsorgung.
|
Meiner liefert das hier:
Code:
BEGIN:VEVENT
DTSTART;VALUE=DATE:20120102
DTEND;VALUE=DATE:20120103
DTSTAMP:20120209T010000Z
CLASS:PUBLIC
DESCRIPTION:www.entsorgungsdaten.de
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Restmüll in Markt Regenstauf: Regenstauf (gesamt)
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20120109
DTEND;VALUE=DATE:20120110
DTSTAMP:20120209T010000Z
CLASS:PUBLIC
DESCRIPTION:www.entsorgungsdaten.de
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Papiertonne in Markt Regenstauf: Regenstauf westlich vom Regen (mit: am Spangl\, Bahnweg\, Gutenbergstraße)\, Diesenbach\, Steinsberg\, Eitlbrunn\, Ramspau\, Hirschling\, Hagenau\, Kleinramspau\, Wöhrhof\, Heilinghausen\, Karlstein\, Schneitweg
TRANSP:TRANSPARENT
END:VEVENT
Baust du da Abfragen auf Schlüsselwörter in SUMMARY ein?
Da melde ich mich auch schon mal an wenn das Plugin fertig ist.
Wenn jemand zum Testen gebraucht wird, mache ich gerne....
Gruß
Sascha
|

10.02.2012, 19:17
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Es wird nach dem Tag gesucht
DTSTART;VALUE=DATE:20120305
und dann 8 Zeilen weiter nach
SUMMARY;LANGUAGE=de:Restmuell
Bei Dir sind es nur 7Zeilen aber das ist kein Problem.
Wenn ich meinen iCal-Kalender Downloaden will muss ich den Wohnort und Strasse mit Hausnummer eingeben,
dann bekommen ich einen Kalender der genau zu meinen Haus passt.Dadurch habe ich da auch nur z.B. Restmüll
stehen.
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

12.02.2012, 20:38
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Hier mal mein Abfall-Plugin.
Code:
# sucht aus den iCal Abfallkalender der BAWN Nienburg den Abfalltermin
# liefert Tag und Abfallsorte
# schreibt beide in GA
# 02.2012 by NetFritz
#############################################################
# file muss jedes Jahr angepasst werden
my $file = '/var/www/myhouse/Leerungstermine0008207.ics';
# http://www.lk-nienburg.de/bawn/page.php?site=1000021&typ=3
my $abfall_termin_ga = "15/0/7";
my $abfall_art_ga = "15/0/8";
##############################################################
# Eigenen Aufruf-Zyklus auf 3600 Sekunden setzen
# der Aufrufzyklus ist unabhängig von der Taktzeit und muss kürzer sein!
$plugin_info{$plugname.'_cycle'} = 3600;
# Datum muss so ausehen "20120206"
# Morgen
my @day = reverse((localtime(time + 86400))[3 .. 5]);
$day[0] += 1900; $day[1]++;
my $day_morgen = sprintf("%04d%02d%02d", @day);
my $art_morgen = &hole_termin($file,$day_morgen);
if(!$art_morgen eq ""){
knx_write($abfall_termin_ga,"Morgen",16);
knx_write($abfall_art_ga,$art_morgen,16);
}
# Heute
chomp(my $now = `date "+%Y%m%d"`); # hole Datum
my $art_heute = &hole_termin($file,$now);
if(!$art_heute eq ""){
knx_write($abfall_termin_ga,"Heute",16);
knx_write($abfall_art_ga,$art_heute,16);
}
if($art_heute eq "" and $art_morgen eq "" ){
knx_write($abfall_termin_ga,"Heute",16);
knx_write($abfall_art_ga,"keine Abfuhr",16);
}
#
#-------------------- Sub -----------------------------#
sub hole_termin {
my $sub_file = shift;
my $sub_now = shift;
my $such = 'DTSTART;VALUE=DATE:'. $sub_now; # Tag der Sammlung danach wird gesucht
my $i = 0;
my $ifund = 9999; # muss hoeher als anzahl der linien sein
my ($tag,$art); # abfuhr tag u. abfall art
open(my $fh, '<', $sub_file) or die ("ERROR open: $sub_file ($!)\n");
while(my $line=<$fh>){
$i++;
# $line=~s/ //g; # entfernt nur die leerzeichen:
$line=~s/\s+//g; # entfernt auch die steuerzeichen
if ($line eq $such){
$ifund = $i; # gefundene Zeile merken
}
# sucht aus "SUMMARY;LANGUAGE=de:Restmuell" die Abfallart
# 8 Zeilen tiefer wie Datum
if($i eq $ifund + 8 ){
$art = substr($line,20);
return($art);
}
}
return;
close($fh);
}
return($art_heute.$art_morgen);
Ewtl. muss das Plugin noch eigenen Bedürfnissen angepasst werden.
Ich lese aus der iCal-Datei nur 2 Zeilen je Abfuhr aus.
Den Abfuhrtermin um den Termin zu finden..
"DTSTART;VALUE=DATE:20120123"
Die Abfallart.
"SUMMARY;LANGUAGE=de:Restmuell"
Die iCal-Datei wird 2 mal ausgelesen.
Das erste mal um einen Termin Morgen zu finden und
das zweite mal um einen Termin Heute zu finden.
Ich habe Termin und Abfallart in 2 GA gelegt weil eine GA nur 13 Byte fasst.
Wenn die CV mal Icons anzeigen kann, das leicht auf Icon-Anzeige umstellen.
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Geändert von NetFritz (20.02.2012 um 10:53 Uhr)
Grund: .
|

09.04.2012, 20:09
|
|
Benutzer
|
|
Registriert seit: 17.11.2010
Ort: Hannover
Beiträge: 78
|
|
hallo netfritz, hab dein plugin mit erfolg eingebunden und etwas angepasst. wenn ich das script aber richtig interpretiere, kommt es ins stolpern, wenn heute restmüll ist und morgen papier/blaue tonne . liege ich richtig, oder ? denn dann wäre auf der ga für art für heute restmüll und für morgen blaue tonne. da die funktion heute nach der funktion morgen aufgerufen wird, wird so der morgige wert mit dem von heute überschrieben. kommt bei uns auch wirklich vor, morgen ist zB restmüll und übermorgen papier. die richtige anzeige, wenn ich das morgen aufrufe, wäre: heute restmüll, morgen papier. er zeigt mit deinem script aber nur restmüll an.
Geändert von larsknx (09.04.2012 um 20:13 Uhr)
|

09.04.2012, 21:59
|
|
Erfahrener Benutzer
|
|
Registriert seit: 03.06.2007
Ort: SG-Mittelweser
Beiträge: 677
|
|
Hallo
Das mit heute und morgen ist schon so gewollt.
Man kann es leicht ändern, es wird dann noch zwei GAs benötigt.
Gruß NetFritz
__________________
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
|

26.08.2012, 18:56
|
|
Benutzer
|
|
Registriert seit: 19.08.2009
Beiträge: 485
|
|
Hallo zusammen,
ich habe mich auch einmal an eine Auswertung eines Abfallkalenders gemacht.
Wichtig waren mir hierbei:
- Auswertung der durch den Entsorger bereitgestellten iCal Datei
- Auswertung mehrerer Müllsorten je Tag mit individuellen Abholzeiten
- Ausgabe über einen eindeutigen Status (auch mit mehreren Sorten je Tag über kumulierte Potenzwerte) > dieser Status kann in der Visu in einen vernünftigen Text gemappt werden
- Rücksetzen der Meldung über eine GA
Code:
# Plugin: Entsorgungsdaten
# Version 1.0
# License: GPL (v3)
#
# Plugin zum analysieren einer iCal Datei für Meldungen z. B. Abfallkalender
# - Die Meldungen werden als eindeutiger Code auf einer Gruppenadresse ausgegeben
# - Die Codes sind so gestaltet, daß mehrere Zustände ausgegeben werden
# Die Klarschrift Ausgabe in der Visu kann dann in einem Mapping zu Texten oder Symbolen erfolgen.
# - Mit einer Gruppenadresse kann die Meldung bis zum nächsten Ereignis zurückgesetz werden.
## Beginn Definitionen ##
# Die iCal muss jedes Jahr angepasst werden
my $Datei = '/myDATA/entsorgungsdaten_de_2012_markt_regenstauf.ics';
# http://www.entsorgungsdaten.de/module.php5?fid=15&gem=31&mod=entsorgungsdaten
my $PrefixDate = "DTSTART;VALUE=DATE:";
my $PrefixArt = "SUMMARY:";
my $GA_Sammelmeldung = "0/2/220"; # DPT 5.010
#my $GA_SammelmeldungDatum = "0/2/221"; # optional DPT 11.001
#my $GA_SammelmeldungZeit = "0/2/222"; # optional DPT 10.001
my $GA_SammelmeldungReset = "0/2/224"; # DPT 1
# Definition der Zustände
# Name => Klarnname für Log Meldungen
# SuchText => Text nach dem der Betreff durchsucht werden soll
# AbholungStd => Stunde zu der die Abholung erfolgt
# AbholungMin => Minuten zu der die Abholung erfolgt
# MeldungStdVorAbholung => Anzahl der Stunden vor der abholung zu der die Meldung erfolgt
# GA_Meldung => optionale Gruppenadresse für Einzelmeldung (DPT 1)
my @EntsorgungsArten =(
{ Name => "Mülltonne", SuchText => "Restm", AbholungStd => 7, AbholungMin => 0, MeldungStdVorAbholung => 8+7, GA_Meldung => "0/2/225"},
{ Name => "Papiertonne", SuchText => "Papier", AbholungStd => 11, AbholungMin => 0, MeldungStdVorAbholung => 8+11, GA_Meldung => "0/2/226"},
);
## Ende Definitionen ##
use Time::Local;
use POSIX;
$plugin_info{$plugname.'_cycle'} = 60*60; # Aufruf-Zyklus auf 1 Stunde setzen
$plugin_subscribe{$GA_SammelmeldungReset}{$plugname} = 1;
if ($msg{'apci'} eq 'A_GroupValue_Write' and $msg{'dst'} eq $GA_SammelmeldungReset) {
foreach my $element (@EntsorgungsArten) {
if ($msg{'value'} eq 0) {
$plugin_info{$plugname.'_'.$element->{Name}."_ResetUntil"} = 0;
} else {
$plugin_info{$plugname.'_'.$element->{Name}."_ResetUntil"} = $plugin_info{$plugname.'_'.$element->{Name}."_AbholungNext"};
$plugin_info{$plugname.'_'.$element->{Name}."_AbholungNext"} = 0;
knx_write($GA_Sammelmeldung,0,5.010);
plugin_log($plugname,$element->{Name}." zurückgesetzt");
}
}
if ($msg{'value'} eq 1) {
return("Entsorgungsdaten zurückgesetzt");
}
}
#Zeitvariablen definieren
my ($Sekunde,$Minute,$Stunde,$TagMonat,$Monat,$Jahr,$Wochentag,$TagJahr) = localtime(time);
$Jahr += 1900;
my $i=0;
my ($ZeitAbholung,$MaxMeldungStdVorAbholung,$MaxZeitAbholung,$VorschauTage,$BeginnVorschau);
plugin_log($plugname,"Code für Keine Daten = 1");
foreach my $element (@EntsorgungsArten) {
$i++;
$ZeitAbholung = timelocal(0,$element->{AbholungMin},$element->{AbholungStd},$TagMonat,$Monat,$Jahr-1900);
if ($MaxZeitAbholung < $ZeitAbholung) {
$MaxZeitAbholung = $ZeitAbholung;
}
if ($MaxMeldungStdVorAbholung < $element->{MeldungStdVorAbholung}) {
$MaxMeldungStdVorAbholung = $element->{MeldungStdVorAbholung};
}
plugin_log($plugname,"Code für ".$element->{Name}." = ".2 ** $i);
$plugin_info{$plugname.'_'.$element->{Name}."_AbholungNext"} = 0;
if (! $element->{GA_Meldung} eq undef) {
knx_write($element->{GA_Meldung},0);
}
}
$VorschauTage = ceil($MaxMeldungStdVorAbholung / 24);
$BeginnVorschau = timelocal(0,0,0,$TagMonat,$Monat,$Jahr-1900);
if ($MaxZeitAbholung < time) {
$BeginnVorschau += 60*60*24;
}
$plugin_info{$plugname."_AbholungNext"} = 0;
knx_write($GA_Sammelmeldung,0,5.010);
my ($TagAbholung,$MonatAbholung,$JahrAbholung,$ZeitAbholung,$NextAbholung);
my ($Sammelmeldung,$Daten);
local $/ = "\n";
open(my $file, '<', $Datei) or die ("ERROR open: $Datei ($!)\n");
while(my $line=<$file>){
$line=~s/\s+//g;
if(index($line,$PrefixDate) >= 0) {
$TagAbholung = substr($line,length($PrefixDate)+4+2,2);
$MonatAbholung = substr($line,length($PrefixDate)+4,2);
$JahrAbholung = substr($line,length($PrefixDate),4);
$ZeitAbholung = timelocal(0,0,0,$TagAbholung,$MonatAbholung-1,$JahrAbholung-1900);
if ($ZeitAbholung >= $BeginnVorschau) {
$Daten = 1;
}
if ($ZeitAbholung > time+60*60*24*$VorschauTage) {
return("Entsorgungsdaten aktualisiert");
}
}
if(index($line,$PrefixArt) >= 0 and $ZeitAbholung >= $BeginnVorschau) {
my $i=0;
foreach my $element (@EntsorgungsArten) {
$i++;
if (index($line,$element->{SuchText}) >= 0){
$ZeitAbholung = timelocal(0,$element->{AbholungMin},$element->{AbholungStd},$TagAbholung,$MonatAbholung-1,$JahrAbholung-1900);
if ($ZeitAbholung >= time and $ZeitAbholung-($element->{MeldungStdVorAbholung}*60*60) <= time and $ZeitAbholung > $plugin_info{$plugname.'_'.$element->{Name}."_ResetUntil"}) {
$plugin_info{$plugname.'_'.$element->{Name}."_AbholungNext"} = $ZeitAbholung;
$Sammelmeldung += 2 ** $i;
knx_write($GA_Sammelmeldung,$Sammelmeldung,5.010);
if (! $element->{GA_Meldung} eq undef) {
knx_write($element->{GA_Meldung},1);
}
if ($NextAbholung == 0 or $ZeitAbholung < $NextAbholung) {
$NextAbholung = $ZeitAbholung;
$plugin_info{$plugname."_AbholungNext"} = $NextAbholung = $ZeitAbholung;
# if (! $GA_SammelmeldungDatum eq undef ) {
# knx_write($GA_SammelmeldungDatum,$JahrAbholung."-".$MonatAbholung."-".$TagAbholung);
# }
# if (! $GA_SammelmeldungZeit eq undef ) {
# knx_write($GA_SammelmeldungZeit,$element->{AbholungStd}.":".$element->{AbholungMin}.":00");
# }
}
plugin_log($plugname,"Sammelmeldung: ".$Sammelmeldung." - ".$element->{Name}." (".2 ** $i.") am ".$TagAbholung.".".$MonatAbholung.".".$JahrAbholung." ".$element->{AbholungStd}.":".$element->{AbholungMin}." Uhr");
}
}
}
}
if(index($line,"END:VEVENT") >= 0) {
$ZeitAbholung = 0;
}
}
if (! $Daten ) {
knx_write($GA_Sammelmeldung,1,5.010);
return("Keine Daten");
}
Ich bin mir sicher, dass ich einige Dinge kompliziert gelöst habe. Dafür funktioniert die Auswertung bisher bestens.
Kritik und Verbesserungsvorschläge sind bei mir immer willkommen.
Viele Grüße
Sascha
|

27.08.2012, 09:27
|
 |
Benutzer
|
|
Registriert seit: 22.02.2011
Beiträge: 136
|
|
Sieht echt gut aus! Ich werde es heute gleich ausprobieren.
Würde es auch gehen, wenn man die .ics File auf einem FTP liegen hätte und entweder per FTP oder HTTP an diese herankommt?
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:47 Uhr.
|