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


  • 0

How to set up? Heating panel + Popp (Danfoss lc-13) + SSR303 without LUA


Question

Posted

Hi to all,

 

I´m not a programmer so basically I had the need to follow this example:

 

Please login or register to see this link.

 

Just to give you an overview of my instllation:

 

1 - I had 1 Popp radiator thermostat per room (6) (

Please login or register to see this link.

). That gives me the temperature and the posibility to open close automatically the radiator using the values in the heating panel.

2 - In each room, I set up the main temperature sensor and the main thermostat. Both values are given by the Popp device (See the picture A)

3 - I had a boiler for all the rooms that it´s opened or closed using Secure SSR303. This is managed by the LUA code attached.

 

For some reason the LUA code works some times and we are cold :-) Any suggestions are wellcome. I attach the code.

 

local boiler = tonumber(fibaro:getValue(187, "value"))
fibaro:debug('Estado de la caldera: ' ..boiler);
while true do
  local temp1 = tonumber(fibaro:getValue(156, "value"));
  fibaro:sleep(1000);
  local temp2 = tonumber(fibaro:getValue(159, "value"));
  fibaro:sleep(1000);
  local temp3 = tonumber(fibaro:getValue(162, "value"));
  fibaro:sleep(1000);
  local temp4 = tonumber(fibaro:getValue(184, "value"));
  fibaro:sleep(1000);
  local temp5 = tonumber(fibaro:getValue(239, "value"));
  fibaro:sleep(1000);
  local temp6 = tonumber(fibaro:getValue(236, "value"));
  fibaro:sleep(1000);
  local temp7 = tonumber(fibaro:getValue(242, "value"));
  fibaro:sleep(1000);
  
  local temp10 = tonumber(fibaro:getValue(157, "value"));
  fibaro:sleep(1000);
  local temp20 = tonumber(fibaro:getValue(160, "value"));
  fibaro:sleep(1000);
  local temp30 = tonumber(fibaro:getValue(163, "value"));
  fibaro:sleep(1000);
  local temp40 = tonumber(fibaro:getValue(63, "value"));
  fibaro:sleep(1000);
  local temp50 = tonumber(fibaro:getValue(240, "value"));
  fibaro:sleep(1000);
  local temp60 = tonumber(fibaro:getValue(237, "value"));
  fibaro:sleep(1000);
  local temp70 = tonumber(fibaro:getValue(243, "value"));
  fibaro:sleep(1000);
  
  fibaro:debug('Temperaturas cargadas');
  fibaro:debug('Temp. deseada Principal ' ..temp1);
  fibaro:debug('Temp. deseada Blanca: ' ..temp2);
  fibaro:debug('Temp. deseada Martita: ' ..temp3);
  fibaro:debug('Temp. deseada Pasillo: ' ..temp4);
  fibaro:debug('Temp. deseada Salón derecha: ' ..temp5);
  fibaro:debug('Temp. deseada Salón izquierda: ' ..temp6);
  fibaro:debug('Temp. deseada Entrada: ' ..temp7);
  fibaro:debug('Temp. real Principal: ' ..temp10);
  fibaro:debug('Temp. real Blanca: ' ..temp20);
  fibaro:debug('Temp. real Martita: ' ..temp30);
  fibaro:debug('Temp. real Pasillo: ' ..temp40);
  fibaro:debug('Temp. real Salón derecha: ' ..temp50);
  fibaro:debug('Temp. real Salón inquierda: ' ..temp60);
  fibaro:debug('Temp. real Entrada: ' ..temp70)
  fibaro:sleep(1000);
  
  if ((temp10 ~= temp1) or (temp20 ~= temp2) or (temp30 ~= temp3) or (temp40 ~= temp4) or (temp50 ~= temp5) or (temp60 ~= temp6) or (temp70 ~= temp7))
    then
    fibaro:debug('Se encontró una diferencia entre la temperatura de la cabeza y la temperatura deseada.');
    if ((temp10 < temp1) or (temp20 < temp2) or (temp30 < temp3) or (temp40 < temp4) or (temp50 < temp5) or (temp60 < temp6) or (temp70 < temp7))
      then
      if boiler == 0 then
        fibaro:debug('En al menos una habitación la temperatura es baja, se enciende la caldera.')
        fibaro:call(187, "setMode", "1")
        boiler = 1
        fibaro:debug(boiler)
      else
        fibaro:debug('La caldera ya se ha encendido y no se requieren más acciones.')
      end
    else
      if boiler == 1 then
        fibaro:debug('La temperatura de la habitación está bien, la caldera se apaga.')
        fibaro:call(187, "setMode", "0")
        boiler = 0
        fibaro:debug(boiler)
      else
        fibaro:debug('La caldera ya se ha apagado, no se requieren más acciones.')
        fibaro:debug('La temperatura de la habitación está bien.')
      end
    end
  end
  fibaro:sleep(300000);
end

 

My question is, there is anyway in this scenario to avoid the need to use the LUA scene for TURNON/TURNOFF Secure SSR303?

 

If not,

 

can I improve something in the code to work properly?

 

As far as I see it is something maybe can be solve by adding another field in the Room properties (3 House thermostat) for the main thermostat relay controlled by the heating panel. So the number 2 (Open/close radiator) number 3 (Open/close the boiler for the house) 

 

Please login or register to see this link.

5 answers to this question

