fhem Konfiguration aus SQL Datenbank [allgemeines]

Begonnen von AHA1805, 06 März 2014, 06:49:43

Vorheriges Thema - Nächstes Thema

AHA1805

Hallo betateilchen,

schon beeindruckend was Du hier gemacht hast.

ich überlege gerade worin der Vorteil liegt wenn die Konfiguration in einer Datenbank liegt.

Ich will hiermit nicht deine Arbeit schmälern oder gar kritisieren, sondern nur den Beweggrund verstehen.

-Ist dadurch die Performance besser?
-Verhindert man dadurch ungewolltes editieren der fhem.cfg?
-Hat man sonstige Vorteile bei der Auswertung? 
-Hat man damit noch die Möglichkeit zwei Konfigurationsstände einfach miteinander zu vergleichen?


Im Moment verwende ich einen Cronejob, welcher mir die fhem.cfg bei Veränderung automatisch versioniert.
Dadurch hatte ich schon öfters selbst eingebaute Fehler über einfachen Dateivergleicher gefunden oder auch einfach nachgeschaut wie ich das mal gemacht hatte.

Gruß Hannes


Gesendet von Unterwegs mit Tapatalk 4

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

Hast Du schon die commandref gelesen?

Es hat den Vorteil, dass niemand mehr in die "Versuchung" kommt, seine Konfiguration manuell zu ändern.
Es hat den Vorteil, dass das Rumgehampel mit dem Verteilen auf mehrere Konfigurationsdateien und den includes aufhört.
Es hat den Vorteil, dass die Konfigurationen in der Datenbank versioniert werden. Das heißt, ich kann mir auch die vorletzte Konfiguration einfach wieder zurückholen und produktiv setzen, falls ich mich "beim Basteln" wirklich mal soweit verrannt habe, dass nichts mehr geht.

Komplette Konfigurationsstände direkt vergleichen kannst Du nicht mit fhem Bordmitteln. Aber per SQL Daten zu vergleichen, ist ja jederzeit ausserhalb von fhem möglich, auch das Suchen nach bestimmten Begriffen. Ich hatte z.B. gestern Logmeldungen wegen "uninitialized values in split" (natürlich ohne Angabe, in welchem Device oder File das passiert) und habe mir einfach in der SQL-Datenbank alle Zeilen rausgesucht, in denen überhaupt ein split vorkommt. Damit hatte ich einen sehr guten Ansatzpunkt, dem Problem auf die Schliche zu kommen.

Was aber mit fhem Bordmitteln geht: Du kannst mit cfgDB_List() in alten Versionen in der Datenbank nach devices suchen (einzeln oder mehrere gleichzeitig) und bekommst dann angezeigt, wie ein Gerät "früher" definiert und attributiert war. Das ist also genau das, was Du mit der Versionierung Deiner fhem.cfg auch machst.

Vielleicht erweitere ich die List-Funktion noch um eine Gegenüberstellung der gefunden Altdaten eines Gerätes mit den aktuellen Konfigurationsdaten - das ist eine gute Idee, danke.

Reine Performancevorteile (Geschwindigkeit bei der Ausführung eines "save" oder "rereadcfg") hat das Ganze eigentlich keine.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hans Franz

Mehrzeiligkeit in "defs" perdu? Kein "LF" aber Backslashes.
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

betateilchen

Mehrzeiligkeit bei DEFs kann eigentlich fast nur in notify und at vorkommen. Und da gehört für mich überhaupt keine Mehrzeiligkeit hin, alles was dort im Ausführungsteil mehr als eine Zeile benötigt, sollte in eine Funktion gekapselt und in die 99_myUtils.pm ausgelagert werden. Und die 99_myUtils.pm wiederum kannst Du mit dem neuen enhancedEditor im fhem-Frontend sogar mit Syntaxhighlighting, Auto-Complete und automatischer Klammersetzungskontrolle hervorragend bearbeiten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hans Franz

Alle Notifys, die mehrzeilig sind, müssen nun von allen Usern umgeschrieben werden?
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

