FHEM Forum

FHEM => Automatisierung => Thema gestartet von: vbs am 20 Mai 2017, 12:01:03

Titel: [98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 20 Mai 2017, 12:01:03
Hier ein Modul, das Events von FHEM an Tasker weiterleitet. Dafür wird das Plugin AutoRemote in Tasker benötigt. Auf die Events kann dann in Tasker reagiert werden, um beliebige Aktionen auszulösen.

Das Modul wird in FHEM einmalig als Gateway-Device angelegt und es können dann Events an beliebig viele Tasker-Geräte weitergeleitet werden. Das Gerät wird so angelegt:
define arGateway AUTOREMOTE http://192.168.2.42:1817/
http://192.168.2.20:1817/,^sz_tabS:.*
http://192.168.2.28:1817/,^sz_z1:.*,sz_z1_pres
APA91bG9_9BcOAN66eLohI_iq9qyz45A61S4YcQzYJVyEPvU8BNiIfTRErbP92Yx5bNIOURmcWCRrsTXT5CG-kSPi0Bn_Gn7WR8vCOwrRHyhNnOi-gRZfKcu-v2wB35E4xauW8Y39uPT,sz_tabS


Das Format pro Zeile ist:

<ziel>[,<filter>[,<presenceDevice>]]


Wenn ein Ziel-Gerät mit "http://" anfängt, dann werden die Events direkt per HTTP an das entsprechende Gerät gesendet. Ansonsten werden die Nachrichten über den AutoRemote-Relay-Server gesendet. Das nutzt dann Google Cloud Messaging (GCM).

Im Ausgangszustand werden erstmal alle Events von FHEM an alle Targets geschickt. Es kann jedoch auch für jedes Target durch ein Komma getrennt eine Regular Expression angegeben werden, gegen die die Events für das jeweilige Target gefiltert werden (wie bei einem notify).
Außerdem gibt es das Attribut "stateFilter", bei dem ebenfalls ein Filter angegeben werden kann. Der stateFilter greift für alle Targets, für die kein eigener Filter definiert wurde.

Getrennt durch ein weiteres Komma kann der Name eines Presence-Device angegeben werden. Wenn vorhanden, dann wird vor Absenden einer Nachricht geprüft, ob besagtest Devices "present" ist und nur dann gesendet (danke für die Idee @Schlimbo).

Hier gibts auch eine Variante für TNES anstatt für AutoRemote:
https://forum.fhem.de/index.php/topic,54243.0.html (https://forum.fhem.de/index.php/topic,54243.0.html)



Ein Beispiel (Work in progress!)
Man möchte beispielsweise die Helligkeit des Displays eines Android-Tablets über FHEM steuern können.

Anlegen eines Dummies für das Tablet:
define myTablet dummy
attr myTablet event-on-change-reading brightness
attr myTablet readingList brightness
attr myTablet setList brightness


Anlegen des AutoRemote-Gateways, um die entsprechenden Events an das Android-Gerät weiterzuleiten (das gleiche Gateway kann später auch Events an andere Android-Geräte weiterleiten):
define autoRemote AUTOREMOTE http://192.168.2.42:1817/,myTablet

Wenn man nun beispielsweise in FHEM den Befehl "set myTablet brightness 200" eingibt, dann sollte das Event im Event-Monitor zu sehen sein und auch an das Tablet weitergeleitet werden.

Jetzt auf dem Android-Gerät in Tasker ein Event-Profil anlegen und AutoRemote auswählen. Dann folgenden Text als "Message Filter" eintragen und "Use Regex" aktivieren:
brightness\s(.*)=:=myTablet

Es können nun beliebige Aktionen ausgelöst werden (z.B. "Display Brightness"). Der Wert für "brightness" aus dem AutoRemote-Regex ist als Variable "%arpar2" verfügbar.


Update 28.07.2017 - II
-nochmals Fehler in sendRaw behoben, sorry (Danke @Schlimbo)

Update 28.07.2017
-Fehler in sendRaw behoben (Danke @Schlimbo)

Update 27.07.2017
-Filter per PresenceDevice hinzugefügt

Update 26.05.2017
-Senden von beliebigen Strings per "send_raw" (immer an alle Devices)
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: pjakobs am 20 Mai 2017, 13:55:43
Cool, das muss ich mir ansehen. So viele Möglichkeiten, so wenig Zeit.

pj

Kurz da auf dem Telefon getippt

Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 20 Mai 2017, 16:32:35
Hallo vbs,

Danke für das Modul, habe es gerade mal ausprobiert. Der Eventfilter will nicht so ganz.
Mein Define sieht so aus:
define arGateway AUTOREMOTE http://192.168.2.20:1817/,Multimedia:.*
Jedoch kommen trotzdem noch alle anderen Events durch.
Erst das setzten von stateFilter schaffte hier Abhilfe.

Habe mir gerade auch mal TNES angesehen und muss sagen das gefällt mir sogar noch besser als AutoRemote. (Kostenlos, wenig Berechtigungen) Werde denke ich erst mal damit weiter experimentieren. :)

