Code Monkey home page Code Monkey logo

node-red-contrib-comfoair's Introduction

node-red-contrib-comfoair

npm version license

Node-RED Node, that reads and parses the data from a Zehnder ComfoAir 350 and similar devices.

This work depends on the comfoair Module (node-comfoair@github and comfoair@npm).

Install

Just run

    npm install node-red-contrib-comfoair

How to use

Connect to your bus system via serial connection and configure the comfoair node. Follow the instruction for streaming with comfoair and pass json objects to this node.

Additional info from VincentSC

Zehnder talks about intake, exhaust, supply and extract. Or extract, supply, incoming and outgoing.

This library uses supply, exhaust, outgoing and outside.

intake-exhaust-supply-extract

image

This is my guess how it translates:

  • outside = intake / incoming
  • supply = supply
  • exhaust = extract
  • outgoing = exhaust / outgoing

Example

[{"id":"75939927.987828","type":"inject","z":"f1f45be1.d6959","name":"getTemperatureStates","topic":"","payload":"{\"name\":\"getTemperatureStates\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":900,"y":1020,"wires":[["54ede071.3b8cf"]]},{"id":"1080bf11.e62391","type":"inject","z":"f1f45be1.d6959","name":"setLevelMiddle","topic":"","payload":"{\"name\":\"setLevel\",\"params\":{\"level\":\"middle\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":880,"y":1300,"wires":[["54ede071.3b8cf"]]},{"id":"86c0aa8e.73a6d8","type":"inject","z":"f1f45be1.d6959","name":"setLevelAway","topic":"","payload":"{\"name\":\"setLevel\",\"params\":{\"level\":\"away\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":870,"y":1220,"wires":[["54ede071.3b8cf"]]},{"id":"d89b4127.308c7","type":"debug","z":"f1f45be1.d6959","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1390,"y":1020,"wires":[]},{"id":"54ede071.3b8cf","type":"comfoair","z":"f1f45be1.d6959","name":"ComfoAir","datasource":"6ded16c2.7801","x":1220,"y":1020,"wires":[["d89b4127.308c7"]]},{"id":"211911c4.82bee6","type":"inject","z":"f1f45be1.d6959","name":"setLevelHigh","topic":"","payload":"{\"name\":\"setLevel\",\"params\":{\"level\":\"high\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":870,"y":1340,"wires":[["54ede071.3b8cf"]]},{"id":"d4c9f55a.b60f88","type":"inject","z":"f1f45be1.d6959","name":"setLevelLow","topic":"","payload":"{\"name\":\"setLevel\",\"params\":{\"level\":\"low\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":870,"y":1260,"wires":[["54ede071.3b8cf"]]},{"id":"568d7661.6fb49","type":"inject","z":"f1f45be1.d6959","name":"getBootloaderVersion","topic":"","payload":"{\"name\":\"getBootloaderVersion\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":900,"y":900,"wires":[["54ede071.3b8cf"]]},{"id":"b5258077.6cd73","type":"inject","z":"f1f45be1.d6959","name":"getFanState","topic":"","payload":"{\"name\":\"getFanState\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":870,"y":1100,"wires":[["54ede071.3b8cf"]]},{"id":"132e6b20.9b96a5","type":"inject","z":"f1f45be1.d6959","name":"getFlapState","topic":"","payload":"{\"name\":\"getFlapState\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":870,"y":1140,"wires":[["54ede071.3b8cf"]]},{"id":"5baef116.ed3ee","type":"inject","z":"f1f45be1.d6959","name":"getTemperatures","topic":"","payload":"{\"name\":\"getTemperatures\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":880,"y":980,"wires":[["54ede071.3b8cf"]]},{"id":"5effa3a.8a2d0dc","type":"inject","z":"f1f45be1.d6959","name":"getFaults","topic":"","payload":"{\"name\":\"getFaults\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":860,"y":860,"wires":[["54ede071.3b8cf"]]},{"id":"aae17e5d.46ddf","type":"inject","z":"f1f45be1.d6959","name":"getOperatingHours","topic":"","payload":"{\"name\":\"getOperatingHours\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":890,"y":820,"wires":[["54ede071.3b8cf"]]},{"id":"46491ed2.d780b8","type":"inject","z":"f1f45be1.d6959","name":"setComfortTemperature 19.0","topic":"","payload":"{\"name\":\"setComfortTemperature\",\"params\":{\"temperature\":\"39.00\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":920,"y":1380,"wires":[["54ede071.3b8cf"]]},{"id":"8a902515.0df","type":"inject","z":"f1f45be1.d6959","name":"getVentilationLevel","topic":"","payload":"{\"name\":\"getVentilationLevel\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":890,"y":1060,"wires":[["54ede071.3b8cf"]]},{"id":"be4e2d5b.84dc4","type":"inject","z":"f1f45be1.d6959","name":"getFirmwareVersion","topic":"","payload":"{\"name\":\"getFirmwareVersion\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":890,"y":940,"wires":[["54ede071.3b8cf"]]},{"id":"eba5ab69.e9711","type":"inject","z":"f1f45be1.d6959","name":"Replace filters?","topic":"","payload":"{\"name\":\"getFaults\",\"params\":{}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":1260,"y":1220,"wires":[["177ff10d.1d7577"]]},{"id":"177ff10d.1d7577","type":"comfoair","z":"f1f45be1.d6959","name":"ComfoAir","datasource":"6ded16c2.7801","x":1260,"y":1300,"wires":[["590dd614.abe82"]]},{"id":"590dd614.abe82","type":"switch","z":"f1f45be1.d6959","name":"","property":"payload.replaceFilter.value","propertyType":"msg","rules":[{"t":"true"},{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":1390,"y":1300,"wires":[["a695a9be.9a2968"],["e60a1caf.794138"],[]],"outputLabels":["Replace or clean filters","Filters are ok","Unexpected results"]},{"id":"a695a9be.9a2968","type":"debug","z":"f1f45be1.d6959","name":"Warn user","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1550,"y":1260,"wires":[]},{"id":"e60a1caf.794138","type":"debug","z":"f1f45be1.d6959","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1550,"y":1300,"wires":[]},{"id":"6ded16c2.7801","type":"comfoair-connection","z":"","serialport":"/dev/ttyUSB1","serialbaud":"9600","reconnectTimeout":"5000"}]

node-red-contrib-comfoair's People

Contributors

coolchip avatar dependabot[bot] avatar vincentsc avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

vincentsc

node-red-contrib-comfoair's Issues

Using a ComfoSense in parallel

Thanks for this node. I successfully ran it on my Zehnder ComfoD 450 (WHR-950). However, I need to disconnect my ComfoSense control panel to avoid data collisions. Is there a way to use both the ComfoSense and Node-Red in parallel?

I was thinking to connect the ComfoSense to my Pi on one port (A) using a RS232-USB converter and connect the ventilation unit on another port (B) of the Pi using another RS232-USB converter. I guess I would need to use a virtual port (C) for Node-Red and redirect both A and C to B? Is it even possible?

Invalid checksum or frame length for getTemperatures

I often get the error "Invalid checksum or frame length for getTemperatures" in the debug panel. It occurs maybe once every 3 calls in average. That might be due to my RS232 line itself but the strange thing is that I am sending a bunch of commands (one after the other) every 15 minutes and the error always happens for the first command which is getTemperatures, which makes me believe that is not due to the RS232 line.

image

Also, how can I catch this error to handle it? I tried the catch node but it does not output anything.

SetVentilationLevels documentation

For setting the default Ventiation level, use the following command:

{
    "name": "setVentilationLevel",
    "params": {
        "exhaustAway": "15",
        "exhaustLow": "35",
        "exhaustMiddle": "50",
        "exhaustHigh": "70",
        "supplyAway": "15",
        "supplyLow": "35",
        "supplyMiddle": "50",
        "supplyHigh": "70"
    }
}

(from what I understood, all parameters need to be given)
(I tried to imbalance the numbers to blow out the hot air, but that did not seem to work)

setComfortTemperature always results in -20

I've tried:

{
"name": "setComfortTemperature",
"params": {
"temperature": 19
}
}

and now when I getTemperatures() I get back:

{"value":-20,"label":"comfort","unit":"°C"}

It seems that any value I try results in -20. Do I have to re-wire my CC Ease to fix it now? :)

"Error: Timeout after 5 seconds while waiting for data from Comfoair"

Hi,

I trigger the "getTemperatureStates" every ten minutes to write the data in my InfluxDB.

after a while, I get timeouts from the node. To fix it, restart of the Comfoair works, restart of nodered not.

I noticed that it happens faster if I reduce the polling intervall to e.g 5 minutes.

Do you have similar experiences or should I test a different usb / rs232 converter ?

The line is < 10m and i dont expect noise on it.

My second finding is, that sometimes the temperatures are not converted correctly (see attached screenshot).

Same question here.

Zehnder

Anyway: Great thanks for this nice node :)

Best regards

node-red-contrib-comfoair won't install in node-red (home assistant's addon)

I'm using home assistant and node-red for home automation and visualisation.
Currently I have node-red installed as docker container (https://hub.docker.com/r/nodered/node-red/) alongside with home assistant. In this set up the Comfoair node is working great.

Home assistant features a different method to use node-red as an "addon" (https://github.com/hassio-addons/addon-node-red; it is more integrated with home assistant which I would like to have).

Problem: in this addon-style node-red the Comfoair node won't install (see 2020-05-12T12_52_25_375Z-debug.log).

I tried to figure out the problem and came across possible dependency and node.js-version problems.
It seems that serialport tries to build it's bindings which fails on the addon node-red (using node.js 12).

I know this is a pretty difficult thing with a lot of possible causes and players involved and it's likely that it's not your "fault". Could you please help me anyway?

Here are some details:

\ "standard" node-red "home assistant" node-red
node-red v1.0.6 v1.0.5
node.js 10.20.1 12.15.0

supply exhaust outgoing outside

Zehnder talks about intake, exhaust, supply and extract. Or extract, supply, incoming and outgoing.

This library uses supply, exhaust, outgoing and outside.

intake-exhaust-supply-extract

image

This is my guess how it translates:

  • outside = intake / incoming
  • supply = supply
  • exhaust = extract
  • outgoing = exhaust / outgoing

I leave it here for somebody who is also searching for translation between the different terms used.

Personally I'd prefer outgoing would be renamed to extract, and outside to intake, even if that is breaking.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.