[erledigt]SMS via FHEM versenden

Begonnen von raimundl, 22 Februar 2015, 17:15:52

Vorheriges Thema - Nächstes Thema

raimundl

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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Mitch

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.
FHEM im Proxmox Container

raimundl

@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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Mitch

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'");
}
FHEM im Proxmox Container

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

raimundl

@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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Mitch

-1 sollte passen.
Kam keine SMS an?
FHEM im Proxmox Container

raimundl

@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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

fiedel

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

raimundl

@fiedel

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

LG
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

Mitch

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.
FHEM im Proxmox Container

locutus

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.

raimundl

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
Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

raimundl

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

Homematic: Licht, Heizung, Alarm, Alexa ... auf einen RaspberryPi3+mit OS "Stretch" und RPI-RF-MOD mit piVCCU3 (HMCCU), ca. 40 HM Komponenten, alexa, MobileAlerts, Hue Ledstripes....

schka17

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

M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000