NEWS
Node-red: Fritzbox Anrufer Nummer anzeigen
-
Hallo,
ich habe beim Stöbern durch die Node-Red-Flows einen http://flows.nodered.org/flow/02d404700123fe3d3f06, der die Anrufer-Nummer auf einem Raspi mit Display anzeigt. Hab das für VIS etwas abgewandelt. Solange es keinen Fritzbox-Adapter gibt, ist das zur Überbrückung mal ausreichend.
Man muss zuerst (wie beim CCU.IO Fritzbox-Adapter) den TCP Port 1012 mit der Kurzwahl #965 freischalten. Der flow horcht dann auf neue Anrufer. Die Nummer des Anrufers wird hier in einen ioBroker-Datenpunkt geschrieben. Nach 30s wird der Datenpunkt wieder geleert. Ich nutze das zu Anzeige eines Anrufes in VIS.
Vielleicht kennt sich jemand aus und weiß, wie man den passenden Namen anzeigt, wenn die Nummer in der Fritzbox im Telefonbuch gespeichert wurde. Ausserdem kann man natürlich im Javascript Adapter auch die Nummer mit Zeitstempel in eine Liste schreiben, und und und ….
Flow:
[{"id":"abcbf8c7.543408","type":"tcp in","server":"client","host":"192.168.178.1","port":"1012","datamode":"stream","datatype":"buffer","newline":" \\n","topic":"FritzBox Telnet Calls","name":"","base64":false,"x":244.6666259765625,"y":231.19442558288574,"z":"751291c9.8aed7","wires":[["866f37ec.7990c8"]]},{"id":"866f37ec.7990c8","type":"function","name":"Parse FritzBox Telnet","func":"//Name: Parse FritzBox Telnet\n\n//\n//Requirements:\n//- TCP Input\n//- must be able to reach tcp port 1012 on your FB\n//- activate call monitor on FB by dialing #96*5*\n//\n// Output : 1\n//-If context is RING, output is PhoneNumber\n// Other calltypes - CALL - Outgoing\n// - DISCONNECT \n\ncontext.buff = context.buff || \"\";\ncontext.buff = context.buff + msg.payload;\n//context.buff = msg.payload;\n\nmess = context.buff.slice(18);\t// return rest of the buffer as the payload\nslices = mess.split(\";\");\ncalltype= mess.split(\";\",1);\n\nif (slices[2] === \"\") {\nphonenumber = \"Number withheld \";}\nelse \n{\nphonenumber = slices[2] +\" \";\n}\n\n\n//msg.payload= calltype ;\ncontext.buff = \"\";\nif (calltype == \"RING\") {\nmsg.topic = calltype;\t// return the first two chars as the topic\nmsg.payload = phonenumber;\t// return rest of the buffer as the payload\n\nreturn msg;\n}\nreturn null;\n//return msg;\n","outputs":1,"valid":true,"x":466.6666259765625,"y":232.19442558288574,"z":"751291c9.8aed7","wires":[["b15532ce.4eaad"]]},{"id":"5bc80877.a437f8","type":"comment","name":"FRITZ!box Caller Number double click for more info...","info":"CallerID flow from Fritz!Box router (http://www.avm.de/en/index.php3) \n\n\nUses following nodes:\nTCP input\nfunction\n\n\n\nTo work first you need to activate tcp port 1012 on your Fritz!Box by dialing #96*5*\n\nChange TCP node to point at IP address of router\n\n","x":334.11114501953125,"y":176,"z":"751291c9.8aed7","wires":[]},{"id":"77bcd8d7.884328","type":"debug","name":"","active":true,"console":"false","complete":"false","x":1171,"y":285,"z":"751291c9.8aed7","wires":[]},{"id":"9bd3e4f5.642c18","type":"ioBroker out","name":"Fritzbox Anrufer Nummer","topic":"Fritzbox Anrufer Nummer","ack":"true","autoCreate":"true","x":1198,"y":195,"z":"751291c9.8aed7","wires":[]},{"id":"b15532ce.4eaad","type":"trigger","op1":"1","op2":"\"\"","op1type":"pay","op2type":"val","duration":"30","extend":"true","units":"s","name":"Anrufer Nummer nach 30s löschen","x":800,"y":232,"z":"751291c9.8aed7","wires":[["9bd3e4f5.642c18","77bcd8d7.884328"]]}]
Gruß
Pix
-
Super Pix,
so war auch die Idee, dass solange die Adapter nicht fertig sind, node-red dafür zu nutzen.
-
@pix:Vielleicht kennt sich jemand aus und weiß, wie man den passenden Namen anzeigt, wenn die Nummer in der Fritzbox im Telefonbuch gespeichert wurde. Ausserdem kann man natürlich im Javascript Adapter auch die Nummer mit Zeitstempel in eine Liste schreiben, und und und …. `
Zum Namen. Kann es sein, dass die Infos aus dem internen Adressbuch nicht über Port 1012 ausgegeben werden können?
Ich meine im Fritz!-Adapter in ccu.io hatte man in den Adaptereinstellungen eine eigene Zuordnung Rufnummer zum Namen.
Andere Lösungen, wie z.B. Anzeige des Anrufers über einen SAT-Reciever bringen auch ein eigenes Adressbuch mit.
Der lästige Workaroud wäre dann wahrscheinlich im node-red functions node (im Script) eine Liste mit anzugeben.
Leider kann ich das nicht elegant umsetzen. Ich würde dann zig if Abfragen erstellen und alle Programmierer würden aus dem Lachen nicht mehr hinauskommen.
721_ard.jpg -
Fritzbox senden über 1012 nur Rufnummer als Nummer und Zustand.
Z.B. 2013-12-12 12:12:12;004972145679;RING;…..
* Ausgehende Anrufe: datum;CALL; ConnectionID;Nebenstelle;GenutzteNummer; AngerufeneNummer; * Eingehende Anrufe: datum;RING; ConnectionID;Anrufer-Nr; Angerufene-Nummer; * Zustandegekommene Verbindung: datum;CONNECT; ConnectionID;Nebenstelle;Nummer; * Ende der Verbindung: datum;DISCONNECT;ConnectionID;dauerInSekunden;
D.h Umwandlung von Nummern in Namen muss man selbst machen.
Man kann aber damit:
http://avm.de/nc/service/fritzbox/fritz … erstellen/
das Buch exportieren und eventuell parsen.