Und schon wieder Müllabfuhr-Visualisierung

Begonnen von Vize, 27 Juli 2015, 18:24:33

Vorheriges Thema - Nächstes Thema

BlackStone

#30
ich habe mal was aus einem anderen thread geklaut. ;) dort war auch kein DTEND drin. -> http://forum.fhem.de/index.php/topic,26209.0.html
#!/usr/bin/awk -f
{
print $0;
if (index($0, "DTSTART") > 0)
{
sub(/DTSTART/, "DTEND", $0)
print $0;
}
}


Dieses kleine awk-Script dupliziert die DTSTART Zeile und ersetzt DTSTART mit DTEND. (Abspeichern, chmod +x, ./convert OriginalDatei.ics > Abfuhrkalender2014.ics)


edit; wobei das mit dem DTEND eigendlich egal sein müsste, denn der Split läuft ja dennnoch durch, denn split ist ja egal wie viele zeilen drin sind.

Vize

#31
@kvo1
Nee, keine Probleme...in meinem Kalender sieht die Zeitdefinition nur etwas anders aus:
BEGIN:VEVENT
UID:7
SUMMARY:Restabfall
DTSTART;TZID=Europe/Berlin:20150819T060000
DTEND;TZID=Europe/Berlin:20150819T100000
END:VEVENT


Da steht also auch ne Uhrzeit drin.

Bei dir und BlackStone sind es ja wohl "ganztägige" Termine...vielleicht braucht es deswegen kein DTEND.
Meine Kalenderauswertung bzw. das korrekte Einlesen der ical-Datei klappt ohne DTEND nicht.

@BlackStone
Das script kannte ich schon...

Gruß
Andreas

BlackStone

#32
stimmt, bei mir steht :
DTSTART;VALUE=DATE:20150821

wohingegen du :
DTSTART;TZID=Europe/Berlin:20150819T060000
stehen hast.
also T060000 was ja als 6 uhr morgens zu sehen ist. dazu sogar noch eine Zeitzonenangabe. ^^

Vize

So ist es.

Wird denn dann bei dir z.B. der Termin für den 21.08. auch noch den ganzen Tag am 21.08. (also bis 23:59) in der readingsGroup angezeigt, wenn du den Kalender mal händisch nach der Abfuhr updatest?

Gruß
Andreas

BlackStone

ich brauchte nicht groß per hand ran gehen, denn ich habe bei mir mit live daten getestet, heute zum 18.8.2015 war die Grüne Tonne dran, und die ist wie geplant am 17.8.2015 um 00:00 aus den readings gelöscht worden.
ist ganz praktisch gewesen, zum testen. naja, und heute morgen ist die tonne dann geleert worden (von den nachbarn die, meine war noch fast leer).

Vize

Zitat von: BlackStone am 18 August 2015, 13:22:22wie geplant am 17.8.2015 um 00:00 aus den readings gelöscht worden

Dann ist die aber nen Tag zu früh verschwunden, oder meintest du am 18.8. um 00:00 Uhr?  ;)

Gruß
Andreas

BlackStone

upps :o ; ja meinte ich, 17.8.2015 23:59 war der eintrag noch da und 18.8.2015 00:00 (bzw. 17.8 um 24 uhr) war er weg.

Vize

BlackStone, kannst du nochmal sagen, ob du was an der Berechnung für $dayDiff in deiner 99_myUtils angepasst hast?

Wenn ich in meinem Kalender Termine nur mit z.B.
DTSTART;VALUE=DATE:20150825

anlege, bekomme ich ein falsches reading ins dummy geschrieben (s. Anhang).

Die Werte passen bei mir erst, wenn ich auch ein DTEND angebe...

Gruß
Andreas

BlackStone

#38
Die berechnung ist exact so wie bei dir.

meine wie ich es aktuell drin habe, und die ganze zeit hatte.
$dtPapier = $eventDate;
my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);


und das ist deine
$dtPapier = $eventDate;
my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);


also muss kann es sein das beim split sich die indexe verschieben?

Vize

Zitat von: BlackStone am 18 August 2015, 19:27:35
also muss kann es sein das beim split sich die indexe verschieben?

Kannst du das mal für einen Nichtprogrammierer erläutern/übersetzen?  :-[ ;)

Gruß
Andreas

BlackStone

wenn du einen string splittest. achtun pseudocode.
a$="Fu Ma Na Chu";
           b$=split(a," ")


wird in der variable b$ ein Array erzeugt.

dieses schaut dann z.b. so aus.


b$
(
    [0] => Fu
    [1] => Ma
    [2] => Na
    [3] => Chu
)


um nun auf die einzelnen Felder zuzugreifen nutzt du den Index.
um auf "Fu" zuzugreifen nutzt du b$[0] um auf "Chu" eben b$[3].
jetzt schiebst du wieder etwas zusätzlich in den string.

a$="Fu Ma N Na Chu";
           b$=split(a," ")
der Rest Code bleibt aber gleich, und nun willst du wieder auf "Chu" zugreifen, und es kommt Kompost zustande, denn du greifst ja mit b$[3] zu, weil es immer so war. nur ist es jetzt so das sich der Index verschoben hat. also nun b$[4] ist.

evtl, hast du bei dir genau diesen effekt.

Vize

OK, ich schau mir das morgen mal genauer an...

Was erhältst du denn eigentlich als Ausgabe, wenn du ein
get muellkalender start <uid>
auf eine deiner uids absetzt?

Auf das Ergebnis wird danach ja "gesplittet"...

Gruß
Andreas

BlackStone

#42
hm, ich sehe da kein split.

ist von der nächsten Papierabholung.

get muellkalender start 20150815T115914CEST97332uvNl8landkreisaurichde0
da kommt
02.09.2015 00:00:00

tante edit hat gebissen. stimmt ja, der split ist hinterher, so das ein array mit datum und mit uhrzeit entsteht.


kvo1

Hallo Zusammen,
wollte nur kurz Erfolg vermelden, meine Restmülltonne (Mi 19.8) ist weg, nur die gelbe Tonne ist noch da.
Nächste Abholung wäre in 14 Tagen, will nicht so lange Warten, werde mal paar Termin reinbasteln... :)

kvo1

PS:
Irgendwie wäre es doch nett , am Vorabend nochmal einen speziellen hinweiston o.ä. zu erhalten, aber
da gibt es ja genug Beispiel zum lernen  ;)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

BlackStone

brauchst keine Termine reinbasteln.

if ($dayDiff >= 0 && $dayDiff <= 7) {

die 7 gibt die tagesanzahl an, also einfach raufsetzen. ;)