Diskussion zum configDB Workshop

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

Vorheriges Thema - Nächstes Thema

betateilchen

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

CoolTux

Kommt es mir nur so vor oder ist das ganze ins Rennen gekommen weil ich hier die letzten Tage so viele Fragen gestellt habe    ;D
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: betateilchen am 01 Juni 2016, 19:28:48
Dann sollte mal jemand den Maintainer von codemirror darum bitten, das feature in fhem mit auszuliefern ;)

Soeben passiert: https://forum.fhem.de/index.php/topic,54112.0.html ;D

Beta-User

Zitat von: CoolTux am 01 Juni 2016, 20:45:48
Kommt es mir nur so vor oder ist das ganze ins Rennen gekommen weil ich hier die letzten Tage so viele Fragen gestellt habe    ;D

Den Pokal wollte jemand anderes haben! 8)
Lustige Truppe hier....

Zitat von: Spezialtrick am 01 Juni 2016, 19:49:23
Könntest du auch eine Anleitung für den Umstieg auf DBlog erstellen?

Die Anleitung im Fhemwiki schon mal angesehen?
Und ja, das mit der dblog-Geschichte sieht nach Aufwand aus.

Da das Testen doch mehreren wichtig erscheint: bleibe jetzt erst mal bei configdb...

Ansonsten:
- Einigkeit bei der Referenzplattform: Fehlanzeige ::) (obwohl die Statistik Bände spricht). Ergo: wer einen Cubie mit C64-Peripherie unter wasauchimmerix ans Laufen bekommt, ist eher derjenige, der den Transfer einer RPi-Standardanleitung für raspbian jessie hinbekommt, oder? (vollständige Installation dauert nur 15 Min ;), und dd gibt's auch noch, dann geht's in 45 sec.+booten)
- Wenn Anleitung, dann besser vollständig, also mit den sodu's, init.d etc, wo es notwendig/sinnvoll ist (og. Anleitung als Vorbild?) Dann startet man nicht versehentlich Dienste, die NICHT mit Admin-Rechten gestartet werden sollten mit ebensolchen, nur weil der "Normaluser" meint, das sei jetzt alles am einfachsten per sudo su zu machen
- Für Datenbank-Laien: in den Anleitungen einfach darauf achten, dass sich das bei mehreren DB-Diensten nicht unbeabsichtigt in die Quere kommt und die sinnvollen Datenbankstrukturen "automatisch" nebeneinander angelegt werden.

Und: Beruhigend, dass selbst Experten sich gegenseitig überfordern, wenn sie zu viel voraussetzen 8) 8) 8)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

igami

Nun noch eine Frage:
Letztens hatte ich bei mir das Problem mit dem Onkyo Receiver. Dieser brachte FHEM total zum Absturz und ein beenden und neustarten des Dienstes führte ebenfalls direkt wieder zum Absturz.
Ich habe dann händisch die IP des Receivers in der fhem.cfg geändert und fhem lies sich wieder starten.

Wäre so etwas auch mit configDB möglich? Also für jemanden ohne Datenbankkenntnisse?
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

CoolTux

#65
Ja ist es.

Es gibt ein Art Rescue Start. Schau mal hier im Forum. Udo hatte das sehr gut beschrieben wie das gehen soll.


Edit: gefunden
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

igami

Vielen Dank, dann kann ich mir das ja noch mal überlegen :)
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

CoolTux

fhem-log wird ganz normal geschrieben und landet nicht in der DB, zu mindest nicht von Hause aus. Eventuell kann man die Datei Importieren und sie wird dann in der DB weiter geschrieben. Das vermag ich aber nicht zu sagen.
Wenn Du weisst was Du machst und wie es geht kann man auch über die DB selber Einträge ändern. Aaaaaabbbber, Du musst wissen was Du machst. Also lieber zweimal überlegen.
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: ernst1024 am 02 Juni 2016, 09:20:25
Dann stellt sich mir im Anschluss die Frage wird denn fhem-xx.log weiter normal geschrieben oder landet das auch alles in der DB?

