@ThomasDecock No I wasn't, I was able to get the standard dallas temperature working(because I thought the sensors no longer work), but unfortunately my time on this is pretty limited. I hoped I got it working until I go on vacation, but probably will look into it after.
I would appreciate if someone could help with it, I think everyone would.
CaptainZap
Posts
-
Door, Motion and Temperature Sensor -
Door, Motion and Temperature Sensor@Moshe-Livne That's not the problem... The previous code had the same pir sensor working, it has a couple of seconds timeout.
At this time I'll take another look at my very first sketch, and remove the repeating part, maybe I can get somewhere...
Looking back 1 year ago this was a nice idea, however I've put more time than I would have hoped for into it and I still don't have something that I can call reliable. I know this is a labor of love, and not perfect in any way, I just expected it to be a bit easier to do... -
Door, Motion and Temperature Sensor@BulldogLowell I just managed to test this and I have some questions :
- Motion doesn't seem to work that great - meaning that it takes at least one minute after being untripped to be tripped again
- Door/window doesn't seem to work - I think I have to add this part, but I'm a bit overwhelmed
- Temperature starts with temperature of -127C and doesn't update at all (I held my finger on it for 2 minutes) plus I think I need something to avoid -127 temps, like :
if (lastTemperature != tempC && tempC != -127.00)For your info I used these pins to connect my sensors :
const int PIR_PIN = 3; - PIR sensor const int INTERRUPT = 4; - Door/Window const int DALLAS_PIN = 5; - Temperature sensor [...] unsigned long readTempInterval = 1 * 60 * 1000UL; - modified read interval to 1 minute for testing purposesAlso I get this output of the serial monitor once I compile and upload the sketch to my nano after 2 minutes and multiple tries to trip PIR sensor :
sensor started, id 2 send: 2-2-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1 send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Multi-Sensor send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=8,st=ok:1.0alpha send: 2-2-0-0 s=1,c=0,t=1,pt=0,l=0,st=ok: send: 2-2-0-0 s=2,c=0,t=6,pt=0,l=0,st=ok: send: 2-2-0-0 s=2,c=1,t=0,pt=2,l=2,st=ok:-127 Tripped send: 2-2-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1 Not Tripped send: 2-2-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:0 Tripped send: 2-2-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1I would appreciate any help I can get to get this started... this project has been on hold for at least 1 year and I would like to implement it now since I have all the parts I need, including 5 cases for the motion detectors (I will need to have at least two variations for them). My focus right now is getting a working sketch, with repeating functions or not, I can place repeaters if needed that is not a problem.
-
Door, Motion and Temperature Sensor@BulldogLowell Thanks, I'll try it tonight once I get home.
-
Door, Motion and Temperature Sensor@BulldogLowell Temperature isn't working, and is never updated on the Vera interface :|
-
Door, Motion and Temperature Sensor@petoulachi @BulldogLowell Glad to hear there is some progress, in regards to my issue and hopefully this is step in the right direction. I'm positive that we're not alone in our need to create multisensors, both powered and battery operated, as arduinos offer too many possibilities to limit yourself to just a single type of device :)
-
Door, Motion and Temperature Sensor@Moshe-Livne @m26872 : I did clear the eprom, I've tried everything I could think of... I'm not quite sure if the repeater works, so far everything is at the breadboard state, so I was pretty much prototyping.
-
Door, Motion and Temperature SensorWell since nobody knew what the problem is I thought I would re-flash my first sketch which was working properly... however after doing it it no longer works... this is blowing my mind away. I don't understand why that would be, as the only changes I've done are listed in this thread, major one was that I upgraded lib to 1.4.1 from 1.4. Anyone has any ideas cause this is driving me crazy now :(
-
Door, Motion and Temperature Sensor@Dwalt said:
@CaptainZap It your sketch you have this line:
#define ONE_WIRE_BUS 14What pin is your Dallas sensor connected to?
One sensor is connected to A0(14) the other is connected to D5 as it can be seen in my last sketch. Temperature reporting worked on, in my original sketch, however the sketch wasn't perfect so I improved it based on feedback.
@m26872 The sensor is on a breadboard 5cm from the gateway, and I'm not sure about the repeater part...
-
Door, Motion and Temperature Sensor@Dwalt @m26872 Thanks for the feedback, I did do that on the Vera unit. I've even removed the plugin files and re-did everything. I even, and this is a bit extreme, cleared the eprom on the gateway and reflashed it. None of it worked, I really have no clue what to do next. I'm open to every suggestion :D
-
Door, Motion and Temperature SensorCan anyone share their thoughts ? I've been running two identical nodes, with no temperature output for a few days now :(
-
Door, Motion and Temperature SensorJust uploaded the new sketch to my nodes, one built on a pro mini, and one built on a nano (got one to view serial output), however both nodes have the same behavior when added to the Vera unit... the repeater node doesn't show up (is this somehow related to UI7 ?), and the weird thing is that temperature value is never populated.
Regarding the repeater, looking into the user_data output I can see that a repeater node is created, but it's not used as a parent device for the sensors... as all sensors have as parent the gateway. I'm using this version of the plugin :
https://github.com/mysensors/Vera/tree/UI7This is the serial monitor output from the nano :
repeater started, id 13 send: 13-13-1-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1 send: 13-13-1-0 s=255,c=3,t=6,pt=1,l=1,st=ok:1 send: 13-13-1-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Multi Sensor send: 13-13-1-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.1 send: 13-13-1-0 s=1,c=0,t=0,pt=0,l=0,st=ok: send: 13-13-1-0 s=3,c=0,t=6,pt=0,l=0,st=ok: send: 13-13-1-0 s=2,c=0,t=1,pt=0,l=0,st=ok: send: 13-13-1-0 s=1,c=1,t=16,pt=2,l=2,st=ok:0This is the updated sketch:
//This sketch is for Door & Motion & Temp Sensor //rev3 - changed temp pin to 5 & temperature logic re-worked #include <MySensor.h> #include <SPI.h> #include <DallasTemperature.h> #include <OneWire.h> #include <Bounce2.h> #define CLIENT_ID AUTO // Sets MYSensors client id #define RADIO_CH 76 // Sets MYSensors to use Radio Channel #define TRIGGER 3 // used to connect motion sensor #define BUTTON_PIN 4 // used to connect door/window sensor //Temp Sensor bits #define ONE_WIRE_BUS 5 // Pin where dallas sensor is connected - on Rboard this is A0(D14) OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DallasSensors(&oneWire); float lastTemperature ; #define CHILD_ID_T1 3 //CHILD ID for temp //Door/Window bits #define CHILD_ID_D1 1 //CHILD ID for door/window //Trigger Sensor Bits #define CHILD_ID_S1 2 //CHILD ID for Motion sensor boolean lastTripped = 0; unsigned long SLEEP_TIME = 30000; // Sleep time between reports (in milliseconds) unsigned long lastRefreshTime = 0; MySensor gw; Bounce debouncer = Bounce(); int oldValue=-1; // Change to V_LIGHT if you use S_LIGHT in presentation below MyMessage msg(CHILD_ID_D1,V_TRIPPED); MyMessage triggerMsg(CHILD_ID_S1,V_TRIPPED); MyMessage tempMsg(CHILD_ID_T1,V_TEMP); void setup() { // Startup OneWire Temp Sensors DallasSensors.begin(); DallasSensors.setWaitForConversion(false); // Initialize library and add callback for incoming messages gw.begin(NULL, AUTO, true); // Send the sketch version information to the gateway and Controller gw.sendSketchInfo("Multi Sensor", "1.1"); // Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_D1, S_DOOR); gw.present(CHILD_ID_T1, S_TEMP); gw.present(CHILD_ID_S1, S_MOTION); // Setup the button pinMode(BUTTON_PIN,INPUT); // Activate internal pull-up digitalWrite(BUTTON_PIN,HIGH); // After setting up the button, setup debouncer debouncer.attach(BUTTON_PIN); debouncer.interval(5); // Register binary input sensor to gw (they will be created as child devices) // You can use S_DOOR, S_MOTION or S_LIGHT here depending on your usage. // If S_LIGHT is used, remember to update variable type you send in. See "msg" above. } void loop() { // Alway process incoming messages whenever possible gw.process(); // Check for motion change value boolean tripped = digitalRead(TRIGGER) == HIGH; if (lastTripped != tripped ) { gw.send(triggerMsg.set(tripped?"1":"0")); // Send new state and request ack back Serial.println("Tripped"); lastTripped=tripped; } // Check if digital input has changed and send in new value debouncer.update(); // Get the update value int value = debouncer.read(); if (value != oldValue) { // Send in the new value gw.send(msg.set(value==HIGH ? 1 : 0)); oldValue = value; } gw.wait(100); boolean bNeedRefresh = (millis() - lastRefreshTime) > SLEEP_TIME; if (bNeedRefresh) { lastRefreshTime = millis(); DallasSensors.requestTemperatures(); gw.wait(750); float tempC = DallasSensors.getTempCByIndex(1); float difference = lastTemperature - tempC; if (tempC != -127.00 && abs(difference) > 0.5) { // Send in the new temperature gw.send(tempMsg.set(tempC, 1)); lastTemperature = tempC; } } }Any feedback will be appreciated. Thanks.
-
Door, Motion and Temperature Sensor@robosensor Thanks so much, I highly appreciate your comments. Will test this tomorrow, and hopefully, soon share my hardware designs :D
-
Door, Motion and Temperature Sensor@m26872 If you have time, could you please tell me how to do that, I know you've posted a link a few post back but I didn't do much with it :(
-
Door, Motion and Temperature Sensor@BulldogLowell Unfortunately I don't have a way to test that yet... I'm uploading the sketch using an arduino uno, and I have no idea how to do that with it. I do have an FTDI serial adapter but is not picked up by the IDE, it was at some point but no longer... probably fake :|
-
Door, Motion and Temperature SensorHello guys,
I really need an expert's opinion on this because I'm experiencing some trouble... I've tried to include suggestions from all you guys, except the delay part, but so far it works partially... in my original code the temperature worked, and now it doesn't. The rest works ok, sensor and motion, so I would be grateful if anyone could take a look at my code and help me with it... I kind of need to get it in place soon, as I intend to leave my house for some time.
Thank you.
//This sketch is for Door & Motion & Temp Sensor #include <MySensor.h> #include <SPI.h> #include <DallasTemperature.h> #include <OneWire.h> #include <Bounce2.h> #define CLIENT_ID AUTO // Sets MYSensors client id #define RADIO_CH 76 // Sets MYSensors to use Radio Channel #define TRIGGER 3 // used to connect motion sensor #define BUTTON_PIN 4 // used to connect door/window sensor //Temp Sensor bits #define ONE_WIRE_BUS 14 // Pin where dallas sensor is connected OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DallasSensors(&oneWire); float lastTemperature ; #define CHILD_ID_T1 3 //CHILD ID for temp //Door/Window bits #define CHILD_ID_D1 1 //CHILD ID for door/window //Trigger Sensor Bits #define CHILD_ID_S1 2 //CHILD ID for Motion sensor boolean lastTripped = 0; MySensor gw; Bounce debouncer = Bounce(); int oldValue=-1; // Change to V_LIGHT if you use S_LIGHT in presentation below MyMessage msg(CHILD_ID_D1,V_TRIPPED); MyMessage triggerMsg(CHILD_ID_S1,V_TRIPPED); MyMessage tempMsg(CHILD_ID_T1,V_TEMP); void setup() { // Startup OneWire Temp Sensors DallasSensors.begin(); DallasSensors.setWaitForConversion(false); // Initialize library and add callback for incoming messages gw.begin(NULL, AUTO, true); // Send the sketch version information to the gateway and Controller gw.sendSketchInfo("Multi Sensor", "1.1"); // Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_D1, S_DOOR); gw.present(CHILD_ID_T1, S_TEMP); gw.present(CHILD_ID_S1, S_MOTION); // Setup the button pinMode(BUTTON_PIN,INPUT); // Activate internal pull-up digitalWrite(BUTTON_PIN,HIGH); // After setting up the button, setup debouncer debouncer.attach(BUTTON_PIN); debouncer.interval(5); // Register binary input sensor to gw (they will be created as child devices) // You can use S_DOOR, S_MOTION or S_LIGHT here depending on your usage. // If S_LIGHT is used, remember to update variable type you send in. See "msg" above. } void loop() { // Alway process incoming messages whenever possible gw.process(); // Check for motion change value boolean tripped = digitalRead(TRIGGER) == HIGH; if (lastTripped != tripped ) { gw.send(triggerMsg.set(tripped?"1":"0")); // Send new state and request ack back Serial.println("Tripped"); lastTripped=tripped; } // Check if digital input has changed and send in new value debouncer.update(); // Get the update value int value = debouncer.read(); if (value != oldValue) { // Send in the new value gw.send(msg.set(value==HIGH ? 1 : 0)); oldValue = value; } DallasSensors.requestTemperatures(); // no delay here gw.wait(750); // insert another value for non-12-bit resolution float tempC = DallasSensors.getTempCByIndex(1); // Only send data if temperature has changed and no error if (lastTemperature != tempC && tempC != -127.00) { // Send in the new temperature gw.send(tempMsg.set(tempC,1)); lastTemperature=tempC; } } -
Door, Motion and Temperature SensorGuys, I had some free time tonight and tried to apply this fix... I ended up re-installing the arduino IDE + downloading the latest version, which now is 1.4.1 as opposed to the 1.4 that I used to have ?
Anyways I had to upgrade my ethernet gateway (ENC28J60) and it's no longer working now... any hints will be golden.
LE: I was too tired to check the sketch... I forgot to include the correct library and went to all debugging first, reset router config to default, but in the end I did notice the issue :) So I learned a valuable lesson, never work on this if it's late or you're tired. -
Door, Motion and Temperature SensorThat was the version I was using when I first encountered the issues... anyways I'll remove arduino IDE with everything and reinstall it. Thanks.
@hek I also LOL-ed :D Gotta love the helping spirit in the community you guys built.
-
Door, Motion and Temperature Sensor@robosensor Thanks, I installed that but it's version 1.5 b1 and after using it it's giving me lots of errors :| I think there have been changes in how the code is used...
LE: I finally found the 1.4.1 branch and downloaded it however it's still giving me the same error about wait:
Door_Motion_Temp_rev2.ino: In function 'void getTemps()':
Door_Motion_Temp_rev2:115: error: 'class MySensor' has no member named 'wait'
'class MySensor' has no member named 'wait'LLE: Just checked the cpp and there is no wait, this is the library I used :
https://github.com/mysensors/Arduino/tree/1.4.1Can you tell me if there will be any issue if I comment that part ?
-
Door, Motion and Temperature Sensor@robosensor I don't know where to find the complete library for version 1.4.x