יום שישי, 31 במאי 2013

מדידת צריכת החשמל בביתי בעזרת ינשוף

כבר באוקטובר 2012 התחלתי למדוד את הצריכה של האנרגיה בבית, לא היו לי מכשירים מדויקים פשוט מדי פעם תעדתי את שעוני הצריכה של המים והחשמל (בדירה שאני גר כרגע 2 שעוני חשמל שכל אחד הוא פאזה אחת, שאלות בבקשה לחברת החשמל כי לי אין מושג למה)

בהתחלה מדדתי שלוש פעמים ביום, היו הפוגות שמדדתי פעם ביום-יומיים וכשהייתי ממש עמוס בדברים אחרים שכחתי לחודשיים למדוד אבל עכשיו עם טכנולוגיה פשוטה שנתקלתי בה בזכות מהנדס חרוץ להנדסת אלקטרוניקה, יש לי עתה מכשיר שמנטר את הצריכה בבית כל כ-15 שניות ושומר את המידע באופן מפורט, ונותן לי תובנות ואת היכולת להבין כיצד אפילו המשק הקטן הביתי שלי יכול לחסוך אנרגיה.  קישור לטבלת המידע וגרף הביצועים הידני בטבלה Chart-All ניתן לראות את הגדימה הידנית.

גרף מתקדם בעזרת מערכת ינשוף: עד 30/5/2013 ממוצע ידני, החל מ-  31/5/2013 אזין את המידע ממערכת הינשוף שנותנת גם רזולוציות יותר מדויקות של כמה שניות הפרש וגם שומרת על רציפות. לגרף זה כמובן לא שמתי את חשבון המים כי הוא לא נמדד אלקטרונית, אותו עדיין אמדוד ידנית.
הנתונים בכחול הם צריכת הkW/h היומית והנתונים באדום הם הממוצע של 7 הימים האחרונים. בצהוב צריכת החשמל הדו-חודשית עליה אני משלם לחברת החשמל ובירוק הנמדד בינשוף במהלך חודשיים. הציר האנכי השמאלי הוא קוט"ש צריכה ליום והציר הימני הוא קוט"ש צריכה בחודשיים. המערכת מתעדכנת מאתר הינשוף מידי לילה, כך שכל בוקר בגרף זה יש כבר את הצריכה של אתמול. רואים למשל את הטיסה לחו"ל שלנו באוגוסט איך שהצריכה נופלת לכ- 1.5 קילוואט ליום (מחוברים לשקע נשארו רק המקרר והאינטרנט) כך שאני יכול להעריך שהמקרר שלנו הוא יעיל למדי, במהלך שנה הוא אולי עולה לנו עד 500 ש"ח בחשמל שזה מאוד יעיל.
מאז שהתחלנו למדוד הצלחנו להוריד את חשבון החשמל שלנו מכ- 1000 ש"ח לחודש לכ- 600 ש"ח לחודש, כאשר הבחנו בצרכנים בזבזניים, החלפנו מנורות ליבון בפלורסנט וקנינו נורות לד חסכוניות במיוחד מחנות ב- EBAY (המחירים בעולם משמעותית נמוכים מאלו שבחנויות בארץ אבל זה נושא מורכב...)

הצריכה הממוצעת במהלך השבוע:

קישור לחנות ממנה קניתי רצועת לד לתאורת לילה לחדר תינוק וקישור לחנות ממנה קניתי מנורות מתאימות לבית נורה סטנדרטי במחיר מאד תחרותי
ממליץ מאד לנסות את המערכות האלו, או לפחות להתחיל להתעניין.


יום ראשון, 24 במרץ 2013

Solar systems yield Java / JavaScript development

Lately I've been asked to help with the monitoring systems of most of our Solar installations, which are hundreds of solar systems in Israel.

Each system is connected to the internet and has some kind of interface I can read it's data (if it's connected) and check these signs:
Solar system with shaded panels shown in black

- has the system lost connection lately (like the last week/month)
- is the power on right now?
- did it produce any energy yesterday and today?
- if it is connected more than a year, are there any interferences around the year and what's a year's yield?
- for each kW installed on the system, what's a years yield (normalized) ?
- what's the specific price for this system of NIS/kW and is it according to the financial plan?

I've started to learn Java (lots and lots of reading) and I've downloaded Eclipse that really helps a lot to design and study the syntax. I'll update here about the functions I'm writing and what each does, if you have suggestions I'd really appreciate Your feedback.

usually in Israel we refer to the 1650 kW a year per each kW installed.
so if I have a 55kWp system, It should produce about 90.75MW annualy. so if this system produces less I would flag it as an issue, unless it is designed for a certain azimuth / elevation which I can see in "solar degradation" charts what kind of yearly % will this system lack

I'm working on a Java application to scan these systems each night and write down a report.
I'm doing it step by step so here's a code to calculate how much time has passed (in days and in years) from the installation date until today:
some panels that show partial shading in the morning (probably a tree)

(I'm going to use native Java classes an no matter what the forums say, I'm not going to install any 3'rd party plugins for it...

// ----- Java Code : calculating difference between dates in days and years -----

import java.util.*;

public class Main {
    public static void main(String[] args){
        Calendar caln1 = new GregorianCalendar();
        Calendar caln2 = new GregorianCalendar();
        caln1.set(2010,1,1);
        // If you require a different date please insert one below remember to remove the "//" format: (Year,Month,Day)
        //caln2.set(2010,1,1);
        int daysb = daysCalcBetween(caln1.getTime(),caln2.getTime());
        System.out.println("Days passed = "    + daysb);
        double timeYears = daysb/365.25;
        System.out.println("in Years it's = " + timeYears);
    }
    public static int daysCalcBetween(Date d1,Date d2){
        return (int) ((d2.getTime()-d1.getTime())/(1000*60*60*24));
    }
}

// ----- END OF Java Code : calculating difference between dates in days and years -----

some system manufacturers provide a 'daily report' via email, so I've been starting to log these systems each day to get some perspective how different areas and climates provide different yields. I'm using Google Script to daily parse these emails into a Google Spreadsheet that provides some analytics on systems.

This is the actual daily yield of our systems for each 1kWp installed normalized and verified. from these analytics I could continue to develop a script that helps determine if a system is faulty, if it needs cleaning and to see who yields the best for each geographical area:

This is a 'live' graph that updates daily due to the JavaScript I've built in Google script:
the script is:
 -----
/* I am not a professional programmer so if you have any insight on how to optimize this script Your comments are more than welcome ! */

 function processSMA() {
  // getting the label target in gmail:
  var threads = GmailApp.getUserLabelByName('desiredLabel').getThreads();
var doc = SpreadsheetApp.openById("SpreadsheetDoc").getSheets()[0];
  var lastRow = doc.getLastRow();
  var lastCol = doc.getLastColumn();
  // This specific chart has indexes: a row for each date and a culomn for each system
  var indexDate = doc.getRange(1,1,lastRow,1).getValues();
  var indexDate1 = new Array()
  var indexSystem = doc.getRange(1, 1, 1, lastCol).getValues();
  var indexSystem1 = new Array();
 
  /* format date of index:
 since getRange receives a 2d array here, I need change it to a 1d array in order to search for indexes in it in the future. */

  for (i=0; i<lastRow;i++){
     indexDate1[i] = indexDate[i][0];
     if(indexDate1[i]>0){
     // I'm formating the date so that in the next indexing it would be easy to search for it
     indexDate1[i] = Utilities.formatDate(indexDate1[i], "GMT", "MM/dd/yyyy");
     }
  }
 
    for (i=0; i<lastCol;i++){
    // I'm removing white spaces to ensure proper indexing
    indexSystem1[i] = indexSystem[0][i].replace(/\s/g, "");
        }
  // garbage collector: remove unformatted old indexes:
  indexDate = null;
  indexSystem = null;
 
  // parsing the messages:
  for (var i = 0; i < threads.length; i++) {
  var messages = threads[i].getMessages();
  
    
     for (var j = 0; j < messages.length;j++) {
      // when dealing with large amount of emails, this is recommended...
       Utilities.sleep(1000);
      // Parse each message
       var date = Utilities.formatDate(messages[j].getDate(), "GMT", "MM/dd/yyyy")
       // row position:
       var rowPos = indexDate1.indexOf(date);
        // the subject of the email has the system name, the date and produced kWh today.
       var rawData = messages[j].getSubject().toString();
            
       // looking through the text for the data:
       var dataPosReport = rawData.search("Info Report");
       var dataPosDate = rawData.search(date);
       var dataPosProduction = rawData.search("Daily Production")
       var dataPoskWh = rawData.search("kWh")
     
       // and now to use this locations to create system and yield
       var systemName = rawData.slice(dataPosReport+12,dataPosDate-1).replace(/\s/g, "");
       var systemYield = rawData.slice(dataPosProduction+17,dataPoskWh);
       var colPos = indexSystem1.indexOf(systemName);
       if(colPos!=-1){
         doc.getRange(rowPos,colPos+1).setValue(systemYield);
       // getting rid of the email so It will not be parsed after it has been successful
         messages[j].moveToTrash();
       } else {
       // if a system has not been found or the operation was not successful log out the system, to assure the naming system is correct in the target spreadsheet.
       Logger.log(systemName);
       }
    }
  }
}

-----
again, I'm a graphic designer, not a professional programmer, it would mean a lot to me if any of you share your insight on how to improve this script further. comments are very much welcome !

ToDO:
1. with a given system evaluate if it is up to the 1650 kW/year per kW installed
2. compare the system yield and return of investment to it's contract information and what was promised to the client
3. learn to write a script that logs into each system through the internet, writes an XML or CSV for each system and evaluates system condition
4.  lots of work to be done (and this is on my spare time...) If you have some thoughts, links or anything I could learn from Your comments are welcome !

Z.


יום שלישי, 6 בדצמבר 2011

Job seeking trends

I've just noticed this unbelievable graph of Job searching in Google Trends:
Job seeking search volume index worldwide
In this graph you can clearly see that the tendency of people to seek the term "job" around the world is very high from January and slowly descends until December, then quickly climbs in January, that's quite a anthropological phenomenon. A new year could perhaps engage people in ideas of a new and better future, perhaps a new job :) while in Israel:


Job seeking search volume index / Israel
I guess in Israel people are looking for a better stature throughout the year. Even the term "New Year" is miscalled "Silvester" which is a very silly thing, they know how to take out the fun parts in life.
happy job hunting ! it's almost New year's !

also found that nice graph for the terms "winter" and "summer" over the years:

and the most amazing is that the search volume index of Sinus looks just like a sinus !
The sinus sinus trend !
oh I'm such a geek...

יום ראשון, 18 בספטמבר 2011

Bonzo love

A short video of my Bonzo loving dog showing her appreciation of the brand
וידאו קצר של צל המראה את אהבתה למותג המזון המיתולוגי בּונזו

יום חמישי, 15 בספטמבר 2011

Ikea Brimnes bed construction

This saturday we worked real hard to construct our Ikea 'Brimnes' bed that is quite a time consuming assembly project... we took the Eee Transformer pad and switched it's camera to timelapse mode and shot the following sequence:


enjoy :)

יום שלישי, 26 ביולי 2011

Google Autonomous

Google Autonomous photoshop
Since Google has released some info of their autonomous vehicle experiments I've been eager to hear more about it.
I Think that starting with the private sector will not 'solve really big problems' as the article states.

I think that if Google presents this technology it must be implemented on large scale commercial architectures and not private vehicles, unless they are shared among users via car/time sharing (but that's another idea still far from beta testing...)


  • Mass transit system: Buses and rail systems that drive autonomous, never get tired or angry of other vehicle drivers, Here also the face recognition technology could come in handy if one can enter an automated bus and be recognized by the bus and be automatically reminded where my stop is, automatic ticketing etc'
  • Trucks / Semi : that suffer the worst from blind spots and work hours, here is the greatest opportunity to basically save lives if these mammoths were driven by precise robotics instead of an angry mob
  • FedEx and Mail systems that usually route daily could benefit the most
  • a good replacement for any Israeli driver (perhaps also for any Israeli politician too...)
I fear, although this technology is great, that it will very quickly be cracked, hacked and misused to send pizzas to classmates.

what do you think?

יום ראשון, 17 ביולי 2011

Solar Yield : Degradation and % Efficiency

Simple chart for Azimuth/Inclination and percent degraded yield from PV's used for sloped roofs: based local in Israel (A Google login required)
be sure to check out My website site for more information

 Timelapse animation of a system we've installed in Elad, Israel, which shows the preperations, modeling and the last part shows how we evade the shadow. we've used a Trimble D-GPS to obtain ~1 cm resolution of the building and high walls that we had to take into consideration.
Your comments are most welcome
Do You wish to compare the yield of Your system to other systems? 

I'm working on a daily kWh per kWp installed on systems around Israel, you can monitor hundreds of systems using the JavaScript I'm working, the graph charts are in this link
there is about 10,000 kWp monitored daily that You can view how systems in Jerusalem yield differently than systems in the Golan, in cities or outside of them etc'.
if you like to be part of this statistics please inform me and I'll log Your system as well.
Thank You for reading this, Your comments are most welcome !