commands per email an fhem?

Begonnen von FhemPiUser, 14 Dezember 2015, 21:24:17

Vorheriges Thema - Nächstes Thema

FhemPiUser

gibt es jemanden, der fhem befehle per email umgesetzt hat?

ich will fhem nicht aus dem internet erreichbar machen, würde aber gerne die heizung von unterwegs an- und ausschaltem können. idee wäre, dass ich fhem eine email schicke und fhem die inbox eines email accounts synchronisiert und fhem bei einem vorkonfiguriertem email inhalt und absender bestimmte steuerungsaufgaben übernimmt.

betateilchen

Zitat von: FhemPiUser am 14 Dezember 2015, 21:24:17
gibt es jemanden, der fhem befehle per email umgesetzt hat?

Ja. Mit dem Modul mailcheck und einem entsprechenden notify geht das völlig problemlos.


define n_mailcheck notify mailcheck.*Subject:.* { n_mailcheck $EVENT }

In der 99_myUtils.pm:

sub n_mailcheck ($) {
my ($e) = @_;
my (undef, $v) = split(/:/,$e);
my ($pin,$cmd) = split(/=/,$v);
fhem $cmd if($pin == 1234);
return;
}


Damit kann ich eine email an den benutzten Mailaccount schicken in dessen Betreff z.B. folgendes steht:

1234=set Licht_Wohnzimmer off

und fhem wird das Licht im Wohnzimmer ausschalten, sobald die Mail eingeht.

Die Zahlenfolge 1234 ist eine einfach "PIN-Abfrage" die natürlich mit der entsprechenden Zahlenfolge in der Ausführungsfunktion n_mailcheck() übereinstimmen muss.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

reibuehl

Schau Dir auch das mailcheck Attribut "accept_from" an. Damit kann man die Mails per GPG Signatur schützen. Die PIN Methode ist, speziell wenn man nicht immer eine ende-zu-Ende Verschlüsselung bei der Überragung sicherstellen kann, doch recht unsicher - auch weil eine statische PIN verwendet wird. Mit etwas Perl Code ließe sich der Code aber sicher auch recht einfach auf eine TAN Liste umstricken :)
Reiner.

viegener

Zitat von: FhemPiUser am 14 Dezember 2015, 21:24:17
gibt es jemanden, der fhem befehle per email umgesetzt hat?

ich will fhem nicht aus dem internet erreichbar machen, würde aber gerne die heizung von unterwegs an- und ausschaltem können. idee wäre, dass ich fhem eine email schicke und fhem die inbox eines email accounts synchronisiert und fhem bei einem vorkonfiguriertem email inhalt und absender bestimmte steuerungsaufgaben übernimmt.

Wenn es nicht speziell email sein muss, dann kann man das auch über Instantmessaging erreichen z.B. über Telegram (siehe hier http://forum.fhem.de/index.php/topic,38328.0.html) mit dem telegramBot-Modul. Eigentlich war das sogar genau der Antrieb das Telegram-Modul zu entwickeln, damit man ohne Loch in der Firewall Kommandos an FHEM schicken kann und Ergebnisse/Benachrichtigungen zurückbekommt.
Vorteil: Keine Verzögerungen, Sehr flexibel und einfach bedienbar, Funktioniert ohne zusätzliche Software
Ähnlich geht das auch mit Whatsapp (yowsup-Modul).



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

FhemPiUser

super, vielen Dank, es funktioniert. genial...

hatte in der commandref nach email, aber nicht mail gesucht...

Sommerfeld

Hallo Betateilchen,
ich habe versucht, Deinen Vorschlag bei mir umzusetzen.
Die Mail kommt im System an, aber es wird nichts geschaltet.
Im Log sind auch für das Schalten keine Einträge vorhanden.

Meine Eintragung in 99_myUtils.pm

sub
n_mailcheck ($)
{
my ($e) = @_;
my (undef, $v) = split(/:/,$e);
my ($pin,$cmd) = split(/=/,$v);
fhem $cmd if($pin == 1234);
return;
}

Definition

define n_mailcheck notify mailcheck.*Subject:.* { n_mailcheck $EVENT }

Log Auszug
2015.12.19 09:17:40 4: from: "xxxxxx" <xxxxxxxx@gmx.de>
2015.12.19 09:17:40 4: subject: 1234=set FL_OG_Deckenlicht_Wechselschalter toggle

Warum kann ich das Licht nicht schalten?

betateilchen

Wie heißt denn das Device, das Du mit mailcheck angelegt hast?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sommerfeld

Hallo Betateilchen,


Internals:
   BTN        88
   DEF        05af 88
   IODev      CUL_1
   NAME       FL_OG_Deckenlicht_Wechselschalter
   NR         132
   STATE      toggle
   STILLDONETIME 0
   TYPE       FS20
   XMIT       05af
   Code:
     1          05af 88
   Readings:
     2015-12-19 09:45:49   state           toggle
Attributes:
   IODev      CUL_1
   fp_Obergeschoss 484,469,2,FL_OG_Deckenlicht_Wechselschalter
   icon       light_pendant_light
   model      fs20ws1
   room       Flur_OG
   webCmd     toggle

Sommerfeld

#8
Nachtrag:

Internals:
   CONNECTS   1
   DEF        [***]
   FD         5
   Folder     INBOX
   HAS_GPG    0
   HAS_IDLE   1
   HAS_MIME   0
   Host       secureimap.t-online.de
   INTERVAL   60
   LAST_CONNECT 2015-12-19 09:07:51
   LAST_LOGIN 2015-12-19 09:07:51
   LAST_POLL  2015-12-19 13:19:53
   NAME       FhemMail
   NOTIFYDEV  global
   NR         390
   NTFY_ORDER 50-FhemMail
   STATE      Logged in
   TYPE       mailcheck
   tag        795
   Readings:
     2015-12-19 12:54:14   From            xxxxxxxxxx@gmx.de
     2015-12-19 12:54:14   Subject         1234= set WZ_Deckenlicht_Wechselschalter toggle
   Helper:
     password  [***]
     user       [***]
Attributes:
   interval   60
   room       System
   verbose    5

betateilchen

#9
Wenn Dein device "FhemMail" heißt, musst Du natürlich auch diesen Namen in Deinem notify verwenden.

define n_mailcheck notify FhemMail.*Subject:.* { n_mailcheck $EVENT }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Du solltest Dir für Deinen Mailaccount ein neues Passwort anlegen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sommerfeld

Hallo Betateilchen,

Licht wird nicht geschaltet.
Log Eintrag:

2015.12.19 14:16:51 4: from: "Armin Titze" <xxxxxxx@xxxxx.de>
2015.12.19 14:16:51 4: subject: 1234= set WZ_Deckenlicht_Wechselschalter toggle
2015.12.19 14:16:51 5: Triggering n_mailcheck
2015.12.19 14:16:51 4: n_mailcheck exec { n_mailcheck $EVENT }

betateilchen

Könnte eventuell an dem Leerzeichen nach dem = liegen...

Das notify wird jedenfalls ausgelöst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sommerfeld

Ohne Leerzeichen
Es bleibt weiterhin dunkel

FhemPiUser

...ich frage mich, warum es bei mir kein attr "accept_from" gibt, obwohl es in der commandref steht und ich ein Update all gemacht habe...