[gelöst] Welches Datum verwendet FHEM? Probleme mit Google-Kalender

Begonnen von josburg, 21 Februar 2016, 12:27:41

Vorheriges Thema - Nächstes Thema

josburg

Hallo,

ich habe nach dieser Anleitung
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


Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

josburg

#2
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


fiedel

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
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

josburg

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

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

josburg

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.

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

linuxpaul

Schau mal
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



josburg

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