Frequently Asked Questions
Click on any question to view its answer.
Where can I buy xxx?
Most of the devices we discuss are easily found. Amazon and ebay are good starting places to look. If you are looking for a Grove device, Seeed Studio has the complete product line. There are also many Grove resellers. Other good device suppliers are Adafruit and SparkFun.
I've got two systems running separately. Can I wire them together?
Absolutely. Add a Terminals Sharing Device to each system, adding any terminals you want to the Device. Any wires connected to like named terminals on the two systems will be connected between the two systems.
How fast is the system? If I have a switch wired to a light and I flip the switch, will I notice a delay?
The system is much faster than you will notice. Based on our measurements, the system will add anywhere from 1/100 to less than 1/1000 of a second of delay. If you notice a delay, it is probably because the switch or light interface hardware is slow.
How do I install Virtual Wiring?
Go to our Installation and Start Up Page for complete instructions.
I have a running Virtual Wiring system and I want to upgrade to a newer one. What's the recommended way to do an upgrade?
If you haven't customized your System, you can delete the older System and install your new one. If you have made changes to the older System (or you aren't sure), install the new System into a different directory and copy your changes into the new System. Hopefully, all your changes are in Scripts located in your "user" directory, so you can just overwrite your new "user" directory with your older one. Once you have your new System updated with your changes, you can delete your older System.
I've got a running system I'm controlling locally from a browser, but it is running behind an internet firewall. How do I control and access the system from anywhere on the web?
There are a number of ways. The simplest is to poke a hole in your firewall and expose the host and port your system is running on to the web. Most routers have a "port forwarding" setting for doing this. (Be aware that exposing your system this way will make it accessible to anyone on the web.) A secure way of poking a hole in your firewall is also possible. The idea is to connect to your host through a hole in the firewall as before, but over a password protected, encrypted connection. To do this, your host needs to be running an SSH server (most are or it is easily enabled), and the system you are browsing from needs SSH client software (again, most *nix systems have this or it can be installed. Windows systems may need to install an SSH client, but these are available for free on the internet). Poke a hole in your firewall using "port forwarding", but this time, forward your host's SSH port (default is port 22). Then on your client, anywhere on the internet, you can login to the host using SSH: ssh -L2001:localhost:4567 -p 2222 -l host_user internet_address Use your own values for your host's web server port (here we are using port 4567), the port number of the firewall hole (here we are using 2222), the internet address of your firewall (internet_address), and the user name for logging into your host (host_user). If things are set up correctly, SSH will ask you for your user password. Type it in, and you now have an encrypted connection to your host. Access it from your browser by typing in the address "localhost:2001".
Can I control and monitor Virtual Wiring from a smartphone?
Yes you can. Check out our Blynk Devices.
How do I get a Script to run automatically each time I start up Virtual Wiring
You can get any Script you want to run automatically when Virtual Wiring starts up by running it in the startup Script. To find the startup Script, go to the Scripts page, click on the View Filter, and select "user". You should see a Script called "startup.script" - this is your startup Script. Open "startup.script" by clicking on its "Edit" action. If you want to get a script called Scripts/user/my_script.script to run automatically when Virtual Wiring starts up, add the following line to startup.script: run_script("Scripts/user/my_script.script") Save your modified startup.script Script by clicking on the Save button at the bottom of the page. Now your my_script.script Script will run each time you start up Virtual Wiring.
How do I create a new Script for the system?
What is a USB device's "port_location"?
The "port_location" is where your host computer sees your USB device. When you add a USB device to your host system, the system should create a file in the "/dev" directory for your new USB device. To see the new file, plug in your USB device and type: "ls -lrt /dev" from a command prompt on your system. You'll see a bunch of file names fly by, but somewhere near the bottom of the list, you should see a name like "ttyUSB0", "ttyAMA0", or "cu.usbmodem411" (to name a few). If you aren't sure, try unplugging your USB device, run "ls -lrt /dev" again, and see what file name(s) goes away. Once you have identified your USB device's file name, the port_location will be "/dev/<USB file name>". So if your file name is "ttyUSB0", the port_location would be "/dev/ttyUSB0". On Windows systems, the port_location is something like "COM1", "COM2", or "COM<some other number>".
OK, I know the USB device's port, but when I try to access it, it says I don't have permission. What's wrong?
Some *nix systems create a port location file which doesn't have read/write permissions for normal users. You need to give yourself permission. A simple way is to change the permission on the file by typing: sudo chmod a+rw /dev/<USB file name> Where <USB file name> is the name of the file (ttyUSB0, etc.). This fix will only work until you power down the system or unplug the device. A more permanent fix is to add your user name to the group file (/etc/group) for the group assigned to your device. To see the group type: ls -l /dev/<USB file name> A common group name is "dialout", but you should check to see the group name of your device before adding your user name to a group.
Where is the Virtualizer program located?
The Virtualizer program does all the low level work for the Virtual Wiring system - things like talking to devices. Sometimes, you may want to add new programs to your system (for new devices) or create new Scripts. To do these things, you need to know where the Virtualizer program directory is located. When you installed Virtual Wiring, it created a Virtual Wiring directory. Inside that directory, there's another directory called "virtualizer". Inside the "virtualizer" directory is where the Virtualizer program lives.
Where are Scripts located?
Scripts are located in the "Scripts" directory. The Scripts directory is in the "virtualizer" directory, the same directory that the Virtualizer Program is in (see Where is the Virtualizer Program Located?).
Where should I put new Scripts?
Generally, it's a good idea to put any Scripts your are adding to your system in a place where you can easily find them. This makes editing them easier, and if you move to a new system or upgrade your Virtual Wiring software, you can easily copy your Scripts over. When you installed the Virtual Wiring program, it created its own directory. In that directory, there's a "virtualizer/Scripts" directory. Inside this directory, there's a directory called "user". The "virtualizer/Scripts/user" directory is meant for Scripts created by users. Put your new Scripts in there. If you want, you can create subdirectories within the "user" directory.
Where should I put new Virtual Device programs?
Virtual Device programs need to be in a place where the Virtualizer program can find them. They can be either in the "virtualizer" directory, where the Virtualizer program lives, or in the "virtualizer/programming" or "virtualizer/contrib" subdirectories. Generally the "programming" directory is the best place, because it's meant for new programs and Virtual Devices. Generally, it's not a good idea to clutter the top level "virtualizer" directory, and the "contrib" directory is best left for 3rd party software bundled with the Virtual Wiring system.