home-assistant.io/source/_integrations/device_tracker.mysensors.markdown
Franck Nijhof 533bb3866f
HTTPS-everywhere (update links in our website) (#10932)
* HTTPS-everywhere (update links in our website)

* HTTPS-everywhere (round 2)

* HTTPS-everywhere (round 3)
2019-10-21 23:11:12 +02:00

2.3 KiB

title description logo ha_category ha_release ha_iot_class
MySensors Device Tracker Instructions on how to use MySensors to track devices in Home Assistant. mysensors.png
DIY
Presence Detection
0.38 Local Push

Integrates MySensors device trackers into Home Assistant. See the main component for configuration instructions.

The following sensor types are supported:

MySensors version 2.0 and higher
S_TYPE V_TYPE
S_GPS V_POSITION

For more information, visit the serial api of MySensors.

MySensors 2.x example sketch

/**
 * Documentation: https://www.mysensors.org
 * Support Forum: https://forum.mysensors.org
 *
 * https://www.mysensors.org/build/gps
 */

// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69

#include <MySensors.h>

#define SN "GPS Sensor"
#define SV "1.0"

// GPS position send interval (in milliseconds)
#define GPS_SEND_INTERVAL 30000
// The child id used for the gps sensor
#define CHILD_ID_GPS 1

MyMessage msg(CHILD_ID_GPS, V_POSITION);

// Last time GPS position was sent to controller
unsigned long lastGPSSent = -31000;

// Some buffers
char latBuf[11];
char lngBuf[11];
char altBuf[6];
char payload[30];

// Dummy values. Implementation of real GPS device is not done.
float gpsLocationLat = 40.741895;
float gpsLocationLng = -73.989308;
float gpsAltitudeMeters = 12.0;

void setup() {

}

void presentation() {
  sendSketchInfo(SN, SV);
  present(CHILD_ID_GPS, S_GPS);
}

void loop()
{
  unsigned long currentTime = millis();

  // Evaluate if it is time to send a new position
  bool timeToSend = currentTime - lastGPSSent > GPS_SEND_INTERVAL;

  if (timeToSend) {
    // Send current gps location
    // Build position and altitude string to send
    dtostrf(gpsLocationLat, 1, 6, latBuf);
    dtostrf(gpsLocationLng, 1, 6, lngBuf);
    dtostrf(gpsAltitudeMeters, 1, 0, altBuf);
    sprintf(payload, "%s,%s,%s", latBuf, lngBuf, altBuf);

    Serial.print(F("Position: "));
    Serial.println(payload);

    send(msg.set(payload));
    lastGPSSent = currentTime;
  }
}