Log hat definitiv nichts mit configDB zu tun!

CoolTux

Das hier sollten unerfahrende nie nie niemals machen.

Hier mal eine kleine Einsicht in die DB Struktur

In meinem Fall ist mein Schemaname für die ConfigDB fhemConfigDB

MariaDB [fhemConfigDB]> show databases;
+--------------------+
| Database           |
+--------------------+
| fhem               |
| fhemConfigDB       |
| information_schema |
+--------------------+
3 rows in set (0.00 sec)



Hier eine Übersicht der Tablellen. Es ist zu vermuten das die Config in der Tabelle "fhemconfig" zu finden ist

MariaDB [fhemConfigDB]> show tables;
+------------------------+
| Tables_in_fhemConfigDB |
+------------------------+
| fhembinfilesave        |
| fhemconfig             |
| fhemstate              |
| fhemversions           |
+------------------------+
4 rows in set (0.00 sec)


Hier nun die Spaltennamen der Tablelle.

MariaDB [fhemConfigDB]> show columns from fhemconfig;
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| COMMAND     | char(32) | YES  |     | NULL    |       |
| DEVICE      | char(64) | YES  |     | NULL    |       |
| P1          | char(50) | YES  |     | NULL    |       |
| P2          | text     | YES  |     | NULL    |       |
| VERSION     | int(11)  | YES  |     | NULL    |       |
| VERSIONUUID | char(50) | YES  |     | NULL    |       |
+-------------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)


Und nun zu guter letzt ein Eintrag für eine Devicedefinition

MariaDB [fhemConfigDB]> select * from fhemconfig where DEVICE='rr_Marko' and VERSIONUUID = '6ae9dc22fdcc824483447073b3f8220a';
+---------+----------+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------------------------+
| COMMAND | DEVICE   | P1                      | P2                                                                                                                                                                                                       | VERSION | VERSIONUUID                      |
+---------+----------+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------------------------+
| define  | rr_Marko | ROOMMATE                | AnniKraussStr,Eltern                                                                                                                                                                                     |      77 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | alias                   | Marko                                                                                                                                                                                                    |      78 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | devStateIcon            | .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home |      79 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | event-on-change-reading | state,presence,wayhome,location                                                                                                                                                                          |      80 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | group                   | Marko                                                                                                                                                                                                    |      81 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | icon                    | people_sensor                                                                                                                                                                                            |      82 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | room                    | AnniKraussStr                                                                                                                                                                                            |      83 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | rr_locations            | atwork,home,wayhome,underway                                                                                                                                                                             |      84 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | rr_realname             | group                                                                                                                                                                                                    |      85 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | rr_states               | home,gotosleep,asleep,awoken,absent,gone                                                                                                                                                                 |      86 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | rr_wakeupDevice         | rr_Marko_wakeuptimer1                                                                                                                                                                                    |      87 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | sortby                  | 0                                                                                                                                                                                                        |      88 | 6ae9dc22fdcc824483447073b3f8220a |
| attr    | rr_Marko | webCmd                  | state                                                                                                                                                                                                    |      89 | 6ae9dc22fdcc824483447073b3f8220a |
+---------+----------+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------------------------+
13 rows in set (3.30 sec)


Nun kann man natürlich, wenn man Ahnung hat in der Datenbank Änderungen machen. Hierzu muß man aber wissen wie genau das Schema arbeitet und welche der vielen Versionen nun aktuell ist, damit man auch wirklich die aktuelle bearbeitet.

Aber das sollte man nicht wirklich machen!!!
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 02 Juni 2016, 09:47:29
Das hier sollten unerfahrende nie nie niemals machen.

<...>

Aber das sollte man nicht wirklich machen!!!

Ein Post nach dem sogenannte Böhmermann-Prinzip ;D

CoolTux

#71
So zu sagen
Hätte ich wohl mal "Aus aktuellem Anlass" schreiben sollen.   ;D

