Diskussion zum configDB Workshop

Begonnen von kumue, 31 Mai 2016, 17:22:53

Vorheriges Thema - Nächstes Thema

kumue

Erstmal Danke für die Anleitung.

Habe furchtlos und erfolgreich Schritt 1. bis 3. absolviert.

Bei 4. kommt FM:
Unknown command configdb, try help.

EDIT:

Im log steht
BEGIN failed--compilation aborted at ./FHEM/98_configdb.pm line 9.
Compilation failed in require at ./FHEM/98_configdb.pm line 9.
2016.05.31 17:20:28 0: Attempt to reload configDB.pm aborted.

kumue

UPDATE:

Nachdem ich die libtext-diff-perl nochmal installiert hatte, ging es.

Migration ist gestartet  :)

kumue

Migration ist durch und FHEM läuft auch wieder.
Auf den ersten Blick alles OK.

Mein Problem von vorhin war sicher, daß ich bei Schritt 1. eine FM übersehen hatte und libtext-diff-perl nicht korrekt installiert war.

An betateilchen's Anleitung lag es also nicht.

Danke und Gruß

igami

Wie in einem anderen Thread bereits erwähnt würde ich gerne eine Datei, speziell die myUtils, mit einem externen Editor bearbeiten.
Momentan läuft das ganz bei mir so, dass per sftp auf meinen cubietruck gehe, die Datei mit atom öffne, bearbeite und in FHEM einem reload 99_myUtils mache.
Würde das auch mit configdb gehen? Inetwa Datei exportieren und FHEM anweisen die exportierte Datei zu verwenden. Nach getaner Arbeit die Datei wieder importieren.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

Prinzipiell kannst Du das machen, Du solltest aber nach dem Exportieren die 99_myUtils.pm aus der configDB löschen. Sonst werden nämlich sowohl die 99_myUtils.pm als auch die 99_myUtils aus dem Dateisystem BEIDE geladen und ausgeführt. Dann überschreibt eine Datei die andere.

Aber warum nimmst Du nicht den in fhem verfügbaren Editor codemirror zum Bearbeiten?
Das bietet Dir ein paar Vorteile:


  • die Datei kann ohne Export/Import direkt in einem laufenden fhem bearbeitet werden
  • codemirror bietet ein fhem-spezifisches Syntax-Highlighting
  • die Datei wird automatisch wieder genau dorthin gespeichert, wo sie hingehört
  • die Datei wird nach dem Abspeichern automatisch neu geladen, dabei erfolgt eine vollständige Prüfung der Datei auf Fehler.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

igami

zu 1. codemirror ist gut, aber ein richtiger Editor ist besser. Ich muss nicht immer durch die Datei Scrollen bis ich bin wo ich hin will, ich habe Text-Folding und kann Änderungen im Editor rückgängig machen, auch nachdem sie abgespeichert wurde.
zu 2. Wenn ich die myUtils bearbeite reicht mir eine Perl Syntax-Highlighting
zu 3. Ich speicher die Datei ja auch wieder unter dem gleichen Namen ab
zu 4. Das mache ich dann von Hand wobei auch die Prüfung erfolgt

Unterm Strich sieht es dann so aus:

configdb fileexport FHEM/99_myUtils.pm
configdb filedelete FHEM/99_myUtils.pm
Änderungen durchführen
configdb fileimport FHEM/99_myUtils.pm

?

Dann könnte man das ja auch mit einem Dummy lösen

define edit_myUtils dummy
attr edit_myUtils webCmd edit:done
attr edit_myUtils userReadings edit:edit {fhem("configdb fileexport FHEM/99_myUtils.pm; configdb filedelete FHEM/99_myUtils.pm")}, done:done {fhem("configdb fileimport FHEM/99_myUtils.pm")}

so, oder so ähnlich ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

betateilchen

Die letzte Zeile, nach Abschluss und Test aller Änderungen, sollte filemove verwenden, nicht fileimport.
Dann wird nämlich die Datei automatisch nach dem Import wieder aus dem Dateisystem gelöscht um das bereits beschriebene Doppel-Laden der Datei zu verhindern.


configdb fileexport FHEM/99_myUtils.pm
configdb filedelete FHEM/99_myUtils.pm
Änderungen durchführen
configdb filemove FHEM/99_myUtils.pm


Und die Idee mit dem dummy und den webCmd ist auch nicht schlecht :)

Suchen und Texfolding kann codemirror m.W. auch. Dass ein kompletter externer Editor natürlich noch mehr kann, ist unbestritten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

So, Spieltrieb war stärker und ein backup sowieso mal wieder angesagt. Jetzt habe es auch gewagt, bekam auch artig die Meldung, dass die Migration erfolgreich gewesen wäre und nun eine vermutlich saudoofe Frage:

