Hi,
ich habe folgendes Notify :
define NTFY_SWAP_OneWire notify SWAP.*:0E.1-1wire_Address.* {SWAP_1wire("$NAME", "$EVTPART1")}
Das Prog dazu:
sub SWAP_1wire($$) {
my ($SwapDevice, $OneWireID) = @_;
readingsSingleUpdate($defs{$SwapDevice},"Temperature_$OneWireID" , ((hex(ReadingsVal($SwapDevice, "0E.0-1wire_Temperature", ""))*0.01) - 50), 1);
return undef;
}
Aktuell werden alle Events per DBLog geloggt. Das funktioniert auch, alle Readings landen in der DB. Außer! das Event des per Notify aufgerufenen ReadingsSingleUpdates. Wenn ich aber das Sub manuell aufrufe, wird das Event auch in der DB geloggt
{SWAP_1wire("SWAP_09", "28D6CF710400009C")}
Im DBLog-Modul habe ich mir ein kurzes Log eingebaut. Bei einem manuellen Trigger wird die NotifyFunction des DBLog Moduls aufgerufen. Bei einem Notify getriggertem Event, wird die NotifyFunktion des DBLog Moduls nicht(!) aufgerufen.
Es muss also einen Unterschied geben, ob ein Event per Notify getriggert wird oder nicht.
Was kann ich tun damit meine Notify-function von DBLog getriggert wird?
Sollte inzwischen bekannt sein: man kann keine Events fuer Geraet X generieren in einer Routine, die von einem Event fuer Geraet X geweckt wurde. Workarounds: userReadings, oder sleep/InternalTimer.
Ich habe 2 generische readings, einmal ID und einmal WERT. Diese werden hintereinander aktualisiert um viele wertpaare zu übertragen. Wenn ich ein bestimmtes userreading definiere kann ich zwar auf ein bestimmtes reading fokussieren aber nicht auf einen bestimmten Wert hin, oder? Bin mir noch nicht sicher wie ich das jetzt lösen soll...
Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk
ZitatWenn ich ein bestimmtes userreading definiere kann ich zwar auf ein bestimmtes reading fokussieren aber nicht auf einen bestimmten Wert hin, oder?
Das habe ich selbst nach mehrmaligen lesen nicht verstanden.
Btw. es heisst userReadings, Mehrzahl ist Absicht.