Gruß Schlimbo

PS: In deinem Beispiel Define fehlt noch der Modul Namen und das Attribut "globalStateFilter" gibt es nicht, dafür aber "stateFilter".
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 20 Mai 2017, 18:27:59
Danke für die Hinweise, hab es im Text korrigiert!

Hatte vorhin in den Code geguckt, um nochmal zu verstehen, wie das Modul funktioniert und da noch eine Sache gefunden, die ich für einen Fehler gehalten habe und direkt geändert habe. War natürlich Quatsch und vermutlich der Grund, warum bei dir der Filter nicht geht.  8)
Habe oben die Version nochmal geupdatet. Bitte damit nochmal testen, sollte eigentlich dann gehen.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 20 Mai 2017, 21:56:05
Danke, mit der Version geht's jetzt.
Aber mein obiger Filter lässt auch Events vom Device "PCA301_Multimedia" durch.
Könntest du dir das Regex hierfür noch mal ansehen?
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 20 Mai 2017, 22:08:07
Da musst du wahrscheinlich ein "^" an den Anfang setzen. Dann matcht es nur, wenn es am Anfang vorkommt:
^Multimedia:.*

Werde ich im ersten Post mal in die Beispiele einbauen... ich meine früher hat das FHEM-notify das "^" am Anfang implizit ergänzt und dann irgendwann nicht mehr, so dass ich dachte, dass es dann analog zu notify wäre... kann mich aber auch irren...
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 20 Mai 2017, 22:39:04
Das wäre mir neu, dass notify ein "^" am Anfang benötigt, hab es gerade auch noch mal getestet ein notify mit
define test.ntfy notify Multimedia:.*
lässt "PCA301_Multimedia" nicht durch.

Aber egal, mit "^" funktioniert es jetzt, soll mir auch recht sein, Danke
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 22 Mai 2017, 22:15:20
Hallo vbs,
mit dem send Befehle
set arGateway send <device> <reading>
Können ja Readings Werte gesendet werden.
Würde aber auch gerne die Möglichkeit haben beliebigen Text zu senden?
Könntest du hier noch was machen?
z.B. einen msg Befahl:
set arGateway msg <message>
Dann könnte man das Modul nicht nur als "gateway" verwenden, sondern universell nutzen und beliebige Texte senden.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 23 Mai 2017, 08:06:50
Werde mal versuchen, mich die Tage dran zu setzen. Müsste man leider ein paar Kleinigkeiten für umbauen.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 26 Mai 2017, 21:24:54
Habe im ersten Post eine Version mit "send_raw" angehängt.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 26 Mai 2017, 23:42:17
Vielen dank für die Anpassung :)
Noch einen Wunsch:
Wenn das Empfangsgerät nicht erreichbar ist versucht das Gateway ja trotzdem die Events weiter zu leiten, fände es deshalb praktisch, wenn man das Gateway mit einen PRESENCE-Gerät koppeln könnte und dann nur im falle von "present" gesendet wird.
Was hältst du davon und könntest du da noch was machen?
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 27 Mai 2017, 00:07:04
Finde ich recht speziell und würde ich daher nicht so gern ins Modul einbauen wollen. Kannst du aber einfach mit 2-3 Zeilen Perl-Code auf deiner Seite lösen.

EDIT:
Hab es bei mir übrigens ohne sowas laufen. Wenn das Gerät nicht online ist, dann kommt es einfach nicht an.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 27 Mai 2017, 09:27:45
Okay, das verstehe ich natürlich.
Hab es jetzt bei mir Lokal eingebaut.