ph1959de

Eine Frage stellt sich mir noch im Bezug auf "Konfiguration aus DB": wie bekomme ich alle Definitionen zu (z.B.) einem Device in einer Art gelistet, wie ich sie dann als Beispiel (z.B. Wiki, Forum, ...) beschreiben kann (also ein define mit allen attr ...)? Also das übliche "zeige mal die komplette Definition für ...". Geht sowas (derzeit schon) oder müssen dazu alle "Zeilen" einzeln zusammengesucht werden?

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Rince

Mir fiele schon noch ein (potentieller) Vorteil ein:

Eventuell könnte man auf diese Art und Weise fhem eine sichere Multiuserversion beibringen.
Eben auf Datenbankebene.


Und, noch etwas anderes,
vielleicht könnte man die 99myUtils auch überführen in eine Datenbank, und dann die einzelnen Routinen als einzelne Unterprogramme isoliert darstellen lassen.
Vielleicht werden sie ja so mal besser austauschbar. Ich denke an eine große 99myUtils Datenbank, die mit den Routinen der User gefüttert wird, wenn diese es wollen.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

betateilchen

Zitat von: ph1959de am 06 März 2014, 10:58:06wie bekomme ich alle Definitionen zu (z.B.) einem Device in einer Art gelistet

Also zum einen kannst Du ja weiterhin den ganz normalen Standardbefehl "list" verwenden, denn der wird ja aus dem fhem-Speicher gelesen und nicht aus irgendeiner Konfigurationsdatei:

Beispiel:

list configDBdummy

liefert:



Internals:
   CFGFN     
   NAME       configDBdummy
   NR         19
   STATE      ???
   TYPE       dummy
   Readings:
     2014-03-06 11:09:45   reading1        25
Attributes:
   group      dummyGruppe
   room       configGruppe




Darüberhinaus hast Du nun die Möglichkeit, die in der Konfiguration gespeicherten Einträge zu lesen, und das sogar aus verschiedenen gespeicherten Versionen. Standardmäßig wird immer die aktuelle Version (0) gelesen:

{cfgDB_List 'configDBdummy'}

liefert als Ergebnis:



search result for device: configDBdummy in version: 0
--------------------------------------------------------------------------------
define configDBdummy dummy
attr configDBdummy group dummyGruppe
attr configDBdummy room configGruppe



Hier kommen also exakt die Zeilen, wie man sie eingeben müsste, und nicht die einzelnen internen Werte wie beim "list"
Dafür kommen aber bei dieser Ausgabe  keine Readings mit, weil die nichts mit der Konfiguration selbst zu tun haben und auch nicht in der Konfigurationsdatenbank stehen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#9
Zitat von: Rince am 06 März 2014, 11:08:32
vielleicht könnte man die 99myUtils auch überführen in eine Datenbank, und dann die einzelnen Routinen als einzelne Unterprogramme isoliert darstellen lassen.

das hat dir doch die NSA verraten, oder? 8)

Wobei ja das Syntaxhighlighting in der 99_myUtils inzwischen schon sehr viel weiterhilft, was die Darstellung angeht.

Man kann sogar (fast) die gesamte fhem.pl in eine Datenbank legen, (das hab ich hier auch schon fertig) aber dann erschlägt mich wahrscheinlich seine Majestät. *duck-und-weg*
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: AHA1805 am 06 März 2014, 06:49:43
-Hat man damit noch die Möglichkeit zwei Konfigurationsstände einfach miteinander zu vergleichen?

Du meinst, sowas?

(http://up.picr.de/17564372cw.jpg)

Jetzt ja 8) mittels

{cfgDB_Diff 'global',3}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Rince

das hat dir doch die NSA verraten, oder?

Zitatfhem User erfindet das Rad neu. Ingenieure sind verblüfft
Ich meine das durchaus ernst.
attr blblablub share 1
Und schon wird bei einem Update oder so der Code in eine große Datenbank hochgeladen.
Vielleicht noch 2 oder 3 Attribute zur Verschlagwortung der Geschichte.

Am besten dann noch ne Funktion, um aus der großen Datenbank Codeschnippsel zu integrieren.

Wieso das ganze?
Weil nicht jeder das Rad neu erfinden muss. Das ist schon da und funktioniert soweit gut. Der eine nimmt ein Rad, der nächste zwei Räder, auch Konstrukte mit 3 oder 4 Rädern sind gebräuchlich.

Bei fhem ist es nicht unähnlich. Betrachte Module als Räder. Die sind da, getestet und funktionsfähig.

Wie du jetzt aber die Achse und die Lenkung konstruierst, ist deine Sache. Damit stehst du alleine auf weiter Flur.

Eigentlich schade. Vermutlich hat jemand genau deine Idee schon mal umgesetzt. Aber davon provitierst du nur dann, wenn du einen entsprechenden sinnvollen Forumsbeitrag schreibst und, hier wirds spannend, derjenige mit deiner Wunschachse auch tatsächlich deinen Beitrag entdeckt.

Deshalb fände ich eine Art Repository für fhem Lösungen eine gute Idee. Sobald es aber viel Manpower braucht, wird es tricky. Deshalb sollte dies automatisiert werden.

Ein attr, welches man extra freigeben muss, um das Codeschnippselchen frei zu geben, erschiene mir eine nicht dumme Idee zu sein.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

betateilchen

Mit "NSA verraten" meinte ich, dass ich meine 99_myUtils inzwischen bereits komplett in der Datenbank liegen habe - nicht erst seit Deinem Vorschlag, den ich durchaus ernstnehme.

Aber das wird in fhem nicht generell umsetzbar sein. Schau Dir einfach mal die bestehenden Module an und zähle mal durch, alleine wieviele Funktionen es darin bereits gibt, um aus einem Timestamp etwas für den Menschen sinnvoll lesbares zu machen.

Und wer Funktionen in die 99_myUtils auslagert, muss die zumindest auch so dokumentieren, dass daraus bereits für jeden Interessenten klar wird, wozu die Funktion gut ist. Und dieser Grundsatz ist bis heute noch nicht einmal in der "offiziellen" 99_Utils.pm umgesetzt.

Ausserdem werden hier im Entwicklungsbereich einfach zu oft zu viele Pfründe vehement verteidigt, die es eigentlich längst nicht mehr wert sind.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

jetzt mal ganz abgesehen ob und wie das technisch geht sehr ich zwei probleme: zum einen bestehen solche 'lösungen' meist aus mehr als einem device sondern selber wieder aus komponenten dir zusammenspielen. d.h. man bräuchte hier noch irgend eine art schema um das zu kennzeichnen und zum anderen gibt es keys, accounts, passwôrter & co die auf keinen fall aus versehen gegeilt werden sollten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

#14
Genau. Deshalb macht es - obwohl prinzipiell ein nachvollziehbarer Vorschlag - nicht sehr viel Sinn, dafür sonderlich viel Zeit aufzuwenden.

Ich wäre ja schonmal froh, wenn man endlich diese vermaledeiten Konfigdateien generell loswerden könnte.

Zitat von: justme1968 am 06 März 2014, 13:56:50aus versehen gegeilt 

Da hat Dir jetzt aber Deine Rechtschreibprüfung in die Suppe gespuckt  :P
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Rince

Auch nach längerem Nachdenken fällt mir kein Punkt auf, der sich nicht lösen lassen könnte.

Ich bin aber nur User und kein Entwickler. Daher mag mein Fokus ein anderer sein als eurer.

Auch Windows führt schon lange nicht mehr jeden DOS Code mehr aus. Ist dennoch recht weit verbreitet. Aktuelle Linuxkernel wollen mit 386er CPUs auch nicht mehr wirklich. Der Aufschrei diesbezüglich war eher bescheiden.

Die Frage die ich mir als User aber sehr wohl stelle, ist die, wohin der Weg von fhem geht. Und zu diesem habe ich eine klare Vorstellung.

Erbhöfe sind spannend. In der Politik erkennt man abgesägte Leute meist daran, dass sie einen Titel wie "Ehrenvorsitzender" oder so bekommen. Dürfen sich also geehrt und wichtig fühlen, während die Nachfolger deren Denkmäler für die Ewigkeit abreißen, bzw. canceln.
Vielleicht kennt wer außerhalb Bayerns Stoiber und den Transrapid.
Schönes Beispiel...

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

betateilchen

Zitat von: Rince am 06 März 2014, 14:45:20Die Frage die ich mir als User aber sehr wohl stelle, ist die, wohin der Weg von fhem geht. Und zu diesem habe ich eine klare Vorstellung.

Diese Frage stellst nicht nur Du Dir, sondern es gibt sicher noch eine ganze Reihe anderer Leute, die fhem gerne "revolutionieren" würden und davon auch eine ziemlich konkrete Vorstellung haben ;)

Zitat von: Rince am 06 März 2014, 14:45:20Stoiber und Transrapid.
Schönes Beispiel...

Ja, schönes Beispiel. In etwa vergleichbar mit "Rudi und die Fritzbox" :D
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Aber vielleicht können wir uns hier mal wieder auf das Thema Konfigurationsdatenbank konzentrieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AHA1805

Zitat von: betateilchen am 06 März 2014, 12:29:53
Du meinst, sowas?

(http://up.picr.de/17564372cw.jpg)

Jetzt ja 8) mittels

{cfgDB_Diff 'global',3}

Hallo betateilchen,

krass bist du schnell,
genau das habe ich gemeint :-)

Dann könnte ich meine Versionierung ja quasi
Adakter legen, wenn mal mein BBB geliefert wird.

Was machen die FritzBox Nutzer, hier kann man doch kein DBI und DBD nachinstallieren, oder?

SG Hannes

Gesendet von Unterwegs mit Tapatalk 4

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

AHA1805

Zitat von: Damian am 06 Februar 2014, 18:36:34
kein Problem mit:

define sensor_grube_leer notify sensor_grube
IF ([sensor_grube:content] > 6000)
  (set DisplayLed_16 led red)
ELSE (
  IF ([sensor_grube:content] > 5000)
    (set DisplayLed_16 led orange)
  ELSE (
    IF ([sensor_grube:content] > 4000)
      (set DisplayLed_16 led green)
    ELSE
      (set DisplayLed_16 led off)
  )
)


Selbst die Einrückungen kannst du für die Übersicht,  wie in jeder höheren Programmiersprache, in der DEF-Eingabe so vornehmen.

Gruß

Damian

Aus einem andern Threat...

Ist so etwas mit configDB auch möglich?

Gruß Hans

Gesendet von Unterwegs mit Tapatalk 4

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

Zitat von: AHA1805 am 06 März 2014, 19:21:34
Was machen die FritzBox Nutzer, hier kann man doch kein DBI und DBD nachinstallieren, oder?

Wer sagt das? Inzwischen musste ja selbst Rudi eingestehen, dass sqlite als Datenbanksystem auf der Fritzbox schon ab Werk vorhanden ist und damit sein Totschlagargument "geht nicht auf Fritzbox" bei mir nicht mehr zieht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: AHA1805 am 06 März 2014, 19:41:35
Aus einem andern Threat...

Ist so etwas mit configDB auch möglich?

Natürlich geht das. Auch wenn es sinnlos ist.
Zum Thema Mehrzeiligkeit hatte ich mich ja weiter oben bereits geäußert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

Kann es sein, dass configDB.pm noch immer nicht per update ausgeliefert wird? Wollte das gerade auf meinem Testsystem ausprobieren und hatte gedacht ich mache einfach ein update um configDB zu bekommen. Die Datei fehlt jedoch danach. Ich musste sie manuell einfügen.

betateilchen

Zitat von: marvin78 am 06 März 2014, 20:59:28
Kann es sein, dass configDB.pm noch immer nicht per update ausgeliefert wird?

