Hallo und guten Abend liebe FHEMler,
erst einmal lieben Dank an alle für die tolle Software!
Ich habe gerade die Diskussion https://forum.fhem.de/index.php?topic=106528.0 (https://forum.fhem.de/index.php?topic=106528.0) über die Begrenzung der Länge von Readings in FHEM 6.0 gelesen.
Da ich mich gefragt habe, ob mich das ggf. betreffen würde, wenn es realisiert werden sollte, habe ich mir ein kleines Script gebastelt (für Linux bash).
MAXIMUM=0
MAXREADINGNAME=""
MAXDEVICE=""
COUNT=0
while read device
do
set $device
DEVICENAME=$1
shift
for reading in $@
do
(( COUNT++ ))
readingname=${reading%%=*}
if [ ${#readingname} -gt $MAXIMUM ]
then
MAXIMUM=${#readingname}
MAXREADINGNAME=$readingname
MAXDEVICE=$DEVICENAME
fi
done
done << EOF
$(perl /opt/fhem/fhem.pl 7072 'list .* READINGS')
EOF
echo "$COUNT Readings, längstes Reading mit $MAXIMUM Zeichen: $MAXREADINGNAME in Device $MAXDEVICE"
Das Ergebnis sieht bei mir so aus:
pi@fhem ~/scripte $ ./fhem_readings.x
2649 Readings, längstes Reading mit 37 Zeichen: e_MQTT2_tasmota001_AM2301_Temperature in Device df_dht22_tasmota001
Ist bestimmt nicht schöner Code (bin was müde), funktioniert aber. Wer's nicht mag, bitte ignorieren oder verbessern. Schönen Abend!
Martin
Knobeln zum Einschlafen :)
Mit perl/FHEM geht das auch:fhem> { my ($r,$l,$c)=("",0,0);; map { my $d=$_;; map { $c++;; $l=length($_),$r="$_ in $d" if(length($_)>$l)} keys %{$defs{$d}{READINGS}} } keys %defs;; "#readings $c, longest with $l is $r" }
#readings 769, longest with 38 is configRelay1ResponseToTemperatureAlarm in EingangsLampe
#readings 11170, longest with 46 is R-CUL_HM_HM_RC_4_B_18E3CC_Btn_02-shOffTimeMode in HR_Hutschiene4fach_Sw_02