--- layout: page title: "MySensors Device Tracker" description: "Instructions on how to use MySensors to track devices in Home Assistant." date: 2017-02-06 15:00 +0100 sidebar: true comments: false sharing: true footer: true logo: mysensors.png ha_category: DIY ha_release: "0.38" ha_iot_class: "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. ### {% linkable_title MySensors 2.x example sketch %} ```cpp /** * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * http://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 #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; } } ``` [main component]: /components/mysensors/ [serial api]: http://www.mysensors.org/download