convert html to xml or json

Posted on
Mon Apr 22, 2019 11:20 am
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

convert html to xml or json

Dave... LOVE this plugin... it has simplified life for many things.

Most of my usage has been pretty straight forward as the devices involved create an xml file that I can access directly.

I need some help though. I understand what it's doing, but I'm not great at code:(

I have a weather station (Ambient 1400ip) it has a landing page the provides live weather data from my device.

192.168.1.xxx/livedata.htm

the background code from the landing page "livedata.htm looks like this...

Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>LiveData</title>
        <link href="axcss0.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="2" align="right" bgcolor="#0088F7">&nbsp;</td>
            </tr>
            <tr>
                <td colspan="2" bgcolor="#FFFFFF"><table border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <td width="20" height = "80">&nbsp;</td>                                             
                            <td ><img src="img/1.jpg" width="74" height="80" ></td>
                     <td width="10">&nbsp;</td>
                              <td class="txtstyle_1" >AmbientWeather 4.5.1</td>                                   
                        </tr>
                </table></td>
            </tr>
            <tr>
                <td colspan="2" align="right" bgcolor="#60B7FF">&nbsp;</td>
            </tr>
            <tr>
                <td colspan="2" align="left" bgcolor="#C0C0C0">
                    <table width="20" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <td bgcolor="#C0C0C0"><div class="menuitem_1"><a href="bscsetting.htm">Local Network</a></div></td>
                            <td bgcolor="#C0C0C0"><div class="menuitem_1"><a href="weather.htm">Weather Network</a></div></td>
                            <td bgcolor="#C0C0C0"><div class="menuitem_1"><a href="station.htm">Station Settings</a></div></td>
                            <td bgcolor="#EDEFEF"><div class="menuitem_1"><a href="livedata.htm">Live Data</a></div></td>
                            <td bgcolor="#C0C0C0"><div class="menuitem_1"><a href="correction.htm">Calibration</a></div></td>     
                        </tr>
                    </table>
                </td>
            </tr>
            <form name="livedata" method="POST" onsubmit="return chkForm(0);"> 
                <tr>
                    <td colspan="2" bgcolor="#EDEFEF">&nbsp;</td>
                </tr>
                <tr>
                    <td colspan="2" bgcolor="#EDEFEF"><div class="subitem_1">Live Data</div></td>
                </tr>   
                 <tr>
                    <td width="448" bgcolor="#EDEFEF"><div class="item_1">Receiver Time:</div></td>
                    <td width="352" bgcolor="#EDEFEF">                   
                    <input name="CurrTime" disabled="disabled" type="text" class="item_2" style="WIDTH: 120px" value="10:06 4/22/2019" maxlength="16"/></td>
                </tr>

                <tr>
                    <td width="448" bgcolor="#EDEFEF"><div class="item_1">Indoor Sensor ID and  Battery </div></td>
                    <td width="352" bgcolor="#EDEFEF">
                    <input name="IndoorID" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="0x--" maxlength="5" />
                    <input name="inBattSta" disabled="disabled" type="text" class="item_2" style="WIDTH: 100px" value="- -" maxlength="12" />
                    </td>
                </tr>               
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Outdoor Sensor ID and Battery</div></td>
                    <td bgcolor="#EDEFEF">                   
                        <input name="Outdoor1ID" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="0x--" maxlength="5" />
                        <input name="outBattSta1" disabled="disabled" type="text" class="item_2" style="WIDTH: 100px" value="- -" maxlength="12" />
                    </td>
                </tr>               
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Outdoor2 Sensor ID and Battery</div></td>
                    <td bgcolor="#EDEFEF">                   
                        <input name="Outdoor2ID" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="0x--" maxlength="5" />
                        <input name="outBattSta2" disabled="disabled" type="text" class="item_2" style="WIDTH: 100px" value="- -" maxlength="12" />
                    </td>
                </tr>             

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Indoor Temperature</div></td>
                    <td bgcolor="#EDEFEF"><input name="inTemp" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="--.-" maxlength="5" /></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Indoor Humidity</div></td>
                    <td bgcolor="#EDEFEF"><input name="inHumi" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="--" maxlength="3" /></td>
                </tr>
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Absolute Pressure </div></td>
                    <td bgcolor="#EDEFEF"><input name="AbsPress" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="----" maxlength="6" /></td>
                </tr>   
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Relative Pressure </div></td>
                    <td bgcolor="#EDEFEF"><input name="RelPress" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="----" maxlength="6" /></td>
                </tr>   
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Outdoor Temperature</div></td>
                    <td bgcolor="#EDEFEF"><input name="outTemp" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="--.-" maxlength="5" /></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Outdoor Humidity </div></td>
                    <td bgcolor="#EDEFEF"><input name="outHumi" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="--" maxlength="3" /></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Wind Direction </div></td>
                    <td bgcolor="#EDEFEF"><input name="windir" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="---" maxlength="5" /></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Wind Speed </div></td>
                    <td bgcolor="#EDEFEF"><input name="avgwind" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="----" maxlength="5" /></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Wind Gust </div></td>
                    <td bgcolor="#EDEFEF"><input name="gustspeed" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="----" maxlength="5" /></td>
                </tr>
              
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Max Daily Gust </div></td>
                    <td bgcolor="#EDEFEF"><input name="dailygust" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="1.1" maxlength="5" /></td>
                </tr>
                                       
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Solar Radiation </div></td>
                    <td bgcolor="#EDEFEF"><input name="solarrad" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="----.-" maxlength="12" /></td>
                </tr>
               
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">UV </div></td>
                    <td bgcolor="#EDEFEF"><input name="uv" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="---" maxlength="12"></td>
                </tr>
               
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">UVI </div></td>
                    <td bgcolor="#EDEFEF"><input name="uvi" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="--" maxlength="3"></td>
                </tr>

                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Hourly Rain Rate</div></td>
                    <td bgcolor="#EDEFEF"><input name="rainofhourly" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="0.00" maxlength="8" /></td>
                </tr>
                <tr>
                    <td bgcolor="#EDEFEF"><div class="item_1">Event Rain</div></td>
                    <td bgcolor="#EDEFEF"><input name="eventrain" disabled="disabled" type="text" class="item_2" style="WIDTH: 80px" value="0.00" maxlength="8" /></td>
                </tr>
               
            <form name="Rain_1" method="POST" onsubmit="return chkForm(0);"> 

                  <tr>
                       <td bgcolor="#EDEFEF"><div class="item_1">Daily Rain</div></td>
                       <td bgcolor="#EDEFEF"><input name="rainofdaily"  type="text" class="item_2" style="WIDTH: 80px" value="0.00" maxlength="8" />
                    <span id="rainofdaily_msg" class="errMsg0"></span></td>
                   </tr>

                   <tr>
                       <td bgcolor="#EDEFEF"><div class="item_1">Weekly Rain</div></td>
                       <td bgcolor="#EDEFEF"><input name="rainofweekly"  type="text" class="item_2" style="WIDTH: 80px" value="0.00" maxlength="8" />
                        <span id="rainofweekly_msg" class="errMsg0"></span></td>
                   </tr>

                   <tr>
                       <td bgcolor="#EDEFEF"><div class="item_1">Monthly Rain</div></td>
                       <td bgcolor="#EDEFEF"><input name="rainofmonthly"  type="text" class="item_2" style="WIDTH: 80px" value="20.70" maxlength="8" />
                        <span id="rainofmonthly_msg" class="errMsg0"></span></td>
                   </tr>

                   <tr>
                       <td bgcolor="#EDEFEF"><div class="item_1">Yearly Rain</div></td>
                       <td bgcolor="#EDEFEF"><input name="rainofyearly"  type="text" class="item_2" style="WIDTH: 80px" value="51.30" maxlength="8" />
                        <span id="rainofyearly_msg" class="errMsg0"></span></td>
                   </tr>
             
                   <tr>
                       <td colspan="2" bgcolor="#EDEFEF">&nbsp;</td>
                   </tr>
                   <tr align="center">
                       <td colspan="2" bgcolor="#EDEFEF"><input name="Apply" type="submit" class="item_2" style="WIDTH: 60px; HEIGHT: 24px;" onclick="setSubmitType(1)" value="Apply" />
                           <input name="Cancel" type="reset" class="item_2" style="WIDTH: 60px; HEIGHT: 24px;" value="Cancel" /></td>
                   </tr>
               </form>               

                <tr>
                    <td colspan="2" bgcolor="#EDEFEF">&nbsp;</td> 
                </tr>

                <tr>
                    <td colspan="2" align="center" bgcolor="#EDEFEF">
                        <input name="rain_Default" type="button" class="item_2" style="WIDTH: 110px; HEIGHT: 24px;"  onclick="raindef()" value="Rain Reset">
                        <input  id="refresh_st" type="button" class="item_4" style="WIDTH: 110px; HEIGHT: 24px;"  onclick="uiCtrl(this.value);" value="Refresh" />
                        <input  id="refresh_sp" type="button" class="item_2" style="WIDTH: 110px; HEIGHT: 24px;"  onclick="uiCtrl(this.value);" value="Stop Refresh"  />
                    </td>
                </tr>
            </form>
            <tr>
                <td colspan="2" bgcolor="#EDEFEF">&nbsp;</td>
            </tr>
            <tr>
                <td colspan="2" bgcolor="#C0C0C0">&nbsp;</td>
            </tr>
        </table>

      <script src="axjs0.js" type="text/javascript"></script>
        <script language="JavaScript" type="text/javascript">
            <!--
            var rfTaskRuningFlag = 0, rfTimeId;
            uiCtrl('Refresh');

         function uiCtrl(uiCmd)
         {
             if (uiCmd=='Refresh'){
                 document.getElementById('refresh_st').disabled = true;
                 document.getElementById('refresh_sp').disabled = false;
                 rfTaskRuningFlag = 1;
                 rfTaskState = 0;
                 rfTimeId = setInterval("ss()", 16000);               
             }else if (uiCmd=='Stop Refresh'){
                 document.getElementById('refresh_st').disabled = false;
                 document.getElementById('refresh_sp').disabled = true;
                 rfTaskRuningFlag = 0;
                 clearInterval(rfTimeId);
             }
         }

         function ss()
         {
             if (rfTaskRuningFlag)
             {         
               window.location.reload();
             }
         }
         -->
      </script>
    </body>
</html>


Is there a way to save the output from this html, and then convert to an xml file that I can then point GhostXML to? I basically want to capture all the weather station parameters (it looks like "input name" in the code covers them) to be able to use locally in Indigo via a GhostXML device.

I am currently pulling this data from a datalogger (meteobridge) however, not all of the weather parameters are captured that's why I am looking for a way to grab data from the device directly.

Your help/suggestions are appreciated!

Thanx

dave

Posted on
Mon Apr 22, 2019 12:27 pm
DaveL17 offline
User avatar
Posts: 5909
Joined: Aug 20, 2013
Location: Chicago, IL, USA

Re: convert html to xml or json

Hi Dave - glad to hear that you're finding the plugin helpful. Webscraping (parsing HTML) is something that Python is exceedingly good at. However, there's no easy way that I'm aware of to be able to do it on a global scale. That is, in order to do it, you're better off doing it for an individual use case rather than trying "one size fits all." I'd encourage you to do some searching for a Python library that's designed to scrape the livedata.htm web page--chances are pretty good that someone has already done most of the heavy lifting for you.

Here's one that might be modified for your purpose. It looks like the only non-standard Python library that's required is Requests, which Indigo already makes available. If there's enough demand, one of the developers here might be talked into writing a plugin (alas, I don't have the bandwidth to take on another plugin right now.)

