Category Archives: Raspberry Pi

Add-On Board on Raspberry Pi Can Control Entire Building

If you thought that the tiny credit card sized single board computer, the inexpensive Raspberry Pi or RBPi was only good for home automation and no more, you may be surprised to learn that it can do a lot more – control an entire building, for instance. Of course, it will need assistance in the form of an add-on board, such as the UniPi.

Very often, people have used the RBPi for automatically controlling their sprinkler systems, the lighting in their house or even for guarding their homes while they are away on a holiday. Commercial systems have often used the RBPi as a prototype. A Czech startup with the same name, the UniPi, is now offering a baseboard and an add-on board for building automation that you can use with your RBPi.

The RBPi plugs into the UniPi baseboard via its 26-pin expansion connector. With this combination of the UniPi and RBPi, you can control the entire functions of a modest sized building. For example, it can read signals from different sensors such as humidity, temperature and/or status of alarms and switches to control gates, sprinklers, curtains, doors, lights and more.

To help with the sensors and control, UniPi is also offering a passive sensor hub that comes along with a free temperature sensor and an optional waterproof temperature sensor, should you need one. The UniPi baseboard has 14 opto-isolated digital inputs that can read sensor signals from 5 to 20V and show the status with LEDs. The board can read 0-10V signals on two analog inputs and output 0-10V on another analog output. On-board is a 12V power supply, along with eight changeover relays, which can switch 5A at 230VAC. That makes UniPi adequate for controlling power to sensor devices for an entire building.

For reading sensors, the UniPi is equipped with a single-channel 1-Wire interface. That makes it convenient to connect hundreds of humidity and temperature sensors. UniPi even allows the second I2C port of the RBPi and its UART to be extended with 5V level converters and provides ESD protection for them. Power loss does not affect the timing of the board as it has an RTC or real-time clock module for keeping time. UniPi is compatible with the RBPi model B Rev2 and it is possible to configure it for the Rev1 model as well. However, UniPi does not mention the possibility of compatibility with the latest model of the RBPi, the 40-pin model B+.

On their website, UniPi offers numerous tutorials based on C/Python libraries for people wanting to develop UniPi applications on the Linux-based RBPi. For example, there is the Webiopi, which is specifically useful for connectivity with the Python Internet of Things. Additionally, there is the Wiringpi library for GPIO interfacing and other libraries for Adafruit.

UniPi is offering its baseboard with on RJ45 connector for the 1-Wire interface and two RJ11 connectors – one for the UART and the other for the external I2C. It has one P1 header and another P5 header along with a 2.1mm standard power connector and an RBPi power jumper.

Add a Real Time Clock to Your Raspberry Pi

The Linux-based credit card sized single board computer, the Raspberry Pi or the RBPi is designed to be low-cost and of small form factor. As such, many features that are available on normal computers, but considered superfluous here, have been left out. The real time clock is one among them. That makes the RBPi unable to keep time when its power supply has been removed.

Typically, the RBPi is expected to be connected to the Internet via the Wi-Fi or the Ethernet and to update its time automatically from the Network Time Protocol servers available globally. In the absence of an on-board RTC, when there is no Internet connection or when the power to the board is removed, the RBPi is unable to keep time. However, that can be easily rectified by adding a small RTC module running on DS1307 and a tiny coin battery. This allows the RTC to continue to keep time even when the RBPi does not have power supplied to it.

To make things easy, use Adafruit’s Breakout Board kit for the DS1307 RTC. This kit already has all the parts required, including the coin battery. Although the components can be purchased separately and assembled on a breadboard, the coin battery holder can pose a problem, as it is not breadboard-friendly. The kit on the other hand, has a dedicated place for the battery holder, making it more convenient to use.

To allow the RTC chip to communicate effectively with the RBPi, the two 2.2KΩ resistors on the kit must be left out. There is no need for these resistors since the RBPI already has two 1.8KΩ resistors on-board and they are connected to the 3.3V supply, as the RBPi needs them to be. Therefore, either do not solder the two resistors to the breakout board, or, if you have already soldered them in, remove or clip them out. The breakout board needs 5V, so connect the VCC on the board to the 5V pin of the RBPi.

