Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
DuckY1987D

DuckY1987

@DuckY1987
About
Posts
6
Topics
1
Shares
0
Groups
0
Followers
0
Following
1

Posts

Recent Best Controversial

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987

    Thanks i will test it today in the evening.

    Btw thanks for your great implementation!

    i dont know if its in process but an IR receive via the dev panel would be awesome ;-).

    Can i shoot you a beer or smth? ;-) or smth from ali?

    Home Assistant

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987
    void incomingMessage(const MyMessage &message)
    {
      if (message.type == V_STATUS) {
         // Change sirene state.
         digitalWrite(PIEZO_PIN, message.getBool() ? 1 : 0);
         gw.send(sireneMsg.set(message.getBool() ? 1 : 0));
      }
    }
    

    That you mean with receive feedback right?

    Home Assistant

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987

    so smth like:

    void setup()
    {
    #ifdef DEBUG // turn on the Serial monitor if #define DEBUG is uncommented in MyConfig.h (MySensors library)
      Serial.begin( 115200 ); // only debug to serial monitor during development
    #endif
      // setup a connection to the MySensor's gateway and request an ID if we do not have one yet.
      gw.begin(incomingMessage);
      gw.sendSketchInfo(SN, SV);
    #ifdef DEBUG // Print some debug info
      Serial.println( "Radio is connect right." );
    #endif
      // Initialize the digital pin as an output.
      pinMode( PIEZO_PIN, OUTPUT);;
      gw.present(CHILD_ID, S_BINARY);
      gw.send(sireneMsg.set(0));
    }
    

    How does the feedback looks like in the receive part?

    Home Assistant

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987

    @martinhjelmare i'm rather new to active nodes, do you have an example or could you edit the code above?

    I just used reporting nodes till now, first try with my active one :-).

    Didn't find much examples for home-assistant with active nodes, basically it could be a switch sketch either i assume.

    Home Assistant

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987

    Sorry for the late reply, i was a bit absent.

    17-02-28 21:50:59 DEBUG (Thread-13) [homeassistant.components.mysensors] Update sensor_update: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 INFO (Thread-13) [homeassistant.components.mysensors] No sketch_name: node 24
    17-02-28 21:50:59 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=255,c=3,t=6,pt=1,l=1,sg=0:0
    17-02-28 21:50:59 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:send: 0-0-24-24 s=255,c=3,t=6,pt=0,l=1,sg=0,st=ok:M
    17-02-28 21:51:01 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=255,c=3,t=11,pt=0,l=4,sg=0:A SP
    17-02-28 21:51:01 DEBUG (Thread-13) [homeassistant.components.mysensors] Update sensor_update: node 24
    17-02-28 21:51:01 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=255,c=3,t=12,pt=0,l=3,sg=0:1.0
    17-02-28 21:51:01 DEBUG (Thread-13) [homeassistant.components.mysensors] Update sensor_update: node 24
    17-02-28 21:51:01 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=10,c=0,t=3,pt=0,l=0,sg=0:
    17-02-28 21:51:01 DEBUG (Thread-13) [homeassistant.components.mysensors] Update sensor_update: node 24
    17-02-28 21:51:01 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=255,c=3,t=0,pt=1,l=1,sg=0:100
    17-02-28 21:51:01 DEBUG (Thread-13) [homeassistant.components.mysensors] Update sensor_update: node 24
    17-02-28 21:51:01 DEBUG (Thread-13) [mysensors.mysensors] n:0 c:0 t:3 s:9 p:read: 24-24-0 s=10,c=2,t=2,pt=0,l=0,sg=0:
    
    I miss the add entity line, like for the other sensor nodes:
    
     Adding new devices: <Entity S SP 6 1: None>
    
    

    Config as usual:

    gateways:

    • device: '/dev/ttyUSB0'
      persistence_file: '/root/.homeassistant/mysensors/mysensors.json'
      baud_rate: 115200
      debug: true
      persistence: true
      version: '1.5'
      #optimistic: 'true'

    Gateway sketch should be 1.6, i want to update soon to 2.1 but as i have plenty of nodes and no OTA intentionally running it will take a while and especially because of a lack of time.

    Thats the node sketch:

    /**
     * MySensors RoomSensor with piezo alarm for audio feedback, like weather alarm when there's a huricane alarm.
     * The alarm is just a standard alarm in your Home Automation controller. 
     *
     * Version      1.0
     * Created      25-10-2015
     * release date 25-10-2015
     * Author       by Theo
     *
     *
     * Parts used:
     * - Arduino ProMini 3.3V
     * - 3V Piezo buzzer (is actually surprisingly loud for such a tiny PIEZO), You can greatly improve on the volume by wrapping a paper tube around the piezo
     */
    
    /**
     * Include all needed libraries.
     */
    #include <MySensor.h>   // The core of this Sketch. Enables communication from the radio to the MySensors gateway
    #include <SPI.h>        // Needed by the MySensors Radio, it communicates with the Arduino by SPI
    
    /**
      * Define the child ID's of the supported sensors.
      */
    #define SIRENE_CHILD_ID 10 // The child ID of the sirene as presented to the Domotica Controller
    
    /**
      * Declare constants for the PIN's we use in this sketch.
      */
    #define PIEZO_PIN 8       // The arduino pin to which the piezo buzzer is attached
    
    /**
     * Declare other constants used by the sketch
     */
    #define PIEZO_ON_DURATION  600    // The period the piezo makes a sound when the alarm is on and snooze mode is off.
    #define PIEZO_OFF_DURATION 500    // The silent period when the alarm is on and snooze mode is off
    
    
    /**
      * Section for MySensors specific variables and declarations.
      */
    #define SN "A SP"  // The name of the sketch as being presented to the MySensors gateway. B.t.w. current Domoticz version ignores it
    #define SV "1.0"     // The version of the sketch as being presented to the MySensors gateway. B.t.w. current Domoticz version ignores it
    MySensor gw;         // You'll need this object for communication from an to the Gateway. Contains all logic inl the Radio communication
    MyMessage sireneMsg( SIRENE_CHILD_ID, V_STATUS ); // trying to figure out what type type to use to make it known as a siren..???
                                                     // Message for sending the alarm on/off state to the MySensors gateway
    /**
     * Declare variables used by the Sketch
     */
    boolean alarmOn = false;             // alarm state indicator. False meaning off, true meaning we're in business.
    unsigned long nextPiezoEvent = 0;    // The next timestamp the piezo sound has to be turned on or off. We'll use the arduino's internal clock for this
    boolean piezoOn = false;             // indicator whether the sound is on or off during the alarm
    
    /**
     * Initialize everything we need before we can start the Sketch:
     * - setup MySensors communication
     * - present the child id's to the MySensors gateway
     * - declare pin modes and initialize the debouncer
     */
    void setup() {
    #ifdef DEBUG // turn on the Serial monitor if #define DEBUG is uncommented in MyConfig.h (MySensors library)
      Serial.begin( 115200 ); // only debug to serial monitor during development
    #endif
      // setup a connection to the MySensor's gateway and request an ID if we do not have one yet.
      gw.begin(incomingMessage);
      gw.sendSketchInfo(SN, SV);
    #ifdef DEBUG // Print some debug info
      Serial.println( "Radio is connect right." );
    #endif
    
      // present the children to the gateway
      gw.present(SIRENE_CHILD_ID, S_LIGHT); // S_LIGHT is not correct
      gw.sendBatteryLevel(100); // Let the Domotica controller no that we're a 100% powered sensor.
      gw.request(SIRENE_CHILD_ID, V_STATUS); // request current state. An alarm might be active.
       
      // setup the pin's used by this Sketch
      pinMode( PIEZO_PIN, OUTPUT);
    }
    
    /**
     * Piezo event has been triggered, depending on the current sirence state we need to make some nois or turn it off.
     * We'll determine the timestamp of the next piezo event as well
     */
    void handlePiezoEvent() {
      unsigned long curMS = millis();
      if ( piezoOn == true ) { // Piezo is currently on, we need to switch it of
        digitalWrite( PIEZO_PIN, 0 );
        nextPiezoEvent = curMS + PIEZO_OFF_DURATION;
        piezoOn = false;
      }
      else { // Piezo is off, time to make some noise ;-)
        analogWrite( PIEZO_PIN, 255 );
        nextPiezoEvent = curMS + PIEZO_ON_DURATION;
        piezoOn = true;
      }
    }
    
    /** 
     * Main loop of the sketch.
     */
    void loop() {
      if ( alarmOn == true ) { // Alarm handling code
        if ( millis() >= nextPiezoEvent ) { // check if the piezo has to be turned on or off.
          handlePiezoEvent();
        }
      }
      gw.wait( 5 ); // Just wait 50s not really necessary but give the arduino some rest. It's working really hard for us and we should be grateful for that.
                    // besides it calls gw.process() which we need for incomming messages.
    }
    
    /**
     * Call back handler, for handling messages send by the MySensors gateway
     */
    void incomingMessage(const MyMessage &message) {
      if ( message.type == V_STATUS ) { // Check if the Gateway has reported an Alarm_type message (should be an V_ALARM as off the next Domoticz release.
        if ( message.sensor == SIRENE_CHILD_ID ) { // Is the message for our alarm child?
          alarmOn = message.getBool(); // get alarm value sent by Domotica controller
          #ifdef DEBUG // print some debug info
            Serial.println( "Sirene state changed to " + (String)alarmOn );
          #endif
          if ( alarmOn == false ) { // turn off the alarm as asked by the Domotica controller
            analogWrite( PIEZO_PIN, 0 ); // turn off the noise
          }
          else { // Schedule the next piezo event 
            nextPiezoEvent = 0;
            piezoOn = false;
          }
        }
      }
    }
    

    I changed already a couple Values in the sketch for and backward, but it didn't change anything.

    thank you for your help.

    Home Assistant

  • Piezo Node is not visible in HASS latest Version
    DuckY1987D DuckY1987

    Hi there,

    i have problems to get my piezo node working, it's my first "active node" which should get triggered on special events like intruder detected "arm_home"

    I used the Example Sketch "Alarm" i changed as well already the V_Status to V_Triggered as i saw it is deprecated in HASS.

    Mysensor version is still 1.6.

    Thanks for help in advance.

    /**

    • MySensors RoomSensor with piezo alarm for audio feedback, like weather alarm when there's a huricane alarm.
    • The alarm is just a standard alarm in your Home Automation controller.
    • Version 1.0
    • Created 25-10-2015
    • release date 25-10-2015
    • Author by Theo
    • Parts used:
      • Arduino ProMini 3.3V
      • 3V Piezo buzzer (is actually surprisingly loud for such a tiny PIEZO), You can greatly improve on the volume by wrapping a paper tube around the piezo
        */

    /**

    • Include all needed libraries.
      */
      #include <MySensor.h> // The core of this Sketch. Enables communication from the radio to the MySensors gateway
      #include <SPI.h> // Needed by the MySensors Radio, it communicates with the Arduino by SPI

    /**

    • Define the child ID's of the supported sensors.
      */
      #define SIRENE_CHILD_ID 10 // The child ID of the sirene as presented to the Domotica Controller

    /**

    • Declare constants for the PIN's we use in this sketch.
      */
      #define PIEZO_PIN 13 // The arduino pin to which the piezo buzzer is attached

    /**

    • Declare other constants used by the sketch
      */
      #define PIEZO_ON_DURATION 600 // The period the piezo makes a sound when the alarm is on and snooze mode is off.
      #define PIEZO_OFF_DURATION 500 // The silent period when the alarm is on and snooze mode is off

    /**

    • Section for MySensors specific variables and declarations.
      /
      #define SN "A SP" // The name of the sketch as being presented to the MySensors gateway. B.t.w. current Domoticz version ignores it
      #define SV "1.0" // The version of the sketch as being presented to the MySensors gateway. B.t.w. current Domoticz version ignores it
      MySensor gw; // You'll need this object for communication from an to the Gateway. Contains all logic inl the Radio communication
      MyMessage sireneMsg( SIRENE_CHILD_ID, V_STATUS ); // trying to figure out what type type to use to make it known as a siren..???
      // Message for sending the alarm on/off state to the MySensors gateway
      /
      *
    • Declare variables used by the Sketch
      */
      boolean alarmOn = false; // alarm state indicator. False meaning off, true meaning we're in business.
      unsigned long nextPiezoEvent = 0; // The next timestamp the piezo sound has to be turned on or off. We'll use the arduino's internal clock for this
      boolean piezoOn = false; // indicator whether the sound is on or off during the alarm

    /**

    • Initialize everything we need before we can start the Sketch:
      • setup MySensors communication
      • present the child id's to the MySensors gateway
      • declare pin modes and initialize the debouncer
        */
        void setup() {
        #ifdef DEBUG // turn on the Serial monitor if #define DEBUG is uncommented in MyConfig.h (MySensors library)
        Serial.begin( 115200 ); // only debug to serial monitor during development
        #endif
        // setup a connection to the MySensor's gateway and request an ID if we do not have one yet.
        gw.begin(incomingMessage);
        gw.sendSketchInfo(SN, SV);
        #ifdef DEBUG // Print some debug info
        Serial.println( "Radio is connect right." );
        #endif

    // present the children to the gateway
    gw.present( SIRENE_CHILD_ID, S_LIGHT, "Sirene" ); // S_LIGHT is not correct
    gw.sendBatteryLevel( 100, false ); // Let the Domotica controller no that we're a 100% powered sensor.
    gw.request( SIRENE_CHILD_ID , V_STATUS ); // request current state. An alarm might be active.

    // setup the pin's used by this Sketch
    pinMode( PIEZO_PIN, OUTPUT);
    }

    /**

    • Piezo event has been triggered, depending on the current sirence state we need to make some nois or turn it off.
    • We'll determine the timestamp of the next piezo event as well
      */
      void handlePiezoEvent() {
      unsigned long curMS = millis();
      if ( piezoOn == true ) { // Piezo is currently on, we need to switch it of
      digitalWrite( PIEZO_PIN, 0 );
      nextPiezoEvent = curMS + PIEZO_OFF_DURATION;
      piezoOn = false;
      }
      else { // Piezo is off, time to make some noise ;-)
      analogWrite( PIEZO_PIN, 255 );
      nextPiezoEvent = curMS + PIEZO_ON_DURATION;
      piezoOn = true;
      }
      }

    /**

    • Main loop of the sketch.
      */
      void loop() {
      if ( alarmOn == true ) { // Alarm handling code
      if ( millis() >= nextPiezoEvent ) { // check if the piezo has to be turned on or off.
      handlePiezoEvent();
      }
      }
      gw.wait( 5 ); // Just wait 50s not really necessary but give the arduino some rest. It's working really hard for us and we should be grateful for that.
      // besides it calls gw.process() which we need for incomming messages.
      }

    /**

    • Call back handler, for handling messages send by the MySensors gateway
      */
      void incomingMessage(const MyMessage &message) {
      if ( message.type == V_STATUS ) { // Check if the Gateway has reported an Alarm_type message (should be an V_ALARM as off the next Domoticz release.
      if ( message.sensor == SIRENE_CHILD_ID ) { // Is the message for our alarm child?
      alarmOn = message.getBool(); // get alarm value sent by Domotica controller
      #ifdef DEBUG // print some debug info
      Serial.println( "Sirene state changed to " + (String)alarmOn );
      #endif
      if ( alarmOn == false ) { // turn off the alarm as asked by the Domotica controller
      analogWrite( PIEZO_PIN, 0 ); // turn off the noise
      }
      else { // Schedule the next piezo event
      nextPiezoEvent = 0;
      piezoOn = false;
      }
      }
      }
      }
    Home Assistant
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular