Navigation

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

    Posts made by vladimir

    • RE: 💬 Sonoff relay using MySensors ESP8266 wifi or mqtt gateway

      @gohan I use OpenHAB 2. As I understand it, it also integrates well with Tasmota.

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 Sonoff relay using MySensors ESP8266 wifi or mqtt gateway

      @electrik Thanks you! Now I will order everything I need on TaoBao in China. I just yesterday learned about the existence of the Sonoff module with 433 MHz radio support and wall switches for them.

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 Sonoff relay using MySensors ESP8266 wifi or mqtt gateway

      @electrik Now I just read the description of this firmware. To do this, I need to understand how to work with MQTT. I hoped to find a simpler solution. Ethernet gateway is much easier to connect.🤷‍♂️

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 Sonoff relay using MySensors ESP8266 wifi or mqtt gateway

      Hello!
      Maybe someone here has a code for Sonoff RF with support 433 MHz receiver?
      alt text

      In my opinion, paired with a wireless wall switch, this will turn out to be quite a cheap and convenient solution for lighting control.
      alt text
      alt text

      The cost of a set of relay and switch about 10 dollars.

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: Improvement Xiaomi smart kettle (I need help!)

      If anyone is interested in this project, then I hasten to inform you, good news! 🎉
      Today I came across a device "Venta Connected (WiFi control for Venta LW45 humidifier)" from the user @reinhold
      Here is a link to the device page: https://www.openhardware.io/view/539/Venta-Connected-WiFi-control-for-Venta-LW45-humidifier
      @reinhold, thank you for this project! 🙌

      I tried to adapt the code of this device to fit my needs. Here's what I got:

      #define SKETCH_NAME "XiaomiSmartKettle"
      #define SKETCH_VERSION "1.0"
      
      #define MY_DEBUG                     // Enable debug prints to serial monitor
      #define MY_RADIO_NRF24               // Enable and select radio type attached
      #define MY_REPEATER_FEATURE          // Enabled repeater feature for this node
      
      #include <SPI.h>
      #include <MySensors.h> 
      
      /**************************************
      //***** MySensors settings
       **************************************/
      
      #define WAITING_TIME 250
      
      // Pin Setup:
      // Button & LED Actions (output):
      //   - PIN_BOIL  D3 ... Boil button press
      //   - PIN_WARM   D4 ... Warm button press
      // LED detection (input, pullup):
      //   - LED_BOIL   D5 ... Boil LED 
      //   - LED_WARMPOWER  D6 ... Warm power LED (Warming is on, but the heating is not involved yet)
      //   - LED_WARMACT  D7 ... Warm action LED (Warming is on and the heater is running)
      
      #define PIN_BOIL 3
      #define PIN_WARM 4
      #define LED_BOIL 5
      #define LED_WARMPOWER 6
      #define LED_WARMACT 7
      
      #define ID_BOIL 1
      #define ID_WARMPOWER 2
      #define ID_WARMACT 3
      //#define ID_REPEATER 254
      
      
      
      bool boil = false;
      bool warmpower = false;
      bool warmact = false;
      
      bool prev_boil = false;
      bool prev_warmpower = false;
      bool prev_warmact = false;
      
      
      MyMessage msg_boil(ID_BOIL, V_STATUS);
      MyMessage msg_warmpower(ID_WARMPOWER, V_STATUS);
      MyMessage msg_warmact(ID_WARMACT, V_STATUS);
      
      
      /**************************************
       ***** Implementation
       **************************************/
      void setup() {
        // PIN modes
        pinMode(PIN_BOIL,OUTPUT);
        pinMode(PIN_WARM,OUTPUT);
        pinMode(LED_BOIL,INPUT_PULLUP);
        pinMode(LED_WARMPOWER,INPUT_PULLUP);
        pinMode(LED_WARMACT,INPUT_PULLUP);
      
      }
      
      void presentation() {
        present(ID_BOIL, S_BINARY, "Kettle BOIL", true);
        present(ID_WARMPOWER, S_BINARY, "Kettle WARM POWER", true);
        present(ID_WARMACT, S_BINARY, "Kettle WARM ACTION", true);
      //  present(ID_REPEATER, S_ARDUINO_REPEATER_NODE);
      
        sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
      }
      
      void loop() {
        readKettleState();
      
        bool changed = false;
        if (boil != prev_boil) {
          Serial.println(F("BOIL changed from "));Serial.print(prev_boil); Serial.print(F(" to ")); Serial.println(boil);
          changed = true;
          send(msg_boil.set(boil));
          prev_boil = boil;
        }
        if (warmpower != prev_warmpower) {
          Serial.println(F("WARMPOWER changed from "));Serial.print(prev_warmpower); Serial.print(F(" to ")); Serial.println(warmpower);
          changed = true;
          send(msg_warmpower.set(warmpower));
          prev_warmpower = warmpower;
        }
        if (warmact != prev_warmact) {
          Serial.println(F("WARMACT changed from "));Serial.print(prev_warmact); Serial.print(F(" to ")); Serial.println(warmact);
          changed = true;
          send(msg_warmact.set(warmact));
          prev_warmact = warmact;
        }
      
        wait(WAITING_TIME);
      }
      
      void receive(const MyMessage &message) {
        readKettleState();
        switch (message.sensor) {
          
          case ID_BOIL:
              if (message.type == V_STATUS) {
                bool newstate = message.getBool();
                Serial.print(F("Incoming message to set BOIL to: "));
                Serial.println(newstate);
                if (boil != newstate) {
                  pressButton(PIN_BOIL);
                  Serial.println(F("   => Emulating button press to toggle BOIL"));
                } else {
                  Serial.println(F("   => No need to change BOIL state"));
                }
              } else {
                Serial.print(F("Incoming message for ID_BOIL, unknown message type "));
                Serial.println(message.type);
              }
              break;
            
          case ID_WARMPOWER:
              if (message.type == V_STATUS) {
                bool newstate = message.getBool();
                Serial.print(F("Incoming message to set WARMPOWER to: "));
                Serial.println(newstate);
                if (warmpower != newstate) {
                  pressButton(PIN_WARM);
                  Serial.println(F("   => Emulating button press to toggle WARMPOWER"));
                } else {
                  Serial.println(F("   => No need to change WARMPOWER state"));
                }
              } else {
                Serial.print(F("Incoming message for ID_WARMPOWER, unknown message type "));
                Serial.println(message.type);
              }
              break;
      
          case ID_WARMACT:
              if (message.type == V_STATUS) {
                bool newstate = message.getBool();
                Serial.print(F("Incoming message to set WARMACT to: "));
                Serial.println(newstate);
                
                saveState(ID_WARMACT, newstate);
                if (newstate==1) {
                  ledOn(LED_WARMACT);
                } else {
                  ledOff(LED_WARMACT);
                }
              } else {
                Serial.print(F("Incoming message for ID_WARMACT, unknown message type "));
                Serial.println(message.type);
              }
              break;
              
          default:
              Serial.print(F("Incoming message for sensor "));
              Serial.print(message.sensor);
              Serial.print(F(", which cannot receive any messages, type="));
              Serial.println(message.type);
        }
      }
      
      
      void readKettleState() {
        boil = digitalRead(LED_BOIL) == LOW;
        warmpower = digitalRead(LED_WARMPOWER) == LOW;
        warmact = digitalRead(LED_WARMACT) == LOW;
      }
      
      
      
      void pressButton(int pin) {
        digitalWrite(pin, HIGH);
        wait(100);
        digitalWrite(pin, LOW);
      }
      void ledOn(int pin) {
        digitalWrite(pin, HIGH);
      }
      void ledOff(int pin) {
        digitalWrite(pin, LOW);
      }
      

      I have not yet verified this code on the device, since I do not have all the necessary components. But it compiled without errors, and that makes me happy already!

      I have only the fear that the function of warming the water will not work correctly, since the kettle has two LEDs that display the status:
      LED_WARMPOWER - Warming is on, but the heating is not involved yet
      LED_WARMACT - Warming is on and the heater is running.

      I would be grateful if you could help me fix this. 🙌 Perhaps you will notice other errors in the code, please tell me about them. 😉

      posted in Development
      vladimir
      vladimir
    • RE: Improvement Xiaomi smart kettle (I need help!)

      @alexsh1 In fact, the purpose of this post is not to understand "why," but to understand "how" to automate the device so that there is feedback from it. At the code level.

      posted in Development
      vladimir
      vladimir
    • RE: Improvement Xiaomi smart kettle (I need help!)

      @omemanti It has protection against heating without water. But, I do not plan to launch it when I am away from home. I just want to use it in automation scripts, for example in the morning when the alarm sounds a wake-up call.

      posted in Development
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      @yveaux Excuse me. I promise not to do it again!🙆‍♂️

      posted in General Discussion
      vladimir
      vladimir
    • RE: Improvement Xiaomi smart kettle (I need help!)

      @alexsh1 I do not see problems that do not allow connecting to the control panel of the kettle.
      These images I took on the Internet:

      alt text

      alt text

      I have already done this with a Chinese-made desk lamp. For this, I used a sketch of the relay node. But everything was easier there, I removed the button and connected the output from the Arduino instead. I rarely use a desk lamp, so I allowed myself to sacrifice a button for the sake of experimentation. I usually manage it through Siri.
      On the teapot, I still want to leave the physical buttons, and get feedback about their condition.

      posted in Development
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      Colleagues!
      I am writing in this thread, because here are the most active users of the forum and the system MySensors.🙌
      Perhaps you can help me with the solution of my problem: Improvement Xiaomi smart kettle (I need help!)
      Maybe you had similar projects...
      Then, I can finally publish a new project in this thread. ✌

      posted in General Discussion
      vladimir
      vladimir
    • RE: How To: Automate Devices with Existing Buttons

      @petewill Do you have any feedback with the device in the sketch? I was thinking of getting it from LEDs.

      posted in My Project
      vladimir
      vladimir
    • RE: How To: Automate Devices with Existing Buttons

      @petewill maybe you know how to solve my problem?
      Today I created a forum thread describing my idea: Improvement Xiaomi smart kettle (I need help!)
      Your topic is closest to mine. But unfortunately I have very little experience to figure everything out on my own.

      posted in My Project
      vladimir
      vladimir
    • Improvement Xiaomi smart kettle (I need help!)

      Hello!
      Recently, I purchased a smart Xiaomi kettle. But to my disappointment, he seemed quite stupid.😄 I can not turn it on remotely, I can only change its settings from the application on the smartphone. Therefore, I thought about its automation with the help of MySensors.

      smart Xiaomi kettle

      On the panel of the kettle there are two touch buttons and two LEDs - boiling and heating. I want to connect the MySensors node to them. The activation signal is applied to the buttons, and the work status is received from the LEDs.

      two touch buttons and two LEDs

      Perhaps you have already encountered similar projects in this forum... Please share links to them here.🙌

      Perhaps you have a similar sketch in your collection? I will be very grateful if you share it.

      I am sure that such a device will be useful to many participants in this forum, to improve their not very smart devices.😉

      posted in Development
      vladimir
      vladimir
    • Rule for dimmer and LED strip

      Hello!

      I have two nodes:

      1. Dimmer (encoder with switch)
      2. RGB LED strip

      Please tell me how to make a rule for controlling two parameters (on / off, brightness) of an RGB LED strip using a dimmer unit.

      Perhaps someone already uses this rule in OpenHAB?

      Dimmer
      Dimmer
      RGB LED strip
      RGB LED strip

      posted in OpenHAB
      vladimir
      vladimir
    • RE: Problem with dimmable LED actuator with encoder

      @hard-shovel thank you very much!🙌 Now everything works!
      I will give here a full sketch. I'm sure it will be useful to many.

      /**
       * 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.
       *
       *******************************
       * DESCRIPTION
       * This sketch provides an example how to implement a dimmable led light node with a rotary 
       * encoder connected for adjusting light level. 
       * The encoder has a click button which turns on/off the light (and remembers last dim-level) 
       * The sketch fades the light (non-blocking) to the desired level. 
       *
       * Default MOSFET pin is 3
       * 
       *  Arduino      Encoder module
       *  ---------------------------
       *  5V           5V (+)  
       *  GND          GND (-)
       *  4            CLK (or putput 1)
       *  5            DT  (or output 1) 
       *  6            SW (Switch/Click)  
       */
      
       
      // 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 <Bounce2.h>
      #include <Encoder.h>
      
      #define LED_PIN 3           // Arduino pin attached to MOSFET Gate pin
      #define KNOB_ENC_PIN_1 4    // Rotary encoder input pin 1
      #define KNOB_ENC_PIN_2 5    // Rotary encoder input pin 2
      #define KNOB_BUTTON_PIN 6   // Rotary encoder button pin 
      #define FADE_DELAY 10       // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
      #define SEND_THROTTLE_DELAY 400 // Number of milliseconds before sending after user stops turning knob
      #define SN "DimmableLED /w button"
      #define SV "1.3"
      
      #define CHILD_ID_LIGHT 1
      
      #define EEPROM_DIM_LEVEL_LAST 1
      #define EEPROM_DIM_LEVEL_SAVE 2
      
      #define LIGHT_OFF 0
      #define LIGHT_ON 1
      
      int dimValue;
      int fadeTo;
      int fadeDelta;
      byte oldButtonVal;
      bool changedByKnob=false;
      bool sendDimValue=false;
      unsigned long lastFadeStep;
      unsigned long sendDimTimeout;
      char convBuffer[10];
      
      MyMessage dimmerMsg(CHILD_ID_LIGHT, V_DIMMER);
      MyMessage statusMsg(CHILD_ID_LIGHT, V_STATUS);    // Addition for Status update to OpenHAB Controller
      Encoder knob(KNOB_ENC_PIN_1, KNOB_ENC_PIN_2);  
      Bounce debouncer = Bounce(); 
      
      void setup()  
      { 
        // Set knob button pin as input (with debounce)
        pinMode(KNOB_BUTTON_PIN, INPUT);
        digitalWrite(KNOB_BUTTON_PIN, HIGH);
        debouncer.attach(KNOB_BUTTON_PIN);
        debouncer.interval(5);
        oldButtonVal = debouncer.read();
      
        // Set analog led pin to off
        analogWrite( LED_PIN, 0);
      
        // Retreive our last dim levels from the eprom
        fadeTo = dimValue = 0;
        byte oldLevel = loadLevelState(EEPROM_DIM_LEVEL_LAST);
        Serial.print("Sending in last known light level to controller: ");
        Serial.println(oldLevel);  
        send(dimmerMsg.set(oldLevel), true);
        Serial.println("Ready to receive messages...");  
      }
      
      void presentation() {
        // Send the Sketch Version Information to the Gateway
        present(CHILD_ID_LIGHT, S_DIMMER);
        sendSketchInfo(SN, SV);
      }
      
      void loop()      
      {
        // Check if someone turned the rotary encode
        checkRotaryEncoder();
        
        // Check if someone has pressed the knob button
        checkButtonClick();
        
        // Fade light to new dim value
        fadeStep();
      }
      
      void receive(const MyMessage &message)
      {
        if (message.type == V_STATUS) {
          // Incoming on/off command sent from controller ("1" or "0")
          int lightState = message.getString()[0] == '1';
          int newLevel = 0;
          if (lightState==LIGHT_ON) {
            // Pick up last saved dimmer level from the eeprom
            newLevel = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
          } 
          // Send dimmer level back to controller with ack enabled
          send(dimmerMsg.set(newLevel), true);
          // We do not change any levels here until ack comes back from gateway 
          return;
        } else if (message.type == V_PERCENTAGE) {
          // Incoming dim-level command sent from controller (or ack message)
          fadeTo = atoi(message.getString(convBuffer));
          // Save received dim value to eeprom (unless turned off). Will be
          // retreived when a on command comes in
          if (fadeTo != 0)
            saveLevelState(EEPROM_DIM_LEVEL_SAVE, fadeTo);
        }
        saveLevelState(EEPROM_DIM_LEVEL_LAST, fadeTo);
        
        Serial.print("New light level received: ");
        Serial.println(fadeTo);
      
        if (!changedByKnob) 
          knob.write(fadeTo<<1);             //### need to multiply by two (using Shift left)
          
        // Cancel send if user turns knob while message comes in
        changedByKnob = false;
        sendDimValue = false;
      
        // Stard fading to new light level
        startFade();
      }
      
      
      
      void checkRotaryEncoder() {
        long encoderValue = knob.read()>>1 ;      //### Divide by 2 (using shift right) 
      
        if (encoderValue > 100) {   
          encoderValue = 100;       
          knob.write(200);                        //### max value now 200 due to divide by 2
        } else if (encoderValue < 0) {
          encoderValue = 0;
          knob.write(0);
        }
      
        if (encoderValue != fadeTo) {    
          fadeTo = encoderValue;                   
          changedByKnob = true;
          startFade();
        }
      }
      
      void checkButtonClick() {
        debouncer.update();
        byte buttonVal = debouncer.read();
        byte newLevel = 0;
        if (buttonVal != oldButtonVal && buttonVal == LOW) {
          if (dimValue==0) {
            // Turn on light. Set the level to last saved dim value
            int saved = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
            newLevel = saved > 1 ? saved : 100;           // newLevel = saved > 0 ? saved : 100;     
          } 
          send(dimmerMsg.set(newLevel),true);
          send(statusMsg.set(newLevel>0 ? "1" : "0")); // Addition for Status update to OpenHAB Controller,   No Echo
        }
        oldButtonVal = buttonVal;
      }
      
      void startFade() {
        fadeDelta = ( fadeTo - dimValue ) < 0 ? -1 : 1;
        lastFadeStep = millis();
      }
      
      // This method provides a graceful none-blocking fade up/down effect
      void fadeStep() {
        unsigned long currentTime  = millis();
        if ( dimValue != fadeTo && currentTime > lastFadeStep + FADE_DELAY) {
          dimValue += fadeDelta;
          analogWrite( LED_PIN, (int)(dimValue / 100. * 255) );
          lastFadeStep = currentTime;
          
          Serial.print("Fading level: ");
          Serial.println(dimValue);
      
          if (fadeTo == dimValue && changedByKnob) {
            sendDimValue = true;
            sendDimTimeout = currentTime;
          }
        } 
        // Wait a few millisecs before sending in new value (if user still turns the knob)
        if (sendDimValue && currentTime > sendDimTimeout + SEND_THROTTLE_DELAY)  {
           // We're done fading.. send in new dim-value to controller.
           // Send in new dim value with ack (will be picked up in incomingMessage) 
          send(dimmerMsg.set(dimValue), true); // Send new dimmer value and request ack back
          sendDimValue = false;
        }
      }
      
      // Make sure only to store/fetch values in the range 0-100 from eeprom
      int loadLevelState(byte pos) {
        return min(max(loadState(pos),0),100);
      }
      void saveLevelState(byte pos, byte data) {
        saveState(pos,min(max(data,0),100));
      }
      
      posted in Development
      vladimir
      vladimir
    • RE: Problem with dimmable LED actuator with encoder

      @hard-shovel switch is working, thanks! Only while he behaves a little unpredictably: video 1, video 2

      posted in Development
      vladimir
      vladimir
    • RE: Problem with dimmable LED actuator with encoder

      @hard-shovel at compilation produces an error of the following content:

      /Users/vladimirpetrov/Documents/Arduino/Dimmer/Dimmer.ino: In function 'void setup()':
      Dimmer:106: error: 'newLevel' was not declared in this scope
         send(statusMsg.set(newLevel > 0 ? "1" : "0"),true); // Addition for Status update to OpenHAB Controller
                            ^
      exit status 1
      'newLevel' was not declared in this scope
      
      posted in Development
      vladimir
      vladimir
    • RE: Problem with dimmable LED actuator with encoder

      @hard-shovel thanks for the answer!
      The encoder started working as it should! There was only a problem with the switch in OpenHAB. It does not switch when you press a button on the device. The feeling that OpenHAB does not get the status of this switch. The device works well.
      In this video, I clearly demonstrated the problem: https://cloud.mail.ru/public/4fee/HiVX5ZSxh

      Maybe you know what the problem is? I made all the changes you wrote to me in the previous message. Here is the updated device code:

      /**
       * 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 - Developed by Bruce Lacey and GizMoCuz (Domoticz)
       * Version 1.1 - Modified by hek to incorporate a rotary encode to adjust 
       *                                light level locally at node
       * 
       * DESCRIPTION
       * This sketch provides an example how to implement a dimmable led light node with a rotary 
       * encoder connected for adjusting light level. 
       * The encoder has a click button which turns on/off the light (and remembers last dim-level) 
       * The sketch fades the light (non-blocking) to the desired level. 
       *
       * Default MOSFET pin is 3
       * 
       *  Arduino      Encoder module
       *  ---------------------------
       *  5V           5V (+)  
       *  GND          GND (-)
       *  4            CLK (or putput 1)
       *  5            DT  (or output 1) 
       *  6            SW (Switch/Click)  
       */
      
       
      // 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 <Bounce2.h>
      #include <Encoder.h>
      
      #define LED_PIN 3           // Arduino pin attached to MOSFET Gate pin
      #define KNOB_ENC_PIN_1 4    // Rotary encoder input pin 1
      #define KNOB_ENC_PIN_2 5    // Rotary encoder input pin 2
      #define KNOB_BUTTON_PIN 6   // Rotary encoder button pin 
      #define FADE_DELAY 10       // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
      #define SEND_THROTTLE_DELAY 400 // Number of milliseconds before sending after user stops turning knob
      #define SN "DimmableLED /w button"
      #define SV "1.2"
      
      #define CHILD_ID_LIGHT 1
      
      #define EEPROM_DIM_LEVEL_LAST 1
      #define EEPROM_DIM_LEVEL_SAVE 2
      
      #define LIGHT_OFF 0
      #define LIGHT_ON 1
      
      int dimValue;
      int fadeTo;
      int fadeDelta;
      byte oldButtonVal;
      bool changedByKnob=false;
      bool sendDimValue=false;
      unsigned long lastFadeStep;
      unsigned long sendDimTimeout;
      char convBuffer[10];
      
      MyMessage dimmerMsg(CHILD_ID_LIGHT, V_DIMMER);
      Encoder knob(KNOB_ENC_PIN_1, KNOB_ENC_PIN_2);  
      Bounce debouncer = Bounce(); 
      
      void setup()  
      { 
        // Set knob button pin as input (with debounce)
        pinMode(KNOB_BUTTON_PIN, INPUT);
        digitalWrite(KNOB_BUTTON_PIN, HIGH);
        debouncer.attach(KNOB_BUTTON_PIN);
        debouncer.interval(5);
        oldButtonVal = debouncer.read();
      
        // Set analog led pin to off
        analogWrite( LED_PIN, 0);
      
        // Retreive our last dim levels from the eprom
        fadeTo = dimValue = 0;
        byte oldLevel = loadLevelState(EEPROM_DIM_LEVEL_LAST);
        Serial.print("Sending in last known light level to controller: ");
        Serial.println(oldLevel);  
        send(dimmerMsg.set(oldLevel), true);   
      
        Serial.println("Ready to receive messages...");  
      }
      
      void presentation() {
        // Send the Sketch Version Information to the Gateway
        present(CHILD_ID_LIGHT, S_DIMMER);
        sendSketchInfo(SN, SV);
      }
      
      void loop()      
      {
        // Check if someone turned the rotary encode
        checkRotaryEncoder();
        
        // Check if someone has pressed the knob button
        checkButtonClick();
        
        // Fade light to new dim value
        fadeStep();
      }
      
      void receive(const MyMessage &message)
      {
        if (message.type == V_STATUS) {
          // Incoming on/off command sent from controller ("1" or "0")
          int lightState = message.getString()[0] == '1';
          int newLevel = 0;
          if (lightState==LIGHT_ON) {
            // Pick up last saved dimmer level from the eeprom
            newLevel = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
          } 
          // Send dimmer level back to controller with ack enabled
          send(dimmerMsg.set(newLevel), true);
          // We do not change any levels here until ack comes back from gateway 
          return;
        } else if (message.type == V_PERCENTAGE) {
          // Incoming dim-level command sent from controller (or ack message)
          fadeTo = atoi(message.getString(convBuffer));
          // Save received dim value to eeprom (unless turned off). Will be
          // retreived when a on command comes in
          if (fadeTo != 0)
            saveLevelState(EEPROM_DIM_LEVEL_SAVE, fadeTo);
        }
        saveLevelState(EEPROM_DIM_LEVEL_LAST, fadeTo);
        
        Serial.print("New light level received: ");
        Serial.println(fadeTo);
      
        if (!changedByKnob) 
          knob.write(fadeTo<<1);             //### need to multiply by two (using Shift left)
          
        // Cancel send if user turns knob while message comes in
        changedByKnob = false;
        sendDimValue = false;
      
        // Stard fading to new light level
        startFade();
      }
      
      
      
      void checkRotaryEncoder() {
        long encoderValue = knob.read()>>1 ;      //### Divide by 2 (using shift right) 
      
        if (encoderValue > 100) {   
          encoderValue = 100;       
          knob.write(200);                        //### max value now 200 due to divide by 2
        } else if (encoderValue < 0) {
          encoderValue = 0;
          knob.write(0);
        }
      
        if (encoderValue != fadeTo) {    
          fadeTo = encoderValue;                   
          changedByKnob = true;
          startFade();
        }
      }
      
      void checkButtonClick() {
        debouncer.update();
        byte buttonVal = debouncer.read();
        byte newLevel = 0;
        if (buttonVal != oldButtonVal && buttonVal == LOW) {
          if (dimValue==0) {
            // Turn on light. Set the level to last saved dim value
            int saved = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
            newLevel = saved > 0 ? saved : 100;
          }
          send(dimmerMsg.set(newLevel),true);
        }
        oldButtonVal = buttonVal;
      }
      
      void startFade() {
        fadeDelta = ( fadeTo - dimValue ) < 0 ? -1 : 1;
        lastFadeStep = millis();
      }
      
      // This method provides a graceful none-blocking fade up/down effect
      void fadeStep() {
        unsigned long currentTime  = millis();
        if ( dimValue != fadeTo && currentTime > lastFadeStep + FADE_DELAY) {
          dimValue += fadeDelta;
          analogWrite( LED_PIN, (int)(dimValue / 100. * 255) );
          lastFadeStep = currentTime;
          
          Serial.print("Fading level: ");
          Serial.println(dimValue);
      
          if (fadeTo == dimValue && changedByKnob) {
            sendDimValue = true;
            sendDimTimeout = currentTime;
          }
        } 
        // Wait a few millisecs before sending in new value (if user still turns the knob)
        if (sendDimValue && currentTime > sendDimTimeout + SEND_THROTTLE_DELAY)  {
           // We're done fading.. send in new dim-value to controller.
           // Send in new dim value with ack (will be picked up in incomingMessage) 
          send(dimmerMsg.set(dimValue), true); // Send new dimmer value and request ack back
          sendDimValue = false;
        }
      }
      
      // Make sure only to store/fetch values in the range 0-100 from eeprom
      int loadLevelState(byte pos) {
        return min(max(loadState(pos),0),100);
      }
      void saveLevelState(byte pos, byte data) {
        saveState(pos,min(max(data,0),100));
      }
      
      posted in Development
      vladimir
      vladimir
    • RE: 💬 Dimmable LED Actuator

      Does anyone use this sketch "DimmableLightWithRotaryEncoderButton"? I take it from the site (https://www.mysensors.org/build/dimmer) and it does not work with OpenHAB 2.

      posted in Announcements
      vladimir
      vladimir
    • RE: Problem with dimmable LED actuator with encoder

      @itbeyond said in Problem with dimmable LED actuator with encoder:

      @vladimir I really think you need to look at this in the serial monitor and add some serial.print lines in the associated places in the code to see what is going on.

      Can you tell me where exactly to add?

      posted in Development
      vladimir
      vladimir
    • Problem with dimmable LED actuator with encoder

      Hi all!

      I'm using OpenHAB 2, and I have some problems with the sketch code "DimmableLightWithRotaryEncoderButton".

      When the encoder button is pressed, the switch in OpenHAB does not respond.
      When turn the encoder knob one step, the value changes in two steps.
      Maybe you have encountered such a problem? Or maybe you can share a more modern sketch?

      /**
       * 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 - Developed by Bruce Lacey and GizMoCuz (Domoticz)
       * Version 1.1 - Modified by hek to incorporate a rotary encode to adjust 
       *                                light level locally at node
       * 
       * DESCRIPTION
       * This sketch provides an example how to implement a dimmable led light node with a rotary 
       * encoder connected for adjusting light level. 
       * The encoder has a click button which turns on/off the light (and remembers last dim-level) 
       * The sketch fades the light (non-blocking) to the desired level. 
       *
       * Default MOSFET pin is 3
       * 
       *  Arduino      Encoder module
       *  ---------------------------
       *  5V           5V (+)  
       *  GND          GND (-)
       *  4            CLK (or putput 1)
       *  5            DT  (or output 1) 
       *  6            SW (Switch/Click)  
       */
      
      
      // 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 <Bounce2.h>
      #include <Encoder.h>
      
      #define LED_PIN 3           // Arduino pin attached to MOSFET Gate pin
      #define KNOB_ENC_PIN_1 4    // Rotary encoder input pin 1
      #define KNOB_ENC_PIN_2 5    // Rotary encoder input pin 2
      #define KNOB_BUTTON_PIN 6   // Rotary encoder button pin 
      #define FADE_DELAY 10       // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
      #define SEND_THROTTLE_DELAY 400 // Number of milliseconds before sending after user stops turning knob
      #define SN "DimmableLED /w button"
      #define SV "1.2"
      
      #define CHILD_ID_LIGHT 1
      
      #define EEPROM_DIM_LEVEL_LAST 1
      #define EEPROM_DIM_LEVEL_SAVE 2
      
      #define LIGHT_OFF 0
      #define LIGHT_ON 1
      
      int dimValue;
      int fadeTo;
      int fadeDelta;
      byte oldButtonVal;
      bool changedByKnob=false;
      bool sendDimValue=false;
      unsigned long lastFadeStep;
      unsigned long sendDimTimeout;
      char convBuffer[10];
      
      MyMessage dimmerMsg(CHILD_ID_LIGHT, V_DIMMER);
      Encoder knob(KNOB_ENC_PIN_1, KNOB_ENC_PIN_2);  
      Bounce debouncer = Bounce(); 
      
      void setup()  
      { 
        // Set knob button pin as input (with debounce)
        pinMode(KNOB_BUTTON_PIN, INPUT);
        digitalWrite(KNOB_BUTTON_PIN, HIGH);
        debouncer.attach(KNOB_BUTTON_PIN);
        debouncer.interval(5);
        oldButtonVal = debouncer.read();
      
        // Set analog led pin to off
        analogWrite( LED_PIN, 0);
      
        // Retreive our last dim levels from the eprom
        fadeTo = dimValue = 0;
        byte oldLevel = loadLevelState(EEPROM_DIM_LEVEL_LAST);
        Serial.print("Sending in last known light level to controller: ");
        Serial.println(oldLevel);  
        send(dimmerMsg.set(oldLevel), true);   
      
        Serial.println("Ready to receive messages...");  
      }
      
      void presentation() {
        // Send the Sketch Version Information to the Gateway
        present(CHILD_ID_LIGHT, S_DIMMER);
        sendSketchInfo(SN, SV);
      }
      
      void loop()      
      {
        // Check if someone turned the rotary encode
        checkRotaryEncoder();
      
        // Check if someone has pressed the knob button
        checkButtonClick();
      
        // Fade light to new dim value
        fadeStep();
      }
      
      void receive(const MyMessage &message)
      {
        if (message.type == V_LIGHT) {
          // Incoming on/off command sent from controller ("1" or "0")
          int lightState = message.getString()[0] == '1';
          int newLevel = 0;
          if (lightState==LIGHT_ON) {
            // Pick up last saved dimmer level from the eeprom
            newLevel = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
          } 
          // Send dimmer level back to controller with ack enabled
          send(dimmerMsg.set(newLevel), true);
          // We do not change any levels here until ack comes back from gateway 
          return;
        } else if (message.type == S_DIMMER) {
          // Incoming dim-level command sent from controller (or ack message)
          fadeTo = atoi(message.getString(convBuffer));
          // Save received dim value to eeprom (unless turned off). Will be
          // retreived when a on command comes in
          if (fadeTo != 0)
            saveLevelState(EEPROM_DIM_LEVEL_SAVE, fadeTo);
        }
        saveLevelState(EEPROM_DIM_LEVEL_LAST, fadeTo);
      
        Serial.print("New light level received: ");
        Serial.println(fadeTo);
      
        if (!changedByKnob) 
          knob.write(fadeTo); 
      
        // Cancel send if user turns knob while message comes in
        changedByKnob = false;
        sendDimValue = false;
      
        // Stard fading to new light level
        startFade();
      }
      
      
      
      void checkRotaryEncoder() {
        long encoderValue = knob.read();
      
        if (encoderValue > 100) {
          encoderValue = 100;
          knob.write(100);
        } else if (encoderValue < 0) {
          encoderValue = 0;
          knob.write(0);
        }
      
        if (encoderValue != fadeTo) { 
          fadeTo = encoderValue;
          changedByKnob = true;
          startFade();
        }
      }
      
      void checkButtonClick() {
        debouncer.update();
        byte buttonVal = debouncer.read();
        byte newLevel = 0;
        if (buttonVal != oldButtonVal && buttonVal == LOW) {
          if (dimValue==0) {
            // Turn on light. Set the level to last saved dim value
            int saved = loadLevelState(EEPROM_DIM_LEVEL_SAVE);
            newLevel = saved > 0 ? saved : 100;
          }
          send(dimmerMsg.set(newLevel),true);
        }
        oldButtonVal = buttonVal;
      }
      
      void startFade() {
        fadeDelta = ( fadeTo - dimValue ) < 0 ? -1 : 1;
        lastFadeStep = millis();
      }
      
      // This method provides a graceful none-blocking fade up/down effect
      void fadeStep() {
        unsigned long currentTime  = millis();
        if ( dimValue != fadeTo && currentTime > lastFadeStep + FADE_DELAY) {
          dimValue += fadeDelta;
          analogWrite( LED_PIN, (int)(dimValue / 100. * 255) );
          lastFadeStep = currentTime;
      
          Serial.print("Fading level: ");
          Serial.println(dimValue);
      
          if (fadeTo == dimValue && changedByKnob) {
            sendDimValue = true;
            sendDimTimeout = currentTime;
          }
        } 
        // Wait a few millisecs before sending in new value (if user still turns the knob)
        if (sendDimValue && currentTime > sendDimTimeout + SEND_THROTTLE_DELAY)  {
           // We're done fading.. send in new dim-value to controller.
           // Send in new dim value with ack (will be picked up in incomingMessage) 
          send(dimmerMsg.set(dimValue), true); // Send new dimmer value and request ack back
          sendDimValue = false;
        }
      }
      
      // Make sure only to store/fetch values in the range 0-100 from eeprom
      int loadLevelState(byte pos) {
        return min(max(loadState(pos),0),100);
      }
      void saveLevelState(byte pos, byte data) {
        saveState(pos,min(max(data,0),100));
      }```
      posted in Development
      vladimir
      vladimir
    • RE: 💬 Dimmable LED Actuator

      Hi all!

      I'm using OpenHAB 2, and I have some problems with the sketch code "DimmableLightWithRotaryEncoderButton".

      1. When the encoder button is pressed, the switch in OpenHAB does not respond.
      2. When you turn the encoder knob one step, the value changes in two steps.

      Maybe you have encountered such a problem? Or maybe you can share a more modern sketch?

      posted in Announcements
      vladimir
      vladimir
    • RE: 1 LED strip node and 2 dimmer nodes

      @tsjoender Thanks for the advice! I'll try to implement the second option.

      posted in Development
      vladimir
      vladimir
    • RE: KY-40 rotary encoder

      @lastsamurai Hello!
      Did you manage to implement this node?

      posted in Hardware
      vladimir
      vladimir
    • RE: Rotary dimmer switch and mysensors?

      @otto001 Hello!
      Did you manage to implement this node?

      posted in Hardware
      vladimir
      vladimir
    • 1 LED strip node and 2 dimmer nodes

      Hello!
      Can you please tell me how best to implement the remote control of the LED strip using the dimmer? Perhaps this forum already has a similar dimmer node project for remote light control.
      I need one node of the LED strip to be controlled by two nodes with dimmers. Dimmers I want to locate in different places, separately from the LED tape.

      posted in Development
      vladimir
      vladimir
    • RGB LED strip (share your code)

      Hello!
      In the continuation of the topic: RGB LED strip
      I suggest to everyone who uses RGB LED strips to share their current code.
      At the moment I'm using this one: https://forum.mysensors.org/topic/6765/rgb-led-strip/48

      posted in Development
      vladimir
      vladimir
    • RE: RGB LED strip

      @maghac said in RGB LED strip:

      Well, it took some time, but here is v1.8 at last!

      Maybe you have a sketch option for RGB stripes? Same wonderful, but without white LEDs?

      posted in My Project
      vladimir
      vladimir
    • RE: RGB LED strip

      Colleagues, please share your fresh sketches for RGB-strips.✌

      posted in My Project
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      The project of today is not yet connected with Mysensors.
      This is a light relay with an IR receiver for the spotlight illuminating the backyard of my friends' house.
      In the dark, the relay can be switched off from the remote control (to block the activation of the relay). If the remote is far away from you, then the lock can be removed with the searchlight switch by restarting it.
      To understand if the relay is locked, there is a red LED on the case.
      alt text
      alt text
      alt text

      posted in General Discussion
      vladimir
      vladimir
    • RE: Managing the color of multiple RGB LED nodes

      @silex Wow! Super! Thank you!🙌

      posted in OpenHAB
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      @zboblamont @bjacobse
      I plan to make the leakage sensors waterproof, with outwardly exposed contacts made of stainless steel. I plan to lift the contacts 1-2mm from the floor so that when washing floors, when the floor is just a little wet sensor did not work. I really like the sensors from Xiaomi.
      alt text
      alt text
      I ordered for the sample here are such cases from China:

      1 - 31х10mm
      alt text
      alt text

      2 - 61х20mm
      alt text

      posted in General Discussion
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      @zboblamont Yes, it is, motorized ball valves.
      I meant the reaction to the breakthrough of pipes or flexible connections of sanitary ware.

      posted in General Discussion
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      The other day I finished the first version of the PCB for my system of protection against water leakage. It will have two automatic ball valves, six leakage sensors with wire breakage monitoring and in the future I plan to connect it to the Mysensors.
      alt text
      Here is a prototype collected with the help of Arduino Pro Mini. Arduino Uno is just nearby, but not connected. Do not pay any attention to him. 🙂
      alt text

      posted in General Discussion
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      @gohan Is there a chance to wake up a little toasted?😅

      posted in General Discussion
      vladimir
      vladimir
    • RE: Managing the color of multiple RGB LED nodes

      @crankycoder Many thanks for the idea!🙌 I think this is the right direction for solving my question.

      posted in OpenHAB
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      @gertsanders many thanks!🙌 This is very interesting, I did not previously hear about such a sensor.
      I understand correctly that it can be placed in a wooden case and it can work through it? Since the tree does not reflect its waves.
      If this is so, will not it respond to the movement of the bed frame or my movements when I'm on the bed?...🤔

      posted in General Discussion
      vladimir
      vladimir
    • RE: Managing the color of multiple RGB LED nodes

      @crankycoder This was my first and so far the only idea. 😄 To my regret, it did not work. Such a trick turned out only with a switch.

      posted in OpenHAB
      vladimir
      vladimir
    • Managing the color of multiple RGB LED nodes

      Hello! Tell me please, can I somehow change the color at the same time for a group of nodes? I have several LED color fixtures, I want to change the color of all at once and in one place of the application.
      alt text

      posted in OpenHAB
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      Today I finally finished my second RGB LED lighting in the room. Next is the LED illumination of the perimeter of the bed. Under the bed, I want to place a motion sensor so that it reacts when I get out of bed at night.
      alt text

      posted in General Discussion
      vladimir
      vladimir
    • Uninterruptible power supply for the node

      Hello!
      Recently, I thought about the autonomy of the system in the event of a power outage. In order that in the absence of current in the network of my apartment all the nodes of the system switched to batteries. Make a standalone server and gateway (Raspberry PI) will not be difficult. But I do not particularly understand how to do this with Mysensors nodes in order to preserve their miniature sizes. Do you have any ideas on this?
      alt text

      posted in Hardware
      vladimir
      vladimir
    • RE: RGB LED strip

      @sundberg84 At this time, everything is collected on a plastic prototyping board, in the evening I will move all the components to a breadboard from a textolite, perhaps there will be better results.🤔

      posted in My Project
      vladimir
      vladimir
    • RE: RGB LED strip

      @sundberg84 Sorry... I incorrectly connected IRLZ44.🤦‍♂️ 😄 But last time they were connected correctly. Now everything works well. Only LM2940 slightly heats up, according to my subjective sensations, up to 60-70 degrees. This is normal?
      I am very grateful for your help!🙌

      posted in My Project
      vladimir
      vladimir
    • RE: RGB LED strip

      @sundberg84 said in RGB LED strip:

      Can you measure resistance between VCC and GND?

      I completely rebuilt the whole scheme, I used the new components. This time I used Arduino Nano. Connect power to terminal 5V. The situation is repeated again, the microcontroller becomes very hot. But only when the light is on.

      Honestly, I never measured the resistance. I hope everything was done right.
      alt text

      posted in My Project
      vladimir
      vladimir
    • RE: RGB LED strip

      @sundberg84 I have version 3.3B. I always thought that this is the correct power connection if the source voltage is more than 3.3 V. And with this power connection I wanted to avoid using a separate voltage regulator for the radio module. If I feed 5V to the VCC input, will there be a logic signal on the terminals 3.3V or 5V? And will not this be detrimental to the controller?

      posted in My Project
      vladimir
      vladimir
    • RE: RGB LED strip

      Hello everybody! The connected LED strip lights up, but for some reason the Atmega chip heats up very quickly and strongly. Has anyone come across this?
      My connection scheme:
      alt text

      posted in My Project
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 The connected LED strip lights up, but for some reason the Atmega chip is heated very quickly and strongly. Have you encountered this?
      My connection scheme:
      alt text

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 And ... I do not use Easy/Newbie PCB. Will there be enough voltage at the conclusions of Arduino Pro Mini 3.3V for tape management?
      I now experimented and accidentally burned the voltage regulator in Arduino Pro Mini 3.3V, applying 12 V to the RAW contact.🤷‍♂️
      Today is clearly not my day...🤦‍♂️ 😄

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 Is there a sketch for this device? Where can I find it?

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 😁 many thanks!🙌

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 Thank you for the clarification! Can you explain to me why you use a combination of 0.1 uF and 10 uF, instead of the recommended 0.47 uF and 22 uF?

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 RGB Led Strip Board (MysX)

      @sundberg84 you can write what capacitors and resistors should be placed on the board?

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: Problems with the Raspberry Pi gateway

      @gohan many thanks!🙌

      posted in Troubleshooting
      vladimir
      vladimir
    • RE: Problems with the Raspberry Pi gateway

      Here, all that was written in the console:

      [00:24:15] openhabian@openHABianPi:~$ git clone https://github.com/mysensors/MySensors.git --branch master
      Cloning into 'MySensors'...
      remote: Counting objects: 15830, done.
      remote: Total 15830 (delta 0), reused 0 (delta 0), pack-reused 15830
      Receiving objects: 100% (15830/15830), 20.48 MiB | 3.49 MiB/s, done.
      Resolving deltas: 100% (9639/9639), done.
      [00:24:46] openhabian@openHABianPi:~$ cd MySensors
      [00:25:34] openhabian@openHABianPi:~/MySensors$ ./configure --my-transport=nrf24
      [SECTION] Detecting target machine.
        [OK] machine detected: SoC=BCM2837, Type=rpi3, CPU=armv7l.
      [SECTION] Detecting SPI driver.
        [OK] SPI driver detected:BCM.
      [SECTION] Detecting init system.
        [OK] init system detected: systemd.
      [SECTION] Saving configuration.
      [SECTION] Cleaning previous builds.
      [OK] Finished.
      [00:26:09] openhabian@openHABianPi:~/MySensors$ ./configure --my-gateway=ethernet --my-port=5003
      [SECTION] Detecting target machine.
        [OK] machine detected: SoC=BCM2837, Type=rpi3, CPU=armv7l.
      [SECTION] Detecting SPI driver.
        [OK] SPI driver detected:BCM.
      [SECTION] Detecting init system.
        [OK] init system detected: systemd.
      [SECTION] Saving configuration.
      [SECTION] Cleaning previous builds.
      [OK] Finished.
      [00:27:08] openhabian@openHABianPi:~/MySensors$ ./configure --my-gateway=ethernet --my-controller-ip-address=192.168.1.2
      [SECTION] Detecting target machine.
        [OK] machine detected: SoC=BCM2837, Type=rpi3, CPU=armv7l.
      [SECTION] Detecting SPI driver.
        [OK] SPI driver detected:BCM.
      [SECTION] Detecting init system.
        [OK] init system detected: systemd.
      [SECTION] Saving configuration.
      [SECTION] Cleaning previous builds.
      [OK] Finished.
      [00:27:40] openhabian@openHABianPi:~/MySensors$ make
      gcc -MT build/drivers/Linux/log.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/log.c -o build/drivers/Linux/log.o
      g++ -MT build/drivers/Linux/IPAddress.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/IPAddress.cpp -o build/drivers/Linux/IPAddress.o
      g++ -MT build/drivers/Linux/noniso.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/noniso.cpp -o build/drivers/Linux/noniso.o
      g++ -MT build/drivers/Linux/GPIO.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/GPIO.cpp -o build/drivers/Linux/GPIO.o
      g++ -MT build/drivers/Linux/SPIDEV.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/SPIDEV.cpp -o build/drivers/Linux/SPIDEV.o
      g++ -MT build/drivers/Linux/Print.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/Print.cpp -o build/drivers/Linux/Print.o
      g++ -MT build/drivers/Linux/EthernetClient.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/EthernetClient.cpp -o build/drivers/Linux/EthernetClient.o
      g++ -MT build/drivers/Linux/compatibility.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/compatibility.cpp -o build/drivers/Linux/compatibility.o
      g++ -MT build/drivers/Linux/SerialPort.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/SerialPort.cpp -o build/drivers/Linux/SerialPort.o
      g++ -MT build/drivers/Linux/Stream.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/Stream.cpp -o build/drivers/Linux/Stream.o
      g++ -MT build/drivers/Linux/interrupt.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/interrupt.cpp -o build/drivers/Linux/interrupt.o
      g++ -MT build/drivers/Linux/SerialSimulator.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/SerialSimulator.cpp -o build/drivers/Linux/SerialSimulator.o
      g++ -MT build/drivers/Linux/SoftEeprom.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/SoftEeprom.cpp -o build/drivers/Linux/SoftEeprom.o
      g++ -MT build/drivers/Linux/EthernetServer.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/Linux/EthernetServer.cpp -o build/drivers/Linux/EthernetServer.o
      g++ -MT build/examples_linux/mysgw.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c examples_linux/mysgw.cpp -o build/examples_linux/mysgw.o
      gcc -MT build/drivers/BCM/bcm2835.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/bcm2835.c -o build/drivers/BCM/bcm2835.o
      g++ -MT build/drivers/BCM/BCM.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/BCM.cpp -o build/drivers/BCM/BCM.o
      g++ -MT build/drivers/BCM/SPIBCM.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/SPIBCM.cpp -o build/drivers/BCM/SPIBCM.o
      g++ -MT build/drivers/BCM/Wire.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/Wire.cpp -o build/drivers/BCM/Wire.o
      g++ -MT build/drivers/BCM/RPi.o -MMD -MP -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_BCM -DLINUX_ARCH_RASPBERRYPI -DMY_CONTROLLER_IP_ADDRESS=192,168,1,2  -Ofast -g -Wall -Wextra  -I. -I./core -I./drivers/Linux -I./drivers/BCM -c drivers/BCM/RPi.cpp -o build/drivers/BCM/RPi.o
      g++ -pthread  -o bin/mysgw build/drivers/Linux/log.o build/drivers/Linux/IPAddress.o build/drivers/Linux/noniso.o build/drivers/Linux/GPIO.o build/drivers/Linux/SPIDEV.o build/drivers/Linux/Print.o build/drivers/Linux/EthernetClient.o build/drivers/Linux/compatibility.o build/drivers/Linux/SerialPort.o build/drivers/Linux/Stream.o build/drivers/Linux/interrupt.o build/drivers/Linux/SerialSimulator.o build/drivers/Linux/SoftEeprom.o build/drivers/Linux/EthernetServer.o build/examples_linux/mysgw.o build/drivers/BCM/bcm2835.o build/drivers/BCM/BCM.o build/drivers/BCM/SPIBCM.o build/drivers/BCM/Wire.o build/drivers/BCM/RPi.o 
      [00:30:01] openhabian@openHABianPi:~/MySensors$ sudo ./bin/mysgw -d
      mysgw: Starting gateway...
      mysgw: Protocol version - 2.2.0
      mysgw: MCO:BGN:INIT GW,CP=RNNGL---,VER=2.2.0
      mysgw: TSF:LRT:OK
      mysgw: TSM:INIT
      mysgw: TSF:WUR:MS=0
      mysgw: TSM:INIT:TSP OK
      mysgw: TSM:INIT:GW MODE
      mysgw: TSM:READY:ID=0,PAR=0,DIS=0
      mysgw: MCO:REG:NOT NEEDED
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TIN:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TPS:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TPS:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TPS:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      
      posted in Troubleshooting
      vladimir
      vladimir
    • Problems with the Raspberry Pi gateway

      Hello! Please help to solve the problem.🙆‍♂️
      Here's what is written at startup:

      mysgw: Starting gateway...
      mysgw: Protocol version - 2.2.0
      mysgw: MCO:BGN:INIT GW,CP=RNNGL---,VER=2.2.0
      mysgw: TSF:LRT:OK
      mysgw: TSM:INIT
      mysgw: TSF:WUR:MS=0
      mysgw: TSM:INIT:TSP OK
      mysgw: TSM:INIT:GW MODE
      mysgw: TSM:READY:ID=0,PAR=0,DIS=0
      mysgw: MCO:REG:NOT NEEDED
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TIN:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TPS:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      mysgw: GWT:TPS:ETH OK
      mysgw: connect: Connection refused
      mysgw: failed to connect
      

      Here's what I wrote in the console:

      git clone https://github.com/mysensors/MySensors.git --branch master
      cd MySensors
      ./configure --my-transport=nrf24
      ./configure --my-gateway=ethernet --my-port=5003
      ./configure --my-gateway=ethernet --my-controller-ip-address=192.168.1.2
      make
      sudo ./bin/mysgw -d
      
      posted in Troubleshooting
      vladimir
      vladimir
    • RE: What did you build today (Pictures) ?

      Finally, I can join this discussion!
      Today I drew a scheme of my first device! This is a system to protect against water leakage. I also posted it in the "hardware" section. Link.
      system to protect against water leakage

      posted in General Discussion
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      @alexsh1 😄 👍
      Wrote in the chat.

      posted in Hardware
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      @alexsh1 Plantower PMS7003 this sensor need not be calibrated? Is it accurate enough?
      Unfortunately I have some problems with understanding English.😕
      My GP2Y1014AU0F sensor now shows a value of about 150 units. As I understand, this is absolutely not the right value for the apartment.
      alt text

      posted in Hardware
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      @nca78 said in Which dust sensor do you use and why?:

      If you are ready to invest US$30 then you can have a look at the Honeywell HPMA115S0-XXX, it will give you only PM2.5 but it's fully calibrated and you have a +/-15% accuracy warranted by Honeywell for 20 000 hours.

      @gohan tell me please, do I need a special sketch to use it? Or they all work on the same principle?

      posted in Hardware
      vladimir
      vladimir
    • RE: The dust sensor is now finally working

      @nca78 Thank you very much for your response!
      And how do you like this sensor: HPMA115S0-XXX ?
      I read that it is more durable.

      posted in Development
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      @gohan Thank you very much!🙌
      I just yesterday thought that at least I still need to measure CO2.
      Which sensor or complex of sensors did you choose for yourself? And why?

      posted in Hardware
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      @gohan Frankly, I'm not particularly aware of this topic. I want to measure the usual dust in the air. 😁 I apologize if my words seem stupid to you. I want to understand which concentration of dust particles should be measured for the living space, what is the ultimate norm of these particles in the air and what sensor is suitable for this.

      posted in Hardware
      vladimir
      vladimir
    • RE: Which dust sensor do you use and why?

      I bought and now use GP2Y1014AU0F. But, as I read on the forum, it is already outdated.🤷‍♂️

      posted in Hardware
      vladimir
      vladimir
    • Which dust sensor do you use and why?

      Hello!
      I came across an abundance of dust sensors. I want to ask what kind of sensors you use and why?
      And also, I'm curious, what is the norm of the amount of dust in the air of a living room?

      posted in Hardware
      vladimir
      vladimir
    • RE: The dust sensor is now finally working

      @alowhum Hello!
      In what range of values is the norm for living space?
      My sensor shows 17 units.

      posted in Development
      vladimir
      vladimir
    • RE: The temperature and humidity sensor sends only humidity. Please help me understand.

      @mfalkvidd I assumed that this change is made in the code of the sensor itself. For example, during its presentation.

      posted in OpenHAB
      vladimir
      vladimir
    • RE: The temperature and humidity sensor sends only humidity. Please help me understand.

      @mfalkvidd Tell me please, can I somehow unite them in one device? Now this sensor is displayed as two separate devices. But this is one physical device.
      alt text

      posted in OpenHAB
      vladimir
      vladimir
    • RE: The temperature and humidity sensor sends only humidity. Please help me understand.

      @mfalkvidd Thank you! 🙌 Everything worked! 🌟

      posted in OpenHAB
      vladimir
      vladimir
    • The temperature and humidity sensor sends only humidity. Please help me understand.

      Hello! I'm trying to connect a temperature and humidity sensor to Openhab 2.2.
      The sensor is detected automatically as "Humidity Sensor".
      But it displays the following:
      Humidity Sensor

      Please help me understand and solve the problem. What am I doing wrong?

      Sensor code:

      #define MY_DEBUG
      
      // Enable and select radio type attached 
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      //#define MY_RS485
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <DHT.h>
      
      // Set this to the pin you connected the DHT's data pin to
      #define DHT_DATA_PIN 3
      
      // Set this offset if the sensor has a permanent small offset to the real temperatures
      #define SENSOR_TEMP_OFFSET 0
      
      // Sleep time between sensor updates (in milliseconds)
      // Must be >1000ms for DHT22 and >2000ms for DHT11
      static const uint64_t UPDATE_INTERVAL = 10000;
      
      // Force sending an update of the temperature after n sensor reads, so a controller showing the
      // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
      // the value didn't change since;
      // i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
      static const uint8_t FORCE_UPDATE_N_READS = 10;
      
      #define CHILD_ID_HUM 0
      #define CHILD_ID_TEMP 1
      
      float lastTemp;
      float lastHum;
      uint8_t nNoUpdatesTemp;
      uint8_t nNoUpdatesHum;
      bool metric = true;
      
      MyMessage msgHum(CHILD_ID_HUM, V_HUM);
      MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
      DHT dht;
      
      
      void presentation()  
      { 
        // Send the sketch version information to the gateway
        sendSketchInfo("TemperatureAndHumidity", "1.1");
      
        // Register all sensors to gw (they will be created as child devices)
        present(CHILD_ID_HUM, S_HUM);
        present(CHILD_ID_TEMP, S_TEMP);
      
        metric = getControllerConfig().isMetric;
      }
      
      
      void setup()
      {
        dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
        if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
          Serial.println("Warning: UPDATE_INTERVAL is smaller than supported by the sensor!");
        }
        // Sleep for the time of the minimum sampling period to give the sensor time to power up
        // (otherwise, timeout errors might occure for the first reading)
        sleep(dht.getMinimumSamplingPeriod());
      }
      
      
      void loop()      
      {  
        // Force reading sensor, so it works also after sleep()
        dht.readSensor(true);
      
        // Get temperature from DHT library
        float temperature = dht.getTemperature();
        if (isnan(temperature)) {
          Serial.println("Failed reading temperature from DHT!");
        } else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
          // Only send temperature if it changed since the last measurement or if we didn't send an update for n times
          lastTemp = temperature;
          if (!metric) {
            temperature = dht.toFahrenheit(temperature);
          }
          // Reset no updates counter
          nNoUpdatesTemp = 0;
          temperature += SENSOR_TEMP_OFFSET;
          send(msgTemp.set(temperature, 1));
      
          #ifdef MY_DEBUG
          Serial.print("T: ");
          Serial.println(temperature);
          #endif
        } else {
          // Increase no update counter if the temperature stayed the same
          nNoUpdatesTemp++;
        }
      
        // Get humidity from DHT library
        float humidity = dht.getHumidity();
        if (isnan(humidity)) {
          Serial.println("Failed reading humidity from DHT");
        } else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
          // Only send humidity if it changed since the last measurement or if we didn't send an update for n times
          lastHum = humidity;
          // Reset no updates counter
          nNoUpdatesHum = 0;
          send(msgHum.set(humidity, 1));
      
          #ifdef MY_DEBUG
          Serial.print("H: ");
          Serial.println(humidity);
          #endif
        } else {
          // Increase no update counter if the humidity stayed the same
          nNoUpdatesHum++;
        }
      
        // Sleep for a while to save energy
        sleep(UPDATE_INTERVAL); 
      }
      

      Debug information from the sensor:

      16 MCO:BGN:INIT NODE,CP=RNNNA---,VER=2.2.0
      25 TSM:INIT
      26 TSF:WUR:MS=0
      33 TSM:INIT:TSP OK
      35 TSF:SID:OK,ID=24
      37 TSM:FPAR
      73 TSF:MSG:SEND,24-24-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      627 TSF:MSG:READ,0-0-24,s=255,c=3,t=8,pt=1,l=1,sg=0:0
      632 TSF:MSG:FPAR OK,ID=0,D=1
      2081 TSM:FPAR:OK
      2082 TSM:ID
      2083 TSM:ID:OK
      2085 TSM:UPL
      2088 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
      2191 TSF:MSG:READ,0-0-24,s=255,c=3,t=25,pt=1,l=1,sg=0:1
      2196 TSF:MSG:PONG RECV,HP=1
      2198 TSM:UPL:OK
      2200 TSM:READY:ID=24,PAR=0,DIS=1
      2204 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
      2332 TSF:MSG:READ,0-0-24,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
      2340 TSF:MSG:SEND,24-24-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.2.0
      2349 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
      2586 TSF:MSG:READ,0-0-24,s=255,c=3,t=6,pt=0,l=1,sg=0:M
      2593 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:TemperatureAndHumidity
      2604 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.1
      2612 TSF:MSG:SEND,24-24-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      2653 !TSF:MSG:SEND,24-24-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=NACK:
      2660 MCO:REG:REQ
      2663 TSF:MSG:SEND,24-24-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=1,st=OK:2
      2938 TSF:MSG:READ,0-0-24,s=255,c=3,t=27,pt=1,l=1,sg=0:1
      2944 MCO:PIM:NODE REG=1
      2946 MCO:BGN:STP
      2952 MCO:SLP:MS=2000,SMS=0,I1=255,M1=255,I2=255,M2=255
      2957 TSF:TDI:TSL
      2959 MCO:SLP:WUP=-1
      2961 TSF:TRI:TSB
      2963 MCO:BGN:INIT OK,TSP=1
      2972 TSF:MSG:SEND,24-24-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:26.8
      T: 26.80
      2980 TSF:MSG:SEND,24-24-0-0,s=0,c=1,t=1,pt=7,l=5,sg=0,ft=0,st=OK:14.2
      H: 14.20
      2988 MCO:SLP:MS=10000,SMS=0,I1=255,M1=255,I2=255,M2=255
      2993 TSF:TDI:TSL
      2995 MCO:SLP:WUP=-1
      2997 TSF:TRI:TSB
      3005 TSF:MSG:SEND,24-24-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:26.5
      T: 26.50
      3014 TSF:MSG:SEND,24-24-0-0,s=0,c=1,t=1,pt=7,l=5,sg=0,ft=0,st=OK:14.3
      H: 14.30
      3021 MCO:SLP:MS=10000,SMS=0,I1=255,M1=255,I2=255,M2=255
      3026 TSF:TDI:TSL
      

      My node is built on Arduino Nano + NRF24L01+
      My gateway node is built on NodeMcu + NRF24L01+
      Controller Openhab 2.2 (Openhabian + Raspberry Pi 3)
      MySensors library 2.2

      posted in OpenHAB
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @gohan Thanks for clarifying!

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @gohan @mfalkvidd Tell me please, can I connect the converter like this? If not, please explain why.
      alt text

      Let me remind you, in the example was like this:
      alt text

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @mfalkvidd Thank you! 🙌 I'll try tomorrow.

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @mfalkvidd So I do not like the converter for 4 channels?
      Here this is indicated by the link you gave me above
      alt text
      It will take 5? More precisely 8-channel version?

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @mfalkvidd Thank you! I hope I can figure it out. To regret, my knowledge of English is not very great. As I understand it, the connection scheme will be the most similar to this:
      alt text
      I'm right?

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @gohan I'm afraid that they suffered greatly during my experiments. I'll try with the new ones. Can you tell me how to connect the converter?

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @mfalkvidd thank you very much for your help! 👍 ✌

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @gohan thank you very much for your help! 🙌

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @gohan what regulator can you advise? Can you show an example?

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @mfalkvidd I'm not properly connected? In the photo above. He's turned over there.
      alt text

      posted in Hardware
      vladimir
      vladimir
    • RE: Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      @scalz, many thanks for the reply and the desire to help!

      I understand what you are talking about, but for now I can figure out how to solve it.
      Perhaps you have ideas?

      Replace Arduino board with Pro Mini 3.3V?

      posted in Hardware
      vladimir
      vladimir
    • Please help! Arduino UNO + RFM69HW (TSM:INIT:TSP FAIL)

      Hello!
      Please help me understand the problem.

      My relay node is built on Arduino UNO + RFM69HW 868 mhz
      My gateway node is built on NodeMcu + RFM69HW 868 mhz
      Controller Openhab 2.2 (Openhabian + Raspberry Pi 3)
      MySensors library 2.2

      Here's what the port monitor shows:

      16 MCO:BGN:INIT REPEATER,CP=RRNRA---,VER=2.2.0
      26 MCO:BGN:BFR
      27 TSM:INIT
      28 TSF:WUR:MS=0
      80 !TSM:INIT:TSP FAIL
      81 TSM:FAIL:CNT=1
      83 TSM:FAIL:DIS
      84 TSF:TDI:TSL
      

      The code of my relay node:

      /**
       * 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
       * Example sketch showing how to control physical relays.
       * This example will remember relay state after power failure.
       * http://www.mysensors.org/build/relay
       */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG
      
      // Enable and select radio type attached
      //#define MY_RADIO_NRF24
      //#define MY_RADIO_NRF5_ESB
      #define MY_RADIO_RFM69
      //#define MY_RADIO_RFM95
      
      // Enable repeater functionality for this node
      #define MY_REPEATER_FEATURE
      
      #include <MySensors.h>
      
      #define RELAY_PIN 4  // 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 1  // GPIO value to write to turn on attached relay
      #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
      
      
      void before()
      {
      	for (int sensor=1, pin=RELAY_PIN; 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 setup()
      {
      
      }
      
      void presentation()
      {
      	// Send the sketch version information to the gateway and Controller
      	sendSketchInfo("Relay", "1.0");
      
      	for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
      		// Register all sensors to gw (they will be created as child devices)
      		present(sensor, S_BINARY);
      	}
      }
      
      
      void loop()
      {
      
      }
      
      void receive(const MyMessage &message)
      {
      	// We only expect one type of message from controller. But we better check anyway.
      	if (message.type==V_STATUS) {
      		// Change relay state
      		digitalWrite(message.sensor-1+RELAY_PIN, 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());
      	}
      }
      

      Photo of my relay node:
      My relay node
      Please tell me what I'm doing wrong and how to fix this problem?

      posted in Hardware
      vladimir
      vladimir
    • Installing Mysensors library via SSH on Openhabian

      Hello.
      I have an established Openhabian (2.2). Please tell me, how can I connect the Mysensors library via SSH?
      I would be grateful for the detailed step-by-step instruction for the beginner. 😃

      posted in OpenHAB
      vladimir
      vladimir
    • RE: Installation instruction OpenHAB2 + MQTT gateway

      @mfalkvidd The fact of the matter is that I could not figure it out. Here are the problems that I now faced:

      1. In OpenHAB2, on the Mac OS, debugging information is not displayed when starting start_debug.sh
      2. I still could not understand why in OpenHAB2, there is no MQTT gateway in the list:
        Image
      posted in OpenHAB
      vladimir
      vladimir
    • RE: Installation instruction OpenHAB2 + MQTT gateway

      @mfalkvidd It is very strange that in the presence of such a large community, there are no detailed step-by-step instructions, everything is scattered in different places.
      Thank you very much for your help!

      posted in OpenHAB
      vladimir
      vladimir
    • RE: Installation instruction OpenHAB2 + MQTT gateway

      @mfalkvidd It looks like the whole problem is that I'm trying to do this in the Mac OS. Very strange, but even the debugging mode does not display real-time information.

      posted in OpenHAB
      vladimir
      vladimir
    • RE: Installation instruction OpenHAB2 + MQTT gateway

      @mfalkvidd I can not understand where to find the file openhab.cfg

      posted in OpenHAB
      vladimir
      vladimir
    • Installation instruction OpenHAB2 + MQTT gateway

      Hello! Tell me please, what should I do to OpenHAB 2 started working with the MQTT gateway? There is somewhere understandable step-by-step instructions for configuring the OpenHAB 2 + MySensors (MQTT gateway)?

      posted in OpenHAB
      vladimir
      vladimir
    • RE: 💬 In Wall AC/DC Pcb (with Relay) for MySensors (SMD)

      @sundberg84 Please tell me, how you can connect a maximum output devices into an outlet controlled by the relay? As I understand it, it will not sustain even the kettle?
      I apologize in advance for the stupid question, I'm not good at electronics.

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: 💬 In Wall AC/DC Pcb (with Relay) for MySensors (SMD)

      Hello. Please write size of the device in the box.

      posted in OpenHardware.io
      vladimir
      vladimir
    • RE: Node freezing up

      @ferpando, @Magiske, You solved this problem? I realized what the problem, but unfortunately, I do not understand how to solve it. Can you explain exactly how to change node?

      posted in Troubleshooting
      vladimir
      vladimir
    • MQTT Gateway + wi-fi instead of ethernet

      Hello!
      Can somebody already did MQTT Gateway with wi-fi instead of ethernet? Is this possible? Please share your code and circuit.

      posted in Controllers
      vladimir
      vladimir
    • RE: Connect humidity sensor to OpenHAB

      @Xander, thank you for your answer! As it turned out, I have a problem in the gateway. I use a network module ENC28J60, and full of reason to it do not reach the packets, it is not visible on the network. I connect it directly to a computer. Maybe you and repel such a problem?

      posted in OpenHAB
      vladimir
      vladimir