Solar Powered WiFi Weather Station V2.0




This Instructable is a continuation of my earlier weather station project. It was quite popular on the web, people around the globe made their own by following it and given valuable feedback for improvement. By taking consideration of the comments and Q&A section of my earlier project, I decided to make this new version Weather Station. I also made a custom PCB for this project, so any one with little knowledge on electronics circuit can be made this project. My V-2.0 PCB can also be used for any application in the Arduino platform. Following are the salient features of the new weather station.

This project is also an entry in Hackaday Prize 2019. Please like, follow and share. It will be helpful to me.


1. Connect to Wi-Fi, and upload the data to the web ( Blynk App and Thingspeak)

2. Monitoring Weather parameters like Temperature, Pressure, Humidity, altitude and UV level, etc.

3. Extra ports to add more sensors

4. Remote Battery Status Monitoring

5. Uses a powerful Li-Ion Battery ( 3400 mAh ) and Solar Panel (1W)

6. Independence from the external power source

7.Can be installed in remote sites or geographically challenging environments

8. Being Solar powered, it is an environment-friendly device.

Step 1: Components and Tools Required

Components Used :

1. Wemos D1 Mini Pro (Banggood / Amazon )

2. TP 4056 Charging Board (Banggood / Amazon )

3. BME 280 sensor ( Amazon / Bangood )

4. BMP280 ( Banggood / Amazon )

5. DS18B20 Sensor ( Banggood / Amazon )

6. Switch ( Banggood / Amazon)

7. Screw Terminals ( Banggood)

8. PCB standoffs ( Banggood / Amazon )

9. 18650 Battery ( Amazon)

10.18650 Battery Holder ( Banggood / Amazon)

11. Solar Panel ( Banggood )

12. Straight Headers Pin ( Banggood / Amazon )

13. 22 AWG wire ( Banggood / Amazon )

14. Weather Station V2.0 PCB ( PCBWay )

15. Super Glue ( Amazon )

16. 3D printing filament -PLA ( GearBest )

Tools Used :

1. 3D Printer ( Creality CR-10 )

2. Soldering Iron ( Amazon )

3. Glue Gun ( Amazon )

4. Wire Stripper ( Amazon )

5. Wire Cutter ( Amazon )

Step 2: Power Supply

My plan is to deploy the Weather station at a remote place ( my farm house).To run the Weather Station continuously, there must be a continuous power supply otherwise the system will not work .The best way to provide continuous power to the circuit is by using a battery.But after some days the battery juice will run out, and it is really difficult job to go there and charge it. So a solar charging circuit was proposed to user free energy from the sun to charge the batteries and to power the Wemos board.I have used a 18650 Li Ion battery.

The battery is charged from a Solar panel through a TP4056 charging module. The TP4056 module comes with battery protection chip or without the protection chip.I will recommend to buy a module which have battery protection chip included.

About the TP4056 Battery Charger

The TP4056 module is perfect for charging single cell 3.7V 1 Ah or higher LiPo cells. Based around the TP4056 charger IC and DW01 battery protection IC this module will offer 1000 mA charge current then cut off when charging is finished. Furthermore when the battery voltage drops below 2.4V the protection IC will cut off the load to protect the cell from under voltage.It also protects against over voltage and reverse polarity connection.

Step 3: Monitoring Temperature and Humidity by BMP/E280

In the earlier days weather parameters like ambient temperature, humidity and barometric pressure were measured with separate analog instruments: thermometer, hygrometer and barometer.But today the market is flooded with cheap and efficient digital sensors that can be used to measure a variety of environmental parameters.The best examples are sensors like DHT11, DHT 22, BMP180, BMP/E280 etc.

In this project we will use BMP280 / BME280 sensor.

BMP 280 :

BMP280 is a sophisticated sensor that very accurately measures barometric pressure and temperature with reasonable accuracy. The BME280 is the next-generation of sensors from Bosch, and is the upgrade to the BMP085/BMP180/BMP183 - with a low altitude noise of 0.25m and the same fast conversion time. The advantage of this sensor is that it can use either I2C or SPI for communication with microcontroller. For simple easy wiring, I will suggest to by I2C version board.

BME280 :

The new BME280 sensor, an environmental sensor with temperature, barometric pressure and humidity.The BME280 is the next-generation of sensors from Bosch, and is the upgrade to the BMP280.This precision sensor from Bosch is the best low-cost sensing solution for measuring humidity with ±3% accuracy, barometric pressure with ±1 hPa absolute accuracy, and temperature with ±1.0°C accuracy.It can be used in both I2C and SPI.

Note : BME280 can measure humidity but BMP280 can't. In market BMP280 is also available by the name of BME280. So be sure whether it is a BMP280 or BME280.

Step 4: Additional Ports for More Sensors

The Weather Station V2.0 board have 5 additional ports to hook up more weather sensors.The following additional sensors can easily hooked up :

1. GY-1145 Sensor: for measuring UV Index

The SI1145 is a sensor with a calibrated UV sensing element that can calculate UV Index.It can communicate via I2C communication (address 0x60).You can hook up this sensor with I2C port in the board which is located just side to the power switch.

You can read this article to know more about this sensor.

You can buy this sensor from Banggood.

2. HDC1080: for measuring temperature and humidity

The HDC1080 is a digital humidity sensor with integrated temperature sensor that provides excellent measurement accuracy at very low power.It can also communicate via I2C communication.

You can read this article to know more about this sensor.

You can buy this sensor from Banggood.

3. DS18B20: for measuring temperature

It can measure temperature with a minimal amount of hardware and wiring. These sensors use a digital protocol to send accurate temperature readings directly to your development board without the need of an analog to digital converter or other extra hardware.It uses one-wire protocol to communicate with microcontroller. It can be hook up in port-P2 in the board which is located on the right side of the Wemos board.

You can read this article to know more about this sensor.

Step 5: Using an External Antenna ( 3dBi )

The Wemos D1 mini Pro board have an inbuilt ceramic antenna along with provision for connecting an external antenna to improve the range. Before using the external antenna, you have to reroute the antenna signal from the built-in ceramic antenna, to the external socket. This can be done by rotating the small surface mount (0603) Zero Ohm resistor (sometimes called a link).

You can see the above picture, how I have done this.

You can also watch this video made by Alex Eamesto to rotate the zero ohm resistor. Then snap the antenna SMA connector into the Wemos Pro mini antenna slot.

Step 6: Monitoring Battery Voltage

The weather station is run by a 18650 Li-Ion battery, so it is very important to monitor its status. The max voltage input to the Wemos board is around 3.2~3.3V but a fully charged 18650 battery voltage is 4.2V. So to measure this voltage we have to step down the voltage by using a voltage divider network.

The Wemos D1 mini already has an internal voltage divider that connects the A0 pin to the ADC of the ESP8266 chip. The voltage divider is made up off 220k (R1) and 100k (R2). So, we have to add an external resistance with the inbuilt 220k resistor to read the battery voltage. By using a 100k resistance we can measure the max voltage of the battery, but taking some margin, a 220k resistor is selected. It is named R1 on the PCB board and located just above the battery holder.

To select the voltage divider resistance values, you can use this online calculator.

You can also read this article on battery voltage monitoring.

Step 7: Implimenting Deep Sleep Mode

The heart of the Wemos Board used in our Weather Station is an ESP8266 SOC which is a power hungry chip. Our objective is to run the device by using a 18650 battery but the demand for power usually makes battery operation impractical.

Another problem is that as the device will run continuously, it is quite obvious that the device will experience warming, and therefore the measured temperature will be higher than the ambient temperature.

From the above, it is clear that we have to lower the power consumption of the ESP8266 WiFi chip. To do that, we’ll use the Deep Sleep mode which is the most power efficient option for ESP chip. It allows to put the ESP8266 into hibernation and saves the battery. You can wake up it at regular intervals to make measurements and publish them.

Component Operation mode ----- Sleep mode

1. ESP8266 170 mA -------- 10 uA

2. CH340 12 mA --------- 50 uA

3. Built in LED 3 mA ----------- 0 uA

4. Voltage monitor 0.006 mA ----- 6 uA


Total185 mA ---- 66 uA

If the sleep-wake cycle is 10 minutes, with a 30 second wake time, the energy consumption budget looks like this:

Wake time 185 mA for 0.5 minutes = 92.5 mA-minutes

Sleep time 0.066 mA for 9.5 minutes = 0.627 mA-minutes

Total in 10 minutes = 93.13 mA-minutes

