Neuer FHEM Befehl "msg" für Benachrichtigungen (Push,Mail,Audio,Light,Screen)

Begonnen von Loredo, 13 August 2015, 19:31:07

Vorheriges Thema - Nächstes Thema

Loredo

Zeilenumbrüche hatte ich aus irgend einem Grund bei Nachrichten!=Mail rausgefiltert, weiß aber grad selbst nicht mehr warum...
Ich nehms mal wieder mit rein.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

l2r

hi,

bei mir läuft das irgendwie noch nicht.

Person_Anwesend:present.* {
my $AnwesendePersonen = "";

if(Value("iPhone6") eq "present") {$AnwesendePersonen = "-Michael-"};

if if(Value("iPhone6") eq "present") {
fhem("msg push -1 |ANWESENHEIT|Personen Anwesend!({$AnwesendePersonen})");}
}


sprich ich möchte gerne den Wert von $AnwesendePersonen auf in der Push-Meldung haben... klappt aber nicht.
Wissen ist Macht.
Ich weiß nix.
Macht nix.

l2r

sry... tut doch:

Person_Anwesend:present.* {
my $AnwesendePersonen = "";

if(Value("iPhone6") eq "present") {$AnwesendePersonen = "-Michael-"};

if(Value("iPhone6") eq "present") {
fhem("msg push -1 |ANWESENHEIT| Personen Anwesend!$AnwesendePersonen");}
}
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Loredo

Ich habe gerade eine neue Version hochgeladen, welche die Follow-Me Funktion enthält.
Sie wird im ersten Post erklärt.


Damit ist eine dynamische Adressierung der Wiedergabe von Audio, Light und Screen Nachrichten abhängig vom Aufenthaltsort möglich (die anderen Typen werden auch dynamisch adressiert, wenn ein Contact-Attribut hinterlegt ist; aber es macht bei Textnachrichten wohl weniger Sinn  ;) ).
Also z.B. kann die Sprachnachricht immer in dem Raum abgespielt werden, in dem ich mich gerade befinde.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

l2r

hi,

nach dem Update bekommen ich folgende Fehlermeldung:

Scalar found where operator expected at ./FHEM/99_msg.pm line 388, near "$useLocation"
(Missing semicolon on previous line?)


nach setzen des Semikolons scheint es zu laufen
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Verbesserte Version hochgeladen:


- verbessertes Routing
- verbessertes Logging
- verbesserte Readings
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Aktualisierte Version im 1. Post:


- verbessertes Logging
- verbesserte Readings
- Anwesenheitsstatus wird besser berücksichtigt
- forciertes verschicken mit "!" vor Empfänger oder Typ (ignoriert Abwesenheit oder SwitcherDev Status)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Aktualisierte Version:


Support für Or-Definition bei Typen
Mehrere Typen, die gleichzeitig angesprochen werden sollen, werden bisher mit einem Komma getrennt.
Zusätzlich kann man nun weitere Typen mit einer Pipe (|) trennen, um einen alternativen Typ anzugeben, sofern über den ersten Typ die Nachricht nicht erfolgreich verschickt werden konnte. z.B.



msg audio|text @Device Wenn diese Nachricht nicht vorgelesen werden kann, dann wird sie eben per Text zugestellt.



Das lässt sich natürlich auch wieder mit der Und-Definition kombinieren:


msg audio,screen|text @Device Wenn diese Nachricht weder vorgelesen noch auf dem Bildschirm gezeigt werden kann, dann wird sie eben per Text zugestellt.




Support für Or-Definition bei Empfängern

Mehrere Empfänger, die gleichzeitig angesprochen werden sollen, werden bisher mit einem Komma getrennt.
Zusätzlich kann man nun weitere Empfänger mit einer Pipe (|) trennen, um alternative Empfänger anzugeben, sofern die Nachricht an den/die ersten Empfänger nicht zugestellt werden konnte:



msg audio @Device1|@Device2 Wenn Device1 diese Nachricht nicht abspielen kann, dann wird sie eben auf Device2 abgespielt.



Das lässt sich natürlich auch wieder mit der Und-Definition kombinieren:



msg audio @Device1,@Device2|@Device3 Wenn Device1 und Device2 diese Nachricht nicht abspielen kann, dann wird sie eben auf Device3 abgespielt.



