implementing multiple sensors
-
Hello,
Here is my combo to make a Home Monitoring solution:
https://github.com/empierre/arduino/blob/master/MQv01dgi_1_4.inoIt includes (currently on a Mega):
- Barometer : BMP085
- Temperature + Humidity DHT11
- Particle sensor
- Gas sensors MQ2 MQ6 MQ131 MQ135 TGS2600 2SH12
To be added when stabilized:
- Sound level in DB
Could be added:
- Light sensor
- Vibration sensor
- PIR
-
Hi guys,
this is a one node with publishing DS temperatures and listening for relay commands I finished and tested yesterday>
https://github.com/pgo-sk/mysensors/blob/master/arduino/DS_and_Relay.ino
feel free to comment/use/publish...I combined the Dalas and Relay examples together - you have to deactivate the sleep for the relays to listen 100% of time.
MQTT identification on openHAB:
MyMQTT/20/0/V_TEMP - DS sensor(s)
MyMQTT/20/1/V_LIGHT - relay 1
MyMQTT/20/2/V_LIGHT - relay 2If somebody is interested I can post the maps/items files for openHAB
Regards,
Pego
PS I am working on an home automation system with solar hot air panels control/solar hot water panels and all the common stuff like lights/temperatures/weather etc.. More here: https://github.com/pgo-sk/mysensors/wiki/Home-automation-using-mysensors-and-openHAB -
I'm also following along interested in the Temp, Humidity, and motion sensor.
-
I'm also following along interested in the Temp, Humidity, and motion sensor.
-
https://github.com/pgo-sk/mysensors/blob/master/arduino/DS_Light_Relay
- DS18B20 (up to 16 like in original temp sketch)
- TEMT6000 reporting LUX light values
- 2x Relays
running and tested
Sensor <-> MQTT gateway <-> openHAB/PC
When interested can post the openHAB items/sitemap(s) settings
Screenshots - over teamviewer, sorry for the quality.
Here the TEMT6000 output - in a quite dark room and changing weather today>
Here the temperature and relays:
Menu:
-
Or here is an example I'm using:
-
https://github.com/pgo-sk/mysensors/blob/master/arduino/DS_Light_Relay
- DS18B20 (up to 16 like in original temp sketch)
- TEMT6000 reporting LUX light values
- 2x Relays
running and tested
Sensor <-> MQTT gateway <-> openHAB/PC
When interested can post the openHAB items/sitemap(s) settings
Screenshots - over teamviewer, sorry for the quality.
Here the TEMT6000 output - in a quite dark room and changing weather today>
Here the temperature and relays:
Menu:
-
-
test1.items
test1.sitemap
test1.rules

