FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: raimundl am 22 Februar 2015, 17:15:52

Titel: [erledigt]SMS via FHEM versenden
Beitrag von: raimundl am 22 Februar 2015, 17:15:52
Hallo!

Habe einen Modemstick am Raspberry angeschlossen und kann nunmehr mit "gammu" wie folgt SMS absenden:

$ echo "Ich bin eine Test-SMS, versandt vom Raspberry Pi" | sudo gammu-smsd-inject TEXT "+43664xxxxxxx"

leider gelingt mir ein SMS-Versand aus FHEM heraus nicht. Trotz intensiven Studiums entspr. Beiträge und vieler Versuche klappt es nicht! Was habe ich dafür (falsch?) getan:

$ sudo usermod -aG dialout fhem
$ sudo usermod -aG sudo fhem
$ sudo chown fhem:root /usr/bin/gammu-smsd-inject


sowie unzählige Variationen von:

{system (' echo "Ich bin eine Test-SMS, versandt vom Raspberry Pi" | sudo gammu-smsd-inject TEXT "+43664xxxxxxx"')}

insbesonders bei den Anführungszeichen und Hochkommas (" ' `´ - welche sind richtig?) habe ich Probleme.

Wie muss also bitte der funktionierende Linux-Befehl in Fhem aussehen?

Danke und LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: Mitch am 22 Februar 2015, 17:20:30
Ich würde das in einen externen Script auslagern und dann den Script aus hem heraus aufrufen.

Aber warum SMS, es gibt doch kostenlose Tools wie WhatsApp, Pushover und Co.
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 22 Februar 2015, 17:37:29
@Mitch
für einen externen Script ist mein derzeitiger Wissensstand nicht ausreichend!
SMS deswegen, damit ich bei Stromausfall wichtige Meldungen weiter erhalte (natürlich Raspi mit Bufferbatterie).

LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: Mitch am 22 Februar 2015, 17:57:14
Hab mir das gerade im Web angeschaut.
Du kannst folgendes schicken:
gammu-smsd-inject TEXT 123456 -text "All your base are belong to us"

also sollte so etwas funktionieren:
system ("gammu-smsd-inject TEXT 123456 -text 'All your base are belong to us'")

du könntest dann noch den TEXT als Variable übergeben, somit kannst Du verschiedene Texte nehmen.
Hier ein Beispiel welches Daten aus dem Fallmonitor per SMS schicken würde:
Anrufmonitor:event:.ring  {
my $extnumber=(ReadingsVal("Anrufmonitor","external_number",99));
my $extname=(ReadingsVal("Anrufmonitor","external_name",99));
my $caller= "$extname - $extnumber";
my $msg = "$caller -header Anruf von";
    system ("gammu-smsd-inject TEXT 123456 -text '$msg'");
}
Titel: Antw:SMS via FHEM versenden
Beitrag von: schka17 am 22 Februar 2015, 17:59:17
Hi,

ich habe das so gelöst:

aus fhem notify rufe das shell script auf

{system("/scripts/sendsms_gammu \"$message\" 0664xxxxxxxx");}

das shell script sieht so aus:

MSG=$1
NO=$2
echo "$MSG $NO" > /scripts/sendsms_gammu.log
echo "$MSG" | gammu-smsd-inject TEXT $NO


Gruß

Karl
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 22 Februar 2015, 19:32:56
@Mitch:

also sollte so etwas funktionieren:
system ("gammu-smsd-inject TEXT 123456 -text 'All your base are belong to us'")

leider nein, kommt -1 retour.

@schka17: Habe heute schon den Kopf zu voll, kann erst wieder morgen weitertun.

Vorerst vielen Dank und LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: Mitch am 22 Februar 2015, 19:33:59
-1 sollte passen.
Kam keine SMS an?
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 22 Februar 2015, 19:46:30
@Mitch:

Nein SMS kam nicht an.
Ich setze auch als Kontrolle immer wieder SMS von der Linuxkommandozeile ab, alle immer ok.

Vielleicht stimmen die Berechtigungen (siehe mein erster Beitrag) nicht?

Danke und LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: fiedel am 22 Februar 2015, 19:50:01
Hi,

user FHEM sollte zur Gruppe "dialout" gehören. Bei mir klappt es so:

# System- SMS versenden; Benutzung: set Dum_SMS_D Text der in der SMS stehen soll

define Dum_SMS_D dummy
attr Dum_SMS_D group Programm
attr Dum_SMS_D room 5_System

define Func_SMS_N notify Dum_SMS_D { \
\
  my $SMSText = (Value("Dum_SMS_D"));;\
\
    {system("echo $SMSText. | sudo gammu --sendsms TEXT 012345.... &")};;\
    Log 1, "SMS wurde versendet: $SMSText";; \
}


Gruß

Frank
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 22 Februar 2015, 20:40:20
@fiedel

Danke, dein Beispiel habe ich heute bereits in einem anderen Thread gefunden und auch mehrmals (versch. Parameter) versucht - leider nein.

LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: Mitch am 23 Februar 2015, 09:19:42
Braucht die Software root Rechte?
Dann würde ich den User fhem in Sudoers eintragen, dass er dieses Prog ohne Passwort aufrufen darf und fhem in die Gruppe sudo aufnehmen.
Titel: Antw:SMS via FHEM versenden
Beitrag von: locutus am 23 Februar 2015, 09:20:45
Hallo,

ich biete eine alternative Möglichkeit an um SMS zu versenden.

gsm-utils auf dem RPi installieren:
sudo apt-get install libgsmme1c2a gsm-utils

Test-SMS versenden:
gsmsendsms -d /dev/ttyUSB1 +49176xxxxxxxx "SMS Test"

Bsp. für ein FHEM Notify:
define Klingel FS20 1ab2 00
attr Klingel IODev CUL868
attr Klingel model fs20st

define Tuerklingel notify Klingel:.*on.* { system ("/usr/bin/gsmsendsms -d /dev/ttyUSB1 +49176xxxxxxxx 'Es hat an der Haustuer geklingelt!'") }


Das lief schon vor Jahren aufm TuxRadio und nun funktioniert es auch auf dem RPi.
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 23 Februar 2015, 11:37:05
Es funktioniert!!!

Danke vorerst an Alle für ihre Unterstützung.

Da es sowohl ein großes Problem (zumindest für mich) war, erst den Modemstick zum laufen zu bringen und dann SMS direkt aus fhem versenden, werde ich meine Vorgangsweise zusammenfassen und hier posten.

Danke nochmals, der erste Schritt ist getan, die Feinheiten müssen jetzt noch erarbeitet werden!

LG
Titel: Antw:SMS via FHEM versenden
Beitrag von: raimundl am 23 Februar 2015, 13:12:32
SMS vom Raspberry senden

Begründung:
Trotz Stromausfall entsprechende Meldungen erhalten. Natürlich Raspberry mit Bufferbatterie!

Teil 1 - Modemstick installieren:

Neuer günstiger Tarif von HoT (Hofer in Österreich) mit Modemstick.
Manufacturer: MediaTek Inc

Nach Einstecken des Modemsticks in den Raspberry und $ lsusb wird dieser als USB-Speicher erkannt.

Zuerst muss natürlich der Stick von Linux als Modem erkannt werden:

usb-modeswitch und usb-modeswitch-data installieren

Leider jedoch nicht genug, denn die derzeitige ID (0e8d:0002) sollte (0e8d:00a5) lauten:

Eine Datei mit der Bezeichnung 0e8d:0002 erstellen, mit folgenden Inhalt:
 
# MediaTek MT6276M
DefaultVendor= 0x0e8d
DefaultProduct=0x0002
TargetVendor=0x0e8d
TargetProductList="00a1,00a2,00a5"
MessageContent="555342431234567800000000000006f0010300000000000000000000000000"


Diese Datei nach: /etc/usb_modeswitch.d/ kopieren.

Jetzt sollte der Stick als Modem erkannt werden - mit $ ls -la /dev/serial/by-id/ überprüfen.

Teil 2 - Software installieren:

$ sudo apt-get install gammu-smsd

und konfigurieren (/etc/gammu-smsdrc):

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB0 # ev. andere
connection = at
# Debugging
logformat = textall

# SMSD configuration, see gammu-smsdrc(5)
[smsd]
pin = xxxx  #SIM Pin
service = files
#logfile = syslog
logfile = /var/log/gammu-smsd
# Increase for debugging information
debuglevel = 0

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/


Testen: $ sudo /etc/init.d/gammu-smsd restart

echo "Ich bin eine Test-SMS" | sudo gammu-smsd-inject TEXT "+43664xxxxxxx"

Teil 3 - SMS aus fhem versenden:

fhem zu sudo und dialout hinzugefügt

$ sudo usermod -aG dialout fhem
$ sudo usermod -aG sudo fhem

Datei "gammu-smsd-inject" in "sudoers" dazugefügt:

$ sudo visudo

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
ALL     ALL = NOPASSWD: /usr/bin/mplayer
ALL     ALL = NOPASSWD: /usr/bin/espeak
ALL     ALL = NOPASSWD: /usr/bin/mp3wrap
ALL     ALL = NOPASSWD: /usr/bin/gammu-smsd-inject


und dann mit folgender Syntx in fhem eingegeben:

{system (" sudo gammu-smsd-inject TEXT 0664xxxxxxx -text 'TestSMS aus fhem gesendet'")}

gibt -1 retour und hat funktioniert!!! Ob alles korrekt und notwendig war kann ich nicht bestätigen.

Für mich als Newbie (hallo plötzlich Jr. Member) war alles in allem ein sehr grosser Zeitaufwand damit

verbunden - wobei es jedoch nur die Vorarbeit zur richtigen Einbindung in fhem war.

Nun muß ich schauen wie man einen Stromausfall (auch nur eine Phase) am besten erkennt (glaube mit HM

Komponenten) und die notwendigen Meldungen dann entsprechend konfigurieren. Über Scriptfile, notify,

dummy, DOIF etc....... ????? Vorschläge willkommen!

Danke nochmals allen für Ihre Unterstützung und
LG aus Wien

Titel: Antw:[erledigt]SMS via FHEM versenden
Beitrag von: schka17 am 23 Februar 2015, 13:55:38
ich erkenne Stromausfall durch eine Meldung meiner USV's, ohne USV hat es auch keinen Sinn gemacht :)

Scherz beiseite, ich verwende als SMS Interface ein altes Nokia, das funtkioniert seit vielen Jahren, mit den USB Sticks war das nie zuverlässig. Vor FHEM habe ich mal eine Lösung mit einem kleinen Netzteil einem FS20 Teil mit einem Kondensator, das Spannung erkennen konnte (ich weiss nicht mehr wie das hieß). Das Signal habe ich dann ausgewertet.

Mit den USV's und nuts daemon gehts viel eleganter.

Gruß

Karl

Titel: Antw:[erledigt]SMS via FHEM versenden
Beitrag von: Basti am 27 Februar 2015, 20:05:45
Raimundl,

zum SMS senden via gammu sollte FHEM kein Sudo benötigen, muss nicht in der Sudo Gruppe sein und du brauchst den gammu Befehl auch nicht in Sudoers einzutragen. Es sollte reichen, wenn du den FHEM Benutzer zur gammu Gruppe hinzufügst. Danach ist es wichtig, dass FHEM gestoppt und wieder gestartet wird wird, damit die Gruppenzuweisung auch übernommen wird. Vom Terminal solltest du dies mit folgenden Befehlen erreichen:
sudo service fhem stop
sudo service fhem start

Mplayer läuft bei mir auch ohne Sudo oder sudoers Eintrag, wenn ich FHEM zur audio Gruppe hinzufüge (und FHEM stoppe + neustarte).

Ich nutze Debian 7 und je nachdem welches System du nutzt, ist es möglich, dass das Audiosystem etwas anders als bei Debian eingerichtet ist. Gammu sollte aber auch auf anderen Systemen so funktionieren (eventuell variiert der Name der Gammugruppe).

Als Stromausfallüberwachung nutze ich auch eine USV mit NUT. Einfache USVs mit USB gibt's ja auch schon für unter 100 Euro. Ich selber habe eine von Cyberpower.

Falls du Homematic Geräte nutzt, könntest du ohne USV einen weekdaytimer nutzen, der jede Stunde oder auch öfter, einen statusrequest an ein HM Gerät absetzt. Falls das Gerät keinen Strom hat, sollte das innerhalb von einer Minute zu einem 'state:MISSING ACK' führen, den du dann via einem notify in eine Meldung verwandeln kannst.

Sebastian
Titel: Antw:[erledigt]SMS via FHEM versenden
Beitrag von: raimundl am 01 März 2015, 19:57:41
Hallo Basti!

Danke für die umfangreiche Hilfe. Mit Linux Berechtigungssystem stehe ich noch auf Kriegsfuß. Das Start und Stop habe ich bei meinen umfangreichen Probieren nicht gemacht. Werde es jetzt nochmals wie vorgeschlagen versuchen.

Für Stromausfall habe ich nunmehr den DeviceManager installiert, der überprüft ob sich ein Gerät innerhalb eines zu definierenden Zeitraumes meldet, wenn nicht dann SMS. Als Gerät habe ich die HM-ES-PMSw1-PI genommen. Das hat den Vorteil, dass ich nicht nur Stromausfall sonder auch das angesteckte Gerät (Gefrierschrank) überwachen kann.

Danke und LG
Titel: Antw:[erledigt]SMS via FHEM versenden
Beitrag von: Basti am 02 März 2015, 12:53:43
Hallo Raimundl,

das mit service start / stop habe ich auch nur durch probieren rausgefunden. Hoffentlich klappts bei dir auch.

Ich selbst habe 2 HM-LC-SW1-PL2 (Zwischenstecker ohne Leistungsmesser) im Einsatz. Wenn ich mir die Readings in FHEM anschaue, scheinen die Geräte keinen regelmäßigen Kontakt mit FHEM aufzunehmen.
Aus diesem Grund hatte ich mir das mit der aktiven Überwachung mit dem Weekdaytimer überlegt.

Ich hab mir gerad DeviceMonitor nochmal angeschaut. Ist ja interessant, dass es da eine checkstate Funktion gibt. Muss ich bei mir auch mal probieren. Ist sicher flexibler als meine hausgemachte Variante.

Viele Grüße,
Sebastian