Ist: deletereading <name> bla
funktioniert prima und entfernt das Reading bla bei <name>
Wunsch: deletereading <name> bla.*
sollte aus <name> alle readings entfernen, die mit bla beginnen.
Mir erschließt sich das noch nicht ganz:
deletereading <devspec> <readingname>
<readingname> is a perl regular expression that must match the whole name of the reading.
Wenn ich das richtig interpretiere, kann ich diese regex nicht für den vorgesehenen Zweck einsetzen, da ich ja nicht weiß, welche readings vorhanden sind.
Sinn:
In einem Modul vor dem readingsBulkUpdate() erstmal alle bestehenden readings einer bestimmten Namensgruppe löschen, da nicht garantiert werden kann, dass bei einer Aktualisierung alle Werte wieder zur Verfügung stehen. Gerade beim Arbeiten mit Wetterstationsdaten kommt es vor, dass von unterschiedlichen Stationen unterschiedliche Datensätze geliefert werden. Dann kommt es zu einer Vermischung der in den readings gespeicherten Werte einer vorher verwendeten Station.
ZitatWunsch:
deletereading <name> bla.*
sollte aus <name> alle readings entfernen, die mit bla beginnen.
das tut es doch...
gruss
andre
nö.
bei mir schon.
gerade verwendet und dann explizit noch mal getestet. sogar mit bla1, bla2 und bla3 als reading und 'deletereading <device> bla.*'.
er löscht alle drei readings, meldet mir alle drei die gelöscht wurden und lässt alle anderen unangetastet.
gruss
andre
solange die Namen der Readings alle gleichlang sind, mag das funktionieren. Hast Du auch mal bla1 bla22 und bla333 getestet?
das ging gerade eben auch...
list x
Internals:
CFGFN
NAME x
NR 225
STATE ???
TYPE dummy
Readings:
2013-08-05 13:05:11 bla1 1
2013-08-05 13:05:11 bla11 11
2013-08-05 13:05:11 bla12 12
2013-08-05 13:05:11 bla2 2
2013-08-05 13:05:11 bla3 3
2013-08-05 13:05:11 xbla11 11
2013-08-05 13:05:11 xbla12 12
Attributes:
deletereading x bla.*
Deleted reading bla1 for device x
Deleted reading bla2 for device x
Deleted reading bla12 for device x
Deleted reading bla11 for device x
Deleted reading bla3 for device x
list x
Internals:
CFGFN
NAME x
NR 225
STATE ???
TYPE dummy
Readings:
2013-08-05 13:05:11 xbla11 11
2013-08-05 13:05:11 xbla12 12
Attributes:
gruss
andre
komisch... ich hätte den Wunsch ja nicht geäußert, wenn es hier neulich funktioniert hätte. Ich werde nochmal ausgiebig testen.
Danke für Deine Unterstützung.
ok, Du hast gewonnen :o)
Na, Du bist ja an vielen Stellen unterwegs.
Ob das so die gute Idee ist?
Readings kann man nicht aus einem Modul löschen, sondern die Readings werden aus einem Device gelöscht.
Und bevor die Frage kommt:
Schau mal hier:
http://fhem.de/commandref.html#deletereading
Warum willst Du denn auch Readings löschen?
Und was heisst denn geht nicht?
Ein wenig Code, den Du eingibst wäre hilfreich. Bzw Fehlermeldungen wird es u.U. auch geben.
Ach ne. Du hast ja auch Probleme mit dem Logfile. ;)
Den Sinn state zu löschen will ich jetzt mal nicht weiter hinterfragen. :o
Ein Part aus der Commandref, den ich verlinkt habe:
Use with greatest care!
Und bitte prüfe mal Deine Angabe mit dem was in der Commandref steht.
Eventuell fällt Dir die Unstimmigkeit auf!?
Zitat von: Jochen68 am 26 Dezember 2014, 18:26:41
Außerdem:
Wenn ich unnötige Readings lösche, würde so auch die Log-Datei kleiner ?
Definiere mal unnötig?
Wobei
disconnected bei state deutet für mich irgendwie auf ein (weiteres) Problem in Deiner Config hin.
Zitat von: Jochen68 am 26 Dezember 2014, 18:39:34
"state" ist gelöscht... , komisch hatte vorige Stunde schonmal "state" und "KWL" vertauscht ::) , da funktionierte es nicht, alles seltsam ... steht hier im Thread ja auch schonmal weiter oben ...
Nun, das Posting ist schon aus 2013. Da hat sich an FHEM mittlerweile sehr viel getan.
Aber sei es drum.
Zitat von: Jochen68 am 26 Dezember 2014, 18:39:34
Und nein, den "state" hatte ich mir irgendwie zusätzlich "eingefangen" (gem. Datum auch schon älter). Alle Readings im Modul sind auch mit einem Großbuchstaben beginnend.
Jedenfalls ist das "Teil" weg ...
Würde eine Reduzierung auch das Log-File verkleinern ?
Wenn die Readings von der regExp im FileLog erreicht werden, dann kommen die zwangsläufig ins Log.
Darum würde ich aber nicht direkt Readings löschen.
Eher würde ich dem Log sagen, was es loggen soll und somit die Readings, die du nicht im Log haben willst, rausnimst.
Dazu einen Blick in die CommandRef werfen.
Zitat von: Jochen68 am 26 Dezember 2014, 18:39:34
Und wenn ich das Modul lösche und neu einbinde, wären alle Readings wieder da ?
Keine Ahnung. Hellsehen ist nicht meine Stärke.
Um was für ein Modul handelt es sich denn?
Ein Modul stellt die Readings bereit, welche es benötigt. Einleuchtend oder?
Wenn Du Dir natürlich irgendwie, irgendwelche andere Readings "einfängst", kann das natürlich sein, dass die dann auch wieder auftauchen.
Aber das ist jetzt genug OffTopic hier.
Moin zusammen
Kurze Frage: Warum kann ich "deletereading" nicht aus einem Modul heraus ausfuehren?
Der Befehl
### Delete all existing readings
my $SearchWord = ".*";
my $name = "myDevice";
fhem( "deletereading $name $SearchWord" );
fuehrt zu nix. :o
mit
### Delete all existing readings
my $SearchWord = ".*";
my $name = "myDevice";
print (fhem( "deletereading $name $SearchWord" ));
Scheint er gerade mal einen einzigen Reading zu loeschen
Danke fuer Eure Hilfe!
Gruss
Sailor
Zitat von: justme1968 am 04 August 2013, 21:32:49ZitatWunsch:
deletereading <name> bla.*
sollte aus <name> alle readings entfernen, die mit bla beginnen.
das tut es doch...
gruss
andre
Ich stand eben vor dem Problem, je 500+ alte readings namens LetzteAktualisierung.* eines Dutzends ähnlichlautender Geräte namens Draussen.* zu entfernen. Händisch und einzeln hätte ich da bei laufendem FHEM wohl Zeit in der Größenordnung einiger Jahre und einige filesysteme/Datenträger gebraucht. Dankenswerterweise gelang es auch mittels
deletereading Draussen.* LetzteAktualisierung.*
binnen weniger Sekunden.
Dank sei MAL WIEDER den Forumsmitgliedern für diese (und andere) Diskussionen abgestattet.