Falls es jemanden interessiert hier meine Anpassungen an 98_AUTOREMOTE.pm:
--- 98_AUTOREMOTE.pm.orginal 2017-07-20 12:19:13.105394359 +0200
+++ 98_AUTOREMOTE.pm 2017-07-20 12:22:34.254961818 +0200
@@ -11,7 +11,7 @@
   $hash->{DefFn}     = "AUTOREMOTE_Define";
   $hash->{NotifyFn}  = "AUTOREMOTE_Notify";
   $hash->{SetFn}     = "AUTOREMOTE_Set";
-  $hash->{AttrList}  = "queryTimeout stateFilter $main::readingFnAttributes ttl queryTimeout";
+  $hash->{AttrList}  = "queryTimeout stateFilter $main::readingFnAttributes ttl queryTimeout presenceDevice";
}

sub AUTOREMOTE_Define($$)
@@ -35,7 +35,12 @@
     my $ttl = AttrVal($name, "ttl", 60);
     my $sender = "FHEM";
     my $header = "agent: TeleHeater/2.2.3\r\nUser-Agent: TeleHeater/2.2.3\r\nAccept: application/json";
-
+    my $presence = ReadingsVal(AttrVal($name, "presenceDevice", ""), "presence", "present");
+
+  if ($presence ne "present") {
+            Log3 $name, 5, "AUTOREMOTE: presenceDevice $presence ";
+        }
+  else {
     if ($dest =~ m{^http://}) {
         my $data = "{\"message\":\"$message\", \"sender\":\"$sender\", \"ttl\":$ttl, \"communication_base_params\":{\"type\":\"Message\", \"fallback\":false, \"via\":\"Wifi\"},\"version\":\"1.62\"}";
         Log3 $name, 5, "AUTOREMOTE: Sending direct to URL: '$dest' data: '$data'";
@@ -86,6 +91,7 @@
         HttpUtils_NonblockingGet($param);                                                                                   
     }
}
+}

sub AUTOREMOTE_SendEvent($$$$)
{


Hiermit gibt es ein neues Attribut "presenceDevice", ist es gesetzt wird nur gesendet, wenn das Angegebene Device "present" ist.

edit: Das ist natürlich nur dann sinnvoll, wenn nur ein Gerät im define eingetragen ist.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 20 Juli 2017, 12:58:43
Das Modul ist als "Gateway-Device" ausgelegt und sendet erst mal alle Events weiter.
Wer aber das Modul nur zum versenden manueller Nachrichten nutzen möchte kann in der 98_AUTOREMOTE.pm einfach die Zeile 12 auskommentieren:
12 | #  $hash->{NotifyFn}  = "AUTOREMOTE_Notify";
Somit ist es ein "einfaches" msg-Device.
Ich habe für jedes Android Gerät, an das ich Autoremote Nachrichten senden möchte, eine eigenes AUTOREMOTE-Device angelegt.
Zusammen mit dem Patch vom vorhergegangenen Post habe ich jetzt ein msg-Device, dass nur sendet was ich will und nur wenn das Gerät auch erreichbar ist. :)
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 20 Juli 2017, 13:18:44
Sorry, hatte deinen Patch nicht gesehen (ich glaube Edits lösen keine Benachrichtigungen aus). Werde ich mir angucken und gerne ins Modul übernehmen, wenn ich keine Probleme sehe.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: siggi85 am 27 Juli 2017, 12:23:19
Hab das in der Vergangenheit mal manuell über HTTP umgesetzt, schön dass es jetzt ein Modul dafür gibt. Momentan habe ich nicht viel Zeit, aber werde das demnächst sicher mal antesten. Vorab schon mal danke für die Arbeit! :)
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 27 Juli 2017, 12:59:13
@Schlimbo
Hab mir den Patch angesehen und die eigentliche Filterung gefällt mir gut. Die Implementierung geht leider etwas entgegen dem eigentlich Konzept eines zentralen Gateways, da das Attribut presenceDevice nicht pro Gerät gesetzt werden kann (aber das war dir glaub ich auch schon aufgefallen).
Ich hab das grundsätzliche Filtern übernommen, aber etwas anders eingebaut, so dass man das presenceDevice in der Definition pro Gerät mitgeben kann (als weiteren Parameter separiert durch Komma). Also danke dir für Idee & erste Umsetzung!

