SMS auslesen
cr
- software
0 Alexander (HH)0 Alexander (HH)0 Der Martin
0 Alexander (HH)0 cr0 Alexander (HH)0 cr
Hallo zusammen,
ich nutze als internetzuagng eine UMTS Flat von base mit T-Mobile web'n'walk Stick.
dabei wählt sich das modem selbst mithilfe der konfigurierten zugangsdaten ein.
alternative kann man auch mwconn nutzen, welches zusätzliche funktionen bietet. z.b. kann man damit sms empfangen, und bei einem bestimmten inhalt und einem bestimmten absender einen festgelegten befehl ausführen.
so mein problemchen daran ist, dass ich gern einen variablen text auslesen würde.
sprich: die sms sende ich von meinem handy an den umts stick, dabei wird die sms dann von einer software in einer textdatei oder ähnlich gespeichert und gleichzeitig ein lokales php script ausgeführt, welches den inhalt der sms verarbeitet.
hat da jemand einen software tip bzw ne idee?
danke!
Moin Moin!
Alle UMTS-Adapter, die ich bislang in den Fingern hatte, verhalten sich letztlich wie ein Hayes-kompatibles Modem an einem "normalen" COM-Port.
(In Hardware sieht das natürlich völlig anders aus, aber für den Host sieht ein USB-UMTS-Adapter aus wie ein oder zwei USB-RS232-Adapter, an dem ein oder zwei Modems hängen. Entsprechend perverser sind PC-Cards, die erstmal einen USB-Host simulieren, an dessen Ports werden USB-RS232-Adapter simuliert, daran hängen dann simulierte Modems.)
Man kann das Modem über einen der beiden simulierten RS232-Ports mit AT-Kommandos steuern, ganz ähnlich wie auch viele Handys und natürlich die klassischen Modems.
Bei den Handys hat man Erweiterungen zum AT-Befehlssatz erfunden, mit denen man u.A. Zugriff auf die SMS-Funktionen und die Paketvermittlung (GPRS / EDGE / UMTS) hat. Such mal nach "sms at commands" oder "umts at commands".
Alexander
Nachtrag:
Bei den Handys hat man Erweiterungen zum AT-Befehlssatz erfunden, mit denen man u.A. Zugriff auf die SMS-Funktionen und die Paketvermittlung (GPRS / EDGE / UMTS) hat. Such mal nach "sms at commands" oder "umts at commands".
Ungenau formuliert: UMTS-Sticks verhalten sich hier natürlich wie Handys. Möglicherweise bekommt man sogar Zugriff auf die Voice-Funktionen, sprich: Der Laptop mutiert mit passender Software zum XXL-Handy mit gnadenlos schlechter Standby-Zeit.
Alexander
Hallo,
Ungenau formuliert: UMTS-Sticks verhalten sich hier natürlich wie Handys. Möglicherweise bekommt man sogar Zugriff auf die Voice-Funktionen, sprich: Der Laptop mutiert mit passender Software zum XXL-Handy mit gnadenlos schlechter Standby-Zeit.
ja, aber aufpassen: Oft werden diese UMTS-Sticks mit eingeschränkten Mobilfunkverträgen verkauft, die Telefonie in den Vertragsbedingungen explizit ausschließen. Fraglich ist, wie sie dann zu Skype u.ä. stehen.
So long,
Martin
Moin Moin!
»» ... Zugriff auf die Voice-Funktionen ...
ja, aber aufpassen: Oft werden diese UMTS-Sticks mit eingeschränkten Mobilfunkverträgen verkauft, die Telefonie in den Vertragsbedingungen explizit ausschließen.
Soweit ich weiß, akzeptiert das Netz den Versuch, eine GSM-Sprachverbindung aufzubauen, dann einfach nicht. Genau wie bei einer abgelaufenen Prepaid-Karte.
Fraglich ist, wie sie dann zu Skype u.ä. stehen.
VoIP ist nicht gerne gesehen, weil man damit die Voice-Tarife umgehen kann. Aber irgendwann werden sich die Provider damit arangieren müssen.
Technisch ist es kein Problem, dem Provider vorzuenthalten, welche Daten übertragen werden. VPNs funktionieren auch über UMTS.
Was die Juristen dazu sagen, ist eine völlig andere Geschichte.
Alexander
Hallo ihr beiden,
erstmal vielen Dank für eure Antworten.
Folgendes habe ich bisher herausgefunden:
Anrufe werden geblockt vom Stick, von Base selbst nicht.
SMS können empfangen werden, jedoch habe ich kein gescheites Freeware Programm gefunden, welches ankommende SMS richtig verarbetiet.
Lösung könnte nun evtl. sein:
Statt über SMS das ganze über Email zu steuern. D.h. vom Handy eine Email an einen seperaten Account senden. Diesen Account mittels PHP regelmäßig abrufen.
Die Emails auswerten:
If(Empfänger == meine Handynummer && Inhalt = "1234") {
dann mach das was du machen sollst } else {
lösch die mail und das wars }
Ausser ihr habt noch was gescheits anders rausgefunden?
Grüße
cr
Moin Moin!
Hallo ihr beiden,
erstmal vielen Dank für eure Antworten.
Folgendes habe ich bisher herausgefunden:
Anrufe werden geblockt vom Stick, von Base selbst nicht.
SMS können empfangen werden, jedoch habe ich kein gescheites Freeware Programm gefunden, welches ankommende SMS richtig verarbetiet.
Starte ein Terminal-Programm, öffne den durch den Stick neu im System erscheinenden COM-Port (COM3, COM4, COM5, ... auf Windows, /dev/ttyS1, /dev/ttyS2, /dev/ttyS3, ... oder /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, ... auf Linux), und sprich Hayes mit dem simulierten Modem.
Fang mit einem einfachen "AT"+<CR> (Drücke Shift-A, Shift-T, Enter). Das Modem sollte mit "OK"+<CR> antworten.
ATI sollte eine halbwegs brauchbare Identifikation geben.
Mit den AT-Kommandoerweiterungen, die Du per Suchmaschine schon gefunden hast, kannst Du dann mit SMS experimentieren. Die Kommandos sind dokumentiert, versuche also als erstes, Deinem Handy eine Hallo-Welt-SMS zu schicken. Dann schickst Du vom Handy zurück zum Stick eine SMS und liest diese aus dem SMS-Speicher des Sticks aus -- alles mit AT-Kommandos.
Ich weiß nicht genau, ob es an der AT-Schnittstelle eine (einschaltbare) Benachrichtigung für neue SMS gibt, im Zweifel man halt alle paar Sekunden nachsehen, ob es neue SMS im Speicher gibt.
Der nächste Schritt ist offensichtlich, oder? Nimm eine Programmiersprache Deiner Wahl, die mit den COM-Ports ohne größere Schwierigkeiten kommunizieren kann, und automatisiere das Senden und Empfangen von SMS.
Lösung könnte nun evtl. sein:
Statt über SMS das ganze über Email zu steuern. D.h. vom Handy eine Email an einen seperaten Account senden. Diesen Account mittels PHP regelmäßig abrufen.
Wenn Du einen eigenen Mailserver hast, kannst Du Dich auch aktiv benachtichtigen lassen (z.B. über procmail) statt zu pollen. Mit der IMAP IDLE-Erweiterung gibt es einen ähnlichen Mechanismus auch für gehostete Mailserver.
Die Emails auswerten:
If(Empfänger == meine Handynummer && Inhalt = "1234") {
Was hat Deine Handynummer mit E-Mails zu tun?
(Und willst Du wirklich der Variablen Inhalt den Wert "1234" zuweisen?)
Egal ob E-Mail oder SMS, geh davon aus, dass Deinem Programm Müll eingegeben wird, den es verwerfen muß. Sorge dafür, dass zusätzlich(!) zur Absenderprüfung noch ein Codewort o.ä. in der SMS/E-Mail vorhanden sein muß (à la "Sesam Oeffne Dich: REBOOT NOW").
Alexander
Moin Moin!
moin!
Starte ein Terminal-Programm, öffne den durch den Stick neu im System erscheinenden COM-Port (COM3, COM4, COM5, ... auf Windows, /dev/ttyS1, /dev/ttyS2, /dev/ttyS3, ... oder /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, ... auf Linux), und sprich Hayes mit dem simulierten Modem.
Der nächste Schritt ist offensichtlich, oder? Nimm eine Programmiersprache Deiner Wahl, die mit den COM-Ports ohne größere Schwierigkeiten kommunizieren kann, und automatisiere das Senden und Empfangen von SMS.
wie ich entdeckt habe kann das auch php! wow!
Was hat Deine Handynummer mit E-Mails zu tun?
wenn ich vom handy aus ne sms an meinen emailaccount sende steht als absender meine handynummer da :)
(Und willst Du wirklich der Variablen Inhalt den Wert "1234" zuweisen?)
nein das war n beispiel lol
habe das hier gefunden:
mein stick ist am com port 5 zu hause :)
<?php
mode com5: BAUD=9600 Parity=n data=8 stop=1 xon=off
;
$fp = fopen("COM5:", "w+");
if($fp)
{
echo "port geöffnet";
}
?>
Jedoch kommt eine FehlerMeldung:
failed to open stream: Invalid argument on line 4 ($fp = fopen("COM5:", "w+");)
?
Ich hab den Quellcode von hier:
http://markmail.org/message/52bkqhfitq7cs6hl#query:mode%20com1%3A%20BAUD%3D9600%20PARITY%3DN%20data%3D8%20stop%3D1%20xon%3Doff%60%3B+page:1+mid:52bkqhfitq7cs6hl+state:results
grüße
Moin Moin!
habe das hier gefunden:
mein stick ist am com port 5 zu hause :)
<?php
mode com5: BAUD=9600 Parity=n data=8 stop=1 xon=off
;
Das sollte eigentlich unnötig sein.
$fp = fopen("COM5:", "w+");
Der Doppelpunkt dürfte überflüssig bis störend sein. Ab COM10 bräuchtest Du die etwas gewöhnungsbedürftigere Notation \.\COM10, die müßte notfalls aber auch mit COM1 bis COM9 funktionieren -- also fopen("\\.\com5","w+").
if($fp)
{
echo "port geöffnet";
}
?>Jedoch kommt eine FehlerMeldung:
failed to open stream: Invalid argument on line 4 ($fp = fopen("COM5:", "w+");)
Vermutlich denkt fopen, COM5: sei ein Protokoll (wegen des Doppelpunktes).
Such doch mal eine Library speziell für den Zugriff auf COM-Ports.
Alexander