Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


Recommended Posts

Posted (edited)

I have a rather simple solar boiler system with a series of vacuum tubes on the roof. These heat an oil reservoir on the top (with natural circulation). This oil reservoir is cooled by circulating water from my boiler. The hot water returns on gravity. Therefore with a shunt valve the upstream water pipe will be emptied when the pump is off as frost protection.

The problem is that the pump seems to be circulating far too long, effectively cooling my boiler. See the graph below. In red the water temperature [degrees C], in blue the pump power [W]. To get these data I installed Fibaro Universal Binary Sensor FGBS-001. This offers two analog channels which detect an open/closed state a multiple temperature 3-wire system. You can connect up to 4 DS18B20 binary temperature sensors (in parallel) to that 3-wire system. The DS18B20 are cheap. I paid some 6 euro's. One analog channel is now set up as leakage detector but not yet sensitive enough. It needs a much larger ground area with stainless steel plates.

The boiler system including the pump is fed through a Fibaro Wall-plug with power readout.

 

Please login or register to see this attachment.

 

 

In the new situation with my added supervisory control I can switch off and on again the wall plug to force the system in the preferred state. See the green triangles in the graph below where the pump is in the off state. Note that my temperature sensor is in the top of the boiler, where it is highly sensitive to the inflow of incoming hot water from the roof. This is also a disadvantage: it does not represent the overall temperature. Due to redistribution the top will cool rather quickly. The advantage is that I can check that indeed water is circulating. If not, then there might too much air in the circuit and the pump can run dry until malfunction. In this startup state the temperature is read with steps of 0.25 degrees C, otherwise 0.5 degree steps are accepted to limit the number of reports.

 

Please login or register to see this attachment.

 

The lua is part of my single script home automation system. I have kept out all other activities to keep it simple. As seen above the pump is now regulated by both the boiler and the home automation system. At end of the afternoon a lot of hot water is extracted from the boiler.

 

Comments to the script:

In my script times are integers from 0 - 2359.

 

The boiler sytem is only switchd on well within daylight hours.

if ((currentTime > addTime(sunUp,60)) and (currentTime < addTime(sunDown,-60)))

 

When starting the "boilerTime" will always be reset to zero.

    if (boilerTime == 0)
    then    --wait always at least 15 minutes before switchOn
        boilerTime=addTime(currentTime,DefPumpCheckMin*(boilerResets+1));
        log('initial boilerTime',boilerTime);
    end

 

A running pump with slowly cooling water will increment the "boilerResets" counter.

    if (TimeWindow(boilerTime) and (boilerResets < DefBoilerResets))
    then
        switchOn(58);
    end

 

A cooling state (while pumping) will switch off the system.

        if (boilerTempMax-boilerTemp > DefCoolingLimit)
        then     --if pump has been runnning 20 minutes while cooling
            if TimeWindow(addTime(boilerTime,20))
            then
                log('boiler cooling',boilerTemp);
                switchOff(58);
                boilerTime=0; --reset boilerTime
            end

 

If the temperature rises above the initial value everything is well. The boilerTime will follow the actual time. The initial temperature is set to zero to limit the reporting frequency.

            if (boilerTemp > boilerTempInitial)
            then
                boilerTime=currentTime; --update boilerTime when above initial temperature
                if (boilerTempInitial > 0)
                then
                    log('temperature rising',boilerTemp);
                    boilerTempInitial=0; --system functions normal
                    boilerResets=0;
                    SetTemperatureResolution(8); --0.5 degrees
                end

 

...else the temperature is constant or dropping from the initial temperature.. We will observe this state for a while by not updating the boilerTime.

                if ((currentTime-boilerTime) % 5 == 4)
                then
                    log('boiler timer',(currentTime-boilerTime) % 40);
                end

 

If the boilerTime fals behind the actual time too much, the boilerResets counter is incremented and the pump is switched off. A push message is sent.

            if TimeWindow(addTime(boilerTime,DefPumpCheckMin))
            then    --suspicious situation: pump on but boilerTemp not risen => boilerTime not updated
                boilerResets=boilerResets+1;
                log('resets',boilerResets);
                if (boilerResets == DefBoilerResets)
                then
                    log(DefboilerUntrustedMsg);
                    fibaro:call(2,"sendEmail","mail van Zaphod",DefboilerUntrustedMsg)
                    fibaro:call(94,'sendPush',DefboilerUntrustedMsg);
                end
                switchOff(58);
                boilerTime=0; --reset boilerTime
            end

 

 

 

 

Please login or register to see this code.

 

Edited by Theo

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...