Email - Zusendung ausgesuchter DbLog Einträge von Roommate als csv-Datei

Begonnen von Sailor, 04 Juni 2015, 08:55:11

Vorheriges Thema - Nächstes Thema

Sailor

Hallo zusammen,

ich brauche mal Denkhilfe zur Lösung meines Problems:

Problem:
Ich brauche zwecks Zeitabrechnung gewisse DbLog Readings mit Zeitstempel von einem Device am jeweiligen Montag als CSV Datei zugesendet.

Lösungsansatz
Ich habe mir schon folgendes überlegt:

Einen timer auf jeden Montag den fhem Befehl ausführen


set myDbLog userCommand <validSqlStatement>


das validSqlStatement:


SELECT * FROM SalesOrders;
OUTPUT TO '/opt/fhem/log/time.csv'
    FORMAT TEXT
    QUOTE '"'
    WITH COLUMN NAMES;


Wobei der SQL Befehl nur Einträge des DEVICE namens "MitBewohner1" finden soll, bei welchen die Readings "location" oder "lastLocation" den Inhalt "work" haben.

Anschließend per email versenden und csv-Datei wieder löschen.



Frage:

Könnt Ihr mir bei der Umsetzung insbesondere des SQL Befehls helfen?

Danke!  ;)

Gruss
    Sailor
******************************
Man wird immer besser...

Loredo

Wenn du dich noch ein paar Tage geduldest:
Geofency bietet bald die Möglichkeit eines CSV Exports an. Das funktioniert dann unabhängig von FHEM.
Der eigentliche Hauptzweck der Anwendung ist ja das loggen von Arbeitszeiten ;)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Sailor

Hallo Loredo

Zitat von: Loredo am 04 Juni 2015, 09:16:48
Wenn du dich noch ein paar Tage geduldest:
Geofency bietet bald die Möglichkeit eines CSV Exports an. Das funktioniert dann unabhängig von FHEM.
Der eigentliche Hauptzweck der Anwendung ist ja das loggen von Arbeitszeiten ;)

Ach was! Na da schau her...  ;D

Auch mit automatischem Versand?  ;)

Gruss
    Sailor
******************************
Man wird immer besser...

Loredo

Zitat von: Sailor am 04 Juni 2015, 10:00:19
Auch mit automatischem Versand?  ;)


Nope. Ist die Frage wie sinnvoll so etwas ist. Sofern du das als offizielles Reporting abgeben möchtest musst du da ja zumeist ohnehin noch Hand anlegen (z.B. Zeiten auf-/abrunden auf z.B. 15min Interval). Da machts auch keinen Unterschied, ob du dir das File dazu fix aus der App zuschickst. Bei mir löst ein Webhook auch mangels Netzempfang nicht immer aus, aber das wäre dann halt auch nur bei mir bzw für mich gesprochen  ;)


Zu deinem SQL Statement: Du brauchst noch eine entsprechende WHERE Klausel, also sowas wie


SELECT * FROM SalesOrders WHERE device=`MitBewohner1` AND (location=`work` OR lastLocation=`work`);


Das genaue Statement ist abhängig von den Tabellen Feldern in der Datenbank, da musst du mal nachschauen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Icinger

Ausserdem brauchst auch noch die Einschränkung auf die letzten 7 Tage:

SELECT * FROM SalesOrders WHERE device=`MitBewohner1` AND (location=`work` OR lastLocation=`work`) AND <datumsfeld> BETWEEN NOW() and DATE_SUB(NOW(), INTERVAL 7 DAY)
(für mySQL)

oder SELECT * FROM SalesOrders WHERE device=`MitBewohner1` AND (location=`work` OR lastLocation=`work`) AND <datumsfeld> >= DATEADD(d,-7,GETDATE())
(für MSSQL)

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho