Autor Thema: deletereading mit regex  (Gelesen 16679 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17485
  • s/fhem\.cfg/configDB/g
deletereading mit regex
« am: 30 Juli 2013, 10:23:55 »
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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20838
Aw: deletereading mit regex
« Antwort #1 am: 04 August 2013, 21:32:49 »
Zitat
Wunsch:
deletereading <name> bla.*
sollte aus <name> alle readings entfernen, die mit bla beginnen.


das tut es doch...

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17485
  • s/fhem\.cfg/configDB/g
Aw: deletereading mit regex
« Antwort #2 am: 04 August 2013, 22:33:55 »
nö.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20838
Aw: deletereading mit regex
« Antwort #3 am: 04 August 2013, 22:41:17 »
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
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17485
  • s/fhem\.cfg/configDB/g
Aw: deletereading mit regex
« Antwort #4 am: 04 August 2013, 22:47:48 »
solange die Namen der Readings alle gleichlang sind, mag das funktionieren. Hast Du auch mal bla1 bla22 und bla333 getestet?
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20838
Aw: deletereading mit regex
« Antwort #5 am: 05 August 2013, 13:07:53 »
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
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17485
  • s/fhem\.cfg/configDB/g
Aw: deletereading mit regex
« Antwort #6 am: 05 August 2013, 13:20:25 »
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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17485
  • s/fhem\.cfg/configDB/g
Aw: deletereading mit regex
« Antwort #7 am: 05 August 2013, 13:38:10 »
ok, Du hast gewonnen :o)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 814
Antw:deletereading mit regex
« Antwort #8 am: 26 Dezember 2014, 18:01:51 »
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.  ;)

Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 814
Antw:deletereading mit regex
« Antwort #9 am: 26 Dezember 2014, 18:30:44 »
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!?


Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 814
Antw:deletereading mit regex
« Antwort #10 am: 26 Dezember 2014, 18:32:39 »
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.

Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 814
Antw:deletereading mit regex
« Antwort #11 am: 26 Dezember 2014, 19:19:17 »
"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.

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.

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.

Online Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1998
  • und es werden immer mehr...
Antw:deletereading mit regex
« Antwort #12 am: 13 April 2015, 17:13:32 »
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
******************************
Man wird immer besser...

 

decade-submarginal