Axel,

Would you be interested in working together? I have spent over a decade thinking about the problem and have finally come to rest with what I the problems are and what is a good first step on the solution. I am not attached so much to how the code is built. Like I said, I am not a strong programmer. I am attached to the requirements and to some of the architectural decisions.


The the key problems as I see them:

most software tends to think in the here and now.
The model is "I am making these decisions for how things are to be now." This is a bad fit for a distributed system. There needs to be a shift to "this is the goal I have for my system in the future." Time becomes a first class part of everything and competing controls are accepted and dealt with correctly. This also allows for fun things. My new cooling control code doesn't have a PID in its normal operating mode, it instead has a cycle mode where it does a linear regression on the temperature to predict when it will cross a given threshold and schedules a control event for that time. Each reading improves the estimate until the event finally occurs. This means that as the day progresses, all the shifts in heating and cooling rates just factor in and are adjusted to correctly with no extra knobs.

Configuring these systems is horrible and is the main reason they don't get used more often. Configuration must be as or more important than functionality. That's why the Nest succeeded. We must support human oriented meta-models that are then translated to the things that do the work. This is an open problem, but I do have some ideas that I think can work.

Handling hybrid entities.
A thermostat is really 4 different agents in an elegant package. It is a environmental sensor, it is a control point, it is a control algorithm and it is a UI that both displays and takes user input. Any and all of these can be separated out and run anywhere in the system when you have smart devices and continuous communications.

Creating openness in the system.
I want to be able to add a module that goes to weather underground and gets my local weather and then acts as a set of sensors to the system. I want to be able to replace the heating control logic because I had an idea of a better way to do it.

Failure is always an option:
As the number of elements grow, the odds that some part of the system is not operating increases. The system and all its components must deal with failures, degraded operation levels and the like. This also addresses the bootstrap issue when a distributed system is coming up. At first, hybrid devices should be in local operation mode. Once the configuration server is available, things can start finding out about each other and increase their functional operation level...

Build a good thermostat:
I am looking at how to build a really good raspberry pi based thermostat. The hardware side seems pretty straight forward, though it may take some things like PC board design and CNC milling or 3d printing. My biggest unknown is how to abstract the UI part and make it configurable and dynamic.


It's a big job, but I believe it will help the thinking of the overall field forward.

warmly,
jerry

On 01/20/2016 09:44 AM, Axel Voitier wrote:
Hello,

I do in https://github.com/Alidron/alidron-isac/blob/master/transport/pyre_node.py, in a project that serve very similar purposes to what you want to do (haven't yet fully disclosed it though, so it is not yet well documented, sorry ;)).

So far I used zyre (pyre actually) not only for peer discovery. I also use its ability to set headers on a node to register endpoints of other sockets (pub/sub and rpc) that other nodes can connect to. I also used groups, one for broadcasting events (one way communication), and another one for sending survey questions ("who has data/metadata/service for this signal" for instance). I could also make use of its built-in connection heartbeat in the future.


Cheers,
Axel

--
Contact: [email protected] <mailto:[email protected]>
Secure: [email protected] <mailto:[email protected]>

2016-01-20 18:13 GMT+01:00 Jerry Scharf <[email protected] <mailto:[email protected]>>:

    Hi,

    I am new to zeromq. I am starting to work on a new building automation
    system for my home following an IoT model. zeromq seems like an ideal
    messaging system to build it around. I have some discovery issues
    I need
    to solve as well.

    I am trying to understand how to put the zyre into action for my
    tasks.
    I don't consider myself a strong programmer, so I often like to
    look at
    code others have designed to see how they put the tools to work. There
    are a number of these available for zeromq, but I have not located any
    using zyre.

    Can someone point me to a real app that is using zyre for
    discovery so I
    can understand it better?

    thanks in advance,
    jerry

    _______________________________________________
    zeromq-dev mailing list
    [email protected] <mailto:[email protected]>
    http://lists.zeromq.org/mailman/listinfo/zeromq-dev




_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to