Twitterende Zonnepanelen

In de donkere dagen voor kerst 2012 werden bij ons zonnepanelen geplaatst. Van de gemeente mochten ze niet aan de ‘goede’ kant. Dat zou afbreuk doen aan het ononderbroken aangezicht van dakpannen van onze 26-onder-een-kapper. Ondanks dat via google maps te zien is dat 6 huizen verder wel zonnepanelen en slechts 1 huis verderop een dakraam het ononderbroken aanzicht onderbreken… De zonnepanelen zijn nu dus west-noordwest georienteerd en over de terugverdientijd hoeven we het niet meer te hebben.

Toch blijft de vraag: doen ze het? hoeveel vermogen leveren ze nou? Om deze vragen te beantwoorden kan ik de hele dag voor de meterkast gaan staan en kijken of die meter nu eindelijk eens een keer terugdraait. Andere optie is om het programma Sunny Explorer van de leverancier van de omvormer te gebruiken en het geleverde vermogen uitlezen. Beide opties voldoen niet aan het criterium om ’s avonds op de bank via de iPad het vermogen te kunnen aflezen.

Zoals zovaak bleek door een eenvoudige zoektocht met Google dat ik lang niet de eerste was met deze vraag en de daarbij gestelde randvoorwaarde van bank/iPad.

Op http://ictoblog.nl/raspberry-pi/raspberrypi-pvoutput en op http://www.gzeel.nl/sma-bluetooth-pvoutput/ bleken uitstekende handleidingen te staan om mijn probleem op te lossen. Overigens bleek in mijn geval de op deze blogs genoemde versie van sma-bluetooth niet te werken. Op https://code.google.com/p/sma-bluetooth/source/clones staan echter een aantal andere clones. Uiteindelijk vond ik een werkende variant.

Daarmee had ik m’n eerste succesbeleving. Iedere 5 minuten wordt het vermogen van de zonnepanelen uitgelezen, in een database gezet en geupload naar pvoutput.org. Alle details zijn altijd en overal op te vragen!

Op de eerder genoemde blogs werd ook op de mogelijkheid gewezen om iedere dag een rapport per email te ontvangen. Ik heb gekozen voor een variant hierop. Ik besloot mijn zonnepanelen een eigen twitteraccount te geven. Met mijn eigen twitteraccount volg ik mijn zonnepanelen-account. Zodoende hoef ik niet iedere dag te surfen naar mijn eigen output op een specifieke website, maar kom ik iedere dag een aantal kerngegevens van de zonnepanelen vanzelf tegen in mijn twittertimeline.

Voor de geinresseerden. Om de output zoals die in de database staat om te vormen naar een dagelijkse tweet heb ik de volgende stappen ondernomen.

  1. tutorial mbt tweeten vanuit een php-script: http://www.wescutshall.com/2011/09/how-to-post-to-twitter-from-php/

  2. maken van php-script (zie hieronder)

  3. php-script en files vanuit tutorial in mapje op de webserver geplaatst

  4. via crontab dagelijks om 20:25 het php-script uitvoeren zodat ik tijdens het praatje van Gerrit Hiemstra kan kijken wat mijn zonnepanelen van het weer vonden (tweede succesbeleving).

NB Zodra de vogels op het dak teveel op de panelen hun behoefte doen, kan ik er op vertrouwen dat de panelen dat vervolgens naar mij zullen tweeten.

<?

$username="user";
$password="password";
$database="database";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT Date(d1.DateTime) as Date, 
max(d1.ETotalToday) as EToDate, max(d1.ETotalToday)- min(d1.ETotalToday) as EToDay, 
max(d1.CurrentPower) as PeakToday, 
(Select Min(Time(d2.DateTime)) From smatool.DayData d2 where 
          d2.CurrentPower = (SELECT max(d3.CurrentPower) 
          FROM smatool.DayData as d3 where Date(d3.DateTime) = 
                   CURDATE()) and Date(d2.DateTime) = CURDATE() ) as PeakTime, 
max(d1.ETotalToday) / DATEDIFF(CURDATE() , '2012-12-04') as DAvg 
FROM smatool.DayData as d1 where Date(d1.DateTime) = CURDATE()";

$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();

$i=0;
while ($i < $num) {
$Date=mysql_result($result,$i,"Date");
$EToDate=mysql_result($result,$i,"EToDate");
$EToDay=mysql_result($result,$i,"EToDay");
$PeakToday=mysql_result($result,$i,"PeakToday");
$PeakTime=mysql_result($result,$i,"PeakTime");
$DAvg=mysql_result($result,$i,"DAvg");
 
$consumerKey = 'key';
$consumerSecret = 'secret';
$oAuthToken = 'token';
$oAuthSecret = 'secret';

include 'twitteroauth/twitteroauth.php';

$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);
$text = "$Date: $EToDay kWh  Total: $EToDate kWh  Average: $DAvg  Peak: $PeakToday W at $PeakTime  ";

// Send tweet 
$tweet->post('statuses/update', array('status' => "$text"));

$i++;
}

?>
https://twitter.com/PJBZonnepanelen

comments powered by Disqus