Neue Version damit im ersten Post.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 27 Juli 2017, 17:56:29
Hallo vbs,
freut mich wenn ich helfen könnte. Vielen dank für die Anpassung und Integration des presenceDevice.
Ein kleiner Fehler hat sich noch eingeschlichen:
Send RAW funktionierte erst nach Anpassung der Zeile 145
von
return !AUTOREMOTE_IsPresent($hash, @toks);
auf
next if !AUTOREMOTE_IsPresent($hash, @toks);
Gruß Schlimbo
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 28 Juli 2017, 16:44:02
Danke für den Hinweis! Hab ich übernommen und im ersten Post geupdatet.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 29 Juli 2017, 00:18:45
Sorry, ich war schlampig... nochmal einen Bug in send_raw behoben und nochmals Danke an Schlimbo...
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 23 August 2017, 22:48:14
Zitat von: ToM_ToM am 23 August 2017, 22:25:44
Hey vbs,

irgendwie verstehe ich das noch nicht. Wie kann ich denn Befehle an das Tablet senden?

Definition in FHEM:
defmod AutoRemoteGateway AUTOREMOTE https://goo.gl/L6E4M5BS:1817

Mein Tablet habe ich in der App "AsusTab" genannt.
Sobald ich nun aber den Befehl:

set AutoRemoteGateway send AususTab activateCamera

ausführen möchte, kommt die Meldung:

Device 'AususTab' has no reading 'activateCamera'!

VG, Thomas
Mit dem send-Befehl kannst du beliebige Readings versenden.

Eigentlich ist das Modul ist als Event-Gateway gedacht, also es leitet (konfigurierbar) Events an Tasker weiter. Ein Weg der Nutzung ist zB. dass du dir für dein Tablet ein Dummy in FHEM anlegst. Dann leitest du alle Events dieses Dummies an Tasker weiter (siehe ersten Post). Wenn du Aktionen auslösen willst, dann machst du das einfach auf dem Dummy, also zb "set myTablet on" oder "set myTablet brightness 150".
Dann kannst du in Tasker auf dem Tablet auf diese Events reagieren und entsprechende Aktionen auslösen (bzw. Profile aktivieren).
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: CoolTux am 23 August 2017, 22:53:50
Klingt interessant, zumal man das Plugin auch in Automagic nutzen könnte. Gerade wegen dem Google Cloud Messaging (GCM). Umgekehrt geht es aber nicht, oder? So das man von unterwegs über Google Cloud Messaging (GCM) auf FHEM schalten könnte.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: cramu am 23 August 2017, 23:00:40
Leider nicht, hier musst Du den Umweg über ein Android-Gerät im Heimnetz nehmen.
Aber schön, dass es inzwischen überhaupt ein Modul für AutoRemote gibt, musste mir da bisher mit HTTP-GET behelfen.
Vielen Dank an den Entwickler!

Gesendet von meinem Nexus 5 mit Tapatalk

Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 23 August 2017, 23:01:51
Das ist ja praktisch dann, wusste nicht, dass es AutoRemote auch für AutoMagic gibt. Ich glaube umgekehrt geht mit GCM nicht. Ich denke, dass das Ziel für die GCM-Nachrichten immer ein Android-Endgerät sein muss.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: cramu am 23 August 2017, 23:16:11


Zitat von: vbs am 23 August 2017, 23:01:51Ich denke, dass das Ziel für die GCM-Nachrichten immer ein Android-Endgerät sein muss.
Nicht zwangsläufig, per Chrome werden auch andere Plattformen unterstützt, hierfür gibt es ein Addon des Entwicklers.
Aber das nützt uns nix . .


Gesendet von meinem Nexus 5 mit Tapatalk

Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: CoolTux am 24 August 2017, 05:06:34
Zitat von: vbs am 23 August 2017, 23:01:51
Das ist ja praktisch dann, wusste nicht, dass es AutoRemote auch für AutoMagic gibt. Ich glaube umgekehrt geht mit GCM nicht. Ich denke, dass das Ziel für die GCM-Nachrichten immer ein Android-Endgerät sein muss.

Naja nicht direkt für. Automagic kann eigentlich alle Plugins verwenden sie unter Tasker auch gehen.