Recommended Posts

  • 0
Guest FredrikKarlsson
Posted

Hi, 
 

There are multiple similar threads related to this kind of thing in the forum I think, but simply put I think you need to do two things:

 

First, the Secure SSR303 is an ON/OFF device really right, not a thermostat in itself? Am I right? Then you need to create a kind of a virtual thermostat device using the Secure SSR303 as the device that turns heat on or off and a temperature sensor that tells it whether it should turn on or off, depending on the temperature you want to have and the temperature currently in the room. This is Linked device, and you can set one up in the "Linked device" panel. You want to set up a Heating device. The main device is the temperature sensor and then you add actuators that can be used to achieve the heating level that you want. This is the Secure SSR303 of the room. Place the linked device in the room where the Secure SSR303 is attached and save. Go into the room (like you did in the picture) and select the thermostat you want to use in there (your nr 2).

 

Second, you set a heating schedule for the room. In the Heating panel, include the room in a zone and then set a schedule for it. Your heating devices with then work together to achieve the temperature you want (at least I think is will). If you actually now have two thermostats controlling the same room, I think you should consider having the Secure SSR303 always ON and letting the Popp valve do the regulating. They have a built in thermostat and will work like a charm. At least that is my experience with the Danfoss units (similar, but don't have the separate temperature readout to the Z-wave network).

 

Hope it works. At least this solution is 100% Lua free.

  • 0
Posted

The topic has been moved from "

Please login or register to see this link.

" to "

Please login or register to see this link.

".

 

Temat został przeniesiony z "

Please login or register to see this link.

" do "

Please login or register to see this link.

".

  • 0
  • Inquirer
  • Posted

    Hi again, and thanks for your time trying to help me.

     

    Yes you are right the SSR03 is ON/OFF.

     

    The first option is to complex for me :-). I start triying with the virtual device and that was all. Also the POPP had 2 funtions, read temp and set the head with the wished temp (In the picture 1 is temperature and 2 is the head that sets the temperature by the heating panel)

    With the second option, I don´t feel confidence with the SSR303 allway on.

     

    So I think my options are:

     

    1 - Solve my LUA code problems and continue using LUA.

     

    The problem I had is that when LUA checks the status of the SSR303 the value I get is allways 0 even I know the value is 1. It´s working well when the status is 0 and needs to goes to 1. But not in the other way 1->0. Any idea why? Anyone with this situation?

    Please note that I reduce the pooling status of the SSR303 to 5 seconds thinking that the status was not updated but still the same.

     


    local boiler = tonumber(fibaro:getValue(187, "value"))
    fibaro:debug('Estado de la caldera: ' ..boiler);

     

    2 - Change the SSR303 for a better one with more optiion in HC2. Any device suggestion?

     

    Thanks again for the help.

     

     

     

    • 0
  • Inquirer
  • Posted

    Hi again, finally I had solved. I attach you the solution just in case someone needs it. Thanks for your help.

     

    For some reason this code at the begining do not return the real status of the boiller.

     

    local boiler
    while true do
      local boiler = tonumber(fibaro:getValue(286, "value"))
      fibaro:debug('Estado de la caldera: ' ..boiler);

     

    To solve that I add this code (In red) to the original one:

     

     if ((temp10 ~= temp1) or (temp20 ~= temp2) or (temp30 ~= temp3) or (temp50 ~= temp5) or (temp60 ~= temp6) or (temp70 ~= temp7))
        then
        fibaro:debug('Se encontró una diferencia entre la temperatura de la cabeza y la temperatura deseada.');
        if ((temp10 < temp1) or (temp20 < temp2) or (temp30 < temp3) or (temp50 < temp5) or (temp60 < temp6) or (temp70 < temp7))
          then
          if boiler == 0 then
            fibaro:debug('En al menos una habitación la temperatura es baja, se enciende la caldera.')
            fibaro:call(286, "setMode", "1")
            boiler = 1
            fibaro:debug(boiler)
          else
            fibaro:debug('La caldera ya se ha encendido y no se requieren más acciones.')
          end
        else
          if boiler == 1 then
            fibaro:debug('La temperatura de la habitación está bien, la caldera se apaga.')
            fibaro:call(286, "setMode", "0")
            boiler = 0
            fibaro:debug(boiler)

          else
            fibaro:call(286, "setMode", "0")
            boiler = 0
            fibaro:debug(boiler)
            fibaro:debug('La caldera ya se ha apagado, no se requieren más acciones.')
            fibaro:debug('La temperatura de la habitación está bien.')

          end
        end
      end
      fibaro:sleep(6000000);
    end

    • 0
    Posted (edited)

    Hi @Marjomar

     

    For the Secure SSR303, you need to fetch the 'mode' property, not the 'value', so change to:

    Please login or register to see this code.

     

    Also, you might want to take a look at my

    Please login or register to see this link.

    .  This works with the Secure SSR303 and Danfoss/Popp thermostatic valves, along with Fibaro temperature sensors, and will monitor the temperature in each room and turn on the boiler if any of the rooms need heat.  It is self-configuring for the rooms, so if you add valves and a temperature sensor to a room, then there is no need to modify the code.  All you need to do, when you setup the scene initially, is to configure the device id of the Boiler switch.

     

    Dave

    Edited by Dave Harrison

    Join the conversation

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

    Guest
    Answer this question...

    ×   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...