Hi,
ich habe von hier http://www.fhemwiki.de/wiki/DbLog (http://www.fhemwiki.de/wiki/DbLog) die Anweisung
define nDbLogExclude notify global:DEFINED.* attr $EVTPART1 DbLogExclude .*
Jetzt wollte ich das umbauen, dass beim Anlegen von DS18B20-Devices über den OWServer jedes Device automatisch die Attribute resolution 10;stateFormat T: temperature °C; group RaumThermometer und room Heizung zugewiesen bekommt.
Leider scheitere ich bereits an der Definition, während das LogExclude einwandfrei funktioniert, tut define nDS18B20 notify global:DEFINED:DS18B20.* attr $EVTPART1 stateFormat T: temperature °C
einfach nichts, naja, keine Meldungen im Event-Monitor oder im Log, und das Attribut wird auch nicht gesetzt. Ich vermute es liegt an dem Regexp... kann mir jemand auf die Sprünge helfen?
Danke
Stephan
Das Event "DEFINED" gibt nur den Namen des definierten Events im Event-Monitor aus:
Zitat2016-01-24 18:42:29.221 Global global DEFINED Aussensensor
Man kann damit nicht ohne weiteres den Modulnamen ermitteln ohne in Perl-Code abzutauchen. Mithilfe von Perl-Code im notify würde folgendes funktionieren (selbst getestet):
define nDS18B20 notify global:DEFINED.* {if($defs{$EVTPART1}->{TYPE} eq "DS18B20") {fhem("attr $EVTPART1 stateFormat T: temperature °C")}}
Gruß
Markus
Generell würde ich jedoch anregen, eine automatische Setzung dieses Attributs im Modul vorzunehmen, das stateFormat kann dann vom User durchaus nach eigenen Vorstellungen verändert werden. Das wäre die saubere Methode.
Am besten den Urheber des Moduls mal kontaktieren.
Gruß
Markus
Hi Markus,
danke für deine Antwort!
Ich verstehe aber nicht, was du mit Modul meinst ... ich will einfach für alle Geräte, die vom autocreate den Namen geraet_xxxyyyy bekommen, ein Attribut setzen.
Zitat von: Markus Bloch am 24 Januar 2016, 18:47:51
Das Event "DEFINED" gibt nur den Namen des definierten Events im Event-Monitor aus:
Zitat2016-01-24 18:42:29.221 Global global DEFINED Aussensensor
2016-01-24 22:03:14.713 OWServer myOWServer DISCONNECTED
2016-01-24 22:03:14.717 OWServer myOWServer CONNECTED
2016-01-24 22:03:14.723 OWServer myOWServer /settings/timeout/directory: 60
2016-01-24 22:03:14.727 OWServer myOWServer /settings/timeout/ftp: 900
2016-01-24 22:03:14.732 OWServer myOWServer /settings/timeout/ha7: 60
2016-01-24 22:03:14.736 OWServer myOWServer /settings/timeout/network: 1
2016-01-24 22:03:14.741 OWServer myOWServer /settings/timeout/presence: 120
2016-01-24 22:03:14.746 OWServer myOWServer /settings/timeout/serial: 5
2016-01-24 22:03:14.750 OWServer myOWServer /settings/timeout/server: 10
2016-01-24 22:03:14.755 OWServer myOWServer /settings/timeout/stable: 300
2016-01-24 22:03:14.760 OWServer myOWServer /settings/timeout/uncached: 0
2016-01-24 22:03:14.764 OWServer myOWServer /settings/timeout/usb: 5
2016-01-24 22:03:14.769 OWServer myOWServer /settings/timeout/volatile: 15
2016-01-24 22:03:14.773 OWServer myOWServer /settings/timeout/w1: 30
2016-01-24 22:03:14.778 OWServer myOWServer /settings/units/pressure_scale: mbar
2016-01-24 22:03:14.783 OWServer myOWServer /settings/units/temperature_scale: C
2016-01-24 22:03:14.786 OWServer myOWServer Initialized
2016-01-24 22:03:16.371 OWDevice DS18B20_615050070000 temperature: 19.375
2016-01-24 22:03:16.371 OWDevice DS18B20_615050070000 alarm: 1
2016-01-24 22:03:16.641 Global global DEFINED DS18B20_615050070000
2016-01-24 22:03:16.641 Global global ATTR DS18B20_615050070000 DbLogExclude .*
2016-01-24 22:03:16.657 Global global ATTR DS18B20_615050070000 room OWDevice
2016-01-24 22:03:16.670 Global global SAVE
Also müsste ich doch auf DS18B20_* filtern können... oder bin ich da auf dem Holzweg? Das wäre zumindest das, was ich will ...
Grüße
Stephan
Stimmt, ja da hast du recht. Nur dann würde die Regexp folgendermaßen lauten:
define nDS18B20 notify global:DEFINED.DS18B20_.* attr $EVTPART1 stateFormat T: temperature °C
Sorry für die Verwirrung.
Gruß
Markus
Kann man aber auch nachträglich manuell in einem Rutsch machen:
attr DS18B20_.* stateFormat T: temperature °C
Gruß
Markus
ui, super!
Danke !
Genau das wollte ich haben;-)
stephan
Gibt es sowas auch für die Geräte die per autocreate angelegt werden?
Zitat von: Markus Bloch am 24 Januar 2016, 22:12:20
Stimmt, ja da hast du recht. Nur dann würde die Regexp folgendermaßen lauten:
define nDS18B20 notify global:DEFINED.DS18B20_.* attr $EVTPART1 stateFormat T: temperature °C
Sorry für die Verwirrung.
Gruß
Markus