# Personal Weather Station

**URL:** <https://discourse.nodered.org/t/personal-weather-station/85307>\
**Category:** General\
**Tags:** weather-station, display-data\
**Created:** [8 February 2024 01:04 UTC](https://discourse.nodered.org/t/personal-weather-station/85307 "2024-02-08T01:04:45Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![telescopio](https://avatars.discourse-cdn.com/v4/letter/t/bb73d2/32.png) [@telescopio](https://discourse.nodered.org/u/telescopio)\
**Post date:** [8 February 2024 01:04 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/1 "2024-02-08T01:04:45Z")

</div>

Does anybody have work on any Personal Weather Ststion? Looking to display the data.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [8 February 2024 01:21 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/2 "2024-02-08T01:21:35Z")

</div>

Anything here?  
[https://discourse.nodered.org/search?q=weather%20station%20%23share-your-projects%20order%3Alatest](https://discourse.nodered.org/search?q=weather%20station%20%23share-your-projects%20order%3Alatest)

---

<div class="post-metadata">

**Author:** ![telescopio](https://avatars.discourse-cdn.com/v4/letter/t/bb73d2/32.png) [@telescopio](https://discourse.nodered.org/u/telescopio)\
**Post date:** [8 February 2024 06:05 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/3 "2024-02-08T06:05:46Z")

</div>

I did look on before. all what I found was related to get the data from online weather service. What I am looking is for a PWS installed in my house and get the information local in my Observatory PC.

I found couple but the are using HA with some nodes no available in Nore Red, ex. eqwittmttq server.

Looking now into WeeWX to see how I can implement on Node Red. I am a 72 Year new on node red

---

<div class="post-metadata">

**Author:** ![dynamicdave](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dynamicdave/32/96_2.png) [@dynamicdave](https://discourse.nodered.org/u/dynamicdave)\
**Post date:** [8 February 2024 06:21 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/4 "2024-02-08T06:21:26Z")

</div>

I recently shared one of my projects that might perform **some** of the tasks you are looking for.

> [@Single Sensor Node (ESP32-S2-Mini or RPi Pico-W)](https://discourse.nodered.org/t/single-sensor-node-esp32-s2-mini-or-rpi-pico-w/84951):
>
> The project is based on an ESP32-S2-Mini and can be deployed to sense temperature, humidity and air pressure in any geographical location. All it needs is access to a WiFi Access Point and a (local or remote) MQTT broker. Today I've been converting the Micro-Python script I wrote for the ESP32-S2-Mini to work on a RPi Pico-W. One of my friends wanted to try it out but only had a Pico-W. I've called it 'Single Sensor Node' as it sits in my greenhouse and reports Temp/Humidity/Pressure and the …

I've written an 'Installation Guide' (there's a link on the website) that explains all about the project.  
If you would like to read about it, I've published it on my 'Share my projects' website here...

[https://teamwork-int.com/share\_my\_projects/](https://teamwork-int.com/share_my_projects/)  
If you visit the above link you'll need to click on the folder labelled... **C\_single\_sensor\_node**

**SSN\_generic\_RDS\_v05.py** is the latest version of the Python script - works with ESP32-S2 and Pico-W

The project uses a BME280 sensor to measure **temperature/humidity/air pressure** and send the readings via a MQTT broker to Node-RED where the data can be processed. In my particular situation the device is located in a greenhouse at the bottom of my garden. It uses an ESP32-S2-Mini flashed with Micro-Python. Depending on what you want to do, you can use a local or remote MQTT broker.

---

<div class="post-metadata">

**Author:** ![Buckskin](https://avatars.discourse-cdn.com/v4/letter/b/b9e5f3/32.png) [@Buckskin](https://discourse.nodered.org/u/Buckskin)\
**Post date:** [8 February 2024 09:01 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/5 "2024-02-08T09:01:09Z")

</div>

I have an Oregon weather station that transmits at 433MHz and I use rtl\_433 plus receiver to send data to Node-RED. There are quite a few of this type of weather station on the market. Includes rain gauge, wind sensor and temperature sensors

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [8 February 2024 09:50 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/6 "2024-02-08T09:50:26Z")

</div>

Thanks for giving us more information.

Do you already have a personal weather station? If so what make and model is it? What sensors does it have?  
This might be relevant in how you get the data into Node-red.

I think WeeWX is software to obtain the weather data? I'm not familiar with it, but Node-red is perfectly capable of accepting data from external python code.

> [@telescopio](#):
>
> I found couple but the are using HA with some nodes no available in Nore Red, ex. eqwittmttq server.

I am sure that Home Assistant is very fine software but you can certainly achieve what you want with "just" Node-red. Most people on this forum don't use Home Assistant.  
Note that it's easy to add features to Node-red, there is a whole library of such add-ons at [flows.nodered.org](http://flows.nodered.org).  
It's very common to use MQTT because it can make communicating between Node-red and other devices very much easier. You might end up using it.

So the first stage is getting weather observations into Node-red. Once you can do that, you can start designing your weather display.

---

<div class="post-metadata">

**Author:** ![telescopio](https://avatars.discourse-cdn.com/v4/letter/t/bb73d2/32.png) [@telescopio](https://discourse.nodered.org/u/telescopio)\
**Post date:** [8 February 2024 11:37 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/7 "2024-02-08T11:37:27Z")

</div>

Thanks for your time. I have one Ecowitt GW 1000 server with sensor GS68 Anenometer. Let me tell you that I have the Agg Solo weather from Lunatico that is using UDP to comunicate with a private driver.

I had bad experience with this brand, first I lost a DragonFly unit to control the OBSY, relays failures I did replace it with a PLC Modbus.Now the Anenometer fail so I decide to look for other unit more reliable.

[https://lunaticoastro.com/node-red-tutorial-for-dragonfly-and-cloudwatcher-solo](https://lunaticoastro.com/node-red-tutorial-for-dragonfly-and-cloudwatcher-solo)/

This link show the flow that I am using with the agg solo weather that I did some changes.

Maybe this will help those who want to help me. THANKS FOR YOUR TIME

---

<div class="post-metadata">

**Author:** ![telescopio](https://avatars.discourse-cdn.com/v4/letter/t/bb73d2/32.png) [@telescopio](https://discourse.nodered.org/u/telescopio)\
**Post date:** [8 February 2024 11:48 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/8 "2024-02-08T11:48:46Z")

</div>

Can you share your Node Red flow so I can wotk on it? I will love takenanlook andnsee if I can adopt some ideas.

---

<div class="post-metadata">

**Author:** ![Buckskin](https://avatars.discourse-cdn.com/v4/letter/b/b9e5f3/32.png) [@Buckskin](https://discourse.nodered.org/u/Buckskin)\
**Post date:** [9 February 2024 22:50 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/9 "2024-02-09T22:50:59Z")

</div>

You will have to change the device ID's to match yours but this is a cutdown version of my flows. The final debug nodes are actually Dashboard chart nodes. The MQTT in is from a Pi running rtl\_433 (using a USB receiver to get the info from the actual devices)

```auto
[{"id":"2bab8c419abb6dd1","type":"mqtt in","z":"ef3526e3ff0b76d1","name":"MQTT rtl_433","topic":"rtl_433","qos":"1","datatype":"json","broker":"ee05e0d9.9118e","nl":false,"rap":false,"inputs":0,"x":210,"y":240,"wires":[["f7edc83f703f4628"]]},{"id":"f7edc83f703f4628","type":"function","z":"ef3526e3ff0b76d1","name":"Split rtl_433 Message","func":"/** @type {Intl.DateTimeFormatOptions} */\nconst UK_DATETIME_OPTIONS = { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }\n\nlet currentTopic = msg.topic\nlet currentValue = msg.payload\n\nlet {id: ID, model, time, channel, battery_ok, ...measurement} = currentValue\nlet device = {ID, model, measurement}\n\n// Standardise the date/time of the message\ncurrentValue.time = new Date(time)\ncurrentValue.battery_ok = (battery_ok === 1) ? \"Ok\" : \"Change\"\n\nmsg.topic = currentTopic + \"/\" + device.ID + \"/\" + device.model\n\nnode.status({text:\"Receiving rtl_433 \" + Intl.DateTimeFormat('en-GB', UK_DATETIME_OPTIONS).format(currentValue.time)})\n\nmsg.device = device\n\nreturn msg","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":240,"wires":[["3f9ce74854e65778"]]},{"id":"3f9ce74854e65778","type":"function","z":"ef3526e3ff0b76d1","name":"Device Type","func":"const device = msg.device\n\n switch (device.ID) {\n case 192:\n device.type = 'Wind Sensor'\n device.name = 'Oregon Wind Sensor'\n device.location = 'Outside'\n\n break\n\n case 140:\n device.type = 'Rain Sensor'\n device.name = 'Oregon Rain Sensor'\n device.location = 'Outside'\n break\n\n case 15:\n device.type = 'Rain Sensor'\n device.name = 'TFA Rain Sensor'\n device.location = 'Outside'\n device.model = 'TFA Dostmann 30.3161'\n break\n\n case 253:\n device.type = 'Environment Sensor'\n device.name = 'Oregon Sensor 01'\n device.location = 'Outside'\n break \n\n case 178:\n device.type = 'Environment Sensor'\n device.name = 'Oregon Sensor 02'\n device.location = 'Conservatory'\n break \n\n case 74:\n device.type = 'Environment Sensor'\n device.name = 'Oregon Sensor 03'\n device.location = 'Hall'\n break\n\n case 115:\n device.type = 'Environment Sensor'\n device.name = 'Prologue Sensor 01'\n device.location = 'Garage'\n break\n\n case 112:\n device.type = 'Environment Sensor'\n device.name = 'Oregon Sensor 04'\n device.location = 'Unknown'\n break\n\n case '0x00158d00047b8337':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 02'\n device.location = 'Main Bedroom'\n break \n\n case '0x00158d000486d817':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 01'\n device.location = 'Living Room (Front)'\n break \n\n case '286E0E79A200030C':\n device.type = 'Temperature Sensor'\n device.name = 'Sensor DS18b20 01'\n device.location = 'Study'\n break\n \n case '28221F79A20003B5':\n device.type = 'Temperature Sensor'\n device.name = 'Sensor DS18b20 02'\n device.location = 'Study'\n break \n\n case '2872CBD31E19018D':\n device.type = 'Temperature Sensor'\n device.name = 'Sensor DS18b20 03'\n device.location = 'Study'\n break \n\n case '0x00158d00053f5842':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 03'\n device.location = 'Blue Bedroom'\n break \n\n case '0x00158d00032d55b4':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 04'\n device.location = 'Pink Bedroom'\n break \n\n case '0x00158d0006694b41':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 05'\n device.location = 'Dining Room'\n break \n \n case '0x00158d00067c109f':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 06'\n device.location = 'Bathroom'\n break \n \n case '0x00158d00068b8e6c':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 07'\n device.location = 'On Suite'\n break\n\n case '0x00158d00068b6be4':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 08'\n device.location = 'Living Room (Rear)'\n break\n \n case '0x00158d0006a03909':\n device.type = 'Environment Sensor'\n device.name = 'Aqara Sensor 09'\n device.location = 'Study'\n break\n \n case '0x00158d000644479d':\n device.type = 'Light & Presence Sensor'\n device.name = 'Aqara Motion Detector 01'\n device.location = 'Study'\n break\n \n case '0x588e81fffe641873':\n device.type = 'Router'\n device.name = 'Tradfri Repeater 01'\n device.location = 'Living Room (Front)'\n break\n\n case 'Sensor_BME280_01':\n device.type = 'Environment Sensor'\n device.name = 'Sensor BME280 01'\n device.location = 'Study'\n break\n \n \n default:\n device.type = 'Unknown'\n device.name = 'Unknown'\n device.location = 'Unknown'\n\n }\n\nmsg.device = device\nmsg.topic = msg.topic + '/' + device.location\n\nreturn msg","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":710,"y":240,"wires":[["b668098b8aa73bb4","79db588078c73821"]]},{"id":"b668098b8aa73bb4","type":"debug","z":"ef3526e3ff0b76d1","name":"debug 232","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":730,"y":100,"wires":[]},{"id":"79db588078c73821","type":"switch","z":"ef3526e3ff0b76d1","name":"Select Device","property":"device.name","propertyType":"msg","rules":[{"t":"eq","v":"Oregon Wind Sensor","vt":"str"},{"t":"eq","v":"Oregon Rain Sensor","vt":"str"},{"t":"eq","v":"TFA Rain Sensor","vt":"str"},{"t":"eq","v":"Oregon Sensor 01","vt":"str"},{"t":"eq","v":"Oregon Sensor 02","vt":"str"},{"t":"eq","v":"Oregon Sensor 03","vt":"str"},{"t":"eq","v":"Oregon Sensor 04","vt":"str"},{"t":"eq","v":"Prologue Sensor 01","vt":"str"},{"t":"eq","v":"Sensor DS18b20 02","vt":"str"},{"t":"eq","v":"Sensor DS18b20 01","vt":"str"},{"t":"eq","v":"Sensor BME280 01","vt":"str"},{"t":"eq","v":"Aqara Sensor 01","vt":"str"},{"t":"eq","v":"Aqara Sensor 02","vt":"str"},{"t":"eq","v":"Aqara Sensor 03","vt":"str"},{"t":"eq","v":"Aqara Sensor 04","vt":"str"},{"t":"eq","v":"Aqara Sensor 05","vt":"str"},{"t":"eq","v":"Aqara Sensor 06","vt":"str"},{"t":"eq","v":"Aqara Sensor 07","vt":"str"},{"t":"eq","v":"Aqara Sensor 08","vt":"str"},{"t":"eq","v":"Aqara Sensor 09","vt":"str"},{"t":"eq","v":"Aqara Motion Detector 01","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":22,"x":980,"y":240,"wires":[["11a93e696b50b958"],[],[],["abda0650a27d9eeb"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["Oregon Wind Sensor","Oregon Rain Sensor","TFA Rain Sensor","Oregon Sensor 01","Oregon Sensor 02","Oregon Sensor 03","Oregon Sensor 04","Prologue Sensor 01","","","","","","","","","","","","","",""],"info":"72"},{"id":"b785d3b27d0e3779","type":"switch","z":"ef3526e3ff0b76d1","name":"Wind","property":"measurement","propertyType":"msg","rules":[{"t":"cont","v":"wind_max_m_s","vt":"str"},{"t":"cont","v":"wind_avg_m_s","vt":"str"},{"t":"cont","v":"wind_dir_deg","vt":"str"},{"t":"cont","v":"battery_ok","vt":"str"}],"checkall":"false","repair":false,"outputs":4,"x":1950,"y":100,"wires":[["6881556797d74423"],["77cbe90b62f14d47"],["6759a106def9f64a"],["c9741dc738d5fac9"]]},{"id":"6881556797d74423","type":"debug","z":"ef3526e3ff0b76d1","name":"Wind Max","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":20,"wires":[]},{"id":"11a93e696b50b958","type":"split","z":"ef3526e3ff0b76d1","name":"Separate \\n Measurement","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"measurement","x":1500,"y":100,"wires":[["d7d69e78d89508e2"]]},{"id":"77cbe90b62f14d47","type":"debug","z":"ef3526e3ff0b76d1","name":"Wind Avg","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":80,"wires":[]},{"id":"6759a106def9f64a","type":"debug","z":"ef3526e3ff0b76d1","name":"Wind Dir","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":140,"wires":[]},{"id":"c9741dc738d5fac9","type":"debug","z":"ef3526e3ff0b76d1","name":"Battery","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":200,"wires":[]},{"id":"d7d69e78d89508e2","type":"change","z":"ef3526e3ff0b76d1","name":"Remove Parts","rules":[{"t":"delete","p":"parts","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1760,"y":100,"wires":[["b785d3b27d0e3779"]]},{"id":"cb50193f6c5ff77e","type":"switch","z":"ef3526e3ff0b76d1","name":"Environment","property":"measurement","propertyType":"msg","rules":[{"t":"cont","v":"temperature_C","vt":"str"},{"t":"cont","v":"humidity","vt":"str"},{"t":"cont","v":"battery_ok","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":1970,"y":300,"wires":[["5e907ead92ad5b8f"],["9f8020b5fd03b149"],["590af4051f25a7ba"]]},{"id":"5e907ead92ad5b8f","type":"debug","z":"ef3526e3ff0b76d1","name":"Wind Max","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":260,"wires":[]},{"id":"abda0650a27d9eeb","type":"split","z":"ef3526e3ff0b76d1","name":"Separate \\n Measurement","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"measurement","x":1500,"y":300,"wires":[["ab91fcdc96369b21"]]},{"id":"9f8020b5fd03b149","type":"debug","z":"ef3526e3ff0b76d1","name":"Wind Avg","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":300,"wires":[]},{"id":"590af4051f25a7ba","type":"debug","z":"ef3526e3ff0b76d1","name":"Battery","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2180,"y":340,"wires":[]},{"id":"ab91fcdc96369b21","type":"change","z":"ef3526e3ff0b76d1","name":"Remove Parts","rules":[{"t":"delete","p":"parts","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1760,"y":300,"wires":[["cb50193f6c5ff77e"]]},{"id":"ee05e0d9.9118e","type":"mqtt-broker","name":"MQTT","broker":"192.168.1.21","port":"1883","clientid":"","autoConnect":true,"usetls":false,"compatmode":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [23 February 2024 22:51 UTC](https://discourse.nodered.org/t/personal-weather-station/85307/10 "2024-02-23T22:51:39Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