Sofern bei der ersten Gruppe niemand erreicht wurde, wird dort auch nicht zu anderen Typen eskaliert. Dies passiert nur, wenn die Nachricht über den definierten Haupttyp erfolgreich zugestellt werden konnte oder es sich aber um den allerletzten Empfänger in der Gesamtliste handelt. Letzteres stellt sicher, dass alles unternommen wurde, um die Nachricht irgendwie zuzustellen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo


Ich denke wir nähern uns einer Version 1.0, die Liste der Todos wird kürzer  ;)

Aktualisierte Version ab sofort im Contrib-Ordner per SVN:


- diverse Bugfixes
- or-Unterstützung für msgContact* Attribute
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Aktualisierte Version ins SVN eingecheckt:


- Steuerung diverser Thresholds über Attribute
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

#26
Aktualisierte Version ins SVN eingecheckt:


1. Erweiterte Parameter Kontrolle: es können jetzt an alle Module auch individuelle Parameter übergeben werden. Dazu am Ende der Nachricht ein JSON der folgenden Form anhängen:

O[{"VARNAME":"value"}]


Der Variablenname unterscheidet sich dabei von Modul zu Modul. In userattr msgCmd* können auch eigene Variablen genutzt werden, also z.B. %VARNAME% um bei dem Beispiel gerade zu bleiben.
In der Schema Datenbank bereits bekannte FHEM Module haben für die Steuerung ihrer Parameter bereits Variablen hinterlegt (siehe nächster Punkt).
Für die Nutzung erweiterter Parameter muss zwingend Perl::JSON installiert sein, ansonsten werden die Parameter ignoriert.

2. Vorbereitung für FHEM Schema Datenbank:
Für jedes FHEM Modul kann über ein Schema die genaue Syntax hinterlegt werden.
Für die bisherigen Module SONOS, HUE, ENIGMA2 und Pushover sind wie gehabt die Definitionen vorhanden. Aktuell ist die Datenbank noch Teil der Datei 99_msg.pm ($cmdSchema), sie wird jedoch zukünftig in eine eigene Datei ausgelagert, um dort besser gepflegt werden zu können und gleichzeitig von anderen FHEM Modulautoren erweitert zu werden und so eine direkte Zusammenarbeit mit dem msg-Befehl zu ermöglichen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

Für die Push-Nachrichten ist ja derzeit anscheinend 'Pushover' aufgenommen worden.
Ist geplant, dein Modul um andere/weitere Push-Dienste zu erweitern?
Ich selbst nutze 'Fhemapppush' in FHEM, welches durch die 'FHEM App' angeboten wird.

Loredo

Es ist vorgesehen, dass jeder Modulautor die Schema-Datenbank für sein Modul erweitern kann (vorzugsweise nach kurzer Rücksprache, damit es auch richtig eingebunden ist). Ich werde noch einige Module selbst hinzufügen, möchte aber nicht alle verfügbaren Module daraufhin durchgehen, ob sie irgendwelche Benachrichtigungsmöglichkeiten haben.


Endnutzer können auch jetzt schon jedes Modul verwenden. Dafür sind die Attribute msgCmd* gedacht. Dort kann man das zu nutzende Befehls-Schema genauso hinterlegen. Auch ist es dafür gedacht, falls man aus irgend einem Grund mit dem Standardschema nicht weiterkommt oder man sich die Angabe von Optionen über O[{"VAR":"VAL"}] sparen möchte.
Dabei sei nochmals erwähnt, dass man das msgCmd Attribut nicht nur global setzen kann, sondern es auch per userattr direkt einem Gateway Device zuweisen kann. Jeden FHEM Device kann man somit dann individuell ein Benachrichtigungs-Schema zuweisen. Ist das Schema einmal definiert, kann man den msg-Befehl überall in gleicher Art und Weise verwenden (eben mit Ausnahme der Optionen, die dann eben nur bei den Modulen berücksichtigt werden können, welche diese Option auch unterstützen bzw. in deren Schema-Definition diese auch verwendet werden).


Die Möglichkeiten sind inzwischen so vielseitig und komplex, dass es mir schon davor graut das alles einmal zu dokumentieren.
Glücklicherweise ist alles eher nach dem Motto "alles kann, nichts muss" definiert. Wer also nichts einstellen möchte, kann auch bereits ganz zu Anfang eine sehr große Bandbreite an Funktionen nutzen. Erst wer dann spezielle Anforderungen hat muss sich genauer mit der Materie befassen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey