HTTP Sensors
From eedomus - Documentation
The box eedomus allows you to create virtual sensors using data contained in XML pages (and by extension some HTML pages). The data will be retrieved from an XML page with your box eedomus on a regular basis, and available in the web interface.
How?
Start by adding a module"HTTP - Sensor" with the interface eedomus (Setup / Add device / Other device types / HTTP - Sensor).
Then go to the screen Device Configuration to set your sensor:
An example of a sensor built around a test page made available on the server eedomus: http://api.eedomus.com/test/http_sensor_sample.xml.php
The semantics of expressions [XPath http://fr.wikipedia.org/wiki/XPath] is described [here http://fr.wikipedia.org/wiki/XPath].
Your expressions can be evaluated this test page
Note 1: This virtual sensor can collect integers, decimals (or text, limited to 40 characters).
Note 2: It is possible to determine a mapping between XML values and the values displayed in eedomus using the tab "Values" of your HTTP sensor.
Note 3: It is possible to hide the unity displayed by entering a space for this parameter is mandatory.
Note 4: Some XML encodings, such as iso-8859-15 may be a problem, do not hesitate to report cases that would not work.
Example
To retrieve information from an analog sensor of IPX800, the configuration is as follows
Request URL: http://ici_adresse_IP_de_l IPX / status.xml XPath://year1 to retrieve the first analog input
Use Advanced with XPath Operators [1]
It is possible to manipulate the results of XML nodes with operators xPath, here are some examples:
- To divide by 10 the result:
(/ SENSORS / TEMPERATURE / VALUE)div 10
- To multiply the result by 100:
(/ SENSORS / TEMPERATURE / VALUE)* 100
The following functions are also supported:
To round fractions down (truncate)
floor (number)
To round to the next whole
ceiling (number)
For rounding to the nearest entry
round (number)
To count the number of nodes that will return the XPath
count (xpath)
To concatenate two strings
concat (string1, string2)
Get just one part of a string
substring (string, start, length) substring (string, start)
Leaving only the data before a given character
substring-before (string1, string2)
Leaving only the data after a given character
substring-after (string1, string2)
To retrieve the length of a string
string-length (string)
To replace characters with other
translate (string1, string2, string3)
Example: translate ('12: 30','30','45 ') Result:'12:45'
Example: translate ('12:30','03','54') Result:'12:45'
Example:translate ('12:30','0123','abcd') Result:'bc:da'
Function replace () is not supported, but a specific function change () can be used.
The function can be called one or more times in late XPath expression to replace one string in another:
change (string, search, new_string)
Some examples of using functions:
- To keep that data after the '.':
substring-after (/ SENSORS / TEMPERATURE / VALUE,'.')
- To retrieve only the 2nd character read:
substring (/ SENSORS / TEMPERATURE / VALUE,2,1)
- To count the number of XML nodes:
count (/ SENSORS / TEMPERATURE)