Grüße
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: ToM_ToM am 24 August 2017, 07:43:10
Hallo vbs, könntest du vielleicht mal bitte in komplettes Beispiel posten?
Irgendwie verstehe ich die Verbindung noch nicht ganz.

defmod AutoRemoteGateway AUTOREMOTE https://goo.gl/L6E4M5BS:1817,.*,AsusTab

defmod AsusTabDummyForAutoRemote dummy
attr AsusTabDummyForAutoRemote DbLogExclude .*
attr AsusTabDummyForAutoRemote event-on-update-reading .*
attr AsusTabDummyForAutoRemote readingList camera
attr AsusTabDummyForAutoRemote setList camera:activate,deactivate


Wenn ich jetzt

set AsusTabDummyForAutoRemote camera activate

ausführe, passiert erst mal nichts.

PS: Ich verwende aktuell die AutoRemote Lite.

VG, Thomas
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: CoolTux am 24 August 2017, 07:51:05
Hallo Thomas, Du hast aber in Tasker schon noch etwas eingerichtet was Deinen FHEM Befehl dann auch umsetzt?
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: ToM_ToM am 24 August 2017, 07:57:18
Hallo CoolTux,

ja in Tasker habe ich ein Profil definiert welches als Plugin Event AutoRemoteLite verwendet und als Filtertext hatte ich jetzt nur "activate" eingegeben.
Keine Ahnung ob das korrekt ist. Ich sehe aber auch in FHEM EventMonitor und auch im AutoRemote EventMonitor keine Events.

VG, Thomas
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 24 August 2017, 09:28:56
Das erste Problem scheint zu sein, dass du keine Events im FHEM-EventMonitor siehst. Das muss auf jeden Fall erstmal klappen.

Ich hab mal im ersten Post versucht, ein Beispiel zusammen zu schreiben. Ist etwas mit der heißen Nadel gestrickt, ich kann also nicht garantieren, dass das 100% 1:1 so zu funktioniert. Aber ich denke, man kann mindestens das Vorgehen nachvollziehen.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: ToM_ToM am 24 August 2017, 09:46:46
Hey vbs,

das ist ein gutes Beispiel. Ich werde das heute Abend direkt mal ausprobieren.

Vielen Dank dafür.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: ToM_ToM am 24 August 2017, 18:23:28
Hallo vbs,

habe das jetzt getestet, aber bei mir will das nicht.

Sobald ich in meinem Dummy ein Event auslöse, bekommt mein RemoteGateway ein Event welches Ok zurück gibt, was ja schon mal gut ist.
Dem Tablet interessiert das aber nicht. Weder Tasker reagiert, noch zeig der Eventlog von der Autoremote irgendetwas an.

Ich denke, mein Fazit wird sein, mir nun doch mal Automagic und AMAD anzusehen.

Trotzdem vielen Dank!

VG, Thomas
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: Schlimbo am 24 August 2017, 19:01:02
Wenn du Nachricht direkt übers LAN auf dem Androiden empfangen willst musst du sicherstellen, dass dort auch der AutoRemote Wifi service läuft.
Der muss nämlich erst über einen Task gestartet werden.
Plugin --> AutoRemote --> Wifi
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: AlexBV am 05 Oktober 2019, 22:53:46
Hallo zusammen,

kann Mal jemand bestätigen, dass das Modul noch funktionsfähig ist? Über die URL aus der AutoRemote App kann ich einwandfrei Nachrichten an mein Handy senden. Über FHEM geht gar nichts. Die Definition ist wie folgt:


defmod arGateway AUTOREMOTE tu4VAuz5r5JPnlo,.*temp.*


Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 05 Oktober 2019, 23:07:57
Ja, Modul ist bei mir weiterhin im Einsatz. Ich würde mal ins (verbose-)Log gucken.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: AlexBV am 06 Oktober 2019, 08:28:20
Einfacher aber guter Hinweis. Ich hatte schlichtweg den falschen Schlüssel  ::)

Sehr schönes Modul. Jetzt weiß ich unterwegs, was Zuhause los ist  ;D
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: AlexBV am 06 Oktober 2019, 19:15:42
Hi,

ich habe festgestellt, dass der stateFilter anders funktioniert, als der Filter-Parameter in der Definition. Mein Filter lautet:

