Notify getriggerte Events verhalten sich anders als Manuell getriggerte Events..

Begonnen von Tobias, 14 Juni 2015, 13:22:33

Vorheriges Thema - Nächstes Thema

Tobias

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?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

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.

Tobias

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

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

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.