• 2013 - Ultralight vliegtuig
    2013 - Ultralight vliegtuig
  • 2015 - Kanoën in France
    2015 - Kanoën in France
  • 2015 - Atlantische oceaan
    2015 - Atlantische oceaan
  • 2017 - Op de MTB bij holterberg
    2017 - Op de MTB bij holterberg
  • 2016 - Ondergaande zon op de Nijl
    2016 - Ondergaande zon op de Nijl

Deprecated: Function create_function() is deprecated in /var/www/www/plugins/content/geshi/geshi/geshi.php on line 4719

Wij hebben sinds een half jaar een plugwise stretch in huis, om verbruik van diverse apparaten in kaart te brengen, én ook om beter te kunnen monitoren wat onze zonnepanelen leveren. (Met historische gegevens.)

Dit kan allemaal in de Plugwise app, maar het is veel leuker om dit ook buiten deze applicatie (op de plekken waar je dit zelf wilt) kunt uitlezen.  Er zijn al wat mensen die hier e.e.a. over uitgevonden hebben, zie bijv. http://phoenixinteractive.nl/ Hier heb ik in eerste instantie al leuke dingen gevonden, ook hij is fan van AutoIT ;-).

Maar ik wil ook online eenvoudig kunnen kijken wat ik nu 'lever' met de zonnepanelen, en daar heb ik een php script voor gemaakt.  Het resultaat zie je in mijn vorige artikel (wind en zon gecombineerd!)

 

Dit 'plugwise' script is meteen zo gemaakt dat je in principe van al je apparaten de status kunt uitlezen, maar ook eenvoudig een enkele selectie kunt maken. Hij ziet de 'Appliance' naam, status (aan/uit/offline) en wat het op dit moment verbruikt / levert.

Ik publiceer ze hieronder, hopelijk hebben anderen er zo ook wat aan!

Hier volgt een eenvoudig script om de plugwise stretch uit te lezen:

<?php
//Script to read power Sunpanels and more from Plugwise.
include 'plugwise_functions.php';
 
$stretchaddress = "192.168.XXX.XXX";
$stretchid = "yourid";
$appname = "";
 
$information = get_state_appliances($stretchaddress,$stretchid,$appname);
foreach ($information as $name => $info)
{
echo $name." status: ".$info[0]["state"]." gebruikt: ".$info[0]["consuming"]."Watt.<br />"; 
}
?>

Hier volgen de php-functies die ik hiervoor gemaakt heb:

<?php
// gets the data from plugwise stretch URL with curl.
function get_stretch_data($url,$stretchid) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERPWD,"stretch:$stretchid");
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
// End function
 
// Start function get_state_appliances
// Usage: get_state_appliances(<StretchIP>,<stretchID>,<appliance_name>)
// if appliance_name is empty, all appliances are returned
// Returns: Array with Name,State (also on/offline), current Consuming value.
// If appliance is producing, the consuming value wil become negative.
function get_state_appliances($stretchaddress,$stretchid,$appname) {
$appname = strtolower($appname);
$xmlstr = get_stretch_data("http://".$stretchaddress."/core/appliances",$stretchid);
$appliances = new SimpleXMLElement($xmlstr); //put xml-data into array for easy reading.
$returndata = array();
foreach ($appliances as $value) {
  if ($appname == "" or strtolower($value[0]->name) == $appname) { 
  $tmparray = array();
  $name = strval($value[0]->name);
  $state = strval($value[0]->actuators->relay->state);
  $onlinestate = mktime() - strtotime($value[0]->modified_date);
  if ($onlinestate >300) // 5 minuten is offline!
    {$state = $state." (offline)"; } 
  $consuming = 0;
  for ($i = 0; $i <= 2; $i++) {
    if ($value[0]->logs->point_log[$i]->type == 'electricity_consumed' and $value[0]->logs->point_log[$i]->period->measurement <> 0)
      { $consuming = strval($value[0]->logs->point_log[$i]->period->measurement); }
    if ($value[0]->logs->point_log[$i]->type == 'electricity_produced' and $value[0]->logs->point_log[$i]->period->measurement <> 0)
      { $consuming = strval(-floatval($value[0]->logs->point_log[$i]->period->measurement)); }
  }
  $tmparray["state"] = $state;
  $tmparray["consuming"] = $consuming;
  $returndata["$name"][] = $tmparray;
  }
}
return $returndata;
}
// End function
?>

 

Reacties  
#2 Erwin 31-01-2015 17:21
Geweldig! Hier was ik net naar op zoek. Ben al even met perl bezig geweest om de output in Zabbix te graphen, maar dat wou niet helemaal lukken.
Dit script kan ik waarschijnlijk vrij eenvoudig in Zabbix aanroepen om de waardes op te halen.

Thanks!
#1 Harry Hummel 06-10-2014 12:54
Ik ben ook gebruiker van diverse plugwise divices, en zoek ook naar mogelijkheden om deze aperatuur te combineren . en zo nieuwe toepassingen te vinden.

veelal gebruik ik het in combinatie met homeseer.
maar ben ook benieuwd hoe ik het kan gebruiken i.c.m scripting

You have no rights to post comments