[APP][Pro] Embedded Data System - Converts the special XML-format from Embeddeds Data Systems OW Server v2 Enet

This app converts a Embedded Data Systems xml-string to a json-string

It supports readings from DS18B20 and DS2406 thats connected to OW Server2 from Embedded Data Systems

exampel xml


<Devices-Detail-Response xmlns="http://www.embeddeddatasystems.com/schema/owserver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PollCount>196425</PollCount>
<DevicesConnected>9</DevicesConnected>
<LoopTime>8.992</LoopTime>
<DevicesConnectedChannel1>6</DevicesConnectedChannel1>
<DevicesConnectedChannel2>3</DevicesConnectedChannel2>
<DevicesConnectedChannel3>0</DevicesConnectedChannel3>
<DataErrorsChannel1>0</DataErrorsChannel1>
<DataErrorsChannel2>0</DataErrorsChannel2>
<DataErrorsChannel3>0</DataErrorsChannel3>
<VoltageChannel1>4.54</VoltageChannel1>
<VoltageChannel2>4.58</VoltageChannel2>
<VoltageChannel3>4.58</VoltageChannel3>
<VoltagePower>4.81</VoltagePower>
<DeviceName>OWServer_v2-Enet</DeviceName>
<HostName>EDSOWSERVER2</HostName>
<MACAddress>00:04:A3:C1:4F:B5</MACAddress>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>870000042FD3A828</ROMId>
<Health>7</Health>
<Channel>1</Channel>
<RawData>34014B467FFF0C101CFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>19.2500 Deg C</PrimaryValue>
<Temperature Units="Centigrade">19.2500</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>BB000002D6514A28</ROMId>
<Health>7</Health>
<Channel>1</Channel>
<RawData>1D014B467FFF0310C5FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>17.8125 Deg C</PrimaryValue>
<Temperature Units="Centigrade">17.8125</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>E6000002D639BA28</ROMId>
<Health>7</Health>
<Channel>1</Channel>
<RawData>05014B467FFF0B10CDFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>16.3125 Deg C</PrimaryValue>
<Temperature Units="Centigrade">16.3125</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>FB00000399392628</ROMId>
<Health>7</Health>
<Channel>1</Channel>
<RawData>02014B467FFF0E10E2FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>16.1250 Deg C</PrimaryValue>
<Temperature Units="Centigrade">16.1250</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS18B20 Description="Programmable resolution thermometer">
<Name>DS18B20</Name>
<Family>28</Family>
<ROMId>1500000399553128</ROMId>
<Health>7</Health>
<Channel>1</Channel>
<RawData>31014B467FFF0F101FFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>19.0625 Deg C</PrimaryValue>
<Temperature Units="Centigrade">19.0625</Temperature>
<UserByte1 Writable="True">75</UserByte1>
<UserByte2 Writable="True">70</UserByte2>
<Resolution>12</Resolution>
<PowerSource>255</PowerSource>
</owd_DS18B20>
<owd_DS2406 Description="Dual addressable switch plus memory">
<Name>DS2406</Name>
<Family>12</Family>
<ROMId>DF00000020ADC212</ROMId>
<Health>7</Health>
<RawData>73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</RawData>
<PrimaryValue>A=0, B=0</PrimaryValue>
<InputLevel_A>0</InputLevel_A>
<InputLevel_B>0</InputLevel_B>
<FlipFlop_A Writable="True">1</FlipFlop_A>
<FlipFlop_B Writable="True">1</FlipFlop_B>
<ActivityLatch_A>1</ActivityLatch_A>
<ActivityLatch_B>1</ActivityLatch_B>
<NumberOfChannels>2</NumberOfChannels>
<PowerSource>0</PowerSource>
<ActivityLatchReset Writable="True">-</ActivityLatchReset>
</owd_DS2406>
</Devices-Detail-Response>

and output an json-string

{
	"Temperature": {
			"870000042FD3A828": 19.2500,
			"BB000002D6514A28": 19.2500,
			"E6000002D639BA28": 17.2500,
			"FB00000399392628": 16.0000,
			"1500000399553128": 21.0625
			},
	 "DS2406": {
			"DF00000020ADC212_A": 0,
			"DF00000020ADC212_B": 1 
		}
	}

Us it in a flow like this

2 Likes

Hi,
Thanks for creating app for the OW Server from Embedded - been waiting for years for Homey to be able to read this.

However - I am having trouble to read from my OW Server. I have the WIFI version - not sure if this messes up the XML. I am unable to get the GET request to update from the OW Server. XML output below.

1809 1 1.030 0 OW_SERVER-WiFi EDSOWSERVER 00:1E:C0:00:BF:43 DS18B20 28 4A00000410F82428 7 3C014B467FFF041040FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 19.7500 Deg C 19.7500 75 70 12 255

Hi EvenT

I made the app for my OW Server v2 Enet
On the first page it looks like this

Its the details XML file’s output the app is able to “convert” to json.

Can you post some more info? The text youposted is just a string, there is no xml-tags.

/Rikard

Hi Rikard,
Thanks for getting back - I definitely do not have that screen as I have version 1 of the observer.

I most likely have version 1 of the OW server, but I managed to get better screenshot through Chrome of the XML. Is this helpful?

My EDS Server

The XML looks correct

Have you followed the instructions first in this thread?

image

/Rikard

@EvenT Did you solve your problem?

In Norwegian - but you get the general point of it. I don’t know exactly where this is stopping, but when testing the flow it does not manage to get values from XML it seems.

Something is probably wrong on the last logic - not to familiar with JSON, but when checking the JSON_output, it does not seem to work correctly.

Skjermbilde 2023-11-20 kl. 15.45.46

Insted of a variable, can you enter it like this?
Temperature[‘870000042FD3A828’]

If your ROMid starts with i number it could fail on that

Not working - will not complete test.

Error message.
Skjermbilde 2023-11-20 kl. 16.39.07

you have to change to whatever is the ROMid you want to read
probably this
image

Not sure I understand, where do I change to this ROMId?

On your OW server you have thermometers, they all have a uniquely id thats called ROMid, you find it in your details.xml
you enter it in the last flowcard(analyser) like Temperature[‘ROMid’] but change ROMid to whatever romid you want to know the temperature for

Thanks,
Changed this, but not working still. I think something is wrong in the first block, as it is not exporting any tags. Do you have any logic inside the first block that is not visible?

I see a error

there are 2 different flowcards to choose from
image

You should have the second with the tag icon beside the word logic
image

That solved it :slight_smile: Now I got it working. Now I can connect the main loops with several sensors, and get them working properly in Homey…

Thank you - great app and support!

Perfect

You know you can read the output in parallell like this


and just add all your thermometers

Thanks - this is exactly how I was planning it :slight_smile:

I also have 1 light sensor that is 1 wire - will check tomorrow how this works with your app.