ja, das ist leider so. Ich weiss nicht, warum Rudi das noch nicht eingepflegt hat und ich habe auch noch keine Antwort auf meine diesbezüglichen Rückfragen erhalten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Seit heute ist configDB.pm auch im regulären Update-Prozess enthalten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hans Franz

seit Update heute:
2014.03.10 14:39:29 1: Can't locate Text/Diff.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at configDB.pm line 579.
BEGIN failed--compilation aborted at configDB.pm line 579.
Compilation failed in require at (eval 5) line 2.
BEGIN failed--compilation aborted at (eval 5) line 2.

Can't connect to data source 'dbi:' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at configDB.pm line 315


Austausch gegen vorherige configDB.pm:
Can't locate configDB.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at (eval 5) line 2.
BEGIN failed--compilation aborted at (eval 5) line 2.

Undefined subroutine &main::cfgDB_Init called at fhem.pl line 379.


Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

betateilchen

ja, und die Fehlermeldung ist doch eindeutig. Installiere halt das Perl Modul Text::Diff nach... (steht übrigens auch in der Moduldoku!)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hans Franz

Ja, schon klar. aber das hättest du netterweise vorher kommunizieren können, bevor einem fhem nicht mehr startet und folglich die commandref auch nicht mehr zugänglich ist. Zumal sich auch die Struktur der DB geändert hat und so ein einfaches Update gar nicht möglich ist.
Und nett fände ich auch etwas weniger arrogante Antworten.
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

betateilchen

#29

  • ist die immer tagesaktuelle commandref auch ganz ohne laufendes fhem zugänglich: http://fhem.de/commandref.html
  • hat sich die Datenbankstruktur seit der ersten offiziellen Auslieferung der configDB nicht mehr geändert.
  • hatte ich die Erweiterung der configDB um die DIFF Funktion sehr wohl hier kommuniziert.

Falls Du eine Datenbankversion aus der Entwicklungs-/Testphase migrieren willst, brauchst Du nur ein Feld namens "versionuuid" vom Typ char(50) an die Tabelle fhemconfig in Deiner Datenbank anfügen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AHA1805

Hallo Udo,

hab ja die Taufrische Version mit configDB bei mir am laufen :-)

Da ich jetzt meine beiden cfg verschmelzen möchte,
wollte ich vorher einen export der bestehenden Config machen. (Auch wenn diese automatisch als Version abgespeichert wird)


fhem> configdb export /opt/fhem/orgfhem.cfg

22 records exported from version 0 to /opt/fhem/orgfhem.cfg


Nur leider wird keine Datei angelegt.

Gruß Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

#31
Kann ich mir eigentlich nicht vorstellen, denn sonst würde es eine Fehlermeldung geben.

Aber davon abgesehen: es gibt noch keine import-Funktion, was willst Du mit dem exportierten File anfangen?
Auch die export-Funktion selbst ist noch sehr experimentell.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AHA1805

Hallo Udo,

wenn ich aber configDB eingebe kommt schon hinter Export auch die Option mit Import 

War ich meiner Zeit voraus  ???

Gruß Hannes

PS Dann werde ich vorerst noch mit der fhem.cfg arbeiten
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

maxritti

Öhm, gerade eben wollte ich mal meine ConfigDB in eine Datei exportieren, weil ich auf der Suche nach einem kleinen Problemchen meiner HM Rolladenaktoren bin und eine Seriennummer oder ID in der Config suchen wollte.

Daraufhin habe ich mal ein "configdb" im Fhemweb eingegeben und dort diese info bekommen:

Syntax:
         configdb attr [attribute] [value]
         configdb backup
         configdb diff <device> <version>
         configdb export <targetFilename> [version]
         configdb import <importFilename>
         configdb info
         configdb list [device] [version]
         configdb migrate
         configdb recover <version>
         configdb reorg [keepVersions]
         configdb uuid


Da scheint mir der "export" Befehl ja auch der richtige zu sein.
Steht ja auch so in der command-ref, dass damit

Nur wieso bekomme ich immer wieder o.a. Syntaxauflistung, wenn ich beispielsweise "configdb export config_export.txt" eingebe?
Eigentlich kann ich die Antwort auch selber geben:

Denn in der $Id: configDB.pm 5687 2014-04-28 17:53:37Z betateilchen $ wird dieser Befehl auch nicht (mehr?) ausgewertet.

Allerdings auch in ein paar zurückliegenden Backups finde ich dieses command nicht.

Kann mir bitte einer helfen das Brett vor dem Kopf zu entfernen?

betateilchen

Es gibt schon länger keinen export Befehl mehr.
Danke für den Hinweis, ich muss den Hilfetext aktualisieren :)

Du kannst Deine Fehlersuche aber mit configdb list <device> machen. Dabei gilt für <device> die übliche SQL-Syntax für LIKE

Beispiel:

configdb list %Clima% führt alle definierten Clima und Climate Channels auf, solange sie standardkonform noch diesen Teil in ihrem Namen tragen:


search result for device: %Clima% in version: 0
--------------------------------------------------------------------------------
define az_RT_Clima CUL_HM 2286BC04
attr az_RT_Clima DbLogExclude .*
attr az_RT_Clima group 19 Heizung
attr az_RT_Clima model HM-CC-RT-DN
attr az_RT_Clima peerIDs 00000000,
attr az_RT_Clima room 12 Arbeitszimmer
define az_RT_Climate CUL_HM 2286BC02
attr az_RT_Climate group 19 Heizung
attr az_RT_Climate model HM-CC-RT-DN
attr az_RT_Climate peerIDs 00000000,
attr az_RT_Climate room hidden
define az_RT_ClimaTeam CUL_HM 2286BC05
attr az_RT_ClimaTeam group 19 Heizung
attr az_RT_ClimaTeam model HM-CC-RT-DN
attr az_RT_ClimaTeam peerIDs 00000000,
attr az_RT_ClimaTeam room hidden
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

maxritti

Ah alles klar. Danke Dir.

Es reicht ja auch einfach mal ein "configdb list" und dann kann ich da ja eine einfache Textsuche nach der ID machen.
Denn ich suche halt eine ID und weiss nicht welches Device das ist.

Aber das war jetzt aber schon zuviel Off-Topic  ;)

betateilchen

das bringt mich auf die Idee, ein "configdb search" einzubauen - aber wahrscheinlich erst nach meinem Urlaub, der heute Nacht losgeht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

kommt morgen per update.

configdb search <searchTerm> [searchVersion]

Beispiel:

configdb search %2286BC%

liefert als Ergebnis:


search result for: %2286BC% in version: 0
--------------------------------------------------------------------------------
define az_RT CUL_HM 2286BC
define az_RT_Clima CUL_HM 2286BC04
define az_RT_Climate CUL_HM 2286BC02
define az_RT_ClimaTeam CUL_HM 2286BC05
define az_RT_remote CUL_HM 2286BC06
define az_RT_Weather CUL_HM 2286BC01
define az_RT_WindowRec CUL_HM 2286BC03
attr Melder_FAl peerIDs 00000000,2286BC03,
attr Melder_FAr peerIDs 00000000,2286BC03,
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

maxritti

Das war ja mal ein kurzer Urlaub.
8 Minuten  ;)

Eine gute Idee.

betateilchen

Ab sofort in SVN verfügbar. (am längsten gedauert hat die Doku...)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fhainz

Was ich noch nicht ganz verstehe: Ich hab die 99_myUtils.pm in die db verschoben und nun will ich sie bearbeiten. Muss ich die Datei nun jedes mal exportieren und wieder importieren?
Bei edit files ist sie nicht gelistet.

betateilchen

wenn Du die Datei richtig verschoben hast, kannst Du sie in edit files bearbeiten.

"Richtig" bedeutet in diesem Zusammenhang "mit korrekter Pfadangabe", also

configdb fileimport ./FHEM/99_myUtils.pm
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fhainz

Hatte "fhem" als Verzeichnis beim move angegeben, kleingeschrieben. Die Funktionen wurden alle geladen nur im Edit Files kam die Datei nicht.
Nun funktioniert's, Danke!