[Gelöst] homemode, residents, msg: Pushnachricht kommt nicht an

Begonnen von Stephan1965, 05 April 2018, 22:22:18

Vorheriges Thema - Nächstes Thema

Stephan1965

Hallo,
ich habe angefangen, das Homemode Modul einzusetzen und habe dabei dann noch msg installiert. Residents läuft schon lange. Ich setzte sowohl Pushover (nur für mich) als auch TelegramBot (für alle) ein für push-Nachrichten.

Wenn der letzte Resident das Haus verläßt, soll er/sie darüber informiert werden, wenn noch ein Fenster offen steht. Dazu habe ich dann den Vorschlag aus dem Wiki (Beispiel für "HomeCMDmodeAlarm-armaway") weitgehend übernommen:

{
  if ("%PREVAMODE%" eq "disarm")
  {
    # Nachricht zusammensetzen
    my $msg;
    $msg .= "Die Alarmanlage ist nun scharf geschaltet!" if ("%RESIDENT%" ne "rr_Stephan");
    my $is = "%ALARMHR%" =~ /und/ ? "sind" : "ist";
    $msg .= " " if ($msg);
    $msg .= "ACHTUNG: %ALARMHR% $is noch offen!!!" if (%ALARMCT%);

    # Nachricht an ROOMMATE/GUEST senden
    fhem "msg \@%RESIDENT% $msg" if ($msg);
     }
}


Damit das beim letzten Resident, der das Haus verlässt, ankommt, habe ich folgendes in den ROOMMATES definiert
rr_Stephan
msgContactPush   Pushnachricht,TelegramBot
msgRecipientPush 123456789

rr_Birgit
msgContactPush   TelegramBot
msgRecipientPush 234567891

msgRecipientPush sind jeweils die IDs aus Telegram.

Allerdings kommt die entsprechende Nachricht nicht bei Birgit an (wenn sie als Letzte das Haus verlässt).
Kann mir jemand dabei helfen? Ich komme da leider nicht weiter.

Stephan


sku

Ich habe ein ähnliches Problem denke ich, dachte immer es liegt an mir...

HomeCMDmode-absent
{
  if ($hms le "19:00" && $hms ge "07:00") {
    fhem "set sz_nachtbetrieb_rasp3:FILTER=STATE!=off off";
  }
  fhem "msg homemode absent";
}


HomeCMDmode-home
msg homemode status ist nun home

Bei absent funktionierts, bei home nicht. Auch wenn ich im Perl Format wie in absent schreibe.


Hab jetzt bei der Gelgenheit weiter rumprobiert:
HomeCMDmode-gone: funktioniert
HomeCMDmode-gone-resident: funktioniert, je resident eine nachricht
HomeCMDmode-home-resident: funktioniert, je resident eine nachricht

Und dabei entdeckt:
HomeCMDmodeAlarm-disarm: funktioniert, msg kommt an sobald resident home

Ist das so gewollt? Wozu dient dann HomeCMDmode-home ?

Stephan1965

#2
Hallo,
ich habe jetzt im Forum für msg gelesen und Folgendes gefunden:

Zitat von: Loredo am 08 November 2015, 11:49:59
Zusätzlich muss natürlich bei jedem ROOMMATE (oder GUEST) Device, welche ein kommen und gehen auslösen können, ein msgContactPush Attribut vorhanden sein, damit das msg-Kommando weiß wie es den ROOMMATE Bewohner erreichen kann. Bei mir ist das einfach ein Verweis auf ein Pushover Device, da am schicksten auf der Apple Watch darstellbar. Es kann aber auch ein Telegram Kontakt sein (dann muss das Attribut neben dem Devicenamen für den TelegramBot auch noch mit Doppelpunkt getrennt den Empfängernamen im Telegram Format enthalten; also z.B. "Telegram:@@USERNAME").

Die Definition der Adresse muss also mit der Variablen msgContactPush erfolgen. Mein Telegrambot heißt in FHEM TelegramBot  ;D ,damit ergibt sich dann:
msgContactPush    TelegramBot:@234567891

Das werde ich im heute im Tagesverlauf mal testen.

Bei Pushover ist mir das noch nicht klar. Muss ich für jeden User in FHEM ein eigenes Pushover anlegen (also z. B. Pushover_Stephan, Pushover_Birgit, etc)? Jeweils dann mit dem Userkey und dem API-token?
Bislang habe ich für die anderen User auf deren Handys noch kein Pushover eingerichtet. Vielleicht mache ich ja auch bei mir Pushover (wegen smart watch) und bei den anderen Telegram. Mal sehen...

Viele Grüße

Stephan

Stephan1965

#3
Hallo,
wenn man im Forum weit genug ließt, kann man die Lösungen auf meine Pushover-Fragen auch finden:

Zitat von: Loredo am 05 Dezember 2015, 15:05:16
Übrigens noch ein Tipp für die Pushover User:

Bei mehreren Pushover Empfängern muss man nicht mehr für jeden Empfänger ein einzelnes Pushover-Device anlegen. Es genügt auch ein Gerät, man kann die Empfänger dann einfach als Sub-Empfänger ansprechen:


msg push @PushoverDevice:uQiRzpo4DXghDmr9QzzfQu27cmVRsG Dies ist eine Nachricht


Wie man sieht kann man einfach den User-Identifier (oder natürlich Group-Identifier) anhängen und adressiert somit einen alternativen Empfänger. Der im define des Device "PushoverDevice" angegebene User ist dann nur noch der Default-Empfänger.

Man kann auch an ein spezielles Endgerät adressieren:


msg push @PushoverDevice:uQiRzpo4DXghDmr9QzzfQu27cmVRsG:iPhone Dies ist eine Nachricht, die nur an das iPhone geschickt wird.


Natürlich kann man das auch in ein msgContactPush Attribut schreiben...


attr myDevice msgContactPush PushoverDevice:uQiRzpo4DXghDmr9QzzfQu27cmVRsG


...und anschließend so wie gewohnt über die Device-Adressierung verschicken:


msg push @myDevice Nachrichtentext


Sehr interessante Erläuterung, die mir sehr geholfen hat! Das würde sich gut im Wiki machen.  ::) Edit: Ich habe das in das Wiki eingetragen.

Jetzt versuche ich nur noch folgendes Problem zu lösen:
msg push |Müll| Heute wird [Muelltonnen:now_text] abgeholt
Wie kriege ich es hin, dass der richtige Text aus meinem Abfallkalender für [Muelltonnen:now_text] in die Meldung eingetragen wird?

Gruß

Stephan

sku

Lösung zu meinem Problem:
Zitat von: DeeSPe am 07 Mai 2017, 00:12:30
HomeCMDmode-home funktioniert nur bei "HomeAutoDaytime 0", da bei aktivierten Tageszeiten mode niemals home annimmt. Statt dessen könnte ich HomeCMDpresence-present empfehlen.


Den Text aus dem Abfallkalender bekommt man in etwa so in die Nachricht:

{
  my $muelltonnennowtext = ReadingsVal("Muelltonnen","now_text","");
  fhem "msg push \|Müll\| Heute wird $muelltonnennowtext  abgeholt";
}

(Mit dem Escapen bin ich mir nicht sicher...)

Stephan1965

Hallo sku,
danke für deine Hilfe.

Ich habe es jetzt so umgesetzt:
{
    my $msg;
    $msg = "Morgen wird ";
    $msg .= ReadingsVal("Muelltonnen","now_text","");
    $msg .= " abgeholt!";
    fhem "msg push @[rgr_Residents:lastActivityByDev] |Müll| $msg"
}


Gruß

Stephan

DeeSPe

Da sollte doch auch:
msg push @[rgr_Residents:lastActivityByDev] |Müll| Morgen wird [Muelltonnen:now_text] abgeholt!
reichen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe