Navigation

    • Register
    • Login
    • Search
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. derksuh
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    derksuh

    @derksuh

    1
    Reputation
    17
    Posts
    395
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    derksuh Follow

    Best posts made by derksuh

    • RE: Not seeing child id 0 Humidity from DHT

      Fixed it! i manually added the sensor in pimatic and now it works

      posted in Troubleshooting
      derksuh
      derksuh

    Latest posts made by derksuh

    • Node with Relay

      Hello all,

      I have a node to wher a dht22 is connected and a relais, this is to sitch on or off my fan in the bathroom. Before openhab i was using pimatic and that was working good i could see the temperature and humidity and i could turn on and off the relais. No with openhab i get the temperature and the humidity in the inbox but not the relay. Is it somehow possible to get this working?

      Greetings, Martijn

      posted in OpenHAB
      derksuh
      derksuh
    • RE: Relay not reacting first 3 seconds

      @rejoe2 said in Relay not reacting first 3 seconds:

      AVR board definition

      If this is the problem then could i do something about it?

      posted in Development
      derksuh
      derksuh
    • Relay not reacting first 3 seconds

      Hello all,

      I have the following sketch working with a pimatic installation. When i switch on the relay nothing happens
      when i keep switching it on and off than after 2 or 3 times it starts reacting. But every time i wait a couple of seconds
      i have to switch it on and off a couple of times before it reacts. This is th epimatic log output if i switch it on the first time.

      debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;!TSF:MSG:LEN,2!=7
      19:53:48debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSF:MSG:READ,25-12-0,s=0,c=0,t=0,pt=0,l=0,sg=0:
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;MCO:BGN:INIT OK,TSP=1
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;MCO:BGN:STP
      19:45:45debug [pimatic-mysensors]: <- Presented Node  [ '0', '255', '0', '0', '18', '2.1.1' ]
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;MCO:REG:NOT NEEDED
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSM:READY:ID=0,PAR=0,DIS=0
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSM:INIT:GW MODE
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSM:INIT:TSP OK
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSF:WUR:MS=0
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSM:INIT
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.1
      19:45:45debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;!TSF:MSG:SEND,0-0-5-5,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:1
      19:45:44debug [pimatic-mysensors]: -> Sending  5;1;1;1;2;1
      

      if it starts reacting i get this output.

      debug [pimatic-mysensors]: <- MySensorDHT  { sender: 5, sensor: 1, type: 2, value: '1' }
      19:45:04debug [pimatic-mysensors]: <- MySensorSwitch  { sender: 5, sensor: 1, type: 2, value: '1' }
      19:45:04debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSF:MSG:ACK
      19:45:04debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSF:MSG:READ,5-5-0,s=1,c=1,t=2,pt=0,l=1,sg=0:1
      19:45:04debug [pimatic-mysensors]: <- I_LOG_MESSAGE  0;255;3;0;9;TSF:MSG:SEND,0-0-5-5,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
      19:45:04debug [pimatic-mysensors]: -> Sending  5;1;1;1;2;1```
      
      
      This is the sketch i am using
      
      ```#define MY_NODE_ID 5
      // Enable debug prints
      #define MY_DEBUG
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <DHT.h>  
      
      #define CHILD_ID_HUM 1
      #define CHILD_ID_TEMP 2
      #define HUMIDITY_SENSOR_DIGITAL_PIN 6
      unsigned long WAIT_TIME = 30000; // Sleep time between reads (in milliseconds)
      unsigned long lastRefreshTime = 0; // Use this to implement a non-blocking delay function
      
      #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
      #define NUMBER_OF_RELAYS 1 // Total number of attached relays
      #define RELAY_ON 0  // GPIO value to write to turn on attached relay
      #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
      
      
      
      DHT dht;
      float lastTemp;
      float lastHum;
      boolean metric = true; 
      MyMessage msgHum(CHILD_ID_HUM, V_HUM);
      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
      
      
      void setup()  
      { 
        dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
      
        metric = getConfig().isMetric;
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Then set relay pins in output mode
          pinMode(pin, OUTPUT);   
          // Set relay to last known state (using eeprom storage) 
          digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
        }
          // Request the latest relay status from the gateway 
        Serial.println("Requesting initial value from controller");
        request(RELAY_1, V_STATUS);
      }
      
      void presentation()  
      { 
        // Send the Sketch Version Information to the Gateway
        sendSketchInfo("Badkamer", "1.3");
      
        // Register all sensors to gw (they will be created as child devices)
        present(CHILD_ID_HUM, S_HUM);
        present(CHILD_ID_TEMP, S_TEMP);
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Register all sensors to gw (they will be created as child devices)
          present(sensor, S_LIGHT);
        }
      }
      
      
      void loop()      
      { 
        boolean needRefresh = (millis() - lastRefreshTime) > WAIT_TIME;
        if (needRefresh)
        {
            lastRefreshTime = millis();
            
            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);
              }
              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;
                send(msgHum.set(humidity, 1));
                Serial.print("H: ");
                Serial.println(humidity);
            }
      
        }
        
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LIGHT) {
           // Change relay state
           digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
           // Store state in eeprom
           Serial.print("Incoming change for sensor:");
           Serial.print(message.sensor);
           Serial.print(", New status: ");
           Serial.println(message.getBool());
         } 
      }
      
      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      No it doesn't do that. If i switch on the relay in pimatic then it goes on.
      if i then rebot the node the relay stays off but the status in pimatic also changes to off.

      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey You mean like this?

      /**
       * The MySensors Arduino library handles the wireless radio link and protocol
       * between your home built sensors/actuators and HA controller of choice.
       * The sensors forms a self healing radio network with optional repeaters. Each
       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
       * network topology allowing messages to be routed to nodes.
       *
       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
       * Copyright (C) 2013-2015 Sensnology AB
       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
       *
       * Documentation: http://www.mysensors.org
       * Support Forum: http://forum.mysensors.org
       *
       * This program is free software; you can redistribute it and/or
       * modify it under the terms of the GNU General Public License
       * version 2 as published by the Free Software Foundation.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik EKblad
       * 
       * DESCRIPTION
       * This sketch provides an example how to implement a humidity/temperature
       * sensor using DHT11/DHT-22 
       * http://www.mysensors.org/build/humidity
       */
      
      #define MY_NODE_ID 1
      // Enable debug prints
      #define MY_DEBUG
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <DHT.h>  
      
      #define CHILD_ID_HUM 1
      #define CHILD_ID_TEMP 2
      #define HUMIDITY_SENSOR_DIGITAL_PIN 6
      unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
      unsigned long lastRefreshTime = 0; // Use this to implement a non-blocking delay function
      
      #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
      #define NUMBER_OF_RELAYS 1 // Total number of attached relays
      #define RELAY_ON 0  // GPIO value to write to turn on attached relay
      #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
      
      
      
      DHT dht;
      float lastTemp;
      float lastHum;
      boolean metric = true; 
      MyMessage msgHum(CHILD_ID_HUM, V_HUM);
      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
      
      
      void setup()  
      { 
        dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
      
        metric = getConfig().isMetric;
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Then set relay pins in output mode
          pinMode(pin, OUTPUT);   
          // Set relay to last known state (using eeprom storage) 
          digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
        }
          // Request the latest relay status from the gateway 
        Serial.println("Requesting initial value from controller");
        request(RELAY_1, V_STATUS);
      }
      
      void presentation()  
      { 
        // Send the Sketch Version Information to the Gateway
        sendSketchInfo("Badkamer", "1.3");
      
        // Register all sensors to gw (they will be created as child devices)
        present(CHILD_ID_HUM, S_HUM);
        present(CHILD_ID_TEMP, S_TEMP);
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Register all sensors to gw (they will be created as child devices)
          present(sensor, S_LIGHT);
        }
      }
      
      
      void loop()      
      { 
        boolean needRefresh = (millis() - lastRefreshTime) > SLEEP_TIME;
        if (needRefresh)
        {
            lastRefreshTime = millis();
            
            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);
              }
              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;
                send(msgHum.set(humidity, 1));
                Serial.print("H: ");
                Serial.println(humidity);
            }
      
        }
        
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LIGHT) {
           // Change relay state
           digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
           // Store state in eeprom
           Serial.print("Incoming change for sensor:");
           Serial.print(message.sensor);
           Serial.print(", New status: ");
           Serial.println(message.getBool());
         } 
      }
      
      
      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey

      I did not get it working the way i would like. I now used a different sketch.
      here i had the same problem but i just set the relay_OFF from 0 to 1, and the Relay_ON from 1 to 0
      And with this sketch it worked fine.

      
      #define MY_NODE_ID 1
      // Enable debug prints
      #define MY_DEBUG
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <DHT.h>  
      
      #define CHILD_ID_HUM 1
      #define CHILD_ID_TEMP 2
      #define HUMIDITY_SENSOR_DIGITAL_PIN 6
      unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
      unsigned long lastRefreshTime = 0; // Use this to implement a non-blocking delay function
      
      #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
      #define NUMBER_OF_RELAYS 1 // Total number of attached relays
      #define RELAY_ON 0  // GPIO value to write to turn on attached relay
      #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
      
      
      
      DHT dht;
      float lastTemp;
      float lastHum;
      boolean metric = true; 
      MyMessage msgHum(CHILD_ID_HUM, V_HUM);
      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
      
      
      void setup()  
      { 
        dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
      
        metric = getConfig().isMetric;
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Then set relay pins in output mode
          pinMode(pin, OUTPUT);   
          // Set relay to last known state (using eeprom storage) 
          digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
        }
      }
      
      void presentation()  
      { 
        // Send the Sketch Version Information to the Gateway
        sendSketchInfo("Badkamer", "1.3");
      
        // Register all sensors to gw (they will be created as child devices)
        present(CHILD_ID_HUM, S_HUM);
        present(CHILD_ID_TEMP, S_TEMP);
      
        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
          // Register all sensors to gw (they will be created as child devices)
          present(sensor, S_LIGHT);
        }
      }
      
      
      void loop()      
      { 
        boolean needRefresh = (millis() - lastRefreshTime) > SLEEP_TIME;
        if (needRefresh)
        {
            lastRefreshTime = millis();
            
            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);
              }
              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;
                send(msgHum.set(humidity, 1));
                Serial.print("H: ");
                Serial.println(humidity);
            }
      
        }
        
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LIGHT) {
           // Change relay state
           digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
           // Store state in eeprom
           saveState(message.sensor, message.getBool());
           // Write some debug info
           Serial.print("Incoming change for sensor:");
           Serial.print(message.sensor);
           Serial.print(", New status: ");
           Serial.println(message.getBool());
         } 
      }
      
      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey where should i put the code in your post?

      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey

      The node is working. The problem
      Is that when it is connected to the gateway then the relay gets turned on but The status in pimatic does say it is turned off.

      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey

      The sketch works, but i still need the relay output inverted.
      Changing the values from relay_on and relay_off does not do the trick

      posted in Development
      derksuh
      derksuh
    • RE: Invert the relay in the sketch

      @blacey

      I reversed the lines and changed the values of relay off and relay on but that did not do the trick.
      This sketch i copied from a other project so i don't really know why debouncing is implemented.

      The example you scribed is exactly how it should work.

      posted in Development
      derksuh
      derksuh