スキル一覧に戻る
Cantara

similarity-sensor

by Cantara

1🍴 0📅 2026年1月24日
GitHubで見るManusで実行

SKILL.md


name: similarity-sensor description: Use when working with sensor similarity calculations - comparing temperature/accelerometer/humidity sensor MPNs, understanding sensor families, equivalent parts, or sensor-specific similarity logic.

Sensor Similarity Calculator Skill

Guidance for working with SensorSimilarityCalculator in the lib-electronic-components library.


For metadata-driven similarity architecture, see /similarity-metadata:

  • SpecImportance levels (CRITICAL, HIGH, MEDIUM, LOW, OPTIONAL)
  • ToleranceRule types (exactMatch, percentageTolerance, minimumRequired, etc.)
  • SimilarityProfile contexts (DESIGN_PHASE, REPLACEMENT, COST_OPTIMIZATION, etc.)
  • Calculator integration patterns and gotchas

Overview

The SensorSimilarityCalculator compares sensors based on:

  • Sensor family - Temperature, accelerometer, humidity, pressure, etc.
  • Equivalent parts - Known interchangeable sensors
  • Package variants - Same sensor in different packages

Applicable Types

ComponentType.SENSOR
ComponentType.TEMPERATURE_SENSOR
ComponentType.ACCELEROMETER
// Any type starting with "SENSOR_", "TEMPERATURE_SENSOR_", "ACCELEROMETER_"

Returns false for null type.

Similarity Thresholds

HIGH_SIMILARITY = 0.9;   // Same sensor, compatible packages
MEDIUM_SIMILARITY = 0.7; // Same sensor, incompatible packages
LOW_SIMILARITY = 0.3;    // Different sensor families

Sensor Families

FamilyDetection Patterns
TemperatureLM35*, DS18*, TMP*, MAX318*
AccelerometerADXL*, MMA*, LIS2*, LIS3*, BMI*, ICM*
GyroscopeL3GD*, ITG*, MPU*
HumiditySHT*, HIH*, AM*, HDC*
PressureBMP*, BME*, MS56*, LPS*
CombinedBME* (temp+humidity+pressure), MPU* (accel+gyro)

Different sensor families always return LOW_SIMILARITY (0.3)

Temperature Sensor Equivalents

SensorEquivalents
DS18B20DS18B20+, DS18B20Z, DS18B20/T
DS18B20MAX31820 (compatible)
LM35LM35D, LM35C, LM35A (grade variants)
TMP36TMP36GT9Z, TMP36FS
calculator.calculateSimilarity("DS18B20+", "DS18B20Z", registry);
// Returns 0.9 (same sensor, package variants)

Accelerometer Rules

Accelerometers are compared strictly by model:

// Same accelerometer
calculator.calculateSimilarity("ADXL345BCCZ", "ADXL345BCCZ-RL", registry);
// Returns 0.9 (same part, reel variant)

// Different models
calculator.calculateSimilarity("ADXL345", "ADXL346", registry);
// Returns 0.3 (different accelerometer)

Humidity Sensor Equivalents

FamilyCompatible Parts
SHT3xSHT30, SHT31, SHT35 (within accuracy grades)
HIH613xHIH6130, HIH6131
HDCx080HDC1080, HDC2080

Pressure Sensor Equivalents

FamilyCompatible Parts
BMx280BMP280, BME280 (pressure compatible)
MS56xxMS5611, MS5607

Package Handling

Package compatibility is considered:

  • TO-92, TO-226 - Through-hole, compatible
  • SOT-23, TO-236 - SMD, compatible
  • LCC, LGA, LFCSP, QFN, BCC - MEMS packages, compatible within group

Test Examples

// Same sensor
calculator.calculateSimilarity("DS18B20", "DS18B20", registry);
// Returns 0.9

// Temperature variants
calculator.calculateSimilarity("LM35D", "LM35C", registry);
// Returns >= 0.7

