I got a Raspberry PI 2 and am waiting on the display (7" touch) to ship. I've printed out the NCID Manual have started going through it highlighting the sections that are applicable to my set up. However, I have a few questions in advance:
Will updating the blacklist (FCC data) using the script replace the file, or just append it? In other words, would I lose any items that I've added to the list myself?
Since this is going to be a dedicated Caller ID for my elderly parents I would like to add some conditional statements to the script. I am comfortable hacking Perl scripts, but I have never modified source code. Can anyone point me to a good tutorial on how/why the source code is formatted the way it is?
Specifically I would like to play the recorded sounds based on CID type. Where "unknown/empty/blocked/out of area" would get a recording explaining why the call is being blocked and anyone on the FCC list would get another recording (or none at all) before disconnect, etc.
Unless something like this already exists I am also thinking about adding some buttons along the lines of "BLOCK THIS NUMBER" and "THIS IS NOT SPAM" so my parents can have some form of control over the black/white lists via GUI.
I am also wondering about setting up a computer for "dial in" access to provide the updated FCC list once a month or w.e. since my parents do not have internet access - but, the PI is hooked up to a modem. I think for them once a month updates are ok.
Has anyone used the "speak" function? If I added a speaker the machine could read the number/status and they wouldn't have to get up and check it. My goal is to make their lives easier as they have trouble getting up/down and they are not tech savvy in the least (think: touchscreen, big buttons, large fonts, simple choices). Any feed back is appreciated.
(edited to indicate that my parents do NOT have internet access)
Last edit: Sine Botchen 2016-01-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The ncidFCCimport script that Mike provided deletes old FCC data from the ncidd.blacklist by using the comment field to determine which lines to delete. The script then appends the new FCC data to the ncidd.blacklist file. You do not loose any data you manually entered.
You need a book on an introduction to C to understand the format. I am sure there are various tutorials on the Internet. Unfortunately I have not reviewed books or Internet tutorials in a long time so I cannot tell you the best one.
One feature I am planning to add is to allow the blacklist comment field to specify the recording to be played. If no recording file is listed the the default one is played.
No need for buttons, there are clients that can modify the alias/blacklist/whitelist files by selecting a call on the call list. This allows you to block or unblock a call the next time it is received.
You can set the RPi to answer a call using its modem and login, but you need to be careful if your parents only have one line. You may want to update the FCC file in the early hours when they are sleeping.
I have used ncid-speak and recently tested it on the RPi. It works OK. You can test the speech quality by sending text messages to festival. It is what ncid-speak uses. You need to install festival from the repository.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Unless something like this already exists I am also thinking about adding some buttons along the lines of "BLOCK THIS NUMBER" and "THIS IS NOT SPAM" so my parents can have some form of control over the black/white lists via GUI.
At first I thought you might have meant physical buttons since you mentioned the RPi will be dedicated to NCID and I know the RPi has GPIO capability to interact with physical buttons and it would be quite cool. But then I realized you might mean software buttons on a touchscreen, which would be pretty cool.
I'm hoping our resident RPi hardware guru, Tod "One-D" Cox, could briefly comment on how physical buttons and touchscreen buttons might be implemented. I don't know that there's currently an NCID client that has been developed to do either.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
John, since you're currently contemplating a way to implement an external script/program to qualify calls for hangup over in this thread, maybe you could also allow the external script to specify the voice file to be used? If I was going to dedicate an RPi in the same way Sine is talking about, I would probably want to put the voice file names in an SQLite database, which is along the lines of Chris Lenderman's post in this thread, vs. using blacklist comments for this purpose.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Buttons are definitely a possibility for control/input. From a hardware/software perspective, it really does not matter if the buttons are physical or on a touchscreen. Reading the hardware buttons from the GPIO pins or from a state of a touchscreen button utimately results in a 1 or 0 that can then be used in a program. Or, as a hardware folks are prone to say, its just a "few lines of code"!
As a side note, I have been working on the next generation of NCIDdisplay; it will likely have physical buttons and virtual buttons (via a mobile web browser interface) for user input.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
My first step will be to get NCID running "as is".
Then I was contemplating inserting something simple like:
if ($alias =~ /out of area|unknown|unavailable/) {$recording="1"} else {$recording="2"};
But I may wait and see what shakes out regarding the projects y'all mentioned above.
My button idea was based on using a web browser to display/mimic the NCID display and having the html buttons use ajax to fire off a cgi script that would open & modify the blacklist file. Of course, that would mean installing Apache and futzing with permissions, etc. Not an elegant solution, so I am glad there are clients already in place that can handle this.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I got a Raspberry PI 2 and am waiting on the display (7" touch) to ship. I've printed out the NCID Manual have started going through it highlighting the sections that are applicable to my set up. However, I have a few questions in advance:
Will updating the blacklist (FCC data) using the script replace the file, or just append it? In other words, would I lose any items that I've added to the list myself?
Since this is going to be a dedicated Caller ID for my elderly parents I would like to add some conditional statements to the script. I am comfortable hacking Perl scripts, but I have never modified source code. Can anyone point me to a good tutorial on how/why the source code is formatted the way it is?
Specifically I would like to play the recorded sounds based on CID type. Where "unknown/empty/blocked/out of area" would get a recording explaining why the call is being blocked and anyone on the FCC list would get another recording (or none at all) before disconnect, etc.
Unless something like this already exists I am also thinking about adding some buttons along the lines of "BLOCK THIS NUMBER" and "THIS IS NOT SPAM" so my parents can have some form of control over the black/white lists via GUI.
I am also wondering about setting up a computer for "dial in" access to provide the updated FCC list once a month or w.e. since my parents do not have internet access - but, the PI is hooked up to a modem. I think for them once a month updates are ok.
Has anyone used the "speak" function? If I added a speaker the machine could read the number/status and they wouldn't have to get up and check it. My goal is to make their lives easier as they have trouble getting up/down and they are not tech savvy in the least (think: touchscreen, big buttons, large fonts, simple choices). Any feed back is appreciated.
(edited to indicate that my parents do NOT have internet access)
Last edit: Sine Botchen 2016-01-20
Hi Sine,
Here are some answers to your questions.
The ncidFCCimport script that Mike provided deletes old FCC data from the ncidd.blacklist by using the comment field to determine which lines to delete. The script then appends the new FCC data to the ncidd.blacklist file. You do not loose any data you manually entered.
You need a book on an introduction to C to understand the format. I am sure there are various tutorials on the Internet. Unfortunately I have not reviewed books or Internet tutorials in a long time so I cannot tell you the best one.
One feature I am planning to add is to allow the blacklist comment field to specify the recording to be played. If no recording file is listed the the default one is played.
No need for buttons, there are clients that can modify the alias/blacklist/whitelist files by selecting a call on the call list. This allows you to block or unblock a call the next time it is received.
You can set the RPi to answer a call using its modem and login, but you need to be careful if your parents only have one line. You may want to update the FCC file in the early hours when they are sleeping.
I have used ncid-speak and recently tested it on the RPi. It works OK. You can test the speech quality by sending text messages to festival. It is what ncid-speak uses. You need to install festival from the repository.
Hi Sine,
At first I thought you might have meant physical buttons since you mentioned the RPi will be dedicated to NCID and I know the RPi has GPIO capability to interact with physical buttons and it would be quite cool. But then I realized you might mean software buttons on a touchscreen, which would be pretty cool.
I'm hoping our resident RPi hardware guru, Tod "One-D" Cox, could briefly comment on how physical buttons and touchscreen buttons might be implemented. I don't know that there's currently an NCID client that has been developed to do either.
John, since you're currently contemplating a way to implement an external script/program to qualify calls for hangup over in this thread, maybe you could also allow the external script to specify the voice file to be used? If I was going to dedicate an RPi in the same way Sine is talking about, I would probably want to put the voice file names in an SQLite database, which is along the lines of Chris Lenderman's post in this thread, vs. using blacklist comments for this purpose.
Buttons are definitely a possibility for control/input. From a hardware/software perspective, it really does not matter if the buttons are physical or on a touchscreen. Reading the hardware buttons from the GPIO pins or from a state of a touchscreen button utimately results in a 1 or 0 that can then be used in a program. Or, as a hardware folks are prone to say, its just a "few lines of code"!
As a side note, I have been working on the next generation of NCIDdisplay; it will likely have physical buttons and virtual buttons (via a mobile web browser interface) for user input.
Thanks for the fodder guys!
My first step will be to get NCID running "as is".
Then I was contemplating inserting something simple like:
But I may wait and see what shakes out regarding the projects y'all mentioned above.
My button idea was based on using a web browser to display/mimic the NCID display and having the html buttons use ajax to fire off a cgi script that would open & modify the blacklist file. Of course, that would mean installing Apache and futzing with permissions, etc. Not an elegant solution, so I am glad there are clients already in place that can handle this.