[SOLVED] Can't change address in email widget

Hey team, I’m looking for some assistance with the email widget only letting me send emails to my registered account address. I’ve read the forum and seen that this is a common issue, but none of the fixes have worked for me. The emails always send, just to the wrong address.

My hardware is a nodemcu with library 0.6.1, and I’m using an android phone with android 9 OS, blynk app v2.27.6 and a local server version 0.41.8.

For simplicity lets say my blynk server email account is registered@mail.com, but I want to send messages to alert@mail.com.

I have the alert@mail.com address hard coded on my nodemcu but the emails still keep going to registered@mail.com. I know the service defaults to the address in the mail widget, but I can’t get this changed.

Blynk.email("alert@mail.com", "Alert", "Alert occurring");

I’ve tried changing the address in the widget to the correct address, I’ve tried leaving it blank, and I’ve tried entering just a space or some punctuation as filler in the widget but none of these things work.

I’ve also deleted the widget from the project and then re-added it with the same problem. I also tried adding the widget without opening it thinking that maybe it would then be blank, but no luck.
I’ve also tried deleting the widget from the project, then uninstalling the app, reinstalling the app, then adding the widget back, but no luck.

I’ve also gone into my server settings and found the project and manually deleted the widget from the server side, then re-added it, but even this doesn’t help.

Anyone have any other ideas, or see something I have missed?

Thanks,

Steve

Hello,

Blynk.email(alert@mail.com, "Alert", "Alert occurring");

shouldn’t email be a string?
Also, did you put alert@mail.com into Email Widget? This should be enough.

Sorry, I mistyped the line in my initial post, my example code is:

Blynk.email("alert@mail.com", "Alert", "Alert occurring");

With quotes around the email address. This is how it is used in the docs at https://docs.blynk.cc/#widgets-notifications-email, and in the example sketches. I will test it as a string instead, I haven’t tried that yet. But I don’t think this will help since the widget address overrides the hardcode address and I can’t get the widget to change.

I put alert@mail.com into the email widget, but it doesn’t stay there. If I open the widget again, it shows the registered@mail.com address. Even if I change it to the alert@mail.com address and then don’t re-open the widget, it still only sends to the registered@mail.com.

Hm. Are you sure you are running 0.41.8? Please run jps and paste the output here. This seem to me like outdated server version. You can also check the server logs. That could help as well. Maybe you don’t have space on your disk where server is running?

Yes, I’m sure it’s 0.41.8.

pi@raspberrypi:~ $ ps -aux | grep java
pi 281 2.5 22.8 252540 101444 ? Sl Jul28 185:15 java -jar /home/pi/server-0.41.8-java8.jar -dataFolder /home/pi/Blynk

I’m running the server on a raspberry pi zero wireless which has 3 gb free.
Is there something specific I should look for in the server log?

Do you see any errors?

I don’t see any errors in the log but I was only set to the error level of logging. I have updated it to the trace level and I’ll watch it for a while.

There are no errors in the log. To clarify, I’m running the java8 version of the server software if that makes a difference. It doesn’t look like there is a java8 version of 0.41.9 so I can’t upgrade yet.

It seems like this was an error on the server that has been fixed in version 0.41.10. Now just waiting for a Java 8 version of the server so I can apply it to my system.

Thanks Blynk team for keeping us up and running!

This topic implies that a Java 8 version won’t be available:

Pete.

Thanks, I hadn’t seen that yet. It’s concerning though since as far as I can tell, there is no openJDK version of Java above 8 for arm processors below ARM7, but other distros of Java have issues with email certificates not working. I’m going to play with some work-arounds when I get a chance, but are you aware of any official methods to get Java 9 or higher on ARM processors below 7?

You can get Java 11 for armv5 or armv6 from


I tested and it’s working on RPi Zero.

Does Blynk auth code email work on your RPi Zero with Java 11? I have also tested azul and bell versions on RPi Zero, and it works for the Pi, but blynk email doesn’t work. You can’t email API’s to yourself. The email issue has been discussed at length in multiple other threads and I have yet to see a solution.

Blynk auth code email is working with Zulu OpenJDK on RPi Zero.

Interesting. Could you tell me which OS and which zulu version number you are running. I have a RPi Zero running buster kernel 4.19 with Zulu OpenJDK 11.33.21 and I get a certificate error with the Blynk auth code.

I’m running RPI Zero with:

  1. openjdk version “11.0.4” 2019-07-16 LTS
    OpenJDK Runtime Environment Zulu11.33+21-CA (build 11.0.4+10-LTS)
    OpenJDK Client VM Zulu11.33+21-CA (build 11.0.4+10-LTS, mixed mode)
  2. Raspbian Buster, Kernel 4.19.58+

Thanks for the info. I just reviewed my setup and I found the problem. I hadn’t updated the default path for Java with the new version. After changing this, it works properly. I’ll detail how I did it since it might help others, but I know very little about linux.
Do you know a better way to do this?

Here’s what I did:
I have a raspberry pi zero running the buster OS. However, the version of Java 11 included in the buster package doesn’t support processors below ARMv7 (the RPi Zero has an ARMv6 chip). If you type

java - version

you get an error that java only runs on ARM7+.

The solution is to install a Java build that does support the ARMv6 processor. In this case I used Zulu Java. I downloaded the tar.gz from Java Download | Java 7, Java 8, Java 11, Java 13, Java 15, Java 17, Java 19 - Linux, Windows and macOS and followed the instructions at Azul Zulu Builds of OpenJDK to install it. However, after installing, my pi didn’t “know” to use the new java version. The instructions say to use the command

export JAVA_HOME=/usr/lib/jvm/

but the export command doesn’t work in buster. Then I tried tried deleting the original java using

apt-get --purge remove openJDK*

However, when this removes the incompatible java 11, it automatically installs an incompatible version of java 9. Using the command again to remove java 9 automatically installs the original java 11. So instead I left the original java in place and used the command

sudo update-alternatives --install “/usr/bin/java” “java” “” 1

example

sudo update-alternatives --install “/usr/bin/java” “java” “/usr/lib/jvm/zulu-11/bin/java” 1

to tell the pi that there is a new java available and where to find it.
Then I used the command

sudo update-alternatives --config java

to tell the pi which of the installed java versions to use. This brings up a menu to select which version of java will be active.

This is the best I could come up with, but maybe someone with more linux experience has a better method.

I’m using the following steps to install Zulu Java 11 in Raspbian Stretch/Buster, necessary for Blynk Server

  1. Remove openjdk-11
    sudo apt remove openjdk-11-jre

  2. Download zulu11.33.21-ca-jdk11.0.4-linux_aarch32hf.tar.gz (replacing with correct version/name) from https://www.azul.com/downloads/zulu-community/
    to ~/Download/Java11-Zulu

  3. Copy to /usr/lib/jvm
    sudo cp ~/Download/Java11-Zulu/zulu11.33.21-ca-jdk11.0.4-linux_aarch32hf.tar.gz /usr/lib/jvm
    sudo tar -xzvf zulu11.33.21-ca-jdk11.0.4-linux_aarch32hf.tar.gz

  4. Modify symbolic link to point to new java-11
    Originally, /usr/bin/java -> /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-armhf/bin/java
    a) sudo rm /etc/alternatives/java
    b) sudo ln -s /usr/lib/jvm/zulu11.33.21-ca-jdk11.0.4-linux_aarch32hf/bin/java /etc/alternatives/java
    c) Testing
    java -version

openjdk version “11.0.4” 2019-07-16 LTS
OpenJDK Runtime Environment Zulu11.33+21-CA (build 11.0.4+10-LTS)
OpenJDK Client VM Zulu11.33+21-CA (build 11.0.4+10-LTS, mixed mode)

  1. To run Blynk server manually

cd ~/Blynk-Server
sudo bash ./start_server.sh &

  1. or to run automatically after starting up, modify /etc/rc.local as follows:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

java -jar /home/pi/Blynk-Server/Blynk-Server.jar -dataFolder /home/pi/Blynk-Server/Data & 

exit 0