Thus the average current consumption is 9.3 mA.

Image credit :

Step 8: Selecting the Solar Panel

From the previous step, it is concluded that the average current consumption is 9.3 mA

Required Current for running the device for the whole day = 9.3mA x 24 Hours = 223.2 mAh

There is no current gain in the linear regulator used in the WeMos, so any current used at 3.3V results in the same current at 3.7V or whatever voltage the battery is at.

The amount of solar insolation varies according to which part of the globe you are located at. To find out the amount of solar insolation in your area, you can use the Global Solar Atlas. By taking consideration into minimum 1 hour of full sunlight, we are going to select the solar panel.

So, our target is to generate 223.2 mAh in 1 hour.

To charge a 3.7V Li-Ion battery, a solar panel of voltage 5 to 6V is adequate.

Required Solar Panel rating = 223.2 mA at a voltage of around 5 to 6 volts.

Solar panel rating = 223.2mA x 5V = 1.1W

Solar Panel Selected : 1W / 5V to 6V

In this project, I have used a 5V,200mA Solar Panel ( 99 x 69 mm)

So a 1W panel should be enough the run the project even in winter in places with a high latitude.

Note:If your location receiving ample amount of sunlight, then a 0.66W solar panel which I have used in my earlier version also work.

Step 9: PCB Design

I have drawn the schematic by using EasyEDA online software after that switched to PCB layout.

All of the components you added in the schematic should be there, stacked on top of each other, ready to be placed and routed. Drag the components by grabbing on its pads. Then place it inside the rectangular border line.

Arrange all the components in such a way that the board occupies minimum space. Smaller the board size, cheaper will be the PCB manufacturing cost. It will be useful if this board has some mounting holes on it so that it can be mounted in an enclosure.

Now you have to route. Routing is the most fun part of this entire process. It’s like solving a puzzle! Using the tracking tool we need to connect all the components. You can use both the top and the bottom layer for avoiding overlap between two different tracks and making the tracks shorter.

You can use the Silk layer to add text to the board. Also, we are able to insert an image file, so I add an image on of my website logo to be printed on the board. At the end using the copper area tool, we need to create the ground area of the PCB.

Now the PCB is ready for manufacturing.

You can order it from PCBWaySign up PCBWay now to get a US $5 coupon.That means your first order is free of cost only you have to pay the shipping charges.

When you place an order, I will get 10% donation from PCBWay for contribution to my work. Your little help may encourage me to do more awesome work in the future. Thank you for your cooperation.

Step 10: PCB Fabrication

Once we are completed the PCB design we just need to click the “Gerber output” button, save the project and we will be able to download the Gerber files which are used to manufacturing the PCB.

Step 11: Assembling the PCB

After receiving the board from PCB fab house, you have to solder the components.
For Soldering, you will need a decent Soldering Iron, Solder, Nipper.

First I cut the straight male and female headers pin for Wemos Board, TP4056, BMP/E 280 and for all the ports.

Following are the details about the headers :

1. Wemos Board - 2 x 8pins Female

2. BMP280 - 1 x 6pins Female

3. I2C Port - 1 x 4pins

4. Port P1 - 1 x 4pins

5. Port P2- 1 x 3pins

6. Port P3- 1 x 4pins

7. Port P4- 1 x 3 pins

It is good practice to solder the components according to their height. Solder the lesser height components first.

I have started by soldering the resistors, switch and then moved towards the bigger components like headers pin, screw terminal and battery holder.

Step 12: Adding the Modules and Battery

After assembling the header pins, switch and screw terminal, it is time to insert the boards into their respective headers. The headers are clearly labeled on the PCB, so there is no chance of confusion.

First I place the TP4056 board and solder all the pads.

Then I added the Wemos Board and BME280 Sensor.

Finally, I inserted the 18650 battery into the battery holder.

Step 13: Mounting the Standoffs

After adding all the parts, mount the standoffs at 4 corners. I used M3 Brass Hex Standoffs.

Use of standoffs will provide sufficient clearance to the soldering joints and wires from the ground.

Step 14: 3D Printed Enclosure

To give a nice commercial product look, I designed an enclosure for this project. I used Autodesk Fusion 360 to design the enclosure.

The enclosure has two parts:

1. Main Body

2. Cover Lid

The Main Body is basically designed to fit the Weather station V2.0 PCB (85mm* 83mm).

The Cover lid is to cover up the main body opening.

I used my Creality CR-10 printer and 1.75 mm green PLA filament to print the parts. It took me about 11 hours to print the main body and around 3 hours to print the top lid.

My settings are:

Print Speed : 60 mm/s

Layer Height: 0.2mm ( 0.3 also works good )

Fill Density: 25%

Extruder Temperature: 200 deg C

Bed Temp: 60 deg C

Download the STL files from Thingiverse

Step 15: Put the PCB Inside the Enclosure

First insert the M-F hex standoffs into the four mounting slots in the enclosure.

Then fix the PCB board over the standoffs by aligning its four screw holes at the corner.

After inserting the four standoffs,I have faced difficulty to fix the PCB due to small misalignment.So I am thinking to modify the mounting stand to fix the 3M screw directly instead of hex standoffs.

Step 16: Installing the Components

After mounting the PCB, you have to install BME280 module and Wemos board.

Then insert the jumper JP2.

Insert the SMA connector in to the holes provided in the enclosure. Then tighten the nut along with the washers. Now install the antenna by properly aligning with the SMA connector.

At last put the 18650 battery inside the battery holder.Make sure you have insert with right polarity. The polarity is marked in battery holder, PCB as well as on the battery.

Step 17: Installing the Solar Panel

Solder a 22 AWG red wire to the positive terminal and black wire to the negative terminal of the Solar panel.

Insert the two wires into the holes in the roof of the main enclosure body.

Use super glue to fix the Solar Panel and press it some time for proper bonding.

Seal the holes from the inside by using hot glue.

Step 18: Interfacing With Blynk App

Step-1: Download the Blynk app

1. For Android

2. For iPhone

Step-2: Get the Auth Token

In order to connect Blynk App and your hardware, you need an Auth Token.

1. Create a new account in Blynk App.

2. Press the QR icon on the top menu bar. Create a clone of this Project by scanning the QR code shown above. Once it detected successfully, the whole project will be on your phone immediately.

I've made Sol Weather Station app. You are welcome to try it out!

To start using it: 1. Download Blynk App: or 2. Touch the QR-code icon and point the camera to the code below 3. Enjoy my app!

3. After the project was created, we will send you Auth Token over email.

4. Check your email inbox and find the Auth Token.

Step-3: Preparing Arduino IDE for Wemos Board

To upload the Arduino code to Wemos board, you have to follow this Instructables

Step-4: Arduino Sketch

After installing the above libraries, paste the Arduino code given below.

Enter the auth code from step-1,ssid, and password of your router.

Then upload the code.

Step 19: Uploading Sensor Data to ThingSpeak

First create an account on ThingSpeak.

Then create a new Channel on your ThingSpeak account.

Find How to Create a New Channel Fill Field 1 as Pressure ,Field 2 as Temperature, Field 3 asHumidity,Field 4 as altitude and Field 5 as Bat Voltage.

In your ThingSpeak account select “Channel” and then “My Channel”.

Click on your channel name.

Click on “API Keys” tab and copy the “Write API Key”

Open the Solar_Weather_Station_ThingSpeak code .

Replace the “WRITE API ”with the copied “Write API Key”.

You can see my live feed.

Currently, I am getting an inconsistent reading for battery voltage, so the field is disabled.

Step 20: Software and Libraries

To use Wemos D1 with the Arduino library, you'll have to use the Arduino IDE with ESP8266 board support. If you haven't already done that yet, you can easily install ESP8266 Board support to your Arduino IDE by following this tutorial by Sparkfun.

Following settings are preferable :

PU Frequency: 80MHz 160MHz

Flash Size: 4M (3M SPIFFS) – 3M File system size 4M (1M SPIFFS) – 1M File system size

Upload Speed: 921600 bps


Before uploading the code install the following libraries :

1. ESP8266

2. BMP280

3. Blynk

You can read this tutorial by Sparkfun to install the Arduino libraries.

In my earlier version, there are two separate codes for Blynk and Thinspeak but in this version, we have written a single peace of code. The user have to only comment out a single line of code for Blynk or Thingspeak.For example, if you are using it for Blynk App, the code should be as below:

   const String App = "BLYNK";         //  alternative is line below
// const String App = "Thingspeak";    //  alternative is line above

Cedit: I want to give lot of credit to Keith Hungerford, who have guided me to make this project more powerful. The software library for BMP280 is also written by him.You can read his Instructable on BMP280 power saving mode.

Note: Before using the deep sleep feature, Wemos D0 pin must be connected to the RST pin. This can be done by shorting the jumper JP2.

Step 21: Conclusion

Today I have received the Solar Panel and installed it. I really love the final outcome of the project.

In future my plan is to add wind and rain fall measuring sensors like this project .

I am thinking to make a DIY kit for this project, but not finding a suitable vendor who can do this for me.Be in touch for more updates.

Update on 15.02.2019 :

Now you can order the PCB from PCBWay
Sign up PCBWay now to get a US $5 coupon.That means your first order is free of cost only you have to pay the shipping charges.When you place an order, I will get 10% donation from PCBWay for contribution to my hard work. Your little help may encourage me to do more awesome work in the future. Thank you for cooperation.

Thanks for reading my Instructable.

If you like my project, don't forget to share it.

Comments and feedback are always welcome.

PCB Contest

First Prize in the
PCB Contest



  • Tape Contest

    Tape Contest
  • Arduino Contest 2019

    Arduino Contest 2019
  • Trash to Treasure

    Trash to Treasure

134 Discussions


9 hours ago on Step 1

I enjoyed making the project.

In your parts list, item #8 (PCB Standoffs) should probably be removed.

"After inserting the four standoffs,I have faced difficulty to fix the PCB due to small misalignment.So I am thinking to modify the mounting stand to fix the 3M screw directly instead of hex standoffs."

I see that you actually did modify the mounting stand to require only 3.0mm Philips screws.
Perhaps it is time to update this so others won't spend time and money on unnecessary parts of an otherwise well thought out and presented instructable project.


10 hours ago

Great project. Especially since my off-the-shelf outdoor Cresta sensor died ;-)

I was wondering if it is possible to publish all the values to MQTT, so I can view and analyse it in my Domotica system.


2 days ago

Hi, I want to ask about Deep Sleep mode and tha calculation before it. You wrote that average consumption is 9.3mA - it is from 93.13 (mA)/10 (minutes) = 9.3 mA (so it is for 1 minute right?).

Then you wrote that for one day, it is 24 * 9.3 mA. But 9.3 is not for 1 hour, but for one minute, isn't it? :)

Shouldn't it looks like this? - 9.3 * 60 * 24 = 1 day consumption?


3 days ago

Very nice project. It well works with thingspeak.
However, I am blocked with blynk.
I have created local server with raspberry pi3. I have connected Blynk with the local server and copy your QR code.
Your apps is well loaded.
Arduino ino code was well loaded to wemos board with all blynk datas.
However, no datas displays on the app..... :(

Help please....

Gian PaoloP

Question 4 days ago

Hello and congratulations for the project
I bought the pcb on Pbbway and mounted everything but I find it difficult to activate the Thingspeak account and I'll try the Blynk road, for the moment I'm using it with my example sketch.
Wanting to design an additional pcb, on which to place relays and / or other components, which can be placed in a package on this, I wanted to ask you if possible to receive your gerber in order to use it as a template for this further development.
Thank you

I finally managed to activate ThingSpeak and in the day I will try the complete project


Question 7 days ago

Hello, Congratulations to the project.

how would you plan to add the rain fall sensor using deep sleep mode?



12 days ago


I love the project! I only have 1 problem...

In the Blynk app my battery voltage is displaying -114v. How can i solve this?


Question 5 weeks ago

Hi, I have been following your project for a while now and finally gathered almost all the bits, printed your great enclosure, and bought your great PCBs. Your instructions are great but I am having problems with displaying the data in Blynk(using your cloned project). In the arduino serial port monitor I can see that the BME280 is being read OK and I have reasonable values but the only one that displays in Blynk is the air pressure. All others, temp, humidity volts and altitude are not being displayed. Any ideas as to how to troubleshoot this problem?
Cheers David

PS Update: I just created a Thingspeak account and all parameters are being displayed as expected. Just can't get Blynk to do the same!!

11 answers

Answer 5 weeks ago

Have you set the virtual pins in the Blynk app? Have you changed the code above and uncommented the Blynk part? I'm not sure you can port to ThingSpeak and Blynk at the same time?
const String App = "BLYNK"; // alternative is line below << This is enabled
// const String App = "Thingspeak"; // alternative is line above <<this is disabled

Virtual Pin 0 = Pressure in hPa
Virtual Pin 1 = Temperature in C
Virtual Pin 2 = Humidity in %
Virtual Pin 3 = Altitude ASL
Virtual Pin 4 = Battery Level in Vdc
Have you done this? tap the gauge, bring up it Pin assignment, Change each gauge to its required Pin as above. Change the scale (this won't affect the reading but only the ratio of how much your scale is filled). Fill in the Pin info for your legend. Comment back if your still having trouble. Have you filled in your Blynk API Key? is your wireless connecting? Have you filled in the Wireless crudentials.

Reply 18 days ago

I had the same issue, I have now fixed it! And cut the decimal places to 2 so it now puts the % and other Identifiers at the end of each number.


Reply 17 days ago

What did you do to display the reading to 2 decimal places? Is it a Blynk setting or part of the Arduino code.


Reply 16 days ago

It's in the arduino code, firstly, there needs to be a delay when it wakes to send's going back to sleep before the data packet has made it to Blynk. The data needs to be sent in a buffer for it to be limited to 2 decimal places. I have sent the code to the Author. I can also send it to you if you like, or screenshot of the section that was changed.


Reply 15 days ago

Thanks can you send me the code as I am having problems with the battery voltage not displaying so would be good the check that part of the code as well. Can u send it to dlochlinatgmaildotcom. I would like to see how its done. I found a way in Blynk using /pin.##/ in the Label field but the humidity always displays 7 decimal places.


Reply 5 weeks ago

Thanks for your reply. tried all the things you suggested and in fact I have just built a second unit and set it up and can't get any data displayed in Blynk. Blynk tells me the device has connected/disconnected(I have the sleep jumper installed. I see in the arduino serial monitor that it connects to my wifi and then to the Blynk cloud pings it and then prints all the temp,pressure, humidity and voltage readings.

I verified the virtual pins in the Blynk app(infact one was wrong) after cloning the project from the QR icon in the instructable and still no joy. Now I have two units operating, one displaying sensible data on Thingspeak and the other displaying nothing in Blynk. Aah frustration!


Reply 5 weeks ago

Please email me your code and delete your Blynk API key, WiFi and Password settings from the code and I will run your code on my rig and see what happens.
Hopefully it may be something really simple.


Reply 19 days ago

I am having the same issue, I can get Blynk to display Temp and pressure....that's all. Virtual Pin assignments have been checked and it all should work. Thinkspeak, all data is displayed....but I want to use the Blynk App on my phone as it's way cooler to see and use!
I just uploaded the code as supplied, put my own credentials in and set for Blynk, Help would be appreciated.


Answer 18 days ago

Ok after tearing my hair out on this and lack of a BMP280. This project relies on a BME280 and I feel that some bad seller has sent you a BMP280 which may need a change to the header file and has a different address. I’m trying to get one of those sensors to try to put this problem to bed. I’m working on it!!!!


Reply 17 days ago

Hi CodfishCatfish, If you are using the BMP280 library that is used with the published software for this project, you should not have such trouble with using a BMP280 instead of a BME280. This library is capable of working with both devices, merely not giving humidity readings if you are using a BMP280. This is different from other libraries for this device. If you want to learn more about the library and its capabilities, I suggest you have a look at


Reply 17 days ago

Hi Keith, my weather station is working super fine, however I had been looking into some other people with missing readings if you read the other posts in this thread. However I’m not %100 convinced with the BMP280 not being able to detect humidity. In the V1 of this project, I had a few BMP280’s laying around idle and they worked fine with V1 showing temperature, humidity and pressure because one of my early tests was out of sheer curiosity and that was to breath on the sensor until it reached %100 humidity which it did. Unless they were marked up bad , denoted by a dot on the P/E at the end of BME/P. I did however discover the 6 pin version of the BMP280 were definitely without humidity. All other 4 pin BMP280’s that I’ve owned have always had humidity so I’m very curious to see if this was a packaging error? Anyway thanks for all your efforts and can’t wait for the UV index code to be added. I had played around with it a bit, but busy with work related stuff and also studying for an exam so very little time indeed for Arduino projects right now. Kind regards Spence.