I came here to drink milk and kick ass....and I've just finished my milk.

[My Plugins] - [My Forums]

Posted on
Mon Apr 22, 2019 1:48 pm
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

Re: convert html to xml or json

Thanx Dave...

Saw that, seemed to be a bit of overkill (didn't want to run a server on my machine)

However, related to that, found and modified the following.

Code: Select all
# A very basic screen scrape utility to grab the weather data from the ObserverIP module.

from lxml import html
import requests

station_ip = "192.168.1.200" # Change this to your ObserverIP address

# Get the latest live data from the ObserverIP, then create a tree from the content we can parse
page = requests.get("http://%s/livedata.htm" % station_ip)
tree = html.fromstring(page.content)

# Screen scrape the data. Help from:
# http://docs.python-guide.org/en/latest/scenarios/scrape/
# http://stackoverflow.com/a/22469878/1177153
inBattery = tree.xpath('//input[@name="inBattSta"]')[0].value
outBattery = tree.xpath('//input[@name="outBattSta1"]')[0].value
inTemp = tree.xpath('//input[@name="inTemp"]')[0].value
inHumid = tree.xpath('//input[@name="inHumi"]')[0].value
absPressure = tree.xpath('//input[@name="AbsPress"]')[0].value
relPressure = tree.xpath('//input[@name="RelPress"]')[0].value
outTemp = tree.xpath('//input[@name="outTemp"]')[0].value
outHumid = tree.xpath('//input[@name="outHumi"]')[0].value
windDir = tree.xpath('//input[@name="windir"]')[0].value
windSpeed = tree.xpath('//input[@name="avgwind"]')[0].value
windGust = tree.xpath('//input[@name="gustspeed"]')[0].value
solarRadiation = tree.xpath('//input[@name="solarrad"]')[0].value
uv = tree.xpath('//input[@name="uv"]')[0].value
uvi = tree.xpath('//input[@name="uvi"]')[0].value
rainHourly = tree.xpath('//input[@name="rainofhourly"]')[0].value


# print data to indigoserverlog

indigo.server.log(inBattery)
indigo.server.log(outBattery)
indigo.server.log(inTemp)
indigo.server.log(inHumid)
indigo.server.log(absPressure)
indigo.server.log(relPressure)
indigo.server.log(outTemp)
indigo.server.log(outHumid)
indigo.server.log(windDir)
indigo.server.log(windSpeed)
indigo.server.log(windGust)
indigo.server.log(solarRadiation)
indigo.server.log(uv)
indigo.server.log(uvi)
indigo.server.log(rainHourly)



Code: Select all
pr 22, 2019, 12:36:12 PM
   Script                          LOW STATUS
   Script                          Normal
   Script                          21.2
   Script                          45
   Script                          972.20
   Script                          972.20
   Script                          11.3
   Script                          47
   Script                          6
   Script                          0.0
   Script                          0.0
   Script                          169.70
   Script                          38
   Script                          0
   Script                          0.00


seems to do the trick... guess the easiest way is stick them in indigo variables for now (although a device would be nice)

Thanx for the help!!!

d

Posted on
Mon Apr 22, 2019 3:52 pm
DaveL17 offline
User avatar
Posts: 5909
Joined: Aug 20, 2013
Location: Chicago, IL, USA

Re: convert html to xml or json

Hey Dave, that's great you found something that works for you--if not in the most straightforward way. Turning what you have into a plugin wouldn't take too much effort if you're up for giving it a try. :D

I came here to drink milk and kick ass....and I've just finished my milk.

[My Plugins] - [My Forums]

Posted on
Mon Apr 22, 2019 3:59 pm
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

Re: convert html to xml or json

Ive dissected a few plug ins to see how they work and looked at the available documentation.

Coding skills are not the greatest - I can do some basic python scripting to get by:(

What i need is an “Indigo Plugins for Dummies” guide that explains the structure - LOL

Posted on
Mon Apr 22, 2019 4:11 pm
howartp offline
Posts: 4268
Joined: Jan 09, 2014
Location: West Yorkshire, UK

Re: convert html to xml or json


Posted on
Mon Apr 22, 2019 4:12 pm
DaveL17 offline
User avatar
Posts: 5909
Joined: Aug 20, 2013
Location: Chicago, IL, USA

Re: convert html to xml or json

Have a look at the Indigo Plugin Documenter plugin. It does a great job of explaining how the different pieces fit together.


Sent from my iPhone using Tapatalk

I came here to drink milk and kick ass....and I've just finished my milk.

[My Plugins] - [My Forums]

Posted on
Mon Apr 22, 2019 4:13 pm
howartp offline
Posts: 4268
Joined: Jan 09, 2014
Location: West Yorkshire, UK

Re: convert html to xml or json

Oh, and once they’re in variables, I launched a new plugin yesterday (forum only yet) that puts variables into a device.


Sent from my iPhone using Tapatalk Pro

Posted on
Mon Apr 22, 2019 4:15 pm
howartp offline
Posts: 4268
Joined: Jan 09, 2014
Location: West Yorkshire, UK

Re: convert html to xml or json

DaveL17 wrote:
Have a look at the Indigo Plugin Documenter plugin. It does a great job of explaining how the different pieces fit together.

Hehe, never got my head around that one myself!!!


Sent from my iPhone using Tapatalk Pro

Posted on
Tue Apr 23, 2019 6:01 am
autolog offline
Posts: 3506
Joined: Sep 10, 2013
Location: West Sussex, UK [GMT aka UTC]

Re: convert html to xml or json

DaveL17 wrote:
Have a look at the Indigo Plugin Documenter plugin. It does a great job of explaining how the different pieces fit together.


Agreed - It is a masterclass reference for plugin development. :)

Posted on
Tue Apr 23, 2019 6:26 am
autolog offline
Posts: 3506
Joined: Sep 10, 2013
Location: West Sussex, UK [GMT aka UTC]

Re: convert html to xml or json

Hi Dave,

bsp9493 wrote:
Dave... LOVE this plugin... it has simplified life for many things.

Most of my usage has been pretty straight forward as the devices involved create an xml file that I can access directly.

I need some help though. I understand what it's doing, but I'm not great at code:(

I have a weather station (Ambient 1400ip) it has a landing page the provides live weather data from my device.

192.168.1.xxx/livedata.htm

... [SNIP] ...

I am currently pulling this data from a datalogger (meteobridge) however, not all of the weather parameters are captured that's why I am looking for a way to grab data from the device directly.


I have a plugin for my own personal use (i.e. not published) that is in an "alpha" state which extracts the live data from an Aercus Weathersleuth. I believe that this is the equivalent of an Ambient Weather 1400IP?

I developed the plugin because the Weathersleuth stopped connecting to Weather Underground - not sure what the issue was or whether it was related to Weather Underground's change to their T&Cs etc.

The plugin is highly tailored for my own personal use and use Postgres to store the data, calculating averages for most of the values for the last n-minutes (e.g 5), last n-hours (e.g. 1) and today.
The plugin creates an Indigo weatherSleuth device that gets updated every 30 seconds; could be longer/ could be shorter.

I am still playing around with it but I might be able to make it work for you but I would have to generalise it e.g. allow the IP Address to be specified rather than hard-coded. Also, I might be able to make the postgres usage optional.?

Posted on
Tue Apr 23, 2019 10:37 am
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

Re: convert html to xml or json

howartp wrote:
Oh, and once they’re in variables, I launched a new plugin yesterday (forum only yet) that puts variables into a device.


oooohhhh, does it have a name, what section?? I have to look for that.

Sent from my iPhone using Tapatalk Pro

Posted on
Tue Apr 23, 2019 10:38 am
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

Re: convert html to xml or json

yes... agreed, need "indigo plugins for dummies"

autolog wrote:
DaveL17 wrote:
Have a look at the Indigo Plugin Documenter plugin. It does a great job of explaining how the different pieces fit together.


Agreed - It is a masterclass reference for plugin development. :)

Posted on
Tue Apr 23, 2019 10:40 am
bsp9493 offline
Posts: 153
Joined: Nov 30, 2017
Location: Kelowna, BC

Re: convert html to xml or json

Hi Jon...

do you mind sharing? If you can pm me the plugin, I can maybe try to modify for the ambient ws.



autolog wrote:
Hi Dave,

bsp9493 wrote:
Dave... LOVE this plugin... it has simplified life for many things.

Most of my usage has been pretty straight forward as the devices involved create an xml file that I can access directly.

I need some help though. I understand what it's doing, but I'm not great at code:(

I have a weather station (Ambient 1400ip) it has a landing page the provides live weather data from my device.

192.168.1.xxx/livedata.htm

... [SNIP] ...

I am currently pulling this data from a datalogger (meteobridge) however, not all of the weather parameters are captured that's why I am looking for a way to grab data from the device directly.


I have a plugin for my own personal use (i.e. not published) that is in an "alpha" state which extracts the live data from an Aercus Weathersleuth. I believe that this is the equivalent of an Ambient Weather 1400IP?

I developed the plugin because the Weathersleuth stopped connecting to Weather Underground - not sure what the issue was or whether it was related to Weather Underground's change to their T&Cs etc.

The plugin is highly tailored for my own personal use and use Postgres to store the data, calculating averages for most of the values for the last n-minutes (e.g 5), last n-hours (e.g. 1) and today.
The plugin creates an Indigo weatherSleuth device that gets updated every 30 seconds; could be longer/ could be shorter.

I am still playing around with it but I might be able to make it work for you but I would have to generalise it e.g. allow the IP Address to be specified rather than hard-coded. Also, I might be able to make the postgres usage optional.?

Posted on
Tue Apr 23, 2019 10:41 am
howartp offline
Posts: 4268
Joined: Jan 09, 2014
Location: West Yorkshire, UK

Re: convert html to xml or json

bsp9493 wrote:
howartp wrote:
Oh, and once they’re in variables, I launched a new plugin yesterday (forum only yet) that puts variables into a device.



oooohhhh, does it have a name, what section?? I have to look for that.

Sent from my iPhone using Tapatalk Pro

viewtopic.php?t=22336


Sent from my iPhone using Tapatalk Pro

Who is online

Users browsing this forum: No registered users and 1 guest