configDB - Spalten für Devicenamen zu kurz

Begonnen von budy, 24 Juli 2016, 16:44:18

Vorheriges Thema - Nächstes Thema

budy

Moin,

ich habe heute meinen FHEM auf configDB umgestellt und dabei ist mir aufgefallen, dass ich teilweise längere Devicenamen als 32 Zeichen habe, was dann sowohl beim Starten als auch z.B. bei einem configdb list global dazu führte, dass ich immer solche Meldungen bekam:

fhem> configDB list global
search result for device: global in version: 0
--------------------------------------------------------------------------------
attr global userattr DbLogExclude DbLogInclude alarmDevice:Actor,Sensor alarmSettings cmdIcon devStateIcon devStateStyle genericDeviceType:ignore,switch,outlet,light,blind,thermometer,thermostat,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global backupdir /var/lib/owncloud
attr global backupsymlink yes
attr global latitude 53
attr global logfile /home/fhem/fhem/log/fhem-%Y-%m.log
attr global longitude 10
attr global modpath /home/fhem/fhem/
attr global motd Messages collected while initializing FHEM:
configDB: CUL_HM_HM_LC_Dim1TPBU_FM_1A976E_ already defined, delete it first
CUL_HM_HM_LC_Dim1TPBU_FM_1A9767_ already defined, delete it first
Steckdose_Dachboden_Stehlampe_Se already defined, delete it first
Steckdose_Dachboden_Stehlampe_Se already defined, delete it first
Steckdose_Dachboden_Stehlampe_Se already defined, delete it first
Steckdose_Keller_Zirkulation_Sen already defined, delete it first
Steckdose_Keller_Zirkulation_Sen already defined, delete it first
Steckdose_Keller_Zirkulation_Sen already defined, delete it first
notifyTreppenhausDachbodenButton already defined, delete it first
notifyTreppenhausDachbodenButton already defined, delete it first
notifyTreppenhausDachbodenButton already defined, delete it first

attr global room Infrastructure
attr global sendStatistics onUpdate


Ich habe mir erstmal so beholfen, dass ich das CREATE-Statement in der configDB.pm entsprechend angepasst habe - ich mag nun mal sprechende Namen und außer mir, muss die ja keiner sehen... ;)

Ich weiß, das Defaults immer so eine Sache sind, aber ein kleiner Hinweis in der commandref, dass die angelegten Spalten nur 32 Zeichen breit sind, wäre vielleicht ganz gut.

Ansonsten hatte ich keine Problem den Umstieg zu machen.

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

betateilchen

Die 32 Zeichen für den deviceName habe nicht ich mir für die configDB ausgedacht, sondern ich habe mich bei dieser Länge exakt an die Vorgabe gehalten, die auch (schon sehr viel länger) in DbLog verwendet wird. Es macht nämlich keinen Sinn, in der configDB Namen länger als 32 Zeichen zuzulassen, wenn diese devices in DbLog überhaupt nicht verarbeitet werden können.

Der Konfigurationsdatenbank ist es prinzipiell völlig egal, wie lange der deviceName ist. Aber solange die create-Skripts für DbLog nicht entsprechend geändert werden, werde ich die Default-Länge für configDB nicht ändern.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

budy

Die Logik leuchtet mir nicht ganz ein, da ja DbLog und configDB in keinem direkten Zusammenhang stehen, oder? In der DbLog fällt so eine Beschränkung außerdem wahrscheinlich auch gar nicht auf und wenn doch, dann hat das mal zumindest keine Auswirkungen, außer dass ggf. Logs und Plots nicht mehr stimmen.

Wenn in der configDB mehrere "gleiche" defines gelesen werden, dann dürfte das doch schon die Auswirkung haben, dass diejenigen Devices, welche später aus der DB gelesen werden, eben nicht mehr beim Starten von FHEM angelegt werden, oder irre ich mich da?
Außerdem lieferst du ja auch eben kein create-Skript für die Datenbanken, sondern erledigst das im Modul und ich habe nicht gesagt, dass du die Defaults ändern sollst.

Ich habe lediglich angeregt, in der commandref einen Hinweiß zu platzieren...

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

betateilchen

Zitat von: budy am 24 Juli 2016, 18:22:16
Die Logik leuchtet mir nicht ganz ein, da ja DbLog und configDB in keinem direkten Zusammenhang stehen, oder?

Das Thema wurde hier im Forum schon mehrfach diskutiert, denn Du bist nicht der Erste, der auf diesen Punkt stößt.

Tatsache ist: ein deviceName mit einer Länge von mehr als 32 Zeichen Länge würden auch in DbLog nicht funktionieren. Ob das für Dich eine Logik darstellt oder nicht, bleibt Dir selbst überlassen. Für mich als Entwickler ist es durchaus logisch, an dieser Stelle einheitlich zu agieren.

Für mich leuchtet übrigens auch eine "Logik" nicht ein, wozu man einen deviceName mit mehr als 32 Zeichen Länge braucht. Ich habe fast 400 devices in meinem fhem, alle haben "sprechende Namen" und trotzdem ist keiner davon länger als 32 Zeichen.

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

drdownload

die 32 zeichen beschränkungen ist allerdings nur im mysql schema, ich habe zb einfach die länge auf 255 hochgestelllt.
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

betateilchen

Zitat von: drdownload am 24 Juli 2016, 19:55:28
die 32 zeichen beschränkungen ist allerdings nur im mysql schema,

Falsch. Die Länge von 32 Zeichen ist in DbLog auch für sqlite so festgelegt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!