Node-red dashboard plugin provides a quick setup for a user interface. But sometimes, you may want to change the template to suit your own application. The following post will provide a simple method for editing the title bar icon and tags when loading into the dashboard.
The Node-red icon (white background) in the dashboard is stored in
Windows
C:\Users\Developer\.node-red\node_modules\node-red-dashboard\dist
Raspberry Pi
/home/pi/.node-red/node_modules/node-red-dashboard/dist
If the above directory does not exist, you may try the below directory.
Raspberry Pi
/home/pi/.node-red/node_modules/dashboard-evi/dist
the logo shown in title bar is icon64x64, while the dashboard loading page logo is icon120x120. Chrome will cache the title bar icon, so you may want to delete the history and refresh the page to see the update.
It is better to change the configuration before opening the dashboard website to prevent using the old logo stored in cache. Otherwise, search for the cache or backup flow to check whether it is updated or not.
grep -ril '/home/pi/.node-red' -e "your old content in string"
Reminder
You may also change the index.html file to point to another file other than icon120x120.png.
Updating Node-red may reset the icon to factory settings, so you could also write a script to copy the icon for every start-up. To learn more about running scripts on startups, you may visit this link.
...
...
...
editorTheme: {
menu: { "menu-item-help": {
label: "Node-RED Pi Website",
url: "http://nodered.org/docs/hardware/raspberrypi.html"
} },
projects: {
// To enable the Projects feature, set this value to true
enabled: false,
workflow: {
// Set the default projects workflow mode.
// - manual - you must manually commit changes
// - auto - changes are automatically committed
// This can be overridden per-user from the 'Git config'
// section of 'User Settings' within the editor
mode: "manual"
}
}
}, //Remember to add ',' contextStorage: {
default: "memoryOnly",
memoryOnly: { module: 'memory' },
file: { module: 'localfilesystem' }
}
}
Variables saved in memory and localfilesystem are in fact different variables, they can have the same name. So when you save or get the variables, remember to specify which one you are pointing at.
This will store the variable storedInMemory in RAM.
flow.set("storedInMemory", true)
or
flow.set("storedInMemory", true, "default")
or
flow.set("storedInMemory", true, "memoryOnly")
And this will store the variable in localfilesystem. The context data will be stored under ~/.node-red/context/ by default.
flow.set("storedInMemory", false, "file")
Similar method to get the variables stored in localfilesystem
Put your script before exit 0. Here is an example of replacing in file text and copying files. The ampersand & at the end of the lines indicates the rc.local script does not wait for that script ends before executing the next line, which is important when you have an infinite loop such as blinky.
#!/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
sudo sed -i 's/Old string to be replaced/new string to be replaced/g' /home/pi/textfile.txt &
sudo cp -r /home/pi/somephoto/* /home/pi/destinationdir/ &
exit 0
sed is a streamlined editor and could edit the file without opening a text editor. the option -i edit the textfile.txt itself, or else, changes will print to the console only. The s/ stand for substitute and /g for global replacement. Man sed for more information.
Reminders
Someone suggested setting up the script in bash.rc, which runs every time an interactive shell is prompted such as logging in to the shell. Usually Raspberry pi will enable auto login so most of the case bash.rc runs after boot up.
USB wifi adapters are not very user-friendly for Linux devices. Most of the adapters’ drivers are neither preinstalled nor will be automatically installed for your Linux OS. Fortunately, modern Raspberry Pi (such as Pi 3, 4, and zero w) models come with onboard wifi. Yet you may also find it handy to have additional wifi systems for some projects.
Environment
Hardware: Raspberry Pi Zero W, USB wifi dongle Realtek 8812CU and RTL8188FTV
Kernel: 5.10.17+
OS: Raspbian GNU/Linux 10 (buster)
Finding drivers/ firmwares for your USB dongle
I previously bought a wifi dongle running on the chip Realtek 8821CU and wanted to build a wifi repeater for my raspberry pi zero w. However, there is no easy install package for raspberry pi zero. I have tried several installers following the steps on Github.
(https://github.com/morrownr/8821cu). None of them works and I suspect that the drivers do not support armv6 CPU which the Pi zero is using. If you are planning to install it on an armv7 device, please give them a try.
Then I decided to give up and bought another dongle running on an RTL 8188 FTV chip and it works after installing the firmware.
If there are multiple wlan such aswlan0 as well as wlan1. Congratulations!! your Pi could recognize your USB adaptor. Usually, wlan0 is your onboard wifi (if your device has one) and the other wlan are your additional wifi systems. If your device does not include onboard wifi, then wlan0 is your external wifi USB dongle.
If wlan1 does not show on ifconfig -a, like me, then run a lsusb.
pi@raspberrypi:~ $ lsusb Bus 001 Device 002: ID 0bda:f179 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device 002 f179 Realtek Semiconductor Corp is the wifi dongle. So at least the wifi dongle is working. Otherwise, there will be nothing about it.
Then run a lsmod to check whether your kernel modules are currently loaded.
For me, there is nothing about my USB adaptor. So it could be concluded that the driver is not installed on my Raspberry Pi Zero W.
The firmware-packages for the more common devices are as follows: firmware-ralink for Ralink devices (RT5370/RT3070/etc.) firmware-realtek for Realtek devices (RTL8188CUS/etc.) firmware-atheros for Atheros devices.
Run apt-get install <firmware-package> to install the firmware on Raspbian (renamed to Raspberry Pi OS).
Unfortunately, my Realtek 8812CU and RTL8818FTV drivers are not included in the firmware package. So I have to go for other options. Luckily, MrEngman (https://www.raspberrypi.org/forums/viewtopic.php?t=241185) wrote a script to determine your USB dongle and kernel version and install your suitable driver. Run the following commands:
I do not recommend editing /etc/network/interfaces. There is no need to edit the file for a Raspberry Pi Zero running Raspberry Pi OS lite. Rather, do your modification on /etc/wpa_supplicant/wpa_supplicant.conf. If you have installed the driver correctly, the network will automatically pop up in ifconfig -a.