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

Fibaro Thermostats at one room should work as one manual mode


marbe

Question

Hello, I have new Fibaro thermostats with temperature sensor at one room. Al works perfect and I like it. Only ones - is possible configure more thermostats, they will work as one. I mean if I set manually one of them to manual set point, direct on thermostat, is possible, that other thermostats at same room will be set to same manual mode and temperature too. Now is necessary each of all thermostats set individually.

  • Thanks 1
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

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.

".

Link to comment
Share on other sites

  • 0

Hello,

It is not possible with settings/associations, however, it should be possible with LUA.

It is an interesting suggestion. Thanks ;)

Link to comment
Share on other sites

  • 0

Hi @marbe!

 

Maybe instead of changing the Heat Controller to manual mode, try changing heating zone to manual for some time? : )

 

Please check it out and write what you think ; )

Link to comment
Share on other sites

  • 0
  • Inquirer
  • Yes, this works for me, but not for my family. Advantage for they is to use temporary setting temperature from heating controller. Now I write script, but at future would be nice to have this functionality at system. Thanks

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • This works for me as first attempt

     

    --[[
    %% properties
    246 thermostatState
    246 mode
    246 targetLevel
    253 thermostatState
    253 mode
    253 targetLevel
    %% weather
    %% events
    %% globals
    --]]
    -- change and add all fibaro thermostas IDs
     
    if fibaro:countScenes() > 1 then fibaro:abort() end
     
    local roomID = 5; -- room with fibaro thermostats
     
    local startSource = fibaro:getSourceTrigger();
    fibaro:debug(json.encode(startSource));
    local thermostats = fibaro:getDevicesId({roomID = roomID, type = "com.fibaro.FGT001"});
    if startSource.type ~= "other" then
      fibaro:debug("thermostatState:"..fibaro:getValue(startSource.deviceID, "thermostatState"));
      fibaro:debug("targetLevel:"..fibaro:getValue(startSource.deviceID, "targetLevel"));
      fibaro:debug("targetLevelTimestamp:"..fibaro:getValue(startSource.deviceID, "targetLevelTimestamp"));
      fibaro:debug("targetLevelTimestamp:"..os.date('%H:%M %d.%m.%y',fibaro:getValue(startSource.deviceID, "targetLevelTimestamp")));
      fibaro:debug("timestamp:"..fibaro:getValue(startSource.deviceID, "timestamp"));
      fibaro:debug("timestamp:"..os.date('%H:%M %d.%m.%y',fibaro:getValue(startSource.deviceID, "timestamp")));
     
      local thermostatState = fibaro:getValue(startSource.deviceID, "thermostatState");
      local targetLevel = fibaro:getValue(startSource.deviceID, "targetLevel");
      local timestamp = fibaro:getValue(startSource.deviceID, "timestamp");
      local minutes = math.floor((timestamp - os.time()) / 60)
      fibaro:debug("minutes:"..minutes)
     
      for i,deviceID in ipairs(thermostats) do
        fibaro:debug("deviceID:"..deviceID);
        if tonumber(deviceID) ~= tonumber(startSource.deviceID) then
          thermostatStateDevice=fibaro:getValue(deviceID, "thermostatState")
          if thermostatState == "Schedule" then
            if startSource.propertyName=="thermostatState" and thermostatStateDevice ~= "Schedule" then
              fibaro:call(deviceID, "removeSchedule", "255");-- remove manual setting
            end
          elseif thermostatState == "ScheduleTimeSetting" then
            local targetLevelDevice = fibaro:getValue(deviceID, "targetLevel");
            if tonumber(targetLevel)~=tonumber(targetLevelDevice) then
              fibaro:call(deviceID, "setSchedule", "255",json.encode({["type"]="thermostat",["data"]={["setpoint"]={["type"]=1,["value"]=tonumber(targetLevel),["unit"]="C"},["mode"]=1}}),json.encode({["type"]="Minutes",["value"]=minutes}),json.encode({})); 
              fibaro:debug(json.encode({["type"]="thermostat",["data"]={["setpoint"]={["type"]=1,["value"]=tonumber(targetLevel),["unit"]="C"},["mode"]=1}}),json.encode({["type"]="Minutes",["value"]=minutes}),json.encode({}))
            end
          end
    -- hold setting not implemented
          --fibaro:call(deviceID, "setTargetLevel", targetLevel); ---hold
          --fibaro:call(deviceID, "targetLevelTimestamp", targetLevelTimestamp)
          fibaro:debug("thermostatState device:"..fibaro:getValue(deviceID, "thermostatState"));
          fibaro:debug("targetLevel device:"..fibaro:getValue(deviceID, "targetLevel"));
          fibaro:debug("targetLevelTimestamp device:"..fibaro:getValue(deviceID, "targetLevelTimestamp"));
          fibaro:debug("targetLevelTimestamp device:"..os.date('%H:%M %d.%m.%y',fibaro:getValue(deviceID, "targetLevelTimestamp")));
          fibaro:debug("timestamp device:"..fibaro:getValue(deviceID, "timestamp"));
          fibaro:debug("timestamp device:"..os.date('%H:%M %d.%m.%y',fibaro:getValue(deviceID, "timestamp")));
        end
      end
    end
    fibaro:debug("--------------------");
    • Like 1
    Link to comment
    Share on other sites

    • 0

    @marbe thank you for sharing! Two small visual improvements: in the lua edit window, select all (CTRL-A) then SHIFT-TAB to automatically indent your code. Save, slect again and copy. Then on the forum: use the "code" button "<>" then paste the code in that special window.

    Edited by petergebruers
    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Yes, this is much more better, thanks.

    Please login or register to see this code.

     

    Link to comment
    Share on other sites

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