Plugin with webpage data (help needed)

Is it possible to create a plugin with data from the webpage of my solar inverter (piko kostal 4.2)
I am interested in DC voltages and AC voltage, and produced power

The webpage looks like this

[code]<!DOCtype HTML PUBLIC “-//W3C//Dtd HTML 4.0 Transitional//EN”>

PV Webserver
PIKO 4.2
Leever (255)
Logo

AC-vermogen &nbsp energie
actueel 227 &nbsp W totale energie 43 &nbsp kWh &nbsp
&nbsp &nbsp &nbsp dagenergie 0.20 &nbsp kWh &nbsp
status toevoer MPP &nbsp

PV-generator &nbsp uitgangsvermogen &nbsp &nbsp
String 1 &nbsp &nbsp L1 &nbsp &nbsp &nbsp
spanning 590 &nbsp V spanning 235 &nbsp V &nbsp
&nbsp stroom 0.44 &nbsp A vermogen 0 &nbsp W &nbsp
String 2 &nbsp &nbsp L2 &nbsp &nbsp &nbsp
spanning 0 &nbsp V spanning 235 &nbsp V &nbsp
&nbsp stroom 0.00 &nbsp A vermogen 0 &nbsp W &nbsp
&nbsp &nbsp L3 &nbsp &nbsp &nbsp
&nbsp spanning 237 &nbsp V &nbsp
&nbsp &nbsp vermogen 227 &nbsp W &nbsp

RS485-communicatie
omvormer&nbsp

geschiedenis &nbsp &nbsp &nbsp informatiepagina instellingen
[/code]

I don’t see why a plugin shouldn’t be possible. Start with the Weather Underground code; it’s got web fetching and XML parsing.

How do i start (after getting the WUIWeather xml/json etc).
Where can one find info on how to set up/build plugins

Your only option is to learn by example. It would help* if you are already a decent programmer. Read code for similar plugins (Weather Underground in your case) and adapt it.

MCV’s howto is here: http://wiki.micasaverde.com/index.php/Luup_Somfy_Walkthrough

  • Actually it’s practically a necessity.
Read code for similar plugins (Weather Underground in your case)
You will have to get the files from the repository ... if you just install the plugin ... they are encrpted. [hr]

Also the Wiki will have a lot of info.
See:
http://wiki.micasaverde.com/index.php/Category:Development

It seems that i might user port 81 also (not http) for the most recent information.
How do i open this port and get data from it ? tcp port 81 not http protocol.

You will need to read up on LUA libraries.
Your initial posted indicated it was HTTP request … if not you can use a socket to read the data.

local host = "192.168.10.100"
local port = 81
local socket = require("socket")
local tcp = socket.tcp()
tcp:settimeout(5)
if (tcp:connect(host, port)) then
...
end

In the weather app i find this part of code. local WEATHER_PATTERN, tmp = string.gsub([[&lt;response>.* &lt;current_observation>.*&lt;observation_location>.* &lt;full>(.-)&lt;/full>.* &lt;latitude>(.-)&lt;/latitude>.*&lt;longitude>(.-)&lt;/longitude>.*&lt;/observation_location>.* &lt;observation_epoch>(%d-)&lt;/observation_epoch>.* &lt;weather>(.*)&lt;/weather>.* &lt;temp_f>(.-)&lt;/temp_f>.*&lt;temp_c>(.-)&lt;/temp_c>.* &lt;relative_humidity>(%d-)%%&lt;/relative_humidity>.* &lt;wind_string>(.*)&lt;/wind_string>.*&lt;wind_dir>(%a-)&lt;/wind_dir>.*&lt;wind_mph>(.-)&lt;/wind_mph>.*&lt;wind_kph>(.-)&lt;/wind_kph>.*&lt;icon>(.-)&lt;/icon>.* &lt;/current_observation>.* &lt;forecast>.*&lt;simpleforecast>&lt;forecastdays>&lt;forecastday>.*&lt;period>1&lt;/period> &lt;high>&lt;fahrenheit>(.-)&lt;/fahrenheit>&lt;celsius>(.-)&lt;/celsius>&lt;/high> &lt;low>&lt;fahrenheit>(.-)&lt;/fahrenheit>&lt;celsius>(.-)&lt;/celsius>&lt;/low>.* &lt;/forecastday>.*&lt;forecastday>.*&lt;period>2&lt;/period>.* ]], "%s*", "")

What does (.-) do as i can’t find that on the net. .- can be found but what do the parenthesis add to it ? Capture in stead of replace ?

http://www.lua.org/pil/20.3.html

Search term list: Lua pattern capture.