// Cross-family (different families)
calculator.calculateSimilarity("DS18B20", "ADXL345", registry);
// Returns 0.3

// Same accelerometer, reel variant
calculator.calculateSimilarity("ADXL345BCCZ", "ADXL345BCCZ-RL", registry);
// Returns 0.9

Metadata-Driven Implementation (January 2026)

Status: ✅ Converted (PR #120)

The SensorSimilarityCalculator now uses a metadata-driven approach with spec-based comparison.

Specs Compared

SpecImportanceTolerance RuleDescription
sensorTypeCRITICALexactMatchTEMPERATURE, ACCELEROMETER, GYROSCOPE, HUMIDITY, PRESSURE, COMBINED
familyHIGHexactMatchLM35, DS18, ADXL, MMA, SHT, BME, BMP, etc.
interfaceMEDIUMexactMatchI2C, SPI, 1-Wire, Analog
packageLOWexactMatchTO-92, SOIC, LGA, QFN, BCC, etc.

Implementation Pattern

// Short-circuit check for CRITICAL incompatibility
if (!sensorType1.isEmpty() && !sensorType2.isEmpty() && !sensorType1.equals(sensorType2)) {
    return LOW_SIMILARITY;
}

// Extract sensor type from MPN
private String extractSensorType(String mpn) {
    SensorFamily family = determineSensorFamily(mpn);
    return family.name(); // TEMPERATURE, ACCELEROMETER, etc.
}

// Extract sensor family with specific model number
private String extractSensorFamily(String mpn) {
    if (mpn.matches("^ADXL[0-9]+.*")) return "ADXL345", "ADXL362", etc.;
    if (mpn.matches("^DS18.*")) return "DS18B20", "DS18";
    // ... returns specific sensor model
}

// Equivalent sensor boost
if (areEquivalentSensorsByFamily(mpn1, mpn2, family1, family2)) {
    similarity = Math.max(similarity, HIGH_SIMILARITY);
}

Behavior Changes

ComparisonLegacy ResultMetadata ResultNotes
DS18B20 vs DS18B200.91.0Identical sensor
DS18B20+ vs DS18B20Z0.91.0Equivalent variants boost
ADXL345 vs ADXL3450.91.0Identical
ADXL345 vs ADXL3460.30.703Same type + interface = MEDIUM
ADXL345BCCZ vs ADXL345BCCZ-RL0.90.976Same sensor, packaging variant
LM35 vs ADXL3450.30.3Short-circuit on sensor type

Why more accurate: Metadata approach recognizes that ADXL345 vs ADXL346 share sensor type (ACCELEROMETER) and interface (SPI/I2C), giving them MEDIUM similarity instead of LOW. This is more accurate than treating them as completely different sensors.

Equivalent Sensor Groups

The calculator maintains equivalent sensor families:

  • DS18B20 variants: DS18B20, DS18B20+, DS18B20Z all equivalent
  • LM35 grades: LM35D, LM35C, LM35A all equivalent
  • TMP36 variants: TMP36, TMP36GT9Z all equivalent
  • MAX31820: Compatible with DS18B20
  • SHT3x series: SHT30/31/35 within accuracy grades
  • BMP/BME pressure: BMP280 ≈ BME280 for pressure

Learnings & Quirks

Temperature Sensors

  • DS18B20: Digital, 1-Wire interface, ±0.5°C accuracy
  • LM35: Analog output, 10mV/°C
  • TMP36: Analog output, 10mV/°C, -40 to +125°C
  • MAX31820: Drop-in replacement for DS18B20

Accelerometer Grades

  • ADXL345B vs ADXL345: B is different interface option
  • Different grades (BCCZ, BCCZ-RL) are same sensor

Humidity Sensor Accuracy

  • SHT30: ±3% RH typical
  • SHT31: ±2% RH typical
  • SHT35: ±1.5% RH typical
  • Higher number = better accuracy

Sensors Not Fully Supported

  • HDC sensors may not be recognized by isSensor() method
  • Some newer sensors may need pattern updates

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です