70_GSMSMS senden und empfangen von SMS Nachrichten.

Begonnen von Noname, 06 April 2015, 22:14:35

Vorheriges Thema - Nächstes Thema

Noname

Hallo,

ich habe ein Modul zum Senden und Empfangen von SMS Nachrichten
geschrieben. (Betastatus) Das Modul läuft bei mir auf einer Fritzbox 7490
mit USB Serial Adapter und einem TC35 Modem. Das Modul funktioniert auch
mit einem UMTS Stick.
Allerdings gibt es ein Problem wenn fhem auf der Fritzbox läuft. Nach dem
Anstecken wird der UMTS Stick sofort in die Firmware der Fritzbox eingebunden.
Somit kann der UMTS Stick nicht mehr für Fhem verwendet werden.
Deswegen muss vor dem Start von Fhem auf der Box umtsd beendet werden.

killall -TERM umtsd

Ob das Modul auf einem Windows Betriebssystem läuft habe ich
noch nicht getestet. Wegen Einbindung des Comports in Perl, sollte aber funktionieren.

Gruß Noname

GSMSMS
The GSMSMS module send and receive SMS Messages via GSM Modem This Modul is compaptible with SMS At Commands (gsm 07.05): TC35, GT864, Insys GSM, Fastrack, and other GSM Moduls or UMTS Stick.
The module is not integrated into autocreate to generate the appropriate filelogs and weblinks automatically.

Note: this module requires the Device::SerialPort or Win32::SerialPort module if the devices is connected via USB or a serial port.

Define define <name> GSMSMS <serial device>
Defines SMS Modem attached via usb.

define <name> GSMSMS <code> <code> is the code which must be set on the Serial Device.

Example:  define TC35i GSMSMS /dev/ttyUSB1@9600
define TC35i GSMSMS /dev/ttyUSB1@9600 /var/gsm (Fritzbox 7490 UMTS Stick, killall -TERM umtsd before start FHEM)
define TC35i GSMSMS 1 (Windows)
 
Attributes attr <name> GSMSMS_EN 1;
Enable MSGSend

attr <name> GSMSMS_PIN 9999;
Setting the Pin Code

attr <name> GSMSMS_SMSC +491722270333;
Setting the Service Center Address / SMSC Address

define <name> GSMSMS_NR +49172XXXXXXX;
Setting the Mobile Number

define <name> GSMSMS_MSG Hello World;
Setting the Message to send

define <name> GSMSMS_CNTD 15;
Setting Messages per day

Example:  attr TC35i GSMSMS_EN 1
  attr TC35i GSMSMS_PIN 9999
  attr TC35i GSMSMS_SMSC +491722270333
  attr TC35i GSMSMS_NR +49172XXXXXXX
  attr TC35i GSMSMS_MSG Hello World
  attr TC35i GSMSMS_CNTD 15
  attr TC35i room SMS
 
set Parameter define <name> MSGNumber +49172XXXXXXX;
Change the Mobile Number

define <name> MSGTxt Hello World;
Change the Message to send

set <name> MSGSend;
Send SMS Message

set <name> USSDCode;
Send USSD Codes e.g. *101# balance check

Example:  attr TC35i GSMSMS_SMSC +491722270333
  attr TC35i GSMSMS_NR +49172XXXXXXX
  attr TC35i GSMSMS_MSG Hello World
  attr TC35i GSMSMS_CNTD 15
  attr TC35i room SMS
 
get Readings
Example:  From +49172XXXXXXX
  Message Hello how are you.
  Timestamp 15-04-06 12:41:27+08
  USSD Your credit is: 11,76.
  States:
  send trial
  send exceeded
  sent out
  send error
  send timeout
  delete space X
 

klausw

Super Arbeit!
Der erste Test klappte auf Anhieb (Pi mit UMTS Stick)

Es wird immer nur die letzte (teil)SMS angezeigt und der SMS Speicher gelöscht. Ist das Richtig?
Wäre es möglich, alle eingehenden SMS anzuzeigen?  :)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

no_Legend

Ich hab meinen Huawei e160e auch gerade ausgegraben und erfolgreich getestet.

Dazu hab ich bei noch ein ein paar Fragen:

1. Kannst du mir ein Beispiel nennen, wie ich eine Nachricht an ein Gerät schicken, mit abweichender Empfänger Nummer?
Also abweichend zu der in attr festgelegten Nummer?
2. Ist die Baudrate immer anzugeben? Oder ist das nur ein Platzhalte
Ich bin mir nicht sicher welche Baudrate der E160e kann
3. Ich wurde gerne eine Udev regel festlegen. Nur keine Ahnung wie, da der e160e mal wieder keine eindeutige Seriennummer ausgibt.
Dazu kommt noch, dass der stick automatisch zwei Devices anlegt, laut syslog.
Somit würde ein abfragen auf den Vendorname usw auch nichts bringen.
4. Hat jemand Erfahrungen mit usb-modeswitch.

Danke für deine Arbeit und Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Noname

Hi klausw ,
Hi no_Legend,

schön das ihr das Modul mit euren Modems (Umts Sticks)
gleich zum laufen bekommen habt.

Ich habe bei mir die Maximalen SMS pro Tag auf 5 begrenz.
GSMSMS_CNTD 5, die Geschwindigkeit habe ich einfach so
aus den Bauch auf 9600 gestellt, das sollte jedes Modem unterstützen!

Ich verwende ein PI2 mit billig Chinamodem ca. 6,00€
SIM800L siehe Ebay, allerdings musste ich noch eine Diode in reihe
zur Spannungsversorgung schalten. Das Modem Arbeitet im Bereich
von DC 3.7-4.2V. Das kleine Modul darunter gehört nicht zum Modem
es ist eine Echtzeituhr für den PI.

# GSM Modem für SMS Versand
define GSMModem GSMSMS /dev/ttyAMA0@9600
attr GSMModem GSMSMS_CNTD 5
attr GSMModem GSMSMS_EN 1
attr GSMModem GSMSMS_MSG GSMModem Test!
attr GSMModem GSMSMS_NR +49XXXXXXXXXX
attr GSMModem GSMSMS_PIN 9999
attr GSMModem GSMSMS_SMSC +491770610000
attr GSMModem room Alarm


Alle eingehenden SMS(en) werden bei mir in ein log geschrieben:
define FileLog_GSMModem FileLog ./log/GSMModem_%Y.log GSMModem
attr FileLog_GSMModem room Alarm


Ich kann über eine eingehende SMS "Status" von jedem Handy bestimmte zustände und
Messwerte per SMS abfragen. Dabei wird die Rufnummer vom Dynamisch ausgetauscht.
(siehe my $MSGStatus_1)

# Statusabfrage über SMS (Code = Status)
define Status_GSMModem_N notify GSMModem.*Message.*Status {\
my $MSGStatus_1 = ReadingsVal("GSMModem","From","");;\
my $MSGStatus_2 = Value("Alarm_Aktiv").'<br>';;\
$MSGStatus_2 = $MSGStatus_2.myMessageStatus();;\
fhem("set GSMModem MSGTxt $MSGStatus_2");;\
fhem("set GSMModem MSGNumber $MSGStatus_1");;\
fhem("set GSMModem MSGSend")\
}
attr Status_GSMModem_N room Alarm

raimundl

Zitat von: klausw am 02 Januar 2017, 13:30:33
Super Arbeit!
Der erste Test klappte auf Anhieb (Pi mit UMTS Stick)

Pi3?? mit UMTS Stick?

Auf meinen Pi3 wird der UMTS Stick nicht erkannt - trotz usb-modeswitch. Ich glaube wg/Bluetooth und HM-MOD-UART/HMUARTLGW dürfte bei der seriellen Schnittstelle etwas geändert worden sein.

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

klausw

Zitat von: raimundl am 05 Januar 2017, 12:56:04
Pi3?? mit UMTS Stick?

Auf meinen Pi3 wird der UMTS Stick nicht erkannt - trotz usb-modeswitch. Ich glaube wg/Bluetooth und HM-MOD-UART/HMUARTLGW dürfte bei der seriellen Schnittstelle etwas geändert worden sein.

Danke und LG

PI2 mit Hauwai E398

Ich nutze das sakis3g Script (das steuert von sich aus modemswitch an) um eine UMTS Verbindung aufzubauen und zu halten.
Nach usb-modeswitch erscheinen bei mir 3 serielle Schnittstellen vom Hauwai Stick:
pi@sonstwo:~ $ ls -l /dev/serial/by-id/
lrwxrwxrwx 1 root root 13 Dez 30 13:18 usb-HUAWEI_HUAWEI_Mobile-if00-port0 -> ../../ttyUSB3
lrwxrwxrwx 1 root root 13 Dez 30 13:18 usb-HUAWEI_HUAWEI_Mobile-if02-port0 -> ../../ttyUSB4
lrwxrwxrwx 1 root root 13 Dez 30 13:18 usb-HUAWEI_HUAWEI_Mobile-if03-port0 -> ../../ttyUSB5

Die Schnittstelle mit der höchsten Nummer ist bei mir die korrekte für AT Kommandos und damit auch für das SMS senden.


Die serielle Schnittstelle vom Pi habe ich, seit ich im November das aktuelle Raspbian Jessie aufgespielt habe, nicht mehr zum laufen bekommen. Hat aber nix mit USB und den seriellen Schnittstellen die über USB bereit gestellt werden zu tun.


Zitat von: Noname am 05 Januar 2017, 06:40:17
Alle eingehenden SMS(en) werden bei mir in ein log geschrieben:
define FileLog_GSMModem FileLog ./log/GSMModem_%Y.log GSMModem
attr FileLog_GSMModem room Alarm

So hatte ich das inzwischen auch gelöst.  8)
Die Meldung von Congstar über das ausgeschöpfte Datenvolumen ist leider eine MultiSMS (bestehend aus 2 SMS).
Dadurch wird leider nur der zweite Teil im Reading angezeigt.
Da muss ich mir evtl. was basteln.

Bisher habe ich keine SMS verschickt. Wie muss ich vorgehen, wenn die SIM-Karte keine Pin hat?
Kann ich GSMSMS_PIN dann weglassen?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

raimundl

#6
Hallo Super - funktionierte sofort!!!

Habe die Anwendung auf einen RPi2B mit aktueller Jessie-Version aufgespielt. Vorher den Stick (Hofer-Medion) mit "usb-modeswitch" erkennbar gemacht.

pi@RPi2BJessie:~ $ ls -la /dev/serial/by-id/
insgesamt 0
drwxr-xr-x 2 root root 120 Jän  5 14:30 .
drwxr-xr-x 4 root root  80 Jän  5 14:30 ..
lrwxrwxrwx 1 root root  13 Jän  5 14:30 usb-MediaTek_Inc_Product-if02-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root  13 Jän  5 14:30 usb-MediaTek_Inc_Product-if03-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root  13 Jän  5 14:30 usb-MediaTek_Inc_Product-if04-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root  13 Jän  5 14:30 usb-MediaTek_Inc_Product-if05-port0 -> ../../ttyUSB3


Nun nochmals mein Problem:

Mein Produktivsystem RPi3 mit akt. Jessieversion erkennt erst gar nicht den Stick (trotz "usb-modeswitch") und stört außerdem Bluetooth.
Im Zuge der Installation von HM-MOD-UART/HMUARTLGW (HM-MOD-RPI-PCB) habe ich folgende Änderungen vorgenommen:

Die Datei /boot/config.txt um diese Zeilen ergänzt
enable_uart=1
dtoverlay=pi3-miniuart-bt
core_freq=250
In der Datei /boot/cmdline.txt diesen Eintrag gelöscht
console=serial0,115200
Den Dienst serial-getty deaktiviert
systemctl disable serial-getty@ttyAMA0.service

Mein Linuxwissen reicht nicht aus um hier durchzublicken, daher meine Bitte um ev. Hilfestellung.

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

#7
Zitat von: raimundl am 05 Januar 2017, 15:32:32

Nun nochmals mein Problem:

Mein Produktivsystem RPi3 mit akt. Jessieversion erkennt erst gar nicht den Stick (trotz "usb-modeswitch") und stört außerdem Bluetooth.
Im Zuge der Installation von HM-MOD-UART/HMUARTLGW (HM-MOD-RPI-PCB) habe ich folgende Änderungen vorgenommen:

Die Datei /boot/config.txt um diese Zeilen ergänzt
enable_uart=1
dtoverlay=pi3-miniuart-bt
core_freq=250
In der Datei /boot/cmdline.txt diesen Eintrag gelöscht
console=serial0,115200
Den Dienst serial-getty deaktiviert
systemctl disable serial-getty@ttyAMA0.service


Funktioniert nun auch auf Produktivsystem RPi3 mit akt. Jessieversion und HM-MOD-RPI-PCB

Das Problem, dass nach Einstecken der Modemstick als CDRomLW erkannt wird ganz einfach mit
"/usr/bin/eject cdrom" auswerfen und nun ist er ein Modem.  "usb-modeswitch" ist nicht mehr notwendig!

Das Senden von SMS funktionierte dann wieder auf Anhieb!

Für das Empfangen habe ich ein LogFile angelegt. Habe einige SMS an FHEM geschickt, jedoch noch keinen Eintrag im Logfile? Im Fhemlog schien einmal folgende Meldung auf:

2017.01.05 18:29:59 2: GSMSMS GetUpdate Timeout
2017.01.05 18:30:10 2: GSMSMS GetUpdate Timeout
2017.01.05 18:30:20 2: GSMSMS GetUpdate Timeout

und war nicht zu stoppen.

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

Noname

Hi,
ich habe auch ein  RPi3 zum Testen, das mit der Onboard Schnittstelle
war schon ein Gefummel bis die lief. Ich kann aber nicht mehr sagen was
ich alles geändert habe.
UMTS Stick am PI3 habe ich noch nicht probiert.

Es scheint das bei dir entweder keine oder die Falsche Modemantwort zurück kommt.
Hast du schon mal die Simkarte in ein Handy eingelegt und alle SMSen gelöscht.
(2017.01.05 18:30:20 2: GSMSMS GetUpdate Timeout)


raimundl

#9
Zitat von: Noname am 06 Januar 2017, 06:08:27
Es scheint das bei dir entweder keine oder die Falsche Modemantwort zurück kommt.
Hast du schon mal die Simkarte in ein Handy eingelegt und alle SMSen gelöscht.
(2017.01.05 18:30:20 2: GSMSMS GetUpdate Timeout)

Hi,danke,
alle alten SMS auf SIM gelöscht und es funktioniert nun auch der SMS-Empfang!

Zur Info, habe folgende Meldungen in der logDatei:
2017.01.06 07:53:29 1: /dev/ttyUSB0 disconnected, waiting to reappear (SMS)
2017.01.06 07:59:51 3: Setting SMS serial parameters to 9600,8,N,1
2017.01.06 07:59:51 1: /dev/ttyUSB0 reappeared (SMS)
2017.01.06 08:00:02 2: GSMSMS GetUpdate Timeout
2017.01.06 08:00:02 2: GSMSMS Parse AT+CMGF=1

ERROR
AT&F

OK

2017.01.06 08:01:06 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/70_GSMSMS.pm line 292.
2017.01.06 08:01:06 1: PERL WARNING: Use of uninitialized value $values[4] in index at ./FHEM/70_GSMSMS.pm line 294.

und im FileLog (SMS an Fhem um 8:01 gesendet):
2017-01-06_08:00:10 SMS Initialized
2017-01-06_08:01:06 SMS From: 43664xxxxxx
2017-01-06_08:01:06 SMS Timestamp: 202017-01-06 08:01:05+04
Nochmals SMS auf 124

OK

2017-01-06_08:01:07 SMS delete space 1

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

Hi,

noch eine Frage zu "Statusabfrage über SMS (Code = Status)":
Mein FileLog bei eingehender SMS sieht immer so aus:

2017-01-06_09:05:39 SMS From: 43664xxxxxx
2017-01-06_09:05:39 SMS Timestamp: 202017-01-06 09:05:32+04
Status

OK

2017-01-06_09:05:40 SMS delete space 1

Der Wert Message kommt nicht vor - nur Timestamp.

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

Noname

#11
Hi raimundl,

bei mir sieht es so aus:

SMS (über Befehl set) versendet:
2017-01-06_09:47:13 GSMModem MSGNumber 017xxxxxxxx
2017-01-06_09:47:24 GSMModem MSGTxt Test SMS Hallo!
2017-01-06_09:47:28 GSMModem MSGSend
2017-01-06_09:47:36 GSMModem send trial
2017-01-06_09:47:41 GSMModem sent out

SMS Empfangen:
2017-01-06_09:48:58 GSMModem From: +4917xxxxxxxxx
2017-01-06_09:48:58 GSMModem Timestamp: 2017-01-06 09:48:50
2017-01-06_09:48:58 GSMModem Message: Status
2017-01-06_09:48:59 GSMModem delete space 1

Danach wurde sofort der Status versendet:
2017-01-06_09:49:01 GSMModem send trial
2017-01-06_09:49:07 GSMModem sent out

Das steht dann in MSG_TXT bzw. in der SMS
Status keine Meldung aktiv,WZ T: 24.9 H: 36.6 ,SZ T: 15.7 H: 30 ,KE T: 17.9 H: 42.4 ,WS T: -11.4 H: 77 W: 5.2 R: 716.0 IR: no WI: 1 WA: 5.0,EVU 4.1,RE 0

Die Fehlermeldung in deinem Log würde mich interessieren, weist du noch was für SMS(en) alle auf der Sim waren?
vielleicht sollte ich da noch was optimieren.

2017.01.06 08:01:06 1: PERL WARNING: Use of uninitialized value in substr at ./FHEM/70_GSMSMS.pm line 292.
2017.01.06 08:01:06 1: PERL WARNING: Use of uninitialized value $values[4] in index at ./FHEM/70_GSMSMS.pm line 294.

raimundl

#12
Hi Noname,

so sieht es bei mir aus:

SMS (über Befehl set) versendet:
2017-01-06_10:17:54 SMS MSGTxt SMS mit set versendet
2017-01-06_10:18:05 SMS MSGSend
2017-01-06_10:18:10 SMS send trial
2017-01-06_10:18:12 SMS sent out

SMS Empfangen:
2017-01-06_09:23:21 SMS From: 43664xxxxxx
2017-01-06_09:23:21 SMS Timestamp: 202017-01-06 09:23:13+04
Status

OK

2017-01-06_09:23:22 SMS delete space 1

Das bedeutet, dass bei mir das Reading "Message" fehlt, die Nachricht (hier: Status) ist ja vorhanden und ein "OK" zuviel??

Beim Device sieht das Reading so aus:

Timestamp 202017-01-06 09:27:44+04 Status OK 2017-01-06 09:27:49

Die Fehlermeldung im Log kommt immer auch bei restart fhem.
Auf der SIM waren ca. 5 SMSen, fast alle aber von meinen Versuchen jetzt.

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

Noname

Hi raimundl,

ich denke deine Firmware im Modem bzw. Umts Stick
hält sich nicht an die Spezifikation gsm 07.05. Das
Format der empfangenen SMS ist vermutlich anders.

Kannst du bitte folgendes machen.
1. fhem Logfile leeren.
2.  verbose  auf 4 ändern
2. attr global verbose 4
3. SMS an fhem Senden und nach dem Empfang verbose auf den alten wert setzen
dann brauch ich das Log von dir.

Es sollte sich so ein ähnlicher Eintrag finden lassen:

2017.01.06 11:09:26 4: GSMSMS_Read: RAW S

OK
2017.01.06 11:09:26 4: GSMSMS_READ STEP: 8 RAW:
+CMGL: 1,"REC UNREAD","+491xxxxx","Name","17/01/06,11:09:16+04"
Test SMS

OK


raimundl

#14
Hallo Noname!

Danke für deine Bemühungen, anbei das LogFile.
SMS Text: Status

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