webcam.png -icon for webcam - put in openhab/webapps/imagesMy Current openHAB items/sitemap. 1 multisensor with Temp/Lux/Humidity sensor, 1 ethernet/MQTT gateway.
Also weather forcast from yr.no and Samsung TV remote controls (Mute working, rest not so much)
- openHAB v 1.5.1
- Addons :
\openhab\addons>
org.openhab.binding.http-1.5.1.jar
org.openhab.binding.mqtt-1.6.0-SNAPSHOT.jar
org.openhab.binding.ntp-1.5.1.jar
org.openhab.binding.samsungtv-1.6.0-SNAPSHOT.jar
org.openhab.binding.zwave-1.6.0-SNAPSHOT.jar
org.openhab.io.habmin-1.6.0-SNAPSHOT.jar
org.openhab.persistence.exec-1.5.1.jar
org.openhab.persistence.logging-1.5.1.jar
org.openhab.persistence.mqtt-1.6.0-SNAPSHOT.jar
org.openhab.persistence.rrd4j-1.5.1.jar
HABmin conf with graphs:
charts.xml -put in openhab/etc/habminIn habmin.cfg specify the IP of your MQTT arduino and port>
'#'mqtt:<broker>.clientId=<clientId>
mqtt:mysensor.url=tcp://192.168.1.234:1883
mqtt:mysensor.clientId=MQTT
mqtt:mysensor.qos=0
mqtt:mysensor.retain=true
mqtt:mysensor.async=trueHere some screenshots:
These (Direct channel/Channel/Volume) does not work yet... Mute is OK and Volume displays only the current TV volume. -
@aquapro said:
I could not decide yet on a platform. OpenHAB should be my next test.
It runs quit stable on my old WinXP64Pro Quadcore w/many virtual machines on it.
Have still some problems with the syntax of the openHAB settings, but else nice controller ;) -
@Dany - yes. Checkout http://www.mysensors.org/build/dimmer
-
@blacey I tried this already. This is a simple dimmer node, not RGB. It's work fine.
But I would like to use a RGB colorpicker in openhab.@Dany said:
I would like to use with a RGB colorpicker in openhab.
I would do that soon too. Would you like to have a node only as rgbw dimmer or maybe with a lux sensor as I like to do to also adjust for constant light/lux in the room?
In my menu you can see the setpoint for lux under the light sensor.
-
@Dany said:
I would like to use with a RGB colorpicker in openhab.
I would do that soon too. Would you like to have a node only as rgbw dimmer or maybe with a lux sensor as I like to do to also adjust for constant light/lux in the room?
In my menu you can see the setpoint for lux under the light sensor.
-
@pgo The RGB Colorpicker works already in openhab.
I have some problem in arduino side...i tried update the sample DimmerActuator code, but didn't work. I tried korttoma's code, but it didn't works for me, too.(e.g. message.header.childId -didn't work)
@Dany said:
@pgo The RGB Colorpicker works already in openhab.
I have some problem in arduino side...i tried update the sample DimmerActuator code, but didn't work. I tried korttoma's code, but it didn't works for me, too.(e.g. message.header.childId -didn't work)
Can you post the HW connections you use on arduino and the items/sitemap of the dimmer in openHAB? I can then check on my install.
-
I combined Humidity and Lux code. Serial monitor works ok (see below) but for some reason when I try to add node to Vera I get only node, temp and lux (no humidity). I guess something is wrong in combined sketch?
serial monitor
sensor started, id 1 send: 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 read: 0-0-1 s=255,c=3,t=6,pt=0,l=1:M send: 1-1-0-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Humidity/Lux send: 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0 send: 1-1-0-0 s=0,c=0,t=7,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=1,c=0,t=6,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=2,c=0,t=16,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=1,c=1,t=0,pt=7,l=5,st=ok:28.6 T: 28.60 send: 1-1-0-0 s=0,c=1,t=1,pt=7,l=5,st=ok:61.8 H: 61.80 2 send: 1-1-0-0 s=2,c=1,t=23,pt=3,l=2,st=ok:2 2sketch
#include <SPI.h> #include <MySensor.h> #include <DHT.h> #include <BH1750.h> #include <Wire.h> #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 #define CHILD_ID_LIGHT 2 #define HUMIDITY_SENSOR_DIGITAL_PIN 3 #define LIGHT_SENSOR_ANALOG_PIN 0 unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) BH1750 lightSensor; MySensor gw; DHT dht; float lastTemp; float lastHum; boolean metric = true; MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); MyMessage msg(CHILD_ID_LIGHT, V_LIGHT_LEVEL); uint16_t lastlux; void setup() { gw.begin(); dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); // Send the Sketch Version Information to the Gateway gw.sendSketchInfo("Humidity/Lux", "1.0"); // Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_HUM, S_HUM); gw.present(CHILD_ID_TEMP, S_TEMP); gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); metric = gw.getConfig().isMetric; lightSensor.begin(); } void loop() { delay(dht.getMinimumSamplingPeriod()); float temperature = dht.getTemperature(); if (isnan(temperature)) { Serial.println("Failed reading temperature from DHT"); } else if (temperature != lastTemp) { lastTemp = temperature; if (!metric) { temperature = dht.toFahrenheit(temperature); } gw.send(msgTemp.set(temperature, 1)); Serial.print("T: "); Serial.println(temperature); } float humidity = dht.getHumidity(); if (isnan(humidity)) { Serial.println("Failed reading humidity from DHT"); } else if (humidity != lastHum) { lastHum = humidity; gw.send(msgHum.set(humidity, 1)); Serial.print("H: "); Serial.println(humidity); } uint16_t lux = lightSensor.readLightLevel();// Get Lux value Serial.println(lux); if (lux != lastlux) { gw.send(msg.set(lux)); lastlux = lux; } gw.sleep(SLEEP_TIME); //sleep a bit } -
I combined Humidity and Lux code. Serial monitor works ok (see below) but for some reason when I try to add node to Vera I get only node, temp and lux (no humidity). I guess something is wrong in combined sketch?
serial monitor
sensor started, id 1 send: 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 read: 0-0-1 s=255,c=3,t=6,pt=0,l=1:M send: 1-1-0-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Humidity/Lux send: 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0 send: 1-1-0-0 s=0,c=0,t=7,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=1,c=0,t=6,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=2,c=0,t=16,pt=0,l=5,st=ok:1.4.1 send: 1-1-0-0 s=1,c=1,t=0,pt=7,l=5,st=ok:28.6 T: 28.60 send: 1-1-0-0 s=0,c=1,t=1,pt=7,l=5,st=ok:61.8 H: 61.80 2 send: 1-1-0-0 s=2,c=1,t=23,pt=3,l=2,st=ok:2 2sketch
#include <SPI.h> #include <MySensor.h> #include <DHT.h> #include <BH1750.h> #include <Wire.h> #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 #define CHILD_ID_LIGHT 2 #define HUMIDITY_SENSOR_DIGITAL_PIN 3 #define LIGHT_SENSOR_ANALOG_PIN 0 unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) BH1750 lightSensor; MySensor gw; DHT dht; float lastTemp; float lastHum; boolean metric = true; MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); MyMessage msg(CHILD_ID_LIGHT, V_LIGHT_LEVEL); uint16_t lastlux; void setup() { gw.begin(); dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); // Send the Sketch Version Information to the Gateway gw.sendSketchInfo("Humidity/Lux", "1.0"); // Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_HUM, S_HUM); gw.present(CHILD_ID_TEMP, S_TEMP); gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); metric = gw.getConfig().isMetric; lightSensor.begin(); } void loop() { delay(dht.getMinimumSamplingPeriod()); float temperature = dht.getTemperature(); if (isnan(temperature)) { Serial.println("Failed reading temperature from DHT"); } else if (temperature != lastTemp) { lastTemp = temperature; if (!metric) { temperature = dht.toFahrenheit(temperature); } gw.send(msgTemp.set(temperature, 1)); Serial.print("T: "); Serial.println(temperature); } float humidity = dht.getHumidity(); if (isnan(humidity)) { Serial.println("Failed reading humidity from DHT"); } else if (humidity != lastHum) { lastHum = humidity; gw.send(msgHum.set(humidity, 1)); Serial.print("H: "); Serial.println(humidity); } uint16_t lux = lightSensor.readLightLevel();// Get Lux value Serial.println(lux); if (lux != lastlux) { gw.send(msg.set(lux)); lastlux = lux; } gw.sleep(SLEEP_TIME); //sleep a bit }@niccodemi Check:
gw.send(msgTemp.set(temperature, 1));
gw.send(msgHum.set(humidity, 1));
gw.send(msg.set(lux)); I miss here ",1" -
@niccodemi Check:
gw.send(msgTemp.set(temperature, 1));
gw.send(msgHum.set(humidity, 1));
gw.send(msg.set(lux)); I miss here ",1"