{ system } Mailskript ausführen auf RPi

Begonnen von egmontr, 02 März 2014, 18:31:22

Vorheriges Thema - Nächstes Thema

egmontr

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)&');;}

LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

egmontr

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&');;}
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

egmontr

#2
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.
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

fiedel

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. Besonders fürs RPi. In den Mailaufruf kannst du dann natürlich nach Herzenslust Variablen eintragen.

Gruß

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

betateilchen

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

egmontr

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
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