Solar Installation - 6.6 kW Price Ranging from $2600- $8000

First post in forum. In short just moved in to new house 6 months ago and is considering to install solar. Family of 4 with two kids. Did some browsing to hard to make decision. I have zero knowledge about solar. Our quarterly energy electricity bill comes around 350.

Comments

  • +6

    What is your question?

    • +5

      If GreenApple has 2 kids and a power bill of 350 a quarter, how many pancakes does it take to get to the moon?

      • assuming the average pancake height is 0.5 cm and the distance between Earth and Moon is 384,400 km, this means it needs 76,880,000,000 pancakes to get to the moon.

        • What if pancakes were used as fuel, not a platform?

  • For NSW something decent starts around $3800. I wouldn't pay more than $5k unless you need micro-inverters as the payback is too long.

    Do you have a specific question?

  • +1

    The price varies a lot.

    The type of company that is selling is important to note. Tthere are some that are like eBay drop shippers - marketing squad to sign you up then sub contractors to install the cheapest panels they can import form China, then there are the local small business that might cost a bit more but know the area and will be around for after sales service.

    The quality of components varies. You get what you pay for.

    The level of knowledge and advice provided for the install is Also important. I had one flashy salesman visit (flash car, big gold watch, not a tradie etc) that basically didn’t look at the house and picked ‘set b’ from his brochure for us after looking at our last two bills. This was as opposed to rhe company I picked that turned up in a work ute and boots, inspected the roofspace, did some calcs to work out power consumptions and provided an estimate of output for a few different configurations.

  • Recommend

    • Quality Inverter - Fronius Brand
    • Economical Panel - Jinko Brand
    • Install 25 Panel 6.75 Kw System ($6000-7000)
    • Install Paladin Solar Hot Water Diverter (google it) -AI Software to divert excess energy to Hot Water Tank
    • Install Large 410L Hot Water Tank - Natural Battery System (Excess Energy store as Heat overnight)
    • Install Roof Insulation - Reduce the need for AC and Heater

    1/3 Of Electrical Bill involve Heating (Hot Water eg) and Cooling

    Recommend going with “Solar Gain”, just in case something goes wrong with the Solar System. They have been around for a while and pretty reputable, Most Solar Panel Company come and go, making your installation warranty useless.

    Good Luck

    • -3

      How did you choose these brands?

      Compare to ARRL's QST-magazine,
      where a detailed recommendation
      include Lab Test results, for
      each & every Radio - or other
      product being reviewed; it's:

      Evidence-based Recommendations

      Also available, elsewhere, are
      individual Reviews (eHam.net),
      mostly owner / user opinions,
      akin to OzB comments, IMO.

      But a list of your fav brands
      - with No justifying Evidence
      or even data - could be biased

      "Do you Make or Sell these?"
      is what one begins to wonder

      PS I like the idea of storing
      Heat, ie, in Solar Powered HWS

      I know a guy w/ both Solar HWS
      & oodles of on-roof PV panels.

      His problem (B4 buying an EV):

      • Too Much Electricity(!)

      His solution was, IMO, wasteful:

      Run excess power across a huge
      metal bar designed to glow Red
      to "dump" the excess (dunno Y)

      Clearly better to heat usable
      water

      • Lol 🙄

        Have the system in my House to cut down ongoing cost

        Work like a charm for my house and investment property

        To summarise

        Definitely consider Jinko, Fronius, Paladin and Solar Gain

  • +3

    Read up on Solarquotes.com.au
    .

  • Price will also depend on where you live, NSW is a big state.

    If you want help, give a lot more details.

  • I empathise. (Hey at least you know how many kWs youre after!). I went 6.6kW in higher end of your band late last year, chasing quality components with a decent warranty - and a company with good reviews. Big fan of Solarquotes. Had ours in since eoSept and havent paid a power bill yet We were also about $1400pa. Receive credits in Summer/Spring, which will be clawed back during winter (in Melb). Best purchase Ive ever made

    • Hey at least you know how many kWs youre after!

      Based on the OP I suspect it is just a guess, or because everyone else is getting that sized system. A few years ago all the tv adds were for a 4kw system, now they’ve out marketed themselves up to 6 being the minimum you should get. Bigger may not be better.

  • https://forums.whirlpool.net.au/forum/143?g=371

    Whirlpool has a great solar forum if you have the time to do some reading/research through it

    • true, if you want more technical discussion about solar, go to WP.

      remember, the quality of supplier/installation is as important as the solar panel & inverter.

      Installing solar panel is a long term investment.
      You need to make sure you are dealing with a company that can gives support for the next 5-10 years at least.

  • Any recommendations on installers with some of the above mentioned inverter/panel combo that can be used in Vic. If someone has had good experience and can pm details will be greatly appreciated.

  • Reference a Paladin Diverter. There has been a good deal written about how diverters work and how well they do it, some good, some not so much…

    Here is the real time display from my house system using Paladin. The display is my new style graphing idea (StarBurst) that attempts to accommodate the 24 data points that flow out of Paladin in any given second.

    I am quite pleased with this version of the Starburst as it is visually pleasing, gives a decent visual snapshot of the day so far, and all the relevant hard data points as well. But then I would say that - I wrote it..

    The source code for all the Windows based helper apps are going open source, so you can modify anything you don't like yourself. I use a variety of languages, C++ for Paladin Core, JAVA for the HTML interface. These helper apps are in Liberty Basic - a much maligned language IMHO, but it compiles properly, is fast and easy to read / digest.

    The source code for the app presently live is below. I have tried to make the comments comprehensive. If you have a passing interest in this sort of thing, the code ain't that bad. All scratch built and as simple as I could make it. No fancy tricks, or tight code. Just boring old BASIC. If you want to play with it - use Liberty Basic Booster from here : http://www.bbcbasic.co.uk/lbb/

    YouTube Link to Live Paladin.

    https://www.youtube.com/watch?v=emhz2fRzyLs

    Granted this external data is not available to the general public, as I have not released the ESP32 add-on yet. I have one as I am the Dev. However my core Paladin is identical to any other, the ESP board just plugs into the CPU daughter board. From this POV all the ESP32 is doing is transmitting data via its' API to the helper app on my LAN.

    There are a variety of things the ESP32 can do to modify the Paladin's behavior and because it is a separate CPU, there is no interference or downgrade of the basic Paladin functions. Mainly the ESP32 is there for Grid support, temperature gradients, inverter / changer control (if applicable) and time of use charging etc. The ESP32 contains a rather elegant little AI internally that I based on an ANT's brain - but that is story for another time, perhaps.

    The Paladin Australia Facebook page has a lot of my blog entries on various Paladin functions and abilities - try there first. But if there is interest and I have time, I will gladly reply to queries and ideas. I get a lot of my best ideas from 'questions', since a question is often a 'need' in other clothes.

    WARNING *** LOTS OF BORING CODE BELOW *** WARNING

    As usual the forum text engine disregards tabs and compresses spaces so the comments are bunched hard against the code. Comments start with a ' for non-BASIC readers.
    ' All new Star Burst as a single display module using ESP Wifi API to get history and real time data.
    [InitColors]
    ForegroundColor$ = "black"
    BackgroundColor$ = "white"
    [WindowSetup]
    NOMAINWIN
    global version$ : version$ = "V0.7" ' Current version displayed on screen header
    global Screen : Screen = 5 ' Valid values to date are 4,5 and 10
    global TEST ' When testing - use this
    WindowWidth = 160 * Screen : WindowHeight = 160 * Screen ' Screen params
    UpperLeftX = INT((DisplayWidth-WindowWidth)/2)
    UpperLeftY = INT((DisplayHeight-WindowHeight)/2)
    global CenterX : CenterX = WindowWidth/2.05 ' Fiddle factor to accomodate font sizes
    global CenterY : CenterY = WindowHeight/2.05
    [ControlSetup]
    graphicbox #main.g, 0,0,WindowWidth,WindowHeight ' main.g is the whole thing
    Stylebits #main.g, 0, _WS_BORDER, 0, 0 ' borderless
    'textbox #main, 500,0,200,200
    ' Globals
    global GWorkDir$, GDataDir$ ' Some directory and file structures
    global True, False, TRUE, FALSE
    True = 1 : TRUE = True: False = 0 : FALSE = False ' Makes the code more readable
    global START ,OFF : START = TRUE : OFF = FALSE
    TEST = False
    global crlf$, q$ ' text building helpers
    q$ = chr$(34) : crlf$ = chr$(13)+chr$(10) ' Text helpers - probably redundent here
    global copyr$ : copyr$ = chr$(169) ' Copyright symbol
    global PalWifiAddress$,RTData$
    global Radius : Radius = CenterX - Screen * 10 ' Defining the circle
    global HandScale : HandScale = Radius - 20
    global Scale : Scale = 5
    Global TimeScale : TimeScale = 12 ' 12 times every 2 minutes = 10 secs. 24 gives 5 second refresh
    global TimeTT : TimeTT = 2 * 12/TimeScale ' Either 10 secs for 12 or or 5 seconds for 24 (TimeTT = 1)
    global LastPlot : LastPlot = 2
    global LastSec,LastMin,LastHour
    global FontSize,LeftX,RightX,BottomY
    FontSize = Screen * 2.5
    LeftX = 2 : RightX = WindowWidth - 15 - Screen * 35 ' Various constants to get the boxes positioned
    BottomY = 69 : if Screen = 5 then BottomY = 136 ' Total cludge for the top of the bottom boxes
    if Screen = 4 then BottomY = 168

    ' Defines
    GWorkDir$ = DefaultDir$ + "\" ' where things live on disk
    GDataDir$ = GWorkDir$ + "DATA\"

    ' Data Arrays
    dim RTD(24) ' Real Time Data as per ESP '/RAW'. 0 = Current, 1 = Last
    dim DL$(24) ' Data Lables
    dim HD(720,13) ' History from ESP '/TODAY'
    dim C$(24) ' Colors associated with Data Set
    dim TT(10)
    ' Read In Labels
    for x = 0 to 24 : read DL$(x) : read C$(x) : next x

    Open "Paladin StarBurst " + copyr$ + " KBS 2019. Version "+version$ for Window as #main
    #main.g "font ms_sans_serif 10"
    print #main, "trapclose [quit]"
    print #main.g, "trapclose [quit]"
    r = getIni("PALWIFI.txt") ' PALWIFI.TXT holds the ESP address
    [start]
    redim HD(720,13)
    #main.g "cls"
    call showClock
    call drawFace
    #main.g "flush"
    call timerSet
    if TEST = False then ' Do this when not testing
    call getHistoryData
    call plotHistoryData
    else
    call showRTD ' Use these for display test
    call plotLine 180,3
    wait
    end if

    [loop]
    if TT(9) = True goto [start] ' This is the main program loop at midnight
    if TT(TimeTT) = True then
    call getRTD ' get RTD
    TT(TimeTT) = False ' reset 10 or 5 sec flag
    if (len(RTData$) > 20) then ' Only plot valid data
    call showRTD
    end if
    end if
    if TT(5) = True then ' TT(5) is a 2 minute flag
    call plotHistoryData
    TT(5) = False ' TT(5) is a 2 minute flag
    end if
    while TT(0) = False ' TT(0) is a 1 second flag
    call sleep 100 ' sleep for 100 ms - don't hog the CPU
    scan ' scan the keyboard for abort
    call timerSet ' check all the TT flags
    wend ' untill a second has elapsed
    TT(0) = False ' Reset 1 second Flag
    call showClock ' Show the clock change every second
    goto [loop] ' Rinse and Repeat
    goto [quit] ' we should never get here, but if so, exit properly
    ' All below here are sub routines and functions
    ' ********** Graphics primatives

    Sub plotTemp x ' Plot the HW temp dot in range 30-80C
    #main.g "up; color ";C$(10) ' HW Temp color on [10]
    call rotateTo x/2 ' center and point in the correct direction
    #main.g "go ";((HD(x,3)-30) / (Scale * 10)) * Radius ' HWT data is in HD[x,3]. Scale it 30-80C
    #main.g " down ; size 4 ; go 2" ' Pen down, 4 pixel dot and 2 pixel push. Might need go 1
    End Sub

    Sub plotInvChg x ' Plot the Inverter and Charger dots on circumference as required
    dotcolor = 0 ' Cludgy - but set color to 0 for starters
    if HD(x,10) > 0 then dotcolor = 18 ' Choose suitable colors
    if HD(x,11) > 0 then dotcolor = 19 ' if associated data > 0
    if dotcolor > 0 then ' Is there a valid color?
    #main.g "color ";C$(dotcolor) ' Inv or Chg
    call rotateTo x/2 ' Center and point again
    #main.g "up ;go ";Radius
    #main.g " down ; size 4 ; go 2" ' same as temperature
    end if
    End Sub

    Sub plotLine x,y ' Plot a line with data from HD[x,y] in color y
    #main.g "size 2 ;color ";C$(y) ' y is the data type so y = color
    call rotateTo x/2
    if y = 9 then ' when y = 9 the data is solar so go out to in
    #main.g "up ;go ";Radius
    #main.g "turn 180"
    end if
    #main.g "down; go ";(HD(x,y) / (Scale * 1000)) * Radius ' Center to circumference
    call plotTemp x ' after the line plot the Temperature
    call plotInvChg x ' then the Inverter / Charger dots
    End Sub

    Sub showHand rt ' Show a hand on face at RTD(x)
    pieDeep = (RTD(rt) / Scale) * Radius * 2 ' Calculate hot big the pie slice should be
    ' #main.g, "rule xor " ';_R2_NOTXORPEN ' Not tyhat pleasing a graphic technique really
    #main.g "color ";C$(rt-5) ' Pie slice colour
    #main.g "backcolor ";C$(rt-5)
    #main.g "size 3" ' Density of edges in pixels
    call gotoCenter ' start in the middle pointing North
    if RTD(rt) > 0 then ' only do this when the data point > 0
    if RTD(rt) < Scale then ' Inside Scale, make the slice hollow.
    #main.g "pie ";pieDeep;" ";pieDeep;" ";270 + (RTD(rt) / Scale) * 360;" ";5
    else ' Over Scale - make it filled for comparison and effect
    #main.g "piefilled ";pieDeep;" ";pieDeep;" ";270 + (RTD(rt) / Scale) * 360;" ";5
    end if
    end if
    ' #main.g, "rule over" ';_R2_COPYPEN` ' Cancel the XOR rule if used
    End Sub

    Sub showRTD
    #main.g "redraw" ' Refresh the save graphic memory
    call showClock ' show the clock
    for x = 5 to 9 ' Build top left and right boxes as they run in sequence
    call showText LeftX,(x-5) * 18 + 20,FontSize,23,x-5,makeDisp$(x,"##.##") ' Top Left
    call showText RightX,(x-5) * 18 + 20,FontSize,23,x-5,makeDisp$(x-5,"###.#") ' Top Right
    call showHand x ' Show the pie hands for these changing values
    next x
    call showText LeftX,(0 * 18) + Screen * BottomY,FontSize,23,10,makeDisp$(10,"##.#C") ' HW Temp - Now Bottom Left box
    call showText LeftX,(1 * 18) + Screen * BottomY,FontSize,23,11,makeDisp$(11,"##.##") ' Delta T
    call showText LeftX,(2 * 18) + Screen * BottomY,FontSize,23,21,makeDisp$(21,"##.#C") ' Min Temp
    call showText LeftX,(3 * 18) + Screen * BottomY,FontSize,23,18,makeOnOff$(18) ' Inverter On/OFF
    call showText LeftX,(4 * 18) + Screen * BottomY,FontSize,23,19,makeOnOff$(19) ' Charger ON/OFF
    call showText RightX,(0 * 18) + Screen * BottomY,FontSize,23,12,makeDisp$(12,"##.#c") ' Current kWh price - Bottom Right Box
    call showText RightX,(1 * 18) + Screen * BottomY,FontSize,23,14,makeDisp$(14,"###.#") ' Daily Cost in c
    call showText RightX,(2 * 18) + Screen * BottomY,FontSize,23,15,makeDisp$(15,"## ") ' OverFlow
    call showText RightX,(3 * 18) + Screen * BottomY,FontSize,23,16,makeOnOff$(16) ' PV Export
    call showText RightX,(4 * 18) + Screen * BottomY,FontSize,23,17,makeOnOff$(20) ' Forced Export
    End Sub

    Sub drawFace ' Draw the clock face to scale Screen
    #main.g "font courier_new ";Screen * 2 ' The Screen variable defines the font size
    call gotoCenter ' Center and face North
    #main.g "color black; backcolor white; size 1" ' Black with White background, 1 pixel wide lines
    #main.g "circle ";Radius ' Graw a circle
    call showScale ' Now put the scale and numbers on
    End Sub

    Sub showScale ' Create the circle and scaling text and lines
    call gotoCenter ' Somewhete tricky, but only used once
    #main.g "color black; backcolor white"
    #main.g "font courier_new 12 ; size 1; down" ' Set the font, radius lines at 1 dot wide
    for x = 1 to Scale ' How many radius lines
    #main.g "circle ";Radius * (x/Scale) ' draw them
    next x

    for x = 1 to Scale                                                      ' Now do the numbers around the edge
        call rotateTo x * (360 / Scale)
        #main.g "up"
        tm = x : if tm > 3 then tm = 3
        if x = 5 then tm = 1
        #main.g "go ";Radius + tm * Screen
        #main.g "down"
        #main.g "\";str$(x)
    next x
    

    End Sub

    Sub rotateTo degrees ' Center the Turtle and point it ahere needed (degrees)
    call gotoCenter ' Center and point North
    if degrees < 0 degrees *= -1 ' If degrees are < 0 make them positive
    #main.g "turn ";degrees ' Turn to coirrect angle
    End Sub

    Sub gotoCenter ' Used a lot, so make a seperate sub.
    ' #main.g "up" ' disable drawing to avoid trailing lines
    #main.g "place ";CenterX;" ";CenterY;" ; north" ' Put the cursor in the center of the circle and face North
    ' #main.g "down" ' Pen down to enable drawing again - common mistake to miss this
    End Sub

    Sub showText x,y,fs,fc,bc,t$ 'xpos, ypos,font size,color,background,text$
    #main.g "font courier_new ";int(fs) ' Set the font size
    #main.g "color ";C$(fc);"; backcolor ";C$(bc) ' Set the colors
    if x <= 0 then ' Centered Text if we put a -ve value for x (tricky woo)
    #main.g "stringwidth? t$ tw" ' What is the pixel length of the text in t$
    x = CenterX - tw/2 + x * (Screen / 5) ' Calculate x axis using string width / 2 and Screen size
    end if
    #main.g "place ";x;" ";y * (Screen / 5) ' Set the cursor into the correct position
    #main.g "\ ";t$ ' and write text using graphics sequence "\ " text$
    End Sub

    Sub showClock ' Show the clock in needed position using Screen size
    call showText -20,25,15+Screen,23,24,time$()
    End Sub

    Function PadString$(st$,l) ' Pad a string with l trailing spaces
    if len(st$)<l then
    st$=st$+space$(l-len(st$))
    end if
    PadString$=left$(st$,l) ' return the padded string
    End Function

    ' ********** Data Handling *******
    Sub getHistoryData
    esp$ = ""
    while len(esp$) < 50
    esp$ = getPalData$("/TODAY")
    fpos = 100 : ln = 0 : maxln = 0 ' start fpos positive
    while (fpos > 0)
    fpos = instr(esp$,chr$(10)) ' End of Line
    espLine$ = left$(esp$,fpos) ' Transfer that line to espLine$
    ln = val(word$(espLine$,1,",")) ' The ESP is 0-7
    if maxln < ln then maxln = ln ' max valid line
    for x = 1 to 13
    HD(ln,x) = val(word$(espLine$,x + 1,",")) ' Extract and transfer
    next x
    esp$ = mid$(esp$,fpos + 1) ' Remove line used from front
    wend ' Rinse and Repeat to end of string
    clockdiff = time$("seconds") - (maxln * 120) ' This clock's position at end of this entry / apparent clock from esp
    for x = 5 to 9 ' Just adjust the needed values
    HD(maxln,x) = HD(maxln,x) * (clockdiff / 120) ' Roll them back proportional to clock error
    next x
    ' print "ClockDiff = " + str$(clockdiff) + " / " + str$(maxln)
    End Sub

    Sub plotHistoryData ' Now plot it all
    #main.g "redraw"
    for x = LastPlot -2 to 719
    if HD(x,1) > 0 then
    for y = 5 to 9
    call plotLine x,y
    next y
    LastPlot = x
    end if
    next x
    #main.g "flush"
    TT(5) = False ' Reset 2 minute flag
    call showRTD
    End Sub

    Sub addHistoryData ' Increment History data rather than recalling it
    inc = 1000/TimeScale ' Watts to kW / Number of entries per HD value
    ln = int(time$("seconds") / 120) ' We get a data point every 10 seconds
    HD(ln,0) = ln ' This is where we are
    HD(ln,1) = RTD(12) ' Price
    HD(ln,3) = RTD(10) ' Hot Water Temp - replace only
    for x = 5 to 9
    HD(ln,x) = HD(ln,x) + (RTD(x) * inc) ' MainsIn/MainsOut/TransIn/TransOut/Solar added 12 times in 120 secs
    next x
    for x = 10 to 12
    HD(ln,x) = RTD(x + 8) ' Inverter / Charge / PV Export
    next x
    HD(ln,13) = RTD(13) ' Solar Export value
    ' print str$(ln) + " / " + str$(LastPlot) + " MainsIn = " + str$(HD(ln,9))
    End Sub

    Function getPalData$(ext$)
    timeout = 0 ' We need a timeout counter to not do this forever…
    while len(getPalData$) < 50
    getPalData$ = httpget$(PalWifiAddress$ + ext$) ' Use WiFi address and extension
    if len(getPalData$) > 50 then exit while ' More than 50 bytes is usable
    call sleep 200 ' Sleep for 200ms to wait for ESP to wake up
    timeout += 1 ' Increment the timeout value
    if timeout > 5 then exit while ' 5 x 200ms = 1 second = long enough
    wend ' Keep going until valid data or timeout
    End Function

    Sub getRTD ' Get Real Time Data from ESP
    RTData$ = "" ' Clear out any old data string
    RTData$ = getPalData$("/WifiData") ' Get RTD from ESP API using the '/WifiData' call
    if len(RTData$) > 50 then ' Check we do have data and it was a not a timeout '
    for x = 0 to 24 ' There are 25 data points in the /WifiData return
    RTD(x) = val(word$(RTData$,x+1,",")) ' Transfer the Comma String to the RTD array numerics
    next x
    else
    call showText 2,20,Screen * 2.5,23,0,"Wifi TimeOut " ' If we did timeout - show that on the top left
    end if
    call addHistoryData ' Always add it in to History - even if we miss
    End Sub

    Function httpget$(url$) ' This is just a standard library call to get web data
    call showText -20,25,15+Screen,0,24,time$() ' Turn the clock red as we start this call
    open "WININET.DLL" for dll as #net ' Lots of Windows API trickery - It works - don't ask…
    calldll #net, "InternetOpenA", "PalPie" as ptr, 0 as long, _
    1 as long, 0 as long, 0 as long, hnet as ulong
    calldll #net, "InternetOpenUrlA", hnet as ulong, url$ as ptr, _
    "" as ptr, 0 as long, 0 as long, 0 as long, hurl as ulong
    buffer$ = space$(1000)
    struct gethttp, nread as long
    do
    buflen = len(buffer$)
    calldll #net, "InternetReadFile", hurl as ulong, _
    buffer$ as ptr, buflen as long, gethttp as struct, res as long
    httpget$ = httpget$ + left$(buffer$, gethttp.nread.struct)
    loop until gethttp.nread.struct = 0
    calldll #net, "InternetCloseHandle", hurl as ulong, res as long
    calldll #net, "InternetCloseHandle", hnet as ulong, res as long
    close #net
    call showText -20,25,15+Screen,23,24,time$() ' Put the clock back to Black.
    end Function

    ' ———————— INI File = Lots of standard code to read the PALWIFI.TXT file —————————
    function getIni(filename$)
    if fileexist(GWorkDir$,filename$) = FALSE then ' no ini file at all, create one
    call findNemo
    end if
    ' INI File - these will be read in from the INI file.
    open filename$ for input as #ini ' default to here anyway
    getIni = True
    if TEST = True then ' ever the optimist
    PalWifiAddress$ = "http://10.1.1.174"' getLine$()
    else
    PalWifiAddress$ = getLine$()
    end if
    ' call drawText 100,15,5,12,4,8, "Paladin LAN Address - " + PalWifiAddress$ + " "
    End Function

    Function getLine$()
    [anotherline]
    if eof(#ini) = False then
    comment = False
    line input #ini, a$
    if left$(a$,1) = " " or a$ = "" or left$(a$,1) = "'" then comment = True
    getLine$ = a$
    end if
    if comment = True then goto [anotherline]
    End Function

    ' ———— File Handling ——————-
    function fileexist(where$, filename$) ' does a file exist ?
    dim info$(10,10) ' LB mumbo jumbo looking at directory values
    files where$,filename$,info$()
    fileexist = False
    fileexist = val(info$(1,1))
    end function

    Sub killFile fn$
    if fileexist(GWorkDir$, fn$) > 0 then ' If you try to kill a non exitant file it breaks things
    kill fn$
    end if
    End Sub

    Sub sleep howlong ' Nana Nap in 1000th of a sec using MSDOS kernel32 to offload CPU
    waitfor = howlong / 100
    for x = 1 to waitfor
    calldll #kernel32,"Sleep",waitfor as long,r as void
    scan
    next x
    End Sub

    Sub findNemo ' Finding NEMO is an inside joke. This finds the ESP on the LAN
    call killFile("CoreIP.bat")
    open "CoreIP.bat" for output as #t ' Build the batch file for finding base IP address
    print #t,"arp -a > CoreIP.txt" ' Write it to the current directory
    close #t ' And tidy up by closing
    call killFile "CoreIP.txt" ' Kill CoreIP.txt in current directory if it exists
    rc$ = "CoreIP.bat " ' Build the command string. NB you need to put the '.bat' on the batch file name ' Uncomment this to see the command itself
    run rc$,HIDE
    call findGateway "CoreIP.txt"
    End Sub

    Sub findGateway s$ ' Find gateway address in string s$
    while (fileexist(GWorkDir$,s$) = False) ' wait here until file exists.
    call sleep 100 ' Nanna Nap to wait for windows to create the file
    scan ' but watch the keyboard for an escape
    wend
    fileLength = -1
    open s$ for input as #t ' Open for reading on buffer #t
    while (fileLength <> lof(#t)) ' Sneaky way to wait for windows to finish writing a file
    fileLength = lof(#t) ' Wait for the file length to stabilise
    call sleep 100 ' 1/10th of a second Nanna Nap
    scan ' watch the keyboard for an escape click
    wend ' Keep going until complete
    while eof(#t) = False
    line input #t, l$
    print l$,word$(l$,3)
    if word$(l$,3) = "dynamic" then
    if checkAddress(l$) = True then exit while
    end if
    wend
    close #t
    End Sub

    Function checkAddress(l$) ' check IP address in l$ for Nemo
    checkAddress = False ' Default position
    ip$ = "http://" + word$(l$,1)
    ipCall$ = ip$ + "/MX0"
    scan
    a$ = httpget$(ipCall$)
    if len(a$) = 24 then
    checkAddress = True
    call killFile("PALWIIFI.txt")
    open "PALWIFI.txt" for output as #f
    print #f,"'PALADIN WiFi address found by Nemo"
    print #f,ip$
    print #f,"'——————————-"
    close #f
    end if
    End Function

    Function makeDisp$(x,use$) ' Used by the data blocks to format text and numbers
    makeDisp$ = PadString$(DL$(x),10) + " " + using(use$,RTD(x))
    End Function

    Function makeOnOff$(x) ' Used by data blocks to show ON or OFF
    oo$ = " OFF " : if RTD(x) = 1 then oo$ = " ON "
    makeOnOff$ = PadString$(DL$(x),10) + oo$
    End Function

    ' Clock Control Timer
    'TT[] 0 = 1sec : 1 = 5 sec : 2 = 10 sec : 3 = 30sec : 4 = 1min : 5 = 2min : 6 = 5min : 7 = 10min : 8 = 1 hour : 9 = 1 day
    Sub timerSet ' Rather than have a lot of IF THEN ELSE stuff in the core code
    thisSec = val(mid$(time$(),7,2)) ' Extract the numeric value of Seconds from Time$ string "HH/MM/SS"
    thisMin = val(mid$(time$(),4,2)) ' The minutes
    thisHour = val(mid$(time$(),1,2)) ' The Hours
    if LastSec <> thisSec then ' Has a whole second gone by - we are calling this a lot…
    TT(0) = True ' TT(0) = True means a new second in play
    LastSec = thisSec ' Hold this as LastSec for next pass
    if (LastSec mod 5) = 0 then TT(1) = True ' Now has a 5 second window elapsed? Set TT[1] to True
    if (LastSec mod 10) = 0 then TT(2) = True ' Ditto 10 seconds
    if (LastSec mod 30) = 0 then TT(3) = True ' Ditto 30
    if LastMin <> thisMin then ' Now do minutes if we have a whole minuted change
    LastMin = thisMin
    TT(4) = True
    if (LastMin mod 2) = 0 then TT(5) = True ' 2 minute flag
    if (LastMin mod 5) = 0 then TT(6) = True ' 5 minute flag
    if (LastMin mod 10) = 0 then TT(7) = True ' 10 minute flag
    if LastHour <> thisHour then ' Same for hours
    TT(8) = True ' 1 hour elapsed flag
    LastHour = thisHour
    if LastHour = 0 then TT(9) = True ' Next Day
    end if ' Most of these are not used at the moment, but it is trivial work for the CPU
    end if
    end if
    End Sub

    stop
    ' Data Labels corresponding to RTD() followed by color value - 20 sets = 18 + black / white
    ' Lots of work to do here. Use RGB values from here : https://www.w3schools.com/colors/color_tryit.asp?hex=F0F8FF
    data Tot Mains In,RED ' Hot Pink = Grid In
    data Tot Mains Out,124 252 0 ' Lawn Green
    data Tot TopUp,199 21 133 ' Medium Violet Red
    data Tot Trans,100 149 237 ' Cornflower Blue
    data Tot Solar,255 200 0 ' Yellow / Gold
    data Mains In, 255 105 180
    data Mains Out,GREEN
    data Top Up,199 21 133
    data Transfer, BLUE
    data Solar,255 140 0 ' Yellow / Gold
    data HW Temp,CYAN
    data DeltaT,155 155 128 ' Dark Cyan
    data kWh Price,YELLOW
    data PV Value,GREY
    data Day Total,YELLOW
    data OverFlow,YELLOW
    data Export,YELLOW
    data Import,YELLOW
    data Inverter,DARKGREEN
    data Charger,PINK
    data PV Export,YELLOW
    data Min Temp,YELLOW
    data Max Temp, GREY
    data BLACK,0 0 0
    data WHITE,255 255 255

    ' ********************** Tests etc *********
    Sub TestgetRTD
    for x = 0 to 4
    RTD(x) = rnd() * 5000
    next x
    End Sub

    [quit] ' Get a clean exit with all windows closed to avoid hanging processes
    close #main
    end

  • All I can say is do your research on the company before hand as there are some hit and run and just overall bad solar companies out there.

    In Sydney NSW for examine avoid Eurosolar and I think the other phoenixed company was Sunboost or something sounding like that.

    Their head office address was basically an empty room and when one of these get too hot under scrutiny they just close down and "phoenix" or come back as a new entity but they usually keep same address and same business owner which is funny.

    As others have said Jinko panels and Fronius inverter are both good but just check reviews from others of the company before going ahead or you might end up behind on your investment rather than ahead.

  • What’s people’s thoughts on the Sunpower P19 panels and Fronius Primo 5kW Inverter?

    • That's some very good gear, quality inverter and all though the P19 panels are the budget panel in the Sunpower range they are still very good panels.

      • I got a quote for them for 20 panels. $9850 installed. Upfront is something like 5600.

  • +1

    As people have mentioned previously, always do your own research. I spent a few months doing research and having met a lot of (shady) people at my property, I finally made a decision. I'm based in NSW, Sydney and hooked up a 6kw system to my parent's house back in April this year.

    20x Opal Solar panels
    5kw Solax inverter

    Opal Solar's warranty is backed by Solarjuice whose head office is based in Wetherill Park, NSW.

    My parents are with Origin and the first winter-solar bill has just been issued. Their average quarterly bill ranges between $500-$600. The bill that was released was $133. Household is a family of 4 with no natural gas in the area (electric hot water tank in place). The first month, the plan was not adjusted to solar so FIT was 8c per kwh. From month two onwards, the plan was changed to 22c per kwh.

    As this winter set the benchmark (where the sun is not out as long as summer), I'm looking forward to the next quarterly bill (and the warmer quarters to come) to see the results from there.

    Feel free to reach out if you have questions. Happy to help out.

    • Hey just wondering if you can let me know which installer you went with? Thanks

      • Sure, I dealt with Ultimate Solar Solutions. As you can imagine, there are probably a few solar companies across the country with that name. Happy to share the contact name/details of their team with you if you want to be certain it's the right company. Cheers

  • You shouldn’t need to spend over $6000 for 5kw system.

Login or Join to leave a comment