[New Binding] Ambient Weather WS-1400IP weather station

So my issue with the Weather Underground Receiver is that it looks like it only handles a single Soil Moisture channel. Ecowitt (FineOffset) allows multiple sensors to be added and I use 6 Soil Sensors to help make my Irrigation system smarter. Selfishly I just want a FineOffset / Ecowitt binding but obviously that’s a bit of work for you that you may not want to maintain. Also not sure how much demand there is for it.

With regards to both bindings running at the same time, can you not run both Things just on different ports?

Wait for it to be merged and then make a request or bounty to have the extra channels added. I have never tried it so I do not know the in depth details on it so best you give it a try as it is possible for some bindings to offer the same channels multiple times. The system info binding is one, you can have multiple disk stats that change depending on how many disks your server has installed. Extra CPU graphs depending on how many cpu cores etc…

Correct too much work, its better to have a generic capture all binding and since multiple weather stations send the weather underground standard packets, then it makes sense to create one binding that talks this protocol.

I feel that would not get approved, best to keep using the same server on the default port and keep things simple and easy to maintain. There are other ways that could be considered, but does it not work? Have you tried it? lets not talk about something which may work fine and there is no issue.

What weather station model and soil sensors do you have? How long do the batteries last for? I may be interested in adding some to my setup if they work and are cheap.

Sorry, I was getting mixed up with the Home Assistant Integration which allows you to specify which port to listen on.

I have the Ecowitt GW1101 (ECOWITT Welcome to Ecowitt!) which is an outdoor unit, and the indoor “ipobserver” unit it connects to that can upload the stats. I then use the WH51 soil sensors which go about a year on a rechargeable AA battery. Not sure where you live but frequency must match and they sell out of Amazon here in Australia. Paid $15 for each Soil Sensor.

I have used your binding previously and it does bring in the values just not coded to pass them on.

2021-12-22 20:08:17.093 [TRACE] [pobserver.internal.IpObserverHandler] - Update received:tempf=75.0&humidity=78&dewptf=67.8&windchillf=75.0&winddir=178&windspeedmph=0.00&windgustmph=0.00&rainin=0.000&dailyrainin=0.000&weeklyrainin=0.228&monthlyrainin=1.866&yearlyrainin=22.516&solarradiation=0.00&UV=0&indoortempf=78.4&indoorhumidity=68&baromin=29.881&AqPM2.5=2.0&soilmoisture2=25&soilmoisture3=89&lowbatt=0&dateutc=now&softwaretype=GW1000_V1.6.8&action=updateraw&realtime=1&rtfreq=5
2021-12-22 20:08:17.095 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element soilmoisture3, value is 89
2021-12-22 20:08:17.095 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element soilmoisture2, value is 25

I’ll wait to see what the outcome of the 2 binding is, but having Home Assistant publish all sensors into MQTT isn’t a bad way to hedge your bets that someone has made a binding for a piece of tech you own.

ooohhh. i missed your response o_O
i have configured all the items via mainUI (as i didn’t know how to do it correcty via config files. is there a wiki?)

i’m not using most of the “new” openHAB3 stuff and haven’t really used metadata until now so i’m not sure how i should use metadata. :neutral_face:

okay, checked metric now. (“m” = meters should be metric already)?

it’s metric already (although i cant find any settings on the device to change anything…):

i have set id and password, so i guess i use the PUSH method?

i’m still on openHAB 3.1 and have manually installed org.openhab.binding.ipobserver-3.2.0-SNAPSHOT.jar, should i remove the binding before upgrading openHAB and then install via openHAB UI?

openHAB 3.1 should be fine as that is what I am on (with custom jar). I too don’t use the metadata stuff yet, but do use the text files. It seems in Main UI the default UOM for Length is m (and can only be changed using metadata), hence what you see. The question is what you plan to do with that value, if display using sitemaps or using in rules, you can set the UOM there.

could you share your config?
on the binding page there’s no examples (for “basic” user like me…)

See below, note they are all commented out for now as per my messages above where I am using Home Assistant to pull them in for now as it gets me soil and air quality values.

The wiki page https://www.openhab.org/docs/configuration/items.html#state-presentation helps make sense of it all.

//ECOWITT
//Number:Temperature Ecowitt_Indoor_Temperature "Temperature [%.1f %unit%]" <temperature> (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:temperatureIndoor" }
//Number:Temperature Ecowitt_Outdoor_Temperature "Temperature [%.1f %unit%]" <temperature> (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:temperatureOutdoor" }
//Number:Dimensionless Ecowitt_Indoor_Humidity "Humidity [%.1f %] " <humidity> { channel = "ipobserver:weatherstation:e1803acdd2:humidityIndoor" }
//Number:Dimensionless Ecowitt_Outdoor_Humidity "Humidity [%.1f]" <humidity> { channel = "ipobserver:weatherstation:e1803acdd2:humidityOutdoor" }
//Number:Speed Ecowitt_Wind_Speed_Average "Wind Speed [%d %unit%]" <wind> (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:windAverageSpeed" }
//Number:Speed Ecowitt_Wind_Gust "Wind Gust [%d %unit%]" <wind> (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:windGust" }
//Number:Speed Ecowitt_Wind_Gust_Max "Wind Gust Day Max [%d %unit%]" <wind> { channel = "ipobserver:weatherstation:e1803acdd2:windMaxGust" }
//Number Ecowitt_UV "UV Rating [%.1f]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:uvIndex" }
//Number Ecowitt_Solar_Radiation "UV Solar Radiation [%.1f lux]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:solarRadiation" }
//Number:Length Ecowitt_Rain_Rate "Rain Rate [%.1f mm]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:rainHourlyRate" }
//Number:Length Ecowitt_Rain_Today "Rain Today [%.1f mm]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:rainToday" }
//Number:Length Ecowitt_Rain_Week "Rain Week [%.1f mm]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:rainForWeek" }
//Number:Length Ecowitt_Rain_Month "Rain Month [%.1f mm]" (gPersist4) { channel = "ipobserver:weatherstation:e1803acdd2:rainForMonth" }
//Number:Length Ecowitt_Rain_Year "Rain Year [%.1f mm]" { channel = "ipobserver:weatherstation:e1803acdd2:rainForYear" }
//Switch Ecowitt_Outdoor_Batt "Outdoor Battery" { channel = "ipobserver:weatherstation:e1803acdd2:batteryOutdoor" }
//Switch Ecowitt_Indoor_Batt "Indoor Battery" { channel = "ipobserver:weatherstation:e1803acdd2:batteryIndoor" }

Thank you!
could you also provide the things file?

I tend to use the UI to create things, mainly because thing files are more tricky (and in fact cannot be done for zwave which is 50% of my things)

ok thanks!

@matt1: looks like the binding gets imperial units? :frowning:

2022-02-02 23:31:52.727 [TRACE] [pobserver.internal.IpObserverHandler] - Update received:tempf=44.1&humidity=57&dewptf=29.8&windchillf=44.1&winddir=274&windspeedmph=1.57&windgustmph=5.82&rainin=0.000&dailyrainin=0.000&weeklyrainin=0.000&monthlyrainin=0.000&yearlyrainin=0.650&solarradiation=0.00&UV=0&indoortempf=74.8&indoorhumidity=34&baromin=31.269&lowbatt=0&dateutc=now&softwaretype=WH2650A_V1.6.8&action=updateraw&realtime=1&rtfreq=5
2022-02-02 23:31:52.729 [TRACE] [pobserver.internal.IpObserverHandler] - Found element tempf, value is 44.1
2022-02-02 23:31:52.735 [TRACE] [pobserver.internal.IpObserverHandler] - Found element UV, value is 0
2022-02-02 23:31:52.736 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element rtfreq, value is 5
2022-02-02 23:31:52.738 [TRACE] [pobserver.internal.IpObserverHandler] - Found element windspeedmph, value is 1.57
2022-02-02 23:31:52.744 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element realtime, value is 1
2022-02-02 23:31:52.745 [TRACE] [pobserver.internal.IpObserverHandler] - Found element yearlyrainin, value is 0.650
2022-02-02 23:31:52.747 [TRACE] [pobserver.internal.IpObserverHandler] - Found element dewptf, value is 29.8
2022-02-02 23:31:52.749 [TRACE] [pobserver.internal.IpObserverHandler] - Found element indoorhumidity, value is 34
2022-02-02 23:31:52.750 [TRACE] [pobserver.internal.IpObserverHandler] - Found element rainin, value is 0.000
2022-02-02 23:31:52.751 [TRACE] [pobserver.internal.IpObserverHandler] - Found element windchillf, value is 44.1
2022-02-02 23:31:52.752 [TRACE] [pobserver.internal.IpObserverHandler] - Found element winddir, value is 274
2022-02-02 23:31:52.754 [TRACE] [pobserver.internal.IpObserverHandler] - Found element monthlyrainin, value is 0.000
2022-02-02 23:31:52.755 [TRACE] [pobserver.internal.IpObserverHandler] - Found element dailyrainin, value is 0.000
2022-02-02 23:31:52.756 [TRACE] [pobserver.internal.IpObserverHandler] - Found element windgustmph, value is 5.82
2022-02-02 23:31:52.757 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element dateutc, value is now
2022-02-02 23:31:52.758 [TRACE] [pobserver.internal.IpObserverHandler] - Found element solarradiation, value is 0.00
2022-02-02 23:31:52.759 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element softwaretype, value is WH2650A_V1.6.8
2022-02-02 23:31:52.760 [TRACE] [pobserver.internal.IpObserverHandler] - Found element baromin, value is 31.269
2022-02-02 23:31:52.761 [TRACE] [pobserver.internal.IpObserverHandler] - Found element lowbatt, value is 0
2022-02-02 23:31:52.762 [TRACE] [pobserver.internal.IpObserverHandler] - Found element indoortempf, value is 74.8
2022-02-02 23:31:52.763 [TRACE] [pobserver.internal.IpObserverHandler] - Found element humidity, value is 57
2022-02-02 23:31:52.763 [TRACE] [pobserver.internal.IpObserverHandler] - UNKNOWN element action, value is updateraw
2022-02-02 23:31:52.764 [TRACE] [pobserver.internal.IpObserverHandler] - Found element weeklyrainin, value is 0.000

