Erweiterung DbLog Modul, bitte t esten

Begonnen von Tobias, 24 November 2012, 07:59:22

Vorheriges Thema - Nächstes Thema

Tobias

                                                   

Hallo,

ich habe die letzten Tage das DbLog-Modul nochmal überarbeitet, incl Doku
am Ende.
Es wäre schön wenn es jemand oder mehrere testen können.

Was ist neu?
- Erkennung ob Postgresql/MySQL oder Oracle Datenbank benutzt wird
- Features von FileLog eingearbeitet
  -> delta-h / delta-d
  -> Regexp und (int) sowie int für die column_spec

Damit kann man nun ein Weblink für ein Plot erstellen.
Bitte dran denken, das fürs DbLog die Direktiven im .gplot wie folgt
definiert sein müssen:
#DbLog ::0
Alternativ kann man die Direktive im Weblink über das Attribut
"plotfunction" einstellen

Im Anhang nicht nur das Modul, sondern auch die DDL für eine PostGreSql DB
mit passenen Indices
 
viel spass

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

                                                   

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET client_encoding = 'SQL_ASCII';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

--
-- Name: fhem; Type: SCHEMA; Schema: -; Owner: fhem
--

CREATE SCHEMA fhem;


ALTER SCHEMA fhem OWNER TO fhem;

--
-- Name: SCHEMA fhem; Type: COMMENT; Schema: -; Owner: fhem
--

COMMENT ON SCHEMA fhem IS 'standard fhem schema';


SET search_path = fhem, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: current; Type: TABLE; Schema: fhem; Owner: fhem; Tablespace:
--

CREATE TABLE current (
    "timestamp" timestamp without time zone,
    device character varying(64),
    type character varying(64),
    event character varying(512),
    reading character varying(64),
    value character varying(128),
    unit character varying(32)
);


ALTER TABLE fhem.current OWNER TO fhem;

--
-- Name: history; Type: TABLE; Schema: fhem; Owner: fhem; Tablespace:
--

CREATE TABLE history (
    "timestamp" timestamp without time zone,
    device character varying(64),
    type character varying(64),
    event character varying(512),
    reading character varying(64),
    value character varying(128),
    unit character varying(32)
);


ALTER TABLE fhem.history OWNER TO fhem;

--
-- Name: reading; Type: INDEX; Schema: fhem; Owner: fhem; Tablespace:
--

CREATE INDEX reading ON history USING btree (((((device)::text || '|'::text) || (reading)::text)), "timestamp");


--
-- PostgreSQL database dump complete
--
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

                                                   

ich habs mal in contrib/dblog eingecheckt.
Was müsste ich tun damit es vom contrib ins Hauptverzeichnis wandern kann?
Doku habe ich übernomen und entsprechend erweitert (hinten dran am Modul)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

tiptronic

                                                 

Hi Tobias,

Du hast die Datei leider mit einem falschen Encoding eingecheckt... jetzt sind alle Sonderzeichen (z.B. °) weg...

Ausserdem hast Du den Support für SQLITE wegoptimiert -- ganz schlecht, denn die verwende ich ausschliesslich!  Könntest Du das wieder einbauen?

Ich fände es adäquater, wenn man hier vielleicht vorher eine Diskussion anstösst, bevor man Features ausbaut... Auch wenn man sie selbst nicht braucht - andere brauchen sie vielleicht.

Danke

Andy


On 24.11.2012, at 08:01, tobias.faust wrote:

>
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
> <93_DbLog.pm>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

tiptronic

                                                 

Hi Tobias,

was mir noch aufgefallen ist:

DbLog_ExecSQL() hat bislang 0 oder 1 zurückgegeben - je nachdem, ob etwas schief gegangen ist oder nicht. Jetzt gibt DbLog_ExecSQL() bei Fehlern 'undefined' zurück. Obwohl dies derzeit wohl keine Auswirkungen hat, tendiere ich doch eher zur 0/1 Variante, da dies einfach verlässlicher ist.

andy


On 24.11.2012, at 13:27, Andy Fuchs wrote:

> Hi Tobias,
>
> Du hast die Datei leider mit einem falschen Encoding eingecheckt... jetzt sind alle Sonderzeichen (z.B. °) weg...
>
> Ausserdem hast Du den Support für SQLITE wegoptimiert -- ganz schlecht, denn die verwende ich ausschliesslich!  Könntest Du das wieder einbauen?
>
> Ich fände es adäquater, wenn man hier vielleicht vorher eine Diskussion anstösst, bevor man Features ausbaut... Auch wenn man sie selbst nicht braucht - andere brauchen sie vielleicht.
>
> Danke
>
> Andy
>
>
> On 24.11.2012, at 08:01, tobias.faust wrote:
>
>>
>>
>> --
>> To unsubscribe from this group, send email to
>> fhem-users+unsubscribe@googlegroups.com
>> <93_DbLog.pm>
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Martin Fischer

Am Samstag, 24. November 2012, 04:22:37 schrieb tobias.faust:
> ich habs mal in contrib/dblog eingecheckt.
> Was müsste ich tun damit es vom contrib ins Hauptverzeichnis wandern kann?

nichts! denn dblog sollte weiterhin in contrib bleiben, da es a) nur wenige
nutzen und b) es noch ein _zusätzliches_ configFile benötigt.

nicht alles muss immer in trunk. dafür haben wir ja schliesslich auch contrib.

aber ich muss auch andy recht geben:
wenn du schon _bestehende_ sachen anpasst, dann solltest du sicherstellen, das
sie _kompatibel_ bleiben. oder aber forken..

gruss martin

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Tobias

                                                   

Hi,