Now, you will need to set up the I2C interface on the RBPi. For this, your RBPi must be running a kernel that includes the RTC and DS1307 modules. The latest version of the Raspbian OS already has the modules included, but older versions may not have them. Adafruit has a wonderful tutorial that will guide you for setting up and testing I2C on the RBPi, check it out here.

At the command line, you can run the command “sudo i2cdetect -y 0” to check your wiring. If you have a rev2 RBPi, enter the command “sudo i2cdetect -y 1”. Once you see ID #68 being displayed, you know that your wiring is correct, as this is the address of the DS1307. Once you get the kernel driver running, i2cdetect will show UU instead of 0x68, further confirming that everything is good.

The next step is to load up the RTC module and set it up as root. Follow the tutorial for doing that and you can check the time with the command line “sudo hwclock -r”. If you are using the module for the first time, the date will be Jan 1 2000 – set it to the current time, and you are done.

Use Apples as Switches for Your Raspberry Pi

You may rightly question the logic behind using apples as switches for your Raspberry Pi, as against the usual hard plastic ones. Well, for one, we live in an analog world and there is much more fun in integrating items of daily use with your computer. For another, it pays to see the look of astonishment on someone’s face when picking an apple from a basket, if the computer were to reprimand him.

The tiny credit card sized single board computer, the ever-popular Raspberry Pi or RBPi can sense inputs with capacitive touch breakout boards. This is the basics of using several household objects as input sensors for the RBPi. You can use any conductive object, not only an apple, such as pencils (the graphite part), spoons and potatoes including any other fruits or vegetables that you may find handy.

Capacitive touch sensors detect the tiny amount of electric charge every human body carries. The breakout boards have a pad that is sensitive to touch. You can extend this pad to any object by attaching a wire, allowing the object to develop a sensitivity to touch. You will of course need to inform the RBPi of your intentions and to do that, put in some effort in programming it. Get help from this website.

With the hardware above and a few lines of Python, you will soon have a new way of controlling your projects and games that is fun and easy at the same time. There are three types of breakout boards that you can experiment with.

The first type is the momentary capacitive touch sensor. This detects as long as something continues to touch it. The sensor has an LED that glows when anyone touches the pad and remains lit until it detects the end of touch. This breakout board has a large touch-pad and a small copper hole near it. You can solder a piece of wire to the hole and extend it to a capacitive item such as a drawing you have made with pencil (graphite).

The second type of breakout board is the toggle type of capacitive touch sensor. The LED on the board comes on as soon as you touch its pad. The LED remains lit up even when you lift your finger off the pad. The LED will go off once you touch the pad again. Therefore, when you solder a piece of wire to the hole near the touch-pad and connect its other end to any conducting item such as a spoon, you can easily detect if someone has touched the spoon at least once.

The third breakout board is the most versatile of the lot. Surprisingly, it does not have any touch-pads, although it is named as a 5-pad capacitive touch sensor. Instead, it has five copper holes, so that you can connect five objects with five pieces of wire. Therefore, if you have five different fruits or vegetables, you can connect them up and the RBPi will help you to chart their individual responsive speeds against touch.

While the two boards will both need a 10K resistor each connected between the object and the board, the 5-pad touch sensor board does not require any resistors, as it has them on-board.

Raspberry Pi and Wolfram Alpha

If you are looking for something different from the regular Internet search that you get from Google, Yahoo or DuckDuckGo, try the new Computational Knowledge Engine Wolfram|Alpha (www.wolframalpha.com). In 2009, Stephen Wolfram Research released the new engine that could answer questions written in natural language.

When you try out Wolfram|Alpha, you may be surprised that the site does not actually work like the search engines you are so accustomed to. In fact, you may not see results to some of your simple queries. Regular search engines attempt to catalog the information on the Web, and that is exactly what Alpha does not do. Rather, the Wolfram engine is a computational knowledge engine.

Traditional search engines scour the web for sites to add them to their directories. They rank different pages up or down based on the algorithms built into them, judging them on several factors. If you have a public web site and it has links to it from other sites, chances are that traditional search engines will pick it up without any effort from your side.

It is different for Wolfram|Alpha. They rely on their own licensed databases where the content entered is tagged and cataloged by employees of Wolfram Research. To give an example of the scale of things we are dealing with, at the time of launch, Alpha servers had more than 10 trillion individual chunks of data. According to Wolfram Research, its employees vet all the information for accuracy before adding anything to the Wolfram|Alpha database.
Apart from the scientific search engine, Wolfram Research also has a piece of software called Mathematica, which is a highly respected program that helps people manipulate data in many ways. Now the company has released its Wolfram Language and this is the underlying platform for all its engines from Mathematica to Alpha. The best part is that you can run it on your tiny, credit card sized single board computer, the Raspberry Pi or RBPi.

Not only is Wolfram Language free to download and use, it runs on any platform and that includes RBPi and supercomputer clusters alike. You can run it locally or in the cloud to suit your requirements. According to Wolfram Research, its performance on the RBPi is somewhat faster than the NeXT cubes when Mathematica first shipped. Considering that the NeXT cubes were multi-thousand-dollar workstations, it is surprising what your tiny RBPi is capable of.

With the RBPi taking computing back to the level of hobbyists once again, the Wolfram Language and Mathematica take it to the next level for schoolchildren. In essence, the combination becomes a highly effective knowledge-driven computational device for kids to learn about programming computers at practically no major cost.

Wolfram Language claims to be ten times faster at development compared to other languages. This is because Wolfram Language aims to maximize the productivity of the programmer by automating most of the work and building as far as possible directly within the language. The programmer has to build only the unique parts of the code, while relying on the language for everything else. The result is concise readable code, which is easy to debug. Large systems can be simply built up incrementally with symbolic components.

Is banana pi tastier than raspberry pi?

It is surprising that for so long, no one had come up with a variant or clone of the ever-popular credit card sized single board computer, the Raspberry Pi or the RBPi. Ultimately, there is a Banana Pi from Lemaker, a China-based company. Banana Pi, although an RBPi-alike, is not a direct clone, but rather an evolution. Lemaker has used a more modern dual-core processor – the 1GHz ARMv7 AllWinner A20 – in place of the single-core ARMv6 700MHz Broadcom BCM2835. Lemaker has doubled the RAM to 1GB and Banana Pi has additional connectivity such as a USB OTG port and a SATA 2.0 port with built-in 5V power supply for 2.5-inch storage devices up to 2TB.

Performance comparisons between the two are stunning. During testing, the 95th percentile SysBench time for the Banana Pi was 29.72ms, outshining the RBPi’s 51.45ms. Banana Pi took only 2.39s to compress and 0.21s to decompress a 10MB gzip test file. RBPi was much slower on the same test and clocked 8.64s and 3.08s respectively. This proves that the dual-core processor is better at multithreaded applications as compared to the single-core processor on the RBPi.

Banana Pi has a somewhat larger footprint than the RBPi, which makes it incompatible to the several RBPi cases and mounts available in the market. Although the 26-pin GPIO header is claimed to be pin-for-pin compatible electrically, its position is shifted from the RBPi’s layout to make room for a mounting hole. Therefore, larger piggyback boards foul with the composite video output on the Banana Pi.

The A20 chip on the Banana Pi lacks the CSI or Camera Serial Interface and uses a parallel camera interface instead. Therefore, none of the off-the-shelf camera modules meant for the RBPi will connect to the Banana Pi. Lemaker has promised a camera module of its own in the near future.

Rather than produce a distribution just for their board, Lemaker has taken the route to porting existing Linux distributions to the Banana Pi. Therefore, users are treated to flavors of Linaro, Arch, openSUSE, Raspbian and Google’s Android as SD Card images. These distributions had trouble addressing the GPIO ports at the time of launch. However, Lemaker has worked hard and removed these bottlenecks. Now, most projects based on Wiring Pi, Raspbian or RPi.GPIO libraries have no trouble at all working on Banana Pi.

The Banana Pi, along with its faster processor, also boasts of faster and more reliable USB ports. However, the most interesting addition is its SATA connectivity. This is not offered even in the newest RBPi Model B+. You can connect a mass storage device to the Banana Pi via the angled SATA port on the top side of the board, without tying up one of the USB ports. However, Banana Pi has only a 233Mb/s network throughput.

Overall, although Lemaker may have blatantly attempted to copy the RBPi, it has demonstrated possibilities of a few impressive improvements. On the positive side are the more powerful processor and the useful SATA port. On the negative side, there is the larger footprint, lack of CSI and altered layout along with a bottlenecked network and software bugs.

Building a UPS with Raspberry Pi and Supercapacitors

It is always a dilemma when integrating a Raspberry Pi (RBPi) Single Board Computer into a project that works on the mains voltage and the RBPi has to turn it on or off. The difficulty is in deciding whether to power the RBPi separately or maybe power it from a UPS.

Lutz Lisseck solved the problem in an ingenious way. He was looking for a way to shut down his RBPi gracefully, after it had turned off his ambient-lamp. Since the lamp operated directly from the mains and Lutz wanted to turn it on/off from the mains power switch, he would normally have two choices. He could either use a mains wall adapter to power his RBPi or use a battery pack as a traditional UPS. He decided he did not like either, and instead opted for a third alternative, building a UPS with supercapacitors.

Lutz used two 50F supercapacitors to make his UPS. When the lamp was on, the capacitors stored enough charge to outlast the RBPi. When the SBC cuts the power, a GPIO pin senses the loss and informs the RBPi to begin its shutdown sequence. The RBPi takes about 30 seconds to shut down, and the capacitors happily power it for the time. Supercapacitors are usually rated at 2.7V; therefore, Lutz had to put them in series for the RBPi to get 5V. An alternative would be to place the capacitors in parallel and use a step-up converter to jack up the voltage. An upside to this is the capacitors will supply the RBPi for a longer time.

Since the project was a very simple one, there are some shortcomings in using the RBPi this way. First, the capacity is just about enough to shut down the RBPi in 30 seconds. However, when switched on, the capacitors take time to charge and the RBPi has to wait for about 10 seconds, before it gets adequate voltage to boot. Another drawback is that although the RBPi has only 30 seconds to shutdown, the capacitors discharge very slowly, and the system has to remain unplugged for about 10 minutes after shutdown, before it will boot up again. For this ambient-lamp project, Lutz does not consider that as a handicap.

Using supercapacitors over batteries has some advantages as well. The capacitors have a lifetime that far surpasses that of batteries. For example, you could charge and discharge supercapacitors completely several 100,000 times. Moreover, supercapacitors can be charged and discharged at rates that are not possible with a battery. A completely discharged supercapacitor can be fully charged up in just 2 minutes.

Therefore, with the supercapacitors in place, you do not need to worry about improper shutdown when the mains supply collapses. A GPIO pin on the RBPi senses when the mains voltage has been removed and the RBPi immediately begins a shutdown sequence. Whether using the supercapacitors in series or in parallel, a low value resistor (0.5-2.0 Ohms) must be placed in series with the batteries to limit the inrush current at startup. As the resistor can get hot, preferably a high wattage type should be used.

Battle the Sun with a 21W LED and a Raspberry Pi

Lighting up an LED or an array of LEDs and controlling their brightness is a simple affair with the tiny credit card sized single board computer popularly known as the Raspberry Pi or the RBPi. The RBPi runs a full version of Linux and you can use it to drive an array of bright LEDs with it. If you construct it like Jeremy Blum did – he put up the LEDs on his graduation mortar board and wore the RBPi on his wrist on his graduation day – you can be sure of getting a lot of excited remarks from friends and onlookers.

Jeremy wanted to let others interact with the LED on his cap. Therefore, he developed the idea of “Control my Cap” project. His control system consists or a wrist computer comprising an RBPi together with an LCD/button interface. That allows Jeremy to monitor the status of the cap, adjust the brightness of the LEDs, change the operation mode and toggle the wrist backlight. If there is any trouble in connecting with the LED interface, the reasons will be listed on the LCD.

The RBPi is programmed to connect automatically to a list of pre-allowed WPA-protected Wi-Fi hotspots as soon as it is booted. This allows Jeremy to set the wrist interface and the LEDs to a web-controlled mode, let the LEDs take on a static color or have them follow a rainbow color pattern. The cap has a total of 16 LEDs, rated at 350mA each, with four each of Red, Green, Blue and White in four strings. A constant current driver that has a PWM control drives each string of LEDs. A separate on-board switching controller generates the 5V for the RBPi.

As the whole project is portable, a battery powers it. Jeremy used a laptop backup rechargeable battery for his project. At full brightness, the array of LEDs consumes a total power of 21W and is easily visible is bright sunlight. With an 87 Watt-hr. capacity, the battery is able to power the cap for an entire day and more. Additionally, it has a 5V USB port, which Jeremy uses for charging his phone.

Jeremy put up a mobile website controlmycap.com to allow anyone to submit colors for the color queue of the cap to be used in the web-controlled mode. In this mode, the wrist computer grabs the 10 most recently submitted colors from the mobile site constantly, displaying them on the cap. Additionally, when using a color set for the first time, the RBPi informs the requester by a tweet that their color combination is about to be displayed. The RBPi communicates with the cap via a single USB cable, which doubles as it power supply cable as well.

Jeremy used the FoxFi app on his Samsung Galaxy S4 smartphone to generate a Wi-Fi hotspot and the RBPi was able to connect to the Internet through this. The remote webserver hosting the controlmycap.com website also stores the color requests in an MYSQL database, which the RBPi queries for updating its commands.

Use Raspberry Pi to Control Your Garden Sprinklers

People who have a lawn in their backyard know how important it is to water it carefully to keep it looking green and lush. The timing has to be right to prevent the grass in the lawn from drying off and allow just enough water so that the lawn is not flooded. Most people use sprinklers to wet the lawn evenly. However, timers sold in the retail stores for controlling the sprinklers have only limited functionality that leaves users unsatisfied.

Most people are busy and on the move, which does not allow them much time to monitor the working of the sprinklers. With the timers purchased off the shelf, it is not possible to have flexible watering schedules and remote control is not a feature.

This unsatisfactory scenario of the uncontrollable lawn sprinklers led Ray Wang to set about designing his own sprinkler controller. He built his first functioning prototype “The Mint-tin Water Valve Controller.” It used an Arduino Pro Mini and a homemade PCB with a wireless transceiver. Along with Chris Anderson, the editor-in-chief of Wired magazine and the CEO of 3DRobotics, he turned this project into a potential business opportunity. It grew into an open-source, web-based smart sprinkler controller project – the OpenSprinkler.

For Ray, keeping OpenSprinkler as an open-source project is important, as he is an educator who always wants people to not only use a product, but also to have the opportunity to learn how the product works internally. The project has a strong educational purpose, as anyone can design a new sprinkler based on this project and not have to reinvent the wheel, a great way of promoting technological innovations.

Starting with OpenSprinkler v1.0, Ray improved it to v2.1 before moving over to the affordable, tiny credit card sized single board computer, the Raspberry Pi (RBPi). The advantage is that the RBPi’s GPIO pins can directly control the sprinkler valves. Thus, on Feb18, 2013, was born the OSPi or OpenSprinkler Pi v1.0.

A number of enthusiastic users helped in porting the Arduino code to Python for use with the OSPi. In the process, they introduced new features such as advanced logging and a built-in mobile frontend. Others revamped the code and provided a more modern, streamlined user interface. Ray has made a pre-configured SD card image where the OpenSprinkler software is pre-installed. If you need to control your lawn sprinklers, all you need to do is download this image, burn it into an SD card and pop it into your RBPi. Of course, you will need the sprinkler extension board, which houses all the hardware necessary for making the project compatible with the standard 24VAC sprinkler valves used for watering and irrigation systems.

OSPi makes the entire project much more convenient and intuitive compared to traditional sprinkler controllers that have buttons to set everything and a tiny LCD, which hardly helps. OSPi is a web-based controller that allows remote access. The user can additionally pull in weather data online for helping to adjust watering schedules when necessary.

Raspberry Pi Detects Trains in Stockholm Subway

Imagine waiting for a train in a subway. As the train arrives, a nearby poster of a woman has hair blowing all over her face, as if in response to the wind from the incoming train. As the train stops, the woman in the poster clears her hair from her face and resumes her smile, until the next train arrives. The Stopp Family, a Stockholm production company and Akestam Holst, an ad agency, have joined forces for modifying one of the play screens of Clear Channel in the Stockholm subway. The idea was to simulate the effect of turbulence from the train catching the model’s hair as it arrives at the platform.

This required a device that could sense the arrival of the train without reacting to the passing passengers. After studying several possible solutions such as wind sensors and sound detection the team came to settle on an ultrasonic sensor for measuring the distance.

The team connected the ultrasonic sensor to the popular single board computer, the Raspberry Pi or RBPi, which was running a Python socketserver. The RBPi sent the measured distance to a connected client at predefined intervals. The client, a flash application, received the measured distance and when this reached a predefined value, triggered a video of the model’s hair blowing in the wind.

The most critical factor was in deciding when to trigger the video. The distance measured by the sensor was about 4 meters when the train was on the platform, which increased to 7 meters when there was no train. To prevent false triggering, the team had to set up some rules for the video to trigger to play. They found that best results were obtained when the video was triggered with distance readings between 3.9 and 4.1 meters. Moreover, once the video had played, it could be triggered again only after the client received three readings with distances greater than 6.9 meters. With these two rules, they were able to prevent the same train triggering the video more than once, while also preventing the video from being triggered by nearby people.

With this simple but stunning project, the team is able to extend the existing and create new technical solutions further. They can now define new interactive platforms. Rather than simply changing advertisements to fit the technology, they are now in a position to adapt technology to fit ideas that are more creative for advertising.

Ultrasonic sensors work by sending out bursts of ultrasound – sound that is beyond the range of human hearing – at about 40 KHz. The RBPi generates the timing for the bursts and waits for an echo. The sound travels until it meets an obstacle that can reflect it back to the transmitter, in the form of an echo. A receiving sensor, placed close to the transmitter, senses the echo and informs the RBPi. By multiplying the speed of sound with the measured time elapsed between the original burst and its returning echo, the RBPi calculates the distance travelled by the burst and hence, the distance of the obstacle from the unit.

Automation Controller Uses Raspberry Pi Compute Module

Remote control has a new face. Based on the tiny credit card sized single board computer Raspberry Pi or RBPi, Techbase has designed a Linux-based ModBerry automation computer. They back it up with an iMod cloud platform. ModBerry is all about remote control.

This version of RBPi was introduced lately and known as the Compute Module or Computer-on-Module. People in Poland have taken up the RBPi Compute Module wholeheartedly and turned it into ModBerry. Initially, the Polish startup Sher.ly started with Sherlybox, a private cloud storage device based on the RBPi COM (Compute Module). Now, Techbase, the industrial computer manufacturer from Gdansk, Poland, has based their automation computer ModBerry 500 on the RBPi COM.

The RBPi COM is a part of the development kit that Farnell Element 14 and RS Components have released recently. The kit also contains a separate baseboard. Later plans include selling the module independently.

Techbase is already in the market with numerous Linux-ready and Linux-based automation controllers and industrial computers. Techbase supports some of its computers with its cloud-based iMod, iModCloud and iModWizard, which also provide Software-as-a-service or SaaS applications. This includes its telemetry computer iMod-X1000.

In contrast, Sherlybox is a private crowd based on local storage. With the iMod ecosystem, users can store data and control several iMod compatible computers via a cloud platform. By combining ModBerry 500 and the software from iMod, users have access to applications in the general automation market and intelligent buildings. According to Techbase, they can also monitor and control wind farms, GSM base stations and power stations. Users can set up their devices as protocol converters, telemetry modules, data loggers, servers, MODBUS routers, PLC devices, SNMP agents and many more.

The iMod system is a versatile arrangement offering multi-level, user access cloud management via configuration files. According to Techbase, its iModWizard makes it unnecessary for the user to possess any programming knowledge. Users can freely create different user profiles such as end-user, administrator and system designer. Additionally, iModCloud helps users to update software and configure services.

With iModCloud, users have custom-based actions including notifications and management, which are extremely important for remote control. Users can see the location of GPS-enabled devices on maps provided as part of data visualization capabilities. Users can access their data on smartphones or tablets. Techbase assures security via SSL certificates and encrypted VPN communication.

The ModBerry 500 operates on a wide-ranging 9-24V AC/DC supply. It is available in commercial as well as in extended models, which can work between -25 and 80°C. The physical dimensions are 106x91x61 mm. The ModBerry 500 gets its computing power from the RBPi COM, which provides it with the 700MHz ARM11 Broadcom system-on-chip processor running Raspbian Linux. The module also shares its 512MB RAM and its 4GB NAND flash storage with the ModBerry.

The hardware features of the ModBerry include several real-world ports such as a USB 2 host port, a 10/100 Ethernet port, a slot for SIM card, audio out and a user programmable button. Other ports include an HDMI port and a reset button. There is also a pair of RS-232 and RS-485 ports, CAN ports and a 1-wire bus.

For more information on ModBerry 500, refer to this website.