Could you elaborate further on your time-based rules? Could you write a few rules to understand what you want to do?
As for your boolean output variables, I suggest that you utilize for those the WeightedAverage defuzzifier and their respective terms be Constants. For example,
OutputVariable: light defuzzifier: WeightedAverage accumulation: AlgebraicSum term: on Constant 1.0 term: off Constant 0.0 RuleBlock: activation: AlgebraicProduct rule: if brightness is dark, then light is on
Furthermore, I would create a rule block specifically for those boolean functions in order to set the activation operator to the AlgebraicProduct, which might not necessarily be the activation operator for the other rules. The model I propose will still give you values between 0 and 1, for which you will just have to round them manually (std::round).