zum Rückgabewert von DbLog_ExecSQL: das ist eine interne Funktion,
eigentlich nicht gedacht um von außen aufgerufen zu werden. Ich habe es
geändert weil ich nicht nur true/false zurückhaben möchte, sondern bei
einem Select das gesamte Resultset benötige. Ich kann aber bei einem Fehler
eine 0 zurückgeben lassen, ok??

bzgl zusätzlichem configfile: ich kann es gerne ändern das man das beim
Define angeben kann, ok??
Das es wenige nutzen kann ich nicht nachvollziehen, zb,. WebIO nutzen wohl
noch weniger und ist trotzdem im main-zweig...

Ich würde es wirklich gerne im trunc sehen....

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

tiptronic

                                                 

Am 24.11.2012 um 18:35 schrieb "tobias.faust" :

> zum Rückgabewert von DbLog_ExecSQL: das ist eine interne Funktion, eigentlich nicht gedacht um von außen aufgerufen zu werden. Ich habe es geändert weil ich nicht nur true/false zurückhaben möchte, sondern bei einem Select das gesamte Resultset benötige. Ich kann aber bei einem Fehler eine 0 zurückgeben lassen, ok??

Das wäre ok: Wenigstens halt nicht undefined... falls man die Funktion doch mal braucht ist das nicht sehr zielführend.

> bzgl zusätzlichem configfile: ich kann es gerne ändern das man das beim Define angeben kann, ok??
> Das es wenige nutzen kann ich nicht nachvollziehen, zb,. WebIO nutzen wohl noch weniger und ist trotzdem im main-zweig...
>
> Ich würde es wirklich gerne im trunc sehen....
>

Mir wäre wichtiger, dass Du die weg-optimierte SQLITE wieder einbaust (ich weiss nicht, ob jemand auch noch andere DBDs verwendet, weil die sind ja auch hops gegangen)

andy

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Tobias

                                                   

SQLITE kann ich gerne machen. dazu benötige ich folgende Angaben:
- den connectstring aus dem configfile
- die Formatierung und Befehl timestamp -> char
- und die Formatierung und Befehl char -> timestamp, beides für das Format:
YYYY-MM-DD_HH24:MI:SS

gruss

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

tiptronic

                                                 

Ich frage mich, warum Du das nicht einfach so lässt, wie es der Original-Author vorgesehen hat. Und wenn Du nun die PostgreSQL noch dazu machen willst, setzt Du diese als Special-Case davor.

andy


Am 24.11.2012 um 18:45 schrieb "tobias.faust" :

> SQLITE kann ich gerne machen. dazu benötige ich folgende Angaben:
> - den connectstring aus dem configfile
> - die Formatierung und Befehl timestamp -> char
> - und die Formatierung und Befehl char -> timestamp, beides für das Format: YYYY-MM-DD_HH24:MI:SS
>
> gruss
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Tobias

                                                   

Leider klappt das aber nicht weil jede Datenbank unterschiedliche
Datumsformatierungen kennt. Aber auf die bin ich angewiesen um die GET
Funktion implementieren zu können. Ich mus eine feste Formatierung vorgeben
damit der Rest von FHEM die Daten weiterverarbeiten kann


On Saturday, November 24, 2012 6:47:59 PM UTC+1, tiptronic wrote:
>
> Ich frage mich, warum Du das nicht einfach so lässt, wie es der
> Original-Author vorgesehen hat. Und wenn Du nun die PostgreSQL noch dazu
> machen willst, setzt Du diese als Special-Case davor.
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

tiptronic

                                                 

Also bisher hat das ganz wunderbar funktioniert.

Wie wär's wenn Du das switch-statement in die GET-Funktion einbaust. Damit zwingst Du nicht alle User dazu ihre Installation zu ändern, nur weil Du GET möchtest.

andy



Am 24.11.2012 um 18:56 schrieb "tobias.faust" :

> Leider klappt das aber nicht weil jede Datenbank unterschiedliche Datumsformatierungen kennt. Aber auf die bin ich angewiesen um die GET Funktion implementieren zu können. Ich mus eine feste Formatierung vorgeben damit der Rest von FHEM die Daten weiterverarbeiten kann
>
>
> On Saturday, November 24, 2012 6:47:59 PM UTC+1, tiptronic wrote:
> Ich frage mich, warum Du das nicht einfach so lässt, wie es der Original-Author vorgesehen hat. Und wenn Du nun die PostgreSQL noch dazu machen willst, setzt Du diese als Special-Case davor.
>
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Martin Fischer

Am Samstag, 24. November 2012, 09:35:09 schrieb tobias.faust:
> [...]
> bzgl zusätzlichem configfile: ich kann es gerne ändern das man das beim
> Define angeben kann, ok??

nein, da dann das passwort im klartext in der oberfläche zu sehen ist.

gruss

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

btw: die diskussion gehört eigentlich nach fhem-developers

gruss

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Tobias

                                                   

gib mir doch einfach die benötigten INformationen.
Würde ich das nicht machen würde das Modul fette Fehler werfen falls fhem
Daten anfordert...
Was mich aber interessiert, wie monitorst du die Daten? Kann ja nur
außerhalb von fhem sein...
Vieleicht nutzen nur so wenig das Modul weil keine Plots möglich waren..?

Ändern sollte keiner was, ich bin bestebt soviel wie möglich DB´s
unterstützen zu können.


On Saturday, November 24, 2012 6:59:31 PM UTC+1, tiptronic wrote:
>
> Also bisher hat das ganz wunderbar funktioniert.
>
> Wie wär's wenn Du das switch-statement in die GET-Funktion einbaust. Damit
> zwingst Du nicht alle User dazu ihre Installation zu ändern, nur weil Du
> GET möchtest.
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter