NEWS
SMS und/oder Anruf mit SIM800-Modul und Node-Red
-
Hallo Iobroker-Gemeinde,
hier wollte ich einmal meine Umsetzung vorstellen, wie man mit einer Sim-Karte, entsprechendem Modul, Raspberry-PI und Node-Red und schließlich in Verbindung mit IoBroker Anrufe tätigen oder auch SMS verschicken/versenden kann.
Hintergrund: Ich wollte gerne eine Benachrichtigung auf mein Handy bei bestimmten Gefahr-Ereignissen haben (wie z.B. Wasser im Keller oder gar Feuer-Alarm). Dabei wollte ich allerdings auf keinen Fall auf irgendwelche Internetdienste zurückgreifen, bei denen man sich registrieren muss, um SMS zu verschicken etc.
Was man braucht:
- Eine Sim-Karte mit Guthaben oder Vertrag (ich benutze eine Vertragskarte; 2.95 Euro im Monat mit 100 Frei-Einheiten, das sollte für die Gefahrenmeldungen HOFFENTLICH reichen )
- Raspberry-PI und ein Sim-Karten-Modul bzw. seriellen Adapter (diesen "Raspberry PI SIM800 GSM GPRS Add-on V2.0 Entwicklungsplatine" benutze ich, bei Amazon für 25 Euro). Es geht auch ein UMTS-Stick - die Installation kann aber wesentlich aufwendiger sein)
- Node-Red und soweit ich mich erinner muss das Paket "node-red-node-serialport" nachinstalliert werden.
Folgendermaßen habe ich das ganze aufgebaut:
Über Node-Red greife ich per MQTT auf den Iobroker zu. Sobald ein Sensor oder was auch immer passiert, geht per MQTT eine Nachricht an Node-Red bzw. den Raspberry PI bzw. an die Sim-Karte.
Andersherum: Sobald eine SMS auf der Sim-Karte eingeht, wird per MQTT dies an IoBroker gesendet. So gesehen ist es quasi auch möglich, per SMS irgendwelche Ereignisse im IoBroker zu initiieren.Installation des seriellen Adapters:
Letztlich muss das Modul nur auf die PINs des PIs aufgesteckt werden. Das ist auch deswegen praktisch, da dann die Pins des PIs weiterhin genutzt werden können.
Allerdings muss beim PI noch die serielle Schnittstelle aktiviert werden (da die seit Rasbian Jessie nicht mehr standardmäßig unterstützt wird). Hierzu muss in der Datei /boot/config.txt die Zeile enable_uart=1 hinzugefügt werden. Letztlich fehlt dann noch der Befehl sudo systemctl mask serial-getty@ttyS0.service , damit ein Zugriff auf die Schnittstelle erfolgen kann. Danach muss der PI neu gebootet werden.
Wie bereits erwähnt, hatte ich das ganze auch schon mit einem UMTS-Stick zum laufen gebracht. Die Installation des USB-Sticks unter Raspbian kann aber sehr mühselig sein, daher empfehle ich diesen Weg eher nicht. Mit dem oben erwähnten Adapter war es fast eher Plug and Play.
Node-Red kann einfach als Package in der Konsole auf dem PI installiert werden.Flows in Node-Red:
Grundsätzlich lässt sich die Sim-Karte über die AT-Commands steuern. Wer mal danach googled, findet dazu einiges im Netz. Habt ihr erstmal in Node-Red eine Verbindung zum Adapter bzw. zur Sim-Karte erfolgreich hergestellt, steht einem Erfolgreichen Benutzen der Sim-Karte eigentlich nichts mehr im Weg.Ich will euch meine Flows aber natürlich nicht vorenthalten:
Die meisten Flows enthalten auch einige Test-Injektionen, die für den eigentlich Gebrauch natürlich nicht nötig sind, aber zum Testen der Funktionalität sehr praktisch. Ich lasse mir einmal die Woche automatisiert eine Test-SMS schicken, um sicherzugehen, dass alles noch läuft.Flow zum Senden einer SMS:
[{"id":"b85bee9c.534a6","type":"tab","label":"SendSMS","disabled":false,"info":""},{"id":"3ad62e4c.cb16d2","type":"ui_form","z":"b85bee9c.534a6","name":"Send Through Form","label":"","group":"9fdcdcfb.94db58","order":0,"width":"0","height":"0","options":[{"label":"Number","value":"number","type":"text","required":true},{"label":"Message","value":"message","type":"text","required":true}],"formValue":{"number":"","message":""},"payload":"","submit":"Senden","cancel":"Abbrechen","topic":"","x":290,"y":220,"wires":[["9a7dc491.bfa088","62c430dd.1bc028","579bdfcc.4d9f"]]},{"id":"9a7dc491.bfa088","type":"function","z":"b85bee9c.534a6","name":"Send SMS to number","func":"var num = msg.payload.number;\nvar at_cmd = \"AT+CMGS=\\\"\"+num+\"\\\"\"; \n\nmsg.payload=at_cmd+\"\\r\";\n//msg.payload.msg =msg.payload.message;\n\nreturn msg;","outputs":"1","noerr":0,"x":640,"y":120,"wires":[["8695497b.1a799"]]},{"id":"8695497b.1a799","type":"serial out","z":"b85bee9c.534a6","name":"Serail-Out","serial":"44267baf.756834","x":1020,"y":140,"wires":[]},{"id":"9e020b4d.c669e","type":"function","z":"b85bee9c.534a6","name":"Send Message","func":"var sms_msg = msg.payload.message;\n\nmsg.payload=sms_msg+\"\\x1A\";\n//msg.payload.msg =msg.payload.message;\n\nreturn msg;","outputs":1,"noerr":0,"x":800,"y":320,"wires":[["8695497b.1a799"]]},{"id":"579bdfcc.4d9f","type":"delay","z":"b85bee9c.534a6","name":"Wait for > prompt","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":590,"y":320,"wires":[["9e020b4d.c669e"]]},{"id":"62c430dd.1bc028","type":"delay","z":"b85bee9c.534a6","name":"Wait 1 sec","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":570,"y":260,"wires":[["e048033c.a69588"]]},{"id":"e048033c.a69588","type":"function","z":"b85bee9c.534a6","name":"Write newline","func":"msg.payload=\"\\r\\n\";\nreturn msg;","outputs":1,"noerr":0,"x":800,"y":260,"wires":[["8695497b.1a799"]]},{"id":"fc3ce7ce.737d28","type":"inject","z":"b85bee9c.534a6","name":"Sende TestSMS","topic":"Send SMS","payload":"{\"number\":\"0049xxxxxxxx\",\"message\":\"Hello World\"}","payloadType":"json","repeat":"","crontab":"00 06 * * 1","once":false,"onceDelay":0.1,"x":330,"y":120,"wires":[["54611e54.ade22","9a7dc491.bfa088","62c430dd.1bc028","579bdfcc.4d9f"]]},{"id":"54611e54.ade22","type":"debug","z":"b85bee9c.534a6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":580,"y":60,"wires":[]},{"id":"a34ab2e5.7058e8","type":"mqtt in","z":"b85bee9c.534a6","name":"Get_MQTT_Message_and_send_SMS","topic":"SMSMessage","qos":"0","datatype":"json","broker":"6d37922.1f2b16c","x":210,"y":520,"wires":[["2f4fefb0.b1f348","9ff0cd50.2dce2"]]},{"id":"2f4fefb0.b1f348","type":"debug","z":"b85bee9c.534a6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":570,"y":520,"wires":[]},{"id":"9ff0cd50.2dce2","type":"function","z":"b85bee9c.534a6","name":"CheckForNewMessageFromMQTT","func":"\nif(msg.payload.time!==\"0\"){\n return msg;\n}","outputs":1,"noerr":0,"x":240,"y":360,"wires":[["8b729eef.6f0398","9a7dc491.bfa088","62c430dd.1bc028","579bdfcc.4d9f"]]},{"id":"8b729eef.6f0398","type":"debug","z":"b85bee9c.534a6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":570,"y":420,"wires":[]},{"id":"9fdcdcfb.94db58","type":"ui_group","z":"","name":"SMS","tab":"76badc30.5d679c","order":1,"disp":true,"width":"6"},{"id":"44267baf.756834","type":"serial-port","z":"","serialport":"/dev/ttyS0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"},{"id":"6d37922.1f2b16c","type":"mqtt-broker","z":"","name":"MQTT_Synology","broker":"192.168.xxx.xxx","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"76badc30.5d679c","type":"ui_tab","z":"","name":"SMS","icon":"dashboard"}]
Zum Versenden der SMS müssen immer gewisse Einstellungen gesetzt werden, sobald der Adapter einmal aus war... also z.B. beim Neustart des PIs (zumindest war das bei meiner Sim-Karte so). Außerdem ist (meine) Sim-Karte nach 10 SMS voll.... daher werden in diesem Flow ab 9 SMS alle von der Sim-Karte gelöscht, sodass wieder Platz ist.
Flow zum Setzen der Einstellungen und Löschen der vorhanden SMS:
[{"id":"fde9a545.31e14","type":"tab","label":"SetSettings","disabled":false,"info":""},{"id":"747954b5.b09664","type":"inject","z":"fde9a545.31e14","name":"SetSettings","topic":"settings","payload":"CMGF=1;+CNMI=2,1","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"","x":230,"y":140,"wires":[["e8acc297.4153a"]]},{"id":"e8acc297.4153a","type":"function","z":"fde9a545.31e14","name":"SetSettings","func":"var at_cmd = \"AT+\"+msg.payload;\nmsg.payload=at_cmd+\"\\r\\n\";\nreturn msg;\n\n//CMGF=1 -> Textmode SMS\n//CNMI=2,1 -> Notify-Setting for incoming SMS\n","outputs":"1","noerr":0,"x":530,"y":180,"wires":[["68c4f48c.8954ec"]]},{"id":"68c4f48c.8954ec","type":"serial out","z":"fde9a545.31e14","name":"Serail-Out","serial":"44267baf.756834","x":840,"y":240,"wires":[]},{"id":"21369272.aff766","type":"function","z":"fde9a545.31e14","name":"Delete SMS on SIM","func":"var m = msg.payload;\nvar tmp1 = m.split(\":\");\nvar tmp2 = m.split(\",\");\n\n\nif(tmp1[0]==\"+CPMS\")\n{\n if(parseInt(tmp2[1])>9){\n msg.payload = \"AT+CMGD=1,2\" +\"\\r\\n\";\n return msg; \n }\n\n \n}\n\n\n","outputs":"1","noerr":0,"x":530,"y":360,"wires":[["4c9107c4.36fb88","68c4f48c.8954ec"]]},{"id":"4c9107c4.36fb88","type":"debug","z":"fde9a545.31e14","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":360,"wires":[]},{"id":"2b3d14af.326d24","type":"serial in","z":"fde9a545.31e14","name":"ListenDelete","serial":"44267baf.756834","x":210,"y":360,"wires":[["21369272.aff766"]]},{"id":"44267baf.756834","type":"serial-port","z":"","serialport":"/dev/ttyS0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]
Als nächstes der Flow zum Empfangen von SMS. Hier sind sehr viele Test-Injektionen, da das einiges an Testerei erfordert hat. Wesentlich ist hier eigentlich nur der untere Teil:
[{"id":"60ac5f9c.a88ba8","type":"tab","label":"ReceiveSMS","disabled":false,"info":""},{"id":"c9d719b1.5fcfe","type":"debug","z":"60ac5f9c.a88ba8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":730,"y":140,"wires":[]},{"id":"3c737cf8.0c5d04","type":"serial in","z":"60ac5f9c.a88ba8","name":"Listen For Unread SMS Notification","serial":"44267baf.756834","x":200,"y":180,"wires":[["72b2541a.5bbcf4"]]},{"id":"72b2541a.5bbcf4","type":"function","z":"60ac5f9c.a88ba8","name":"CheckForInComingSMS","func":"var m = msg.payload;\nvar cmd = m.split(\",\");\n\n\nif(cmd[0]==\"+CMTI: \\\"SM\\\"\")\n{\n msg.payload = cmd[1];\n return msg;\n}\n\n","outputs":1,"noerr":0,"x":510,"y":200,"wires":[["c9d719b1.5fcfe","a5af66af.daed4"]]},{"id":"22610384.a5379c","type":"inject","z":"60ac5f9c.a88ba8","name":"Simulate SMS Notification","topic":"test","payload":"+CMTI22: \"SM\",1","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":120,"wires":[["72b2541a.5bbcf4"]]},{"id":"a5af66af.daed4","type":"function","z":"60ac5f9c.a88ba8","name":"DeleteStorage and GetNewSMS","func":"var at_cmd = \"AT+CPMS?;+CMGR=\"+msg.payload; \nmsg.payload=at_cmd+\"\\r\\n\";\nreturn msg;\n\n// AT+CPMS? Number of SMS to check for Delete","outputs":"1","noerr":0,"x":570,"y":280,"wires":[["fb0b5cbe.de5808"]]},{"id":"fb0b5cbe.de5808","type":"serial out","z":"60ac5f9c.a88ba8","name":"Serail-Out","serial":"44267baf.756834","x":820,"y":280,"wires":[]},{"id":"d450864.15df4f8","type":"function","z":"60ac5f9c.a88ba8","name":"SendMessageToMQtt","func":"\nvar m = msg.payload;\nvar cmd = m.split(\":\");\n\n\nif(cmd[0]==\"+CMGR\")\n{\n flow.set('store',m);\n \n}\nelse if(flow.get('store')!==0){\n var tmp = flow.get('store').split(\",\");\n msg.payload = \n {\n \"number\": tmp[1],\n \"date\": tmp[3],\n \"time\": tmp[4],\n \"message\": m\n }\n\n flow.set('store',0);\n return msg;\n}","outputs":1,"noerr":0,"x":660,"y":460,"wires":[["f9a2f3a3.4703a","41eca393.60c464"]]},{"id":"f9a2f3a3.4703a","type":"debug","z":"60ac5f9c.a88ba8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":560,"wires":[]},{"id":"b1158d20.346c","type":"inject","z":"60ac5f9c.a88ba8","name":"Simulate reading new SMS","topic":"Test","payload":"+CMGR: \"REC UNREAD\",\"+49xxxxxxxx\",,\"19/08/02,13:59:35+08\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":500,"wires":[["d450864.15df4f8"]]},{"id":"3f92b63a.04a9b2","type":"inject","z":"60ac5f9c.a88ba8","name":"Simulate content of new SMS","topic":"Tesst2","payload":"This is the message","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":560,"wires":[["d450864.15df4f8"]]},{"id":"cae104b4.b76e48","type":"serial in","z":"60ac5f9c.a88ba8","name":"Receive Unread SMS after Notification","serial":"44267baf.756834","x":250,"y":420,"wires":[["d450864.15df4f8"]]},{"id":"4703045c.e04d6c","type":"inject","z":"60ac5f9c.a88ba8","name":"Simulate NewSMS Number","topic":"22","payload":"22","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":260,"wires":[["a5af66af.daed4"]]},{"id":"41eca393.60c464","type":"mqtt out","z":"60ac5f9c.a88ba8","name":"SMS_Incoming","topic":"SMSIncoming","qos":"0","retain":"","broker":"6d37922.1f2b16c","x":900,"y":460,"wires":[]},{"id":"86c9a775.9b6ea","type":"inject","z":"60ac5f9c.a88ba8","name":"SetInitalVar","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":170,"y":60,"wires":[["5fcc5242.97be7c"]]},{"id":"5fcc5242.97be7c","type":"function","z":"60ac5f9c.a88ba8","name":"SetVar","func":"\nflow.set('store',0);","outputs":1,"noerr":0,"x":380,"y":60,"wires":[[]]},{"id":"44267baf.756834","type":"serial-port","z":"","serialport":"/dev/ttyS0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"},{"id":"6d37922.1f2b16c","type":"mqtt-broker","z":"","name":"MQTT_Synology","broker":"192.168.xxx.xxx","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Und zuletzt auch ein Flow, um Anrufe zu tätigen. Nach ca. 20 Sekunden wird der Anruf beendet.
[{"id":"a87b5735.0cba5","type":"tab","label":"Anrufe","disabled":false,"info":""},{"id":"2a0bddef.ca1c2a","type":"mqtt in","z":"a87b5735.0cba5","name":"Get_MQTT_Message_and_call_Number","topic":"SimCard.CallNumber","qos":"0","datatype":"json","broker":"6d37922.1f2b16c","x":220,"y":160,"wires":[["6e76bf81.5a0fe"]]},{"id":"6e76bf81.5a0fe","type":"function","z":"a87b5735.0cba5","name":"CheckForNewMessageFromMQTT","func":"\nif(msg.payload.time!==\"0\"){\n return msg;\n}","outputs":1,"noerr":0,"x":200,"y":300,"wires":[["22c4dbb0.c7c98c","334e625.2858e9e"]]},{"id":"22c4dbb0.c7c98c","type":"function","z":"a87b5735.0cba5","name":"CallNumber","func":"var num = msg.payload.number;\nvar at_cmd = \"ATD\"+num+\";\"; \n\nmsg.payload=at_cmd+\"\\r\";\n\nreturn msg;","outputs":"1","noerr":0,"x":470,"y":280,"wires":[["dee57319.937738","758c56c2.2f294"]]},{"id":"758c56c2.2f294","type":"serial out","z":"a87b5735.0cba5","name":"Serail-Out","serial":"44267baf.756834","x":950,"y":260,"wires":[]},{"id":"334e625.2858e9e","type":"function","z":"a87b5735.0cba5","name":"HangUpAfter[Duration]","func":"\nsetTimeout(function(){\n node.status({fill:\"red\", shape:\"ring\", text:\" \"});\n var at_cmd = \"ATH\"; \n msg.payload=at_cmd+\"\\r\";\n node.send(msg);\n}, msg.payload.duration*1000);\nnode.status({fill:\"blue\", shape:\"ring\", text:' '});\n\n","outputs":"1","noerr":0,"x":560,"y":340,"wires":[["dee57319.937738","758c56c2.2f294"]]},{"id":"dee57319.937738","type":"debug","z":"a87b5735.0cba5","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":860,"y":360,"wires":[]},{"id":"6d37922.1f2b16c","type":"mqtt-broker","z":"","name":"MQTT_Synology","broker":"192.168.2.XX","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"44267baf.756834","type":"serial-port","z":"","serialport":"/dev/ttyS0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]
In Iobroker:
Die Objekte für MQTT sollten in Iobroker automatisch angelegt werden, sobald ihr in Node-Red den jeweiligen Flow deployed.Letztlich habe ich zwei globale Skripts:
function sendSMS(msg, nr) { setState('mqtt.0.SMSMessage','{"time":"'+formatDate(new Date(), "DD.MM.YYYY,hh:mm:ss")+'","number":"'+nr+'","message":"'+formatDate(new Date(), "DD.MM.YYYY,hh:mm:ss")+' Nachricht: ' + msg +'"}'); setTimeout(function() { setState('mqtt.0.SMSMessage','{"time":"0","number":"0","message":"0"}'); }, 500); }
Node-Red lauscht quasi auf Veränderungen im mqtt.0.SMSMessage-Objekt. Wenn diese ungleich 0 sind, wird die SMS verschickt... kurz danach wird das Objekt wieder auf 0 gesetzt, sodass nicht ständig SMS verschickt werden sondern nur einmalig beim Aufrufen der Funktion. Diese Funktion kann nun an jeder beliebigen Stelle eingesetzt werden, um SMS bei (welchen Ereignissen auch immer) zu verschicken.
Das zweite Skript für Anrufe:
function callNumber(nr) { setState('mqtt.0.CallNumber','{"time":"'+formatDate(new Date(), "DD.MM.YYYY,hh:mm:ss")+'","number":"'+nr+'"}'); setTimeout(function() { setState('mqtt.0.CallNumber','{"time":"0","number":"0"}'); }, 500); }
Der Aufbau ist eigentlich identisch. Der Datumstempel dient hier nur dazu, dem MQTT-Objekt den Unterschied zu 0 zu geben. Der Hintergrund ist der Gleiche wie bei der SMS-Funktion.
Ich habe das Ganze nun praktisch so im Einsatz, dass mir, wenn z.B. die Wasser-Sensoren, die ich im Keller z.B. bei der Waschmaschine stehen habe, Wasser melden, dass mir dann eine SMS geschickt wird und außerdem ein Anruf auf mein Handy und das Festnetz erfolgt. Auf den Festnetztelefonen habe ich noch einen bestimmten "Alarm-Sound" eingestellt, falls die Nummer der Sim-Karte anruft. So sollte ich eigentlich einen Wassereinbruch nicht verpassen
Vielleicht kann das Ganze ja jemand gebrauchen oder möchte es nachbauen.
Sicher ist es mit irgendwelchen Online-Diensten mit SMS-Versand einfacher umsetzbar... aber so muss ich meine Telefonnummern nirgends online angeben und mich nicht irgendwo registrieren.
Der Raspberry hängt übrigens an einer USV. Also sollte auch bei Stromausfall alles laufen. UND: Durch die Sim-Karte bin ich auch nicht auf das Haus-Internet angewiesen.Und zuletzt: Natürlich müsst ihr an einigen Stellen der Flows eure eigene Telefonnummer angeben und die IP eures MQTT-Servers. Dort steht in Moment überall xxx.xxx.
Und zuletzt: Es gibt auch eine kleine UI von Node-Red, mit der man dort quasi über die angeschlossene SIM-Karte SMS verschicken kann. Das steckt im "SendSMS"-Flow: -
Hallo, vielen Dank für deine Arbeit, es funktioniert super!
Jedoch fehlt der Flow für das anrufen, könntest du diesen noch ergänzen?Vielen Dank und Gruss
-
Danke.
Ist der Flow für das Anrufen nicht auch oben aufgeführt.
Direkt unterUnd zuletzt auch ein Flow, um Anrufe zu tätigen. Nach ca. 20 Sekunden wird der Anruf beendet.
-
@gender
funktioniert bei mir alles, außer das anufen... hier importiert mir es nicht den angezeigten Flow. -
@toru
Hab den Flow fürs Anrufen jetzt oben nochmal erneuert. -
Bei mir scheint es leider immer noch nicht richtig zu funktionieren, betreffend anrufe. (brauche es aber auch nicht wirklich wäre jedoch trotzdem nice to have )
Auch habe ich ein Problem mit dem löschen der Lokalen SIM SMS's. Diese läuft bei mir immer voll. Sobald ich sie wieder in ein Handy lege kommen die SMS rein und ich kann sie auch löschen, sobald sie gelöscht sind trudeln sie auch wieder auf dem Raspberry Pi ein. (30 Stück danach ist wieder ende) Das versenden funktioniert weiterhin.
Darf ich dir die Logs hier zustellen? Wenn ja, welche würden etwas helfen...?
Eingangsmässig kommt wirklich überhaupt nichts mehr rein. ich denke eher der "lösch-node" funktioniert nicht richtig. -
@d0doooh
Hi, also ich könnte mir vorstellen, dass es auch irgendwie eine spezielle SIM-Karten-Einstellung ist bzw. vielleicht bei deiner SIM-Karte ein anderer Command nötig ist.Ich habe hier nochmal einen Testflow, mit dem man einige Sachen testen kann (einige Befehle bzw. Erklärungen findest du im "SendToModem"-Node). Vielleicht findest du da eine Lösung. Du musst natürlich bei XXXXXXXXXX deine Telefonnummer eintragen.
[{"id":"16094e54.a00932","type":"tab","label":"Testflow","disabled":false,"info":""},{"id":"3678d4da.ae969c","type":"serial out","z":"16094e54.a00932","name":"Serail-Out","serial":"44267baf.756834","x":860,"y":120,"wires":[]},{"id":"6e48dd9f.061674","type":"function","z":"16094e54.a00932","name":"SendToModem","func":"var num = msg.payload.number;\nvar at_cmd = \"ATD017XXXXXXX;\"; \n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// Signamstärke var at_cmd = \"AT+CSQ\"; \n//AT+CNMI=2,1 //Setze Notify-Modus\n//var at_cmd = \"AT+CMGL=\\\"REC UNREAD\\\"\";\n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// AT+CMGD=1,2 // alle bereits gelesenen und alle abgehenden, bereits versendeten Nachrichten löschen\n// AT+CMGF=1 Set message format to TEXT mode. \n// AT+CNMI? Fragt den Modus ab, der für neu ankommende Nachtichten steht\nmsg.payload=at_cmd+\"\\r\\n\";\n//msg.payload.msg =msg.payload.message;\n\nreturn msg;","outputs":"1","noerr":0,"x":620,"y":180,"wires":[["3678d4da.ae969c"]]},{"id":"a7f467f3.2406","type":"inject","z":"16094e54.a00932","name":"Testanruf","topic":"exec","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":180,"wires":[["6e48dd9f.061674","2d3f8594.b7b6aa"]]},{"id":"6f4ff8e3.00bc","type":"function","z":"16094e54.a00932","name":"SendToModem","func":"\nvar at_cmd = msg.payload; \n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// Signamstärke var at_cmd = \"AT+CSQ\"; \n//AT+CNMI=2,1 //Setze Notify-Modus\n//var at_cmd = \"AT+CMGL=\\\"REC UNREAD\\\"\";\n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// AT+CMGD=1,2 // alle bereits gelesenen und alle abgehenden, bereits versendeten Nachrichten löschen\n// AT+CMGF=1 Set message format to TEXT mode. \n// AT+CNMI? Fragt den Modus ab, der für neu ankommende Nachtichten steht\nmsg.payload=at_cmd+\"\\r\\n\";\n//msg.payload.msg =msg.payload.message;\n\nreturn msg;","outputs":1,"noerr":0,"x":460,"y":100,"wires":[["3678d4da.ae969c"]]},{"id":"ebae19ae.3dabf","type":"inject","z":"16094e54.a00932","name":"Testbefehl","topic":"exec","payload":"AT+COPS=?","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":80,"wires":[["6f4ff8e3.00bc"]]},{"id":"2d3f8594.b7b6aa","type":"delay","z":"16094e54.a00932","name":"Auflegen nach 2 sec","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":400,"y":240,"wires":[["c2a37e2a.9bb748"]]},{"id":"c2a37e2a.9bb748","type":"function","z":"16094e54.a00932","name":"SendToModem","func":"var num = msg.payload.number;\nvar at_cmd = \"ATH\"; \n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// Signamstärke var at_cmd = \"AT+CSQ\"; \n//AT+CNMI=2,1 //Setze Notify-Modus\n//var at_cmd = \"AT+CMGL=\\\"REC UNREAD\\\"\";\n//var at_cmd = \"AT+CMGL=\\\"ALL\\\"\"; \n// AT+CMGD=1,2 // alle bereits gelesenen und alle abgehenden, bereits versendeten Nachrichten löschen\n// AT+CMGF=1 Set message format to TEXT mode. \n// AT+CNMI? Fragt den Modus ab, der für neu ankommende Nachtichten steht\nmsg.payload=at_cmd+\"\\r\\n\";\n//msg.payload.msg =msg.payload.message;\n\nreturn msg;","outputs":"1","noerr":0,"x":640,"y":240,"wires":[["3678d4da.ae969c"]]},{"id":"80e4c9d8.4606c8","type":"inject","z":"16094e54.a00932","name":"SendCommand","topic":"settings","payload":"CSQ","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"","x":260,"y":440,"wires":[["d29b8b55.96c7b"]]},{"id":"d29b8b55.96c7b","type":"function","z":"16094e54.a00932","name":"SetSettings","func":"var at_cmd = \"AT+\"+msg.payload;\nmsg.payload=at_cmd+\"\\r\\n\";\nreturn msg;\n\n//CMGF=1 -> Textmode SMS\n//CNMI=2,1 -> Notify-Setting for incoming SMS\n","outputs":"1","noerr":0,"x":550,"y":480,"wires":[["45d9ea55.2da924"]]},{"id":"45d9ea55.2da924","type":"serial out","z":"16094e54.a00932","name":"Serail-Out","serial":"44267baf.756834","x":860,"y":540,"wires":[]},{"id":"44267baf.756834","type":"serial-port","z":"","serialport":"/dev/ttyS0","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]