Aber es wurde ja nach techn. Background gefragt.

Ich befürchte ja das Udo mich zerlegen wird wenn er das hier liest. Hoffe er mag mich trotzdem noch leiden können  :)
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

Beta-User

Zitat von: ernst1024 am 02 Juni 2016, 10:22:44
Jedenfalls würde mir so eine Vorgehensweise eher zusagen als die doch eher umständliche mit rescue=1 usw.

8), lauter Pessimisten hier 8)

An die Datenbankexperten:
Wäre es möglich, die Datenbank für den Havariefall auch einfach mit einem "alten" Stand zu starten? Auslösendes (nicht zwangsläufig schuldiges) Element dürfte ja die bzw. eine der letzten Änderung/en gewesen sein. Also könnte es ausreichen, fhem zu sagen, dass es die configBD mit dem vorletzten Stand starten soll. Dann anschließend diesen Stand mit einem Save zum aktuellen machen und den nächsten Versuch starten? Erfordert vermutlich Modifikationen, wäre aber eventuell "endanwenderfreundlicher".

Also etwa in der Art (weder geprüft noch recherchiert:) "sudo service fhem restart configDB -1"

Oder ist das zu schlicht gedacht?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

#73
Ja und Nein. Dein Versuch mit -1 müsste ja implementiert sein. Was Du aber machen kannst ist,

NICHTS

.....

Dieser Text wurde auf Grund unüberlegten handels wieder entfernt. To High Risk Faktor
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

betateilchen

Zitat von: CoolTux am 02 Juni 2016, 09:47:29
Hier mal eine kleine Einsicht in die DB Struktur

Zitat von: CoolTux am 02 Juni 2016, 09:57:05
Ich befürchte ja das Udo mich zerlegen wird wenn er das hier liest. Hoffe er mag mich trotzdem noch leiden können  :)

Die Datenbankstruktur ist doch kein Geheimnis, das steht doch sogar alles im zugehörigen perl Modul - und ist somit open-source.
Ich würde trotzdem dringend davon abraten, irgendwelche Änderungen direkt in den Datenbanktabellen vorzunehmen. Zumindest wird es von mir dazu keinen Support geben.

Zitat von: ernst1024 am 02 Juni 2016, 10:22:44
Jedenfalls würde mir so eine Vorgehensweise eher zusagen als die doch eher umständliche mit rescue=1 usw.

Du magst sie umständlich finden. Aber sie funktioniert und sorgt mit fhem-Bordmitteln dafür, dass auch der "Normaluser", der keine Ahnung von Datenbanken hat, sein System wieder recovern und eine vorherige, funktionierende Version wiederherstellen kann. Und DAS ist meine Zielgruppe, wenn ich ein Modul schreibe. Nicht die Datenbankexperten.

Zitat von: joe_re am 02 Juni 2016, 10:44:00
Also etwa in der Art (weder geprüft noch recherchiert:) "sudo service fhem restart configDB -1"

Das funktioniert nicht so einfach, weil fhem die Übergabe von Startparametern (ausser der Angabe eines configfiles) nicht zuläßt. Und daran soll bitte auch nichts geändert werden!

Genau deshalb habe ich den Weg über die Umgebungsvariable gewählt, die dann bei der Initialisierung geprüft wird. Und welche Version tatsächlich eine funktionierende ist, wird der Anwender in den seltensten Fällen "aus dem Kopf" wissen, deshalb hat er mit meiner Lösung die Möglichkeit, in die Liste vorhandener Konfigurationen zu schauen und die gewünschte Konfiguration selbst zu bestimmen.

Da dieser Fall ohnehin nicht täglich auftritt, halte ich die gewählte Vorgehensweise durchaus für zumutbar.

Zitat von: CoolTux am 02 Juni 2016, 10:54:56
Was Du aber machen kannst ist,

Jetzt haue ich Dich wirklich, wenn ich Dich zu sehen kriege. Wie kann man nur so einen Scheiß empfehlen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!