Wie erkenne ich jetzt, dass FHEM über configDB läuft und nicht über fhem.cfg?
Für mich sieht das genau gleich aus, insbesondere kann ich alle meine schönen includes scheinbar weiter einzeln editieren?

Was bei mir erforderlich war: ich mußte aus irgendwelchen Gründen fhem.pl mit sudo starten, sonst meldete er einen Zugriffsfehler auf die derzeitige logfile, Rechte darauf sind fhem:dialout.

Nach einem reboot ist FHEMWEB wieder da, sieht aber nach wie vor nicht verändert aus.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

#8
Zitat von: joe_re am 31 Mai 2016, 21:55:01
Wie erkenne ich jetzt, dass FHEM über configDB läuft und nicht über fhem.cfg?
Für mich sieht das genau gleich aus, insbesondere kann ich alle meine schönen includes scheinbar weiter einzeln editieren?

Klicke mal in der Navigationsleiste links auf "Save config", dann muss die Meldung kommen "configDB saved".
Technisch siehst Du es, wenn Du in das device "global" schaust, dann steht da beim Attribut configfile der Wert configDB anstatt fhem.cfg

Natürlich kannst Du Deine includes weiter bearbeiten, sie werden ja durch die Migration nicht gelöscht. Aber sie werden nicht mehr verwendet, d.h. die Änderungen wirken sich nicht aus.

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

Beta-User

Zitat von: betateilchen am 31 Mai 2016, 22:01:31
Klicke mal in der Navigationsleiste links auf "Save config", dann muss die Meldung kommen "configDB saved".
Fehlanzeige, er meldete "wrote configuration to fhem.cfg".

Habe es jetzt nochmal mit dem manuellen Starten incl. configDB gemacht, dann klappt es auch mit dem save in configDB. Das allerdings nur bis ich den PI neu starte, dann ist er wieder bei fhem.cfg. Wie mache ich es zum Standard, dass FHEM mit configDB startet?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

#10
Indem Du im Start-Skript - normalerweise /etc/init.d/fhem - die entsprechende Option aktivierst. Dort sind von Haus aus beide Möglichkeiten enthalten, Du musst nur die gewünschte aktiv setzen und die jeweils andere auskommentieren.


#

#        perl fhem.pl fhem.cfg

# if you want to use configDB for configuration,
# use this command to start fhem:
#
       perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

Zitat von: betateilchen am 31 Mai 2016, 22:27:23
Indem Du im Start-Skript - normalerweise /etc/init.d/fhem - die entsprechende Option aktivierst. Dort sind von Haus aus beide Möglichkeiten enthalten, Du musst nur die gewünschte aktiv setzen und die jeweils andere auskommentieren.

Danke, das war's natürlich. Kaum hat man eine DAU-Anleitung, stellt "man" das Denken ein... Sorry!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

Es wird auch MySQL und sogar PostgreSQL unterstützt. Das wären dann aber keine 5 Schritte mehr sondern 7 (bildlich) gesprochen. Wie das geht steht gut Dokumentiert in der Commandref. Es gibt aber zu bedenken das man sich ein wenig mit MySQL auskennen sollte.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Zitat von: CoolTux am 01 Juni 2016, 06:17:03
Es wird auch MySQL und sogar PostgreSQL unterstützt. Das wären dann aber keine 5 Schritte mehr sondern 7 (bildlich) gesprochen. Wie das geht steht gut Dokumentiert in der Commandref. Es gibt aber zu bedenken das man sich ein wenig mit MySQL auskennen sollte.

Tja, die commandref wird aber anscheinend nicht gerne gelesen  ::)

Es ändert sich dann außerdem auch das Backup-Verfahren. Entweder man hat selbst schon ein entsprechendes Backup-Konzept für seine Datenbank (sollte eigentlich so sein!) oder man verwendet das configdb dump Kommando, das ein Dump der entsprechenden Datenbank (!) dann gzipped im ./log-Verzeichnis ablegt. Nichts desto trotz ist so wie CoolTux schreibt, eine gewisse DB-Erfahrung dazu sinnvoll.

marvin78

Zitat von: ernst1024 am 01 Juni 2016, 08:09:37
Ich finde auch man sollte das Forum abschaffen bis auf ein Unterforum mit nur einem Beitrag: Lesen sie die cmdref.  :)


Und ich hatte angenommen, du hättest gestern was gelernt. Das Forum ist gut und sinnvoll, aber nicht dafür da, die Inhalte der Dokumentation zu wiederholen. Wenn man hier in Forum Dinge beantworten kann, in dem man einfach ein sinnvolles Stichwort für die commandref-Suche gibt, ist das gut und richtig. Auch der Hinweis darauf, dass man sich die commandref mal näher ansehen soll, ist (fast) nie falsch.