(Esp32.*temp|Helligkeit|Sunset).*

In der Definition funktioniert er einwandfrei, aber als stateFilter nur sporadisch. Insbesondere das Esp32.*temp macht hier Probleme. Könnte hier noch ein Bug sein oder ist es grundsätzlich beabsichtigt, dass der Filter-Parameter und stateFilter unterschiedlich funktionieren?
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 06 Oktober 2019, 19:54:05
Klar, ein Bug ist nicht ausgeschlossen. Aber eigentlich münden beide Varianten im gleichen Code und *sollten* sich daher auch identisch verhalten. Ich kann da nur wieder aufs Log verweisen (ins Log zu gucken ist immer eine gute Idee). Dort kannst du sehen, welcher Filter mit welchem Ergebnis verwendet wurde.
Wenn ich was dazu soll, dann bitte auch hier posten mit einem List des Devices.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: AlexBV am 07 Oktober 2019, 09:23:40
Hi,

ich habe mir jetzt das Log mit Verbose 5 näher angesehen. In deinem Modul und dem Regex sieht alles gut aus. Ich vermute eher ein Performanceproblem. Die notify Loop scheint manchmal unterbrochen zu werden, wenn mehrere MQTT Messages gleichzeitig eintreffen. Das ist bei mir beim Filter "Esp32.*temp.*" der Fall. Nach der Temperatur kommt noch Luftdruck und die rel. Luftfeuchtigkeit. Die auf die Temperatur folgende Nachricht unterbricht manchmal die Notify Loop der Temperatur-Message, so dass alte Events nicht weiter verarbeitet werden, was wiederum erklärt, warum manche Temperatur-Events bei mir nicht übermittelt werden.

Leider habe ich aktuell keine Lösung des Problems.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 07 Oktober 2019, 10:22:24
Eigentlich sollte da in FHEM nichts verloren gehen. Da FHEM intern single-threaded ist, verbleiben unverarbeitete Daten einfach in den IO-Buffern, bis sie verarbeitet werden. Ich würde erstmal gucken, ob wirklich alle MQTT-Daten auch zu FHEM-Events werden per Event-Monitor, aber das hast du ja wahrscheinlich schon gemacht? Wenn da Daten fehlen, dann ist da irgendwo ein Bug mMn. Sowas darf nicht passieren.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: AlexBV am 07 Oktober 2019, 17:21:40
Hi,

ziemlich sicher ist es kein Thema deines Moduls. Ich habe festgestellt, dass auch ein ganz normales Notify bei meinen Esp32-Events (MQTT-Messages) nicht auslöst, obwohl sie im Event Monitor angezeigt werden. Das ist mir bisher nicht aufgefallen, da keine solchen Notifys angelegt waren.

Nachdem ich Megabytes an Logs durchgesucht habe, ist meine Geduld auch am Ende. Ich versuche mir einen Workaraund mit doif o.ä. zu basteln.
Titel: Antw:[98_AUTOREMOTE] - Modul für Tasker AutoRemote (Android)
Beitrag von: vbs am 07 Oktober 2019, 17:32:40
Zitat von: AlexBV am 07 Oktober 2019, 17:21:40
Ich habe festgestellt, dass auch ein ganz normales Notify bei meinen Esp32-Events (MQTT-Messages) nicht auslöst, obwohl sie im Event Monitor angezeigt werden. Das ist mir bisher nicht aufgefallen, da keine solchen Notifys angelegt waren.
Also Events, die im Event-Monitor auftauchen aber trotzdem das notify nicht triggern, halte ich eigentlich für eher unwahrscheinlich. Ist das evtl. doch irgendwas blödes drum herum? Passiert ja immer mal...
Ansonsten, wenn das wirklich so sein sollte, dann ist das mMn ein Bug ziemlich tief drin in FHEM. Ist natürlich nie auszuschließen. Aber da notify so verbreitet ist, einfach unwahrscheinlich.

Aber das müsstest du doch recht einfach mit einem Test-notify, welches eine Logzeile erzeugt (bzw. im Fehlerfall dann eben auch nicht) belegen können. Also man sieht das Event im Event-Monitor, man sieht die Definition deines notify-Devices und man sieht im Log, dass es nicht getriggert hat? Mit dem Befehl "trigger" kannst du ja auch testweise beliebige Events erzeugen.