FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: egmontr am 02 März 2014, 18:31:22

Titel: { system } Mailskript ausführen auf RPi
Beitrag von: egmontr am 02 März 2014, 18:31:22
Ich möchte mir bei gewissen Aktionen eine E-Mail zusenden. Zum Testen habe ich folgenden at geschrieben. Leider passiert aber nichts! Von der Konsole kann ich mir aber eine Mail mit dem Aufru des Skripts (sudo /home/pi/smail.sh Text&) zusenden.

define MailTest at +*00:01:00 { system('sudo /home/pi/smail.sh Text&');;}
attr MailTest disable 0
attr MailTest room Haus_All


Im Logfile gibt nur aus:
2014.03.02 18:18:44 3: MailTest: -1
1. Wie kann ich den richtigen Grund dazu sehen?
2. Wenn es mal funktioneiren sollte, wie kann ich einen Parameter dynamisch an das Skript geben. Ich meine sowas wie
{ system('sudo /home/pi/smail.sh Temperatur: ReadingsVal("Thermostat_1","measured-temp",99)&');;}

Titel: Antw:{ system } Mailskript ausführen unter RPi
Beitrag von: egmontr am 02 März 2014, 21:24:57
Den ersten Teil habe ich heraus bekommen. Ich kann mein Skript starten und die Mail wird versendet.

Habe mit Hilfe von visudo für den User fhem die sudo-Rechte vergeben um das Skript ausführen zu dürfen:
Dazu habe ich mit sudo visudo -f /etc/sudoers.d/fhem eine Datei fhem angelegt. Diese wird zur Laufzeit zur sudoers inkludiert.
In der /etc/sudoers.d/fhem habe ich golgende Zeile hinzugefügt:
fhem ALL=(ALL) NOPASSWD:/home/pi/smail.sh
Danach den sudo Dienst neu gestartet.
sudo service sudo restart

Keine Lösung habe ich, wie ich ein ReadingsVal dem Skript als Parameter mitgeben kann. Hat jemand eine Lösung?
Also das Ergebnis von ReadingsVal("Thermostat_1","measured-temp",99) sollte in den PARAMETER.
{ system('sudo /home/pi/smail.sh PARAMETER&');;}
Titel: Antw:{ system } Mailskript ausführen auf RPi
Beitrag von: egmontr am 04 März 2014, 09:39:12
Habes es gelöst, aber schade, dass die Profis hier einem nicht helfen wollen! Wenigstenes einen Hinweis in die richtige Richtung wäre auch schon OK.

Habe einen stündlichen at definiert, welcher eine Funktion aus meiner 99_myUtils.pm aufruft.

fhem.cfg:
#*************************************
# Stündlich eine Mail mit den Thermostat-Werten schicken
#*************************************
define MailTest at +*01:00:00 {mysendmail('irgendwas');;}
attr MailTest disable 0
attr MailTest room Haus_All

99_myUtils.pm:
sub
mysendmail($)
{
  my $temps = shift;
  my $state = fhem('{ReadingsVal("Thermostat_1","state",99)}');
  my $measured = fhem('{ReadingsVal("Thermostat_1","measured-temp",99)}');
  my $humidity = fhem('{ReadingsVal("Thermostat_1","humidity",99)}');

  system("sudo /home/pi/smail.sh 'Thermostat_1: Status $state \n Temperatur $measured \n Luftfeuchtigkeit $humidity \n'&");
}

Nun muss ich das Ganze noch abstrahieren, damit es wiederverwendbar wird.
Titel: Antw:{ system } Mailskript ausführen auf RPi
Beitrag von: fiedel am 07 März 2014, 20:01:52
ZitatHabes es gelöst, aber schade, dass die Profis hier einem nicht helfen wollen!

Hi Egmont,

lass dich nicht entmutigen!  ;) Es gibt im Wiki schon eine Seite mit Lösungen zum Mailen (http://www.fhemwiki.de/wiki/E-Mail_senden). Besonders fürs RPi. In den Mailaufruf kannst du dann natürlich nach Herzenslust Variablen eintragen.

Gruß

Frank
Titel: Antw:{ system } Mailskript ausführen auf RPi
Beitrag von: betateilchen am 07 März 2014, 20:17:53
Zitat von: egmontr am 04 März 2014, 09:39:12schade, dass die Profis hier einem nicht helfen wollen!

Gehts noch?
Titel: Antw:{ system } Mailskript ausführen auf RPi
Beitrag von: egmontr am 08 März 2014, 13:55:25
ZitatEs gibt im Wiki schon eine Seite mit Lösungen zum Mailen
Stimmt, aber ich habe sie nicht gefunden. Es gibt sehr viel Info hier und da und bis man die Richtige findet... Ist nicht einfach..
Aber danke für den Hinweis