Yes, the api exports imperial, it’s up to the downstream apps to convert

2021-12-22 19:43:11.996 [TRACE] [pobserver.internal.IpObserverHandler] - Found element tempf, value is 75.2
2021-12-22 19:43:12.000 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Ecowitt_Outdoor_Temperature' changed from 24.11111111111111 ?C to 24 ?C

alright!
tried with textual config and with metadata > state description and now i can get the right values (mm)!
thank you!

Hi there,

that’s quite a long thread…
That binding was intended to fetch the data locally.
It’s still not integrated into the official Bindings, right? Because it sounds almost like

but this one is the online version, discussed on

To consolidate:
This Binding needs to be installed manually from
Github: /HentschelT/openhab2-addons/tree/master/addons/binding/org.openhab.binding.ambientweather1400ip/releases
and seems to be not maintained since 4 years. Does it still work? Also with openHAB 3?

Or was it superseeded by the IpObserver binding?
openHAB /addons/bindings/ipobserver/
Quite confusing, because IP Observer is also the name for a RF - WiFi Gateway…

I am searching for an binding, which can fetch (or receive the date via http GET) from such a gateway - this binding seems to be able to achieve the task, but have not been released.

/Holly
[Sorry, I am only allowed to post 2 links, so I used some address stubs]

The recent push method changes have now been merged and will be in 3.3 Milestone 2 and newer. The binding can do 2 different methods that are local, a scrape and also capturing a push to the WU site.

No that will not work on openHAB 3. The binding has been updated and merged for a long time now and can be installed as IpObserver binding. See website for documentation under that name.

Thanks a lot for your swift reply!

That means that the binding “Ambient Weather WS-1400IP weather station” is superseded by the IpObserver Binding, right? And it is not related to the Ambient Weather Binding.

I own a ecowitt GW1100 (WiFi without RJ45). For this device I guess local scraping of the weather station’s IP/liveData.html is also possible (since I can access this HTML page via the browser), right?

Someone has reported that the new versions n works with the ecobee. Your other question is answered in this bindings documentation, very first paragraph.

@Skinah, many thanks for your reply!
To have some wiki-like entry for novices like me, I would like to summarise - please correct me if I am wrong.

  • If you want to use the binding of this thread “Ambient Weather WS-1400IP weather station”, use IpObserver Binding. That’s the maintained successor of this binding.
  • This IpObserver Binding fetches the data from your local gateways web interface.
  • The Ambient Weather Binding has a quite similar name, but works very differently: it fetches the data from the ambientweather dot net cloud service. No possibility to fetch the data locally.
  • Ambient Weather ObserverIP Module is the name for a (hardware) gateway of Ambient Weather. Don’t mix it up with the naming of the bindings.
  • A quite interesting but not yet released binding, which can receive data from gateways via http GET, can be found here: [webhook] New, very simple binding for listening incomming http requests

Hope this gives a better overview.

Hi @Hollys - I was going to put something together because as you said, it takes some trawling to work out what to do, but as per my most recent discussions with @matt1 it’s not clear if ipObserver and wunderground binding will exist side by side and also Ecowitt has additional sensors that wunderground doesn’t cater for, so I’m holding off until I have a fully working Ecowitt solution. I am intrigued by this webhook binding which as per the thread, someone already has working with Ecowitt and allows each user to configure their items off the response from the Ecowitt API instead of relying on a maintainer to keep adding additional sensors.

Either way I think it will be more stable to just have the Ecowitt post data to your server rather than scrape the web interface because this is not really a supported method that Ecowitt could change at any time, but the POST using their API is offical and should not suddenly disappear after an update.

If you are only interested in the basic weather items then ipObserver worked fine for me (DM me if any questions), I just wanted some soil and air sensors too, so had to use the Home Assistant to grab them and then send them to Openhab via MQTT.

This has become clearer recently as the changes I made were merged and will be in the next Milestone. Also I do not like your wording exist, as it is just a matter of what will be merged and what will get bug fixes done as it is up to volunteers that give there time for free. What I still would like is for the Wunderground Update Reciever Binding to get merged so multiple people can contribute and add new channels and abilities as there is more potential to take that binding further.

I did not want to mention this right now as it will only serve to create even more confusion especially since there is also another binding called weather underground that is merged. This is really the issue I want to see resolved, and that is for it to be less complicated and for it to make sense. If you have any ideas on how it can be less confusing then please act and make a PR to change things.

Fetch the data from weather undergrounds servers/cloud AFTER it has left your network:
WeatherUnderground - Bindings | openHAB

Intercept the data packets on the way to the WU cloud BEFORE it leaves your network (Not merged yet):
[wundergroundupdatereceiver] Initial contribution by danieldemus · Pull Request #10105 · openhab/openhab-addons (github.com)

Ambient Weather fetches the data from AW’s cloud, but will only work if you have a AW branded unit that are not sold outside of the USA as they appear to have modified firmware to lock you into their cloud:
Ambient Weather - Bindings | openHAB

And lastly this binding (Ip Observer) is for these two units that are made under many different brands…

Ip Obsever RJ45 model
WH2600 IP Observer Weather Station - Ethernet cable weather station - Fine Offset Electronics (foshk.com)

Newer Ip Observer that is WiFi only and has no RJ45
WH2650 Professional Wireless Weather Station with WIFI,with APP - Wifi Weather Station - Fine Offset Electronics (foshk.com)

Whilst I love having multiple options and am not against doing that, I am just more PRO/FOR making things easier, less error prone and faster. My philosophy is that anyone regardless of their skill level should be able to get X piece of gear working in openHAB in under half an hour. They should not have to read an API or have to setup REST calls. It should be as simple as auto discovery, it gets found and added from the inbox and then the channels are available to be used. When a device is used by many people they should work together to make it easier for everyone.

I personally think the WU packet intercept method is better and most likely to not disappear. There are many weatherstations feeding the WU network with data and if they changed the specs, then they would loose the stations world wide that make their service unique. This is important mainly if your weather station breaks and you want to buy another that will get you back up and running quickly. What is most likely to still be around in X years time, widely and cheaply available…

@Hollys

Yes your mostly correct with your summary. I could be wrong but Ambient Weather is just the same hardware that is made by Fine Offset just as Ecobee is, however Ambient Weather appear to have changed the firmware and created their own cloud and API. If you do not own a unit with their brand on it, just forget that binding as it is of no use. I also can not comment on it as I do not own their gear, nor have anything to do with the binding.

Welcome @Hollys. Sorry for the belated reply. Too many things going on atm.

I hope you read the whole thing. :laughing:

Yes, that’s correct.

Yes, that’s the one I wrote that receives data from the Ambient Weather API.

Correct. It is superseded by the ipobserver binding.

In fact, here’s the original pull request that credits the Thomas Hentschel work.