Hallo,
ich habe nach dieser Anleitung
http://raspberrypi.crmvy3qiisdstf8c.myfritz.net/wordpress/?p=496 (http://raspberrypi.crmvy3qiisdstf8c.myfritz.net/wordpress/?p=496)
den Abfall-Kalender erstellt.
Die Einträge sind korrekt im Google-Kalender hinterlegt, in FHEM bzw. FTUI bekomme ich aber immer Termine von ca. vor einem Monat berechnet.
Meine Frage:
Woher bezieht FHEM das aktuelle Tagesdatum?
Kann ich dies irgendwie in FHEM ausgeben um zu schauen, ob FHEM vom korrekten Datum aus geht?
Ich verwende den Raspberry PI 2 Model B mit Raspian Wheezy.
Auf dem RasPi ist das Datum m.M. nach korrekt eingestellt.
Vielen Dank für Eure Hilfe.
Viele Grüße
Jens
Wenn man nach irgendwelchen Anleitungen vorgeht sollte man auch beim Ersteller der Anleitung nachfragen.
FHEM bezieht das Datum vom Hostsystem.
Aber wie sieht der Code den nun genau aus bei dir?
Ein list <Device>
könnte uns das offenbaren.
Hallo Puschel74,
vielen Dank für Deine Unterstützung.
Anbei die Ergebnisse der "list":
list von Device "Abfall":
Internals:
DEF ical url https://calendar.google.com/calendar/ical/su01htjecsj2vjehsd8gvm2qc8%40group.calendar.google.com/private-xxxxx/basic.ics 21600
NAME Abfall
NR 250
NTFY_ORDER 50-Abfall
STATE triggered
TYPE Calendar
Readings:
2016-02-21 12:07:03 lastUpdate 2016-02-21 12:07:01
2016-02-14 12:52:17 modeAlarm
2016-02-20 00:00:00 modeAlarmOrStart
2016-02-14 12:52:17 modeAlarmed
2016-02-20 04:17:18 modeChanged
2016-02-21 12:07:03 modeEnd f73911aac02f6b1ff2031ff43bdad187abfallavlludwigsburgde;14c3195b7beb08fc1753018d5e8f9ed1abfallavlludwigsburgde;88691a948178fdb084cb537fde0e1468abfallavlludwigsburgde;972cd475ecfe6b35e6aee5e5375109b8abfallavlludwigsburgde;bacd197381297cc5d11886565b52a58eabfallavlludwigsburgde;1b887b3f5e89b2ba564baa0637adbb30abfallavlludwigsburgde;847627ee626c180e3af6f753be17db6babfallavlludwigsburgde;99cb5a3484a99e40d13fd619c0f50999abfallavlludwigsburgde;f592f2a4f8dae3e32e273576737f15e3abfallavlludwigsburgde;d5fd4e5a606254d6f1a302fa0364cf30abfallavlludwigsburgde;e6fff32da42646165167e002797d9521abfallavlludwigsburgde
2016-02-20 04:17:18 modeEnded
2016-02-20 00:00:00 modeStart
2016-02-14 12:52:17 modeStarted
2016-02-21 12:07:03 modeUpcoming 4fd2c0e049657ceb2ddc8e7a3292cec5abfallavlludwigsburgde;58392d605d237c7f2ca0fb65850bfa82abfallavlludwigsburgde;00ffd0b25601abc6d663043f318eb830abfallavlludwigsburgde;ccba550e88a2775fe48861b95521a40dabfallavlludwigsburgde;64f12c8553afac4640fc7f08c2318bb2abfallavlludwigsburgde;cc8846c51ac2936d4488795ccb7f4851abfallavlludwigsburgde;a89ef81bf074ddf76641c5860b17e1a3abfallavlludwigsburgde;d128fdc570a6b4c5a6e08f71b71dc765abfallavlludwigsburgde;bcd8367ed411cf7c0def38dac4326fa9abfallavlludwigsburgde;5118a094f40d1375716851c788ffbcd9abfallavlludwigsburgde;08e94af3fd139df371a5686b8c728284abfallavlludwigsburgde;de5523136dd52885f29d8b4475709ca0abfallavlludwigsburgde;3d275dfd0f7dea9f1819854479eee5a3abfallavlludwigsburgde;20a8703191cba34f23e72cf5162bd308abfallavlludwigsburgde;4756eba3ace96bf1d5c2713f52e27e29abfallavlludwigsburgde;362a10c61a1cefce932581f9d19db04cabfallavlludwigsburgde;0f43061188b4bf85f8d1e7d39fcdff71abfallavlludwigsburgde;7541bca1f3161263f8970855c96df460abfallavlludwigsburgde;2d565bfdefa89beb894a4a21c89a7c4babfallavlludwigsburgde;deda2be962aee725a6920654a33de048abfallavlludwigsburgde;6491213d5d92f1dd6ab229c87f27c088abfallavlludwigsburgde;eae6cc91ec4e11b48029af01693a2f0aabfallavlludwigsburgde;fbac6bee62489b84931ae3e10cf5fd7aabfallavlludwigsburgde;e68a77d8bf4c1ac646d9053a747420f1abfallavlludwigsburgde;68b7460f01e4cf02422b22bc4467b97babfallavlludwigsburgde;d3097d5ade701be8ec51a8f80b17fe2cabfallavlludwigsburgde;b23a2b513630b72243798d83f1b47c29abfallavlludwigsburgde;0f17af59f68f471c3252fe0d01f56888abfallavlludwigsburgde;ddc368f0860d4896cfbccf41e804c11eabfallavlludwigsburgde;12ae523160cd34ce8450909967d1049cabfallavlludwigsburgde;e7b306661779b260a76c3d45b693885fabfallavlludwigsburgde;ea6e78dd4407ea1ac1215a0f84a9b0ffabfallavlludwigsburgde;1a3527415bcd61d8d7249ff1812bbcacabfallavlludwigsburgde;825d17e9dbcf710581b554a8c770ffbeabfallavlludwigsburgde;ffa66ed830694e8f71edd0c4be3acab9abfallavlludwigsburgde;a87182d2b2eb8d082a469d37c47042eeabfallavlludwigsburgde;a65ee7811f9081f14a8f86cec822f61cabfallavlludwigsburgde;36813fc138a4d322a2f3c3b2aa631989abfallavlludwigsburgde;55c98e65364e0f48c695a29e8bb1f495abfallavlludwigsburgde;4b5251fe438d0fe6fb10f5761598fe72abfallavlludwigsburgde;bfc6356f19544dec7efb171f4eecdc82abfallavlludwigsburgde;896b9a935745a5b5055d6b9d02d573fbabfallavlludwigsburgde;ad47cbb24f69e8557b111d57ef4250fbabfallavlludwigsburgde;11fcb8f9ed7c1cb7d28fbaaf6676621dabfallavlludwigsburgde;b109a839784770362fd9271e7362912eabfallavlludwigsburgde;d2b4490a6984834d71e324b385420bb0abfallavlludwigsburgde;2e8c229994daa9de02c304b94fdfdba2abfallavlludwigsburgde;b1fb762d91d1b75bf75dde7e676a2177abfallavlludwigsburgde;edd245eee3d83e0ec1a9f42048d67e9cabfallavlludwigsburgde;0a76221a4461abacf6a78b639bc4a016abfallavlludwigsburgde;85404290d048d42e0cb3dc22aab82685abfallavlludwigsburgde;376ec778dc52adac86c4671c1f69a5a5abfallavlludwigsburgde;2034501d295cb179e2df43c7884ade92abfallavlludwigsburgde;9b3a0cce60e1c532c8f2bdc4acc34f53abfallavlludwigsburgde;31fd40659f7e736de02d9033c7f5e218abfallavlludwigsburgde;db2f554c41a541cba42b9e252c29cbbfabfallavlludwigsburgde;ba980ec7e7ee37bf880baf06f0f206f5abfallavlludwigsburgde;d066b407f8bcf8d0bfa11251267bcad5abfallavlludwigsburgde;62ca8184f1d8921858d42f84cd285c8fabfallavlludwigsburgde;8d4be510f94419b93e55b11c11b6caa1abfallavlludwigsburgde;6d10badd210740d0ac727cab382bade1abfallavlludwigsburgde;53d759864bfb2a8036a7b6302b87a9d8abfallavlludwigsburgde;ade3dd1391de7338fdfa2b173d7df2daabfallavlludwigsburgde;174118c4f855bf03885e1e4459b50bababfallavlludwigsburgde;697ce1bef098ee4e43ec6b742190fa9babfallavlludwigsburgde;21eeaca8d6440d0424a92e54fd4548dbabfallavlludwigsburgde;a1600fce676223a133f1e6fc24b2439cabfallavlludwigsburgde;b46a51271743ec6160412bb5a2ed5046abfallavlludwigsburgde;9f9b5e4e0c302bb845f446bf4a2d588aabfallavlludwigsburgde;f91994f513224cee598f0ac5cd9f9c03abfallavlludwigsburgde;241ba1c4f598c1af677e97fdbb8956bdabfallavlludwigsburgde;39e29212d7195043e0dfe17af9ce9239abfallavlludwigsburgde;a2b09183fc28e8632035aea6fe6b5ae8abfallavlludwigsburgde;38dc24e70748a470bfef465b61f1ab58abfallavlludwigsburgde;8904118773396ad30c41067e01a52ea0abfallavlludwigsburgde;e986cbac50facdee66bf44e50f586454abfallavlludwigsburgde;e9e7dfff3b22b8ff6704bc3848fdee30abfallavlludwigsburgde;57e7b6fd676b34879e1cd32af11ff332abfallavlludwigsburgde;d80ebfe8bd977f2c910ef34d0c7306f6abfallavlludwigsburgde;2212bd8408e51233344b7d057b477b9eabfallavlludwigsburgde;58527c08449d227ea248bd693b904b9fabfallavlludwigsburgde;102a5f7badb7ad7e082468d7aa42959eabfallavlludwigsburgde;46f2d2ddd02326aa27266ffa09e7d6e3abfallavlludwigsburgde;fa85c0fad93c47c9217ca3e515649fd5abfallavlludwigsburgde;4b33521ba8d072e43a3ae22c55b24a89abfallavlludwigsburgde;0237ebbf3ce73ae32a96177226e2fe39abfallavlludwigsburgde;781d667090af2858864d3ca65155a448abfallavlludwigsburgde;288383a37b41fddb4265c32533245a98abfallavlludwigsburgde;d60b46d4b04ef969da69884671421733abfallavlludwigsburgde;7be9abacb3e6b63242b6455b94fdbee5abfallavlludwigsburgde;1b59799a8939e45310779f6cbbca6dedabfallavlludwigsburgde;810429b10a3aa360dabed97e6b5040adabfallavlludwigsburgde;7ed6e73d5911d324b7c18f9acb1d4c90abfallavlludwigsburgde
2016-02-21 12:07:03 nextUpdate 2016-02-21 18:07:01
2016-02-21 12:07:03 nextWakeup 2016-02-21 18:07:01
2016-02-21 12:07:03 state triggered
Attributes:
hideOlderThan 2d
room Kalender
list von Device "notAbfalltermine":
Internals:
DEF Abfall:modeUpcoming.* { Abfalltermine("$EVENT") }
NAME notAbfalltermine
NOTIFYDEV Abfall
NR 251
NTFY_ORDER 50-notAbfalltermine
REGEXP Abfall:modeUpcoming.*
STATE 2016-02-21 12:07:03
TYPE notify
Readings:
2016-02-20 10:11:52 state active
Attributes:
room Kalender
list von Device "MuellterminDummy":
Internals:
NAME MuellterminDummy
NR 252
STATE ???
TYPE dummy
Attributes:
room Kalender
Auszug aus der 99_myUtils.pm:
######### Abfall-Kalender ################
sub
KalenderDatum($$)
{
my ($KalenderName, $KalenderUid) = @_;
my $dt = fhem("get $KalenderName start uid=$KalenderUid 1");
my $ret = time;
if ($dt and $dt ne "")
{
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
$ret = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
}
return $ret;
}
#
# Abfall Kalender auswerten / Google Kalender: "Abfall"
#
sub
Abfalltermine()
{
my $t = time;
my @Tonnen = ("Restmuell", "RundeTonne", "FlacheTonne", "BioTonne");
my @SuchTexte = (".*Restmüll.*", ".*Rund.*", ".*Flach.*", ".*Biogut.*");
my $uid;
my $eventDate;
for(my $i=0; $i<4; $i++)
{
my @uids = split(/;/,fhem("get Abfall find $SuchTexte[$i]"));
# beendete Termine überspringen
foreach $uid (@uids)
{
$eventDate = KalenderDatum('Abfall', $uid);
if ($eventDate > $t) { last; }
}
my $dayDiff = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
fhem("setreading MuellterminDummy $Tonnen[$i] $dayDiff");
}
}
Ich hoffe, dass dies etwas hilft?
Vielen Dank nochmals!
Grüße
Jens
Hi,
konnte jetzt nicht den Code ansehen, aber: Wenn du mal irgendwas schaltest, siehst du in den Readings des Gerätes sofort das akt. Datum/Zeit. Sollte dies nicht stimmen, richte auf dem Rechner den "ntp"- Client ein (dafür gibt es auch viele Anleitungen im Netz). Dann wird die Zeit regelmäßig auf exaktem Stand gehalten (aus dem Internet).
Gruß
Frank
Hallo,
ich habe nochmal eine Frage zu den regulären Ausdrücken.
Mein Abfallkalender funktioniert soweit - das Thema mit dem "Datum" hat sich so gelöst, dass ich bemerkt habe, dass in meinem Google-Kalender Einträge ohne Ende-Uhrzeit enthalten waren. Das hat irgendwie das korrekte Funtionieren verhindert.
Jetzt habe ich aber noch ein kleines Problem und finde im Internet leider nicht die Lösung (wahrscheinlich verwende ich die falschen Suchbegriffe..??).
In dem unten stehenden Code wird in meinem Google-Abfallkalender mit folgender Zeile
my @SuchTexte = (".*Restmüll.*", ".*Rund.*", ".*Flach.*", ".*Biogut.*");
in meinem Google-Abfallkalender nach den 4 Begriffen Restmüll, Rund, Flach und Biogut gesucht.
Soweit funktioniert dies auch - allerdings habe ich in meinem Google-Abfallkalender auch z.B. Einträge mit "Flach 1100L" stehen, welche jedoch nicht berücksichtigt werden sollen.
Bisher dachte ich, dass der "." hinter dem Suchbegriff (also ".*Flach.*") sämtliche weitere Zeichen zulässt. Wenn ich den Suchstring in ".*Flach*" ändere, funktioniert es leider nicht besser.
Anbei der ganze Code zum besseren Verständnis:
#
# Abfall Kalender auswerten / Google Kalender: "Abfall"
#
sub
Abfalltermine()
{
my $t = time;
my @Tonnen = ("Restmuell", "RundeTonne", "FlacheTonne", "BioTonne");
my @SuchTexte = (".*Restmüll.*", ".*Rund.*", ".*Flach.*", ".*Biogut.*");
my $uid;
my $dayDiff;
for(my $i=0; $i<4; $i++)
{
$dayDiff = -1; #BUG behoben
my @uids = split(/;/,fhem("get Abfall find $SuchTexte[$i]"));
#den nächsten Termin aus allen uids finden
foreach $uid (@uids)
{
my $eventDate = KalenderDatum('Abfall', $uid);
my $dayDiffNeu = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
if ($dayDiffNeu > 0 && ($dayDiffNeu < $dayDiff || $dayDiff == -1)) #BUG behoben
{
$dayDiff = $dayDiffNeu;
}
}
fhem("setreading MuellterminDummy $Tonnen[$i] $dayDiff");
}
}
Kann mir jemand auf die Sprünge helfen?
Vielen Dank.
Viele Grüße
Jens
Am besten mal ein RegEx-Tutorial durchlesen.
Punkt (.) bedeutet bei RegEx einfach "irgendein Zeichen"
Der Stern dahinter bedeutet "ein oder mehrmal, egal wie oft".
lg, Stefan
Wenn ich den "." entferne und als Such-String diesen String verwende
".*Flach*"
(also ohne "."), dann sollte doch z.B. "Flach 1100L" nicht gefunden werden, oder? So hatte ich das zumindest verstanden.
"Flach 1100L" wird aber bei diesem Suchstring ".*Flach*"
gefunden.
Interpretiere ich etwas falsch?
Vielen Dank.
hier kannst du schön testen: https://regex101.com/ (https://regex101.com/)
Schau mal
http://www.comp.leeds.ac.uk/Perl/matching.html (http://www.comp.leeds.ac.uk/Perl/matching.html)
Zu deiner Frage:
Das * bezieht sich auf das vorhergehende Zeichen und bedeutet keinmal, einmal oder öfter. (+ ist einmal oder öfter)
In deinem Fall auf das h von Flach. D.h. weiter das dem "Flach" kein, ein, oder mehrere "h"s folgen können.
Er matcht also auf "Flach" was ein Teil von "Flach 1100L" ist und somit gibt er Flach 1100L aus.
Flach.* heißt Flach folgt ein beliebiges Zeichen keinmal, einmal oder öfter was sich dann auf das Leerzeichen bezieht.
Auch hier sollte er Flach 1100L ausgeben da "Flach" und "Flach " ein Teil von Flach 1100L ist.
RegEx check ich auch manchmal nicht, verbessert das bitte wenn es nicht stimmt.
:)
linuxpaul
Hallo Frank und linuxpaul,
vielen vielen Dank für Eure Mühe.
Jetzt hab ich´s :-)
Es muss also ".*Flach"
heißen.
Grüße
Jens