Hallo zusammen,
ich habe mein FHEM neu aufgesetzt (kopiert und aufgeräumt).
Eins meiner Problemchen ist dieses hier.
https://forum.fhem.de/index.php?topic=90851.0 (https://forum.fhem.de/index.php?topic=90851.0)
Ich habe viele Zigbee-Sensoren deren Namen nicht besonders sprechend sind und fand die Idee statt Device das Alias zu nehmen schön.
Ich habe aber in eingen Aliase auch Sonderzeichen, die sind in der DB nun unschön. Ist das so oder kann ich das durch eine Einstellung ändern?
Seit Nutzung "valueFN" sind auch folgende Meldungen im Log.
Zitat2024.02.01 00:00:08 0: Strange call for typeless Verbrauchsmesser 1 Aquarium: DbLog_splitFn
2024.02.01 00:01:08 0: Strange call for nonexistent Solareinspeisung: DbLog_splitFn
2024.02.01 00:01:08 0: Strange call for typeless Solareinspeisung: DbLog_splitFn
2024.02.01 00:01:14 0: Strange call for nonexistent Stromverbrauch: DbLog_splitFn
2024.02.01 00:02:26 0: Strange call for nonexistent Wetterstation: DbLog_splitFn
2024.02.01 00:02:26 0: Strange call for typeless Wetterstation: DbLog_splitFn
2024.02.01 00:03:58 0: Strange call for nonexistent Innenwetter_WZ: DbLog_splitFn
2024.02.01 00:03:58 0: Strange call for typeless Innenwetter_WZ: DbLog_splitFn
2024.02.01 00:05:00 0: Strange call for nonexistent Heizung WC: DbLog_splitFn
db.conf
###############################################################################>
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.xx.xx;port=3306",
user => "fhem",
password => "XXXXX",
utf8 => 1
# optional enable(1) / disable(0) UTF-8 support (at least V 4.042 is necessa>
);
###############################################################################>
Device DBlog
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./db.conf
DEF ./db.conf .*:.*
FD 5
FUUID 65b1050a-f33f-44e9-51e3-a8d05b0923945343
FVERSION 93_DbLog.pm:v5.9.5-s28345/2024-01-05
MODE asynchronous
MODEL MYSQL
NAME logdb
NR 2
NTFY_ORDER 50-logdb
PID 917
REGEXP .*:.*
SBP_PID 951
SBP_STATE running
STATE connected
TYPE DbLog
UTF8 1
dbconn mysql:database=fhem;host=192.168.31.60;port=3306
dbuser fhem
eventCount 1876
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 5.9.5
OLDREADINGS:
READINGS:
2024-02-01 09:21:13 CacheOverflowLastNum 0
2024-01-24 13:44:33 CacheOverflowLastState normal
2024-02-01 09:21:34 CacheUsage 10
2024-02-01 09:21:13 NextSync 2024-02-01 09:21:43 or when CacheUsage 500 is reached
2024-02-01 09:21:14 state connected
Attributes:
DbLogSelectionMode Include
DbLogType SampleFill/History
asyncMode 1
insertMode 1
room Maschinenraum->Logs
useCharfilter 1
valueFn { $DEVICE = AttrVal($DEVICE,"alias",$DEVICE); }
verbose 2
Für deviceName gibt es ganz klare Richtlinien, welche Buchstaben dafür verwendet werden dürfen.
Das hat gute Gründe - einen davon erlebst Du gerade, das hat aber auch noch an einigen anderen Stellen Auswirkungen.
Für den alias gibt es solche Regeln nicht, da kannst Du mehr oder weniger reinschreiben, was Du willst.
Was Du verwenden könntest:
$DEVICE = makeDeviceName(AttrVal($DEVICE,"alias",$DEVICE));
Dabei werden alle nicht zulässigen Zeichen durch _ ersetzt.
Zitat von: betateilchen am 01 Februar 2024, 09:38:22Für deviceName gibt es ganz klare Richtlinien, welche Buchstaben dafür verwendet werden dürfen.
Damit habe ich kein Problem, dafür gibt es ja den Alias.
In DBlog habe ich "deCONZ_HUESensor23" stehen, was nicht besonders sprechend ist. Ich habe
$DEVICE = AttrVal($DEVICE,"alias",$DEVICE);
im Forum als Lösung gefunden. Damit habe ich aber "Klimasensor8 (K�che)" in der Liste beim Erstellen eines Diagrammes.
Deinen Vorschlag
$DEVICE = makeDeviceName(AttrVal($DEVICE,"alias",$DEVICE));
werde ich probieren. "K_che" ist auch keine schöne Lösung.
Ob das auch die medlungen im Log verhindert, mal sehen.
neue Erkenntnisse:
$DEVICE = AttrVal($DEVICE,"alias",$DEVICE);
Einträge mit Sonderzeichen, z.B. ( läßt SVG nicht zu.
$DEVICE = makeDeviceName(AttrVal($DEVICE,"alias",$DEVICE));
sieht nicht schön aus, geht aber bei SVG. Man spart sich nur das Merken was hinter dem eigentlichen Device steckt.
Meldung im Log gibt es weiterhin.
Fazit: keine der beiden Lösungen löst das Problem.