Compare commits

..

17 commits

Author SHA1 Message Date
Tyeth Gundry
dc7f57cb16
Merge pull request #276 from adafruit/drop-gps-example-fields
fix(gps): remove gps example sub-properties
2025-08-18 17:33:48 +01:00
Tyeth Gundry
92227a2405
fix(gps): remove gps example sub-properties 2025-08-18 16:34:02 +01:00
Tyeth Gundry
8bcce192da
Merge pull request #273 from adafruit/ina228
Add INA228 (unpublished)
2025-08-13 19:05:26 +01:00
tyeth
624d42bd75 Add example usage of GPS related fields 2025-08-07 17:36:29 +01:00
brentru
ef8708649b us100- typo 2025-08-05 16:15:13 -04:00
brentru
e52fd562f3 UART- TMC22x not TM 22x 2025-08-05 15:21:59 -04:00
brentru
b6b3e221b6 Resize 2025-08-05 14:03:21 -04:00
brentru
54b79bed86 Add GPS tag to SFE GPS 2025-08-01 09:52:31 -04:00
brentru
a8e3f274ad Add GPS modules 2025-08-01 09:46:37 -04:00
brentru
92df3590c4 Add Ultimate GPS 2025-07-31 17:03:45 -04:00
brentru
449422560d Conform to pinX naming scheme 2025-07-31 16:16:13 -04:00
brentru
7b9bf067d3 Add US-100 2025-07-31 16:05:53 -04:00
brentru
c0877842f4 Update PM25 1006 2025-07-31 14:29:48 -04:00
brentru
00e17a468a Add sensor types for pms5003 2025-07-31 14:14:27 -04:00
brentru
02bb47a524 Remove GPS I2C 2025-07-31 13:24:16 -04:00
brentru
952296010f Update existing UART components to match new schema 2025-07-31 12:31:28 -04:00
brentru
0a45ee8372 Add GPS, Rewrite UART to match api-v2 2025-07-31 12:20:53 -04:00
22 changed files with 305 additions and 128 deletions

View file

@ -1,16 +0,0 @@
{
"displayName": "AS5600 Magnetic Angle",
"vendor": "ams",
"productURL": "https://www.adafruit.com/product/6357",
"documentationURL": "https://learn.adafruit.com/adafruit-as5600-magnetic-angle-sensor",
"description": "Magnetic angle (0-359) I2C sensor with 0.1° precision and 0.4° accuracy",
"published": true,
"i2cAddresses": [ "0x36" ],
"subcomponents": [
{
"displayName": "Angle",
"defaultPeriod": 5,
"sensorType": "raw"
}
]
}

View file

@ -0,0 +1,9 @@
{
"displayName": "Mini GPS PA1010D",
"vendor": "Adafruit",
"productURL": "https://www.adafruit.com/product/4415",
"documentationURL": "https://learn.adafruit.com/adafruit-mini-gps-pa1010d-module",
"published": true,
"i2cAddresses": [ "0x10" ],
"isGps": true
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View file

@ -0,0 +1,13 @@
{
"displayName": "MAX-M10S GPS/GNSS",
"vendor": "SparkFun",
"productURL": "https://www.sparkfun.com/sparkfun-gnss-receiver-breakout-max-m10s-qwiic.html",
"documentationURL": "https://learn.sparkfun.com/tutorials/gnss-receiver-breakout---max-m10s-qwiic-hookup-guide",
"description": "High-precision GNSS receiver with multi-constellation support and I2C interface",
"published": true,
"i2cAddresses": [ "0x42" ],
"isGps": true,
"gps": {
"period": 1000
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -4,7 +4,7 @@
"productURL": "https://www.adafruit.com/product/5832",
"documentationURL": "https://learn.adafruit.com/adafruit-ina228-i2c-power-monitor",
"description": "85V, 20-bit, ultra-high-precision power monitor (max 10A, 0.05% gain error)",
"published": true,
"published": false,
"i2cAddresses": [ "0x40", "0x41", "0x44", "0x45" ],
"subcomponents": [ "voltage", "current" ]
}

View file

@ -4,7 +4,7 @@
"productURL": "https://www.adafruit.com/product/6340",
"documentationURL": "https://learn.adafruit.com/adafruit-ina237-dc-current-voltage-power-monitor",
"description": "85V, 16-bit, good-precision power monitor (up to 10A, 0.3% gain error)",
"published": true,
"published": false,
"i2cAddresses": [ "0x40", "0x41", "0x44", "0x45" ],
"subcomponents": [ "voltage", "current" ]
}

View file

@ -4,7 +4,7 @@
"productURL": "https://www.adafruit.com/product/6349",
"documentationURL": "https://learn.adafruit.com/adafruit-ina238-dc-current-voltage-power-monitor",
"description": "85V, 16-bit, high-precision power monitor (up to 10A, 0.1% gain error)",
"published": true,
"published": false,
"i2cAddresses": [ "0x40", "0x41", "0x44", "0x45" ],
"subcomponents": [ "voltage", "current" ]
}

View file

@ -3,7 +3,7 @@
"vendor": "Texas Instruments",
"productURL": "https://www.adafruit.com/product/4226",
"documentationURL": "https://learn.adafruit.com/adafruit-ina260-current-voltage-power-sensor-breakout",
"published": true,
"published": false,
"i2cAddresses": [ "0x40", "0x41", "0x44", "0x45" ],
"subcomponents": [ "voltage", "current" ]
}

View file

@ -1,27 +0,0 @@
{
"displayName": "MLX90632-B (Standard)",
"description": "Non-contact far-infrared temperature sensor (standard range + accuracy)",
"vendor": "Melexis",
"productURL": "https://www.digikey.com/en/products/detail/melexis-technologies-nv/MLX90632SLD-BCB-000-RE/8259656",
"documentationURL": "https://cdn-shop.adafruit.com/product-files/6403/MLX90632-Datasheet-Melexis.PDF",
"published": true,
"i2cAddresses": ["0x3A", "0x3B"],
"subcomponents": [
{
"displayName": "Ambient Temperature (°C)",
"sensorType": "ambient-temp"
},
{
"displayName": "Ambient Temperature (°F)",
"sensorType": "ambient-temp-fahrenheit"
},
{
"displayName": "Measured Object Temp (°C)",
"sensorType": "object-temp"
},
{
"displayName": "Measured Object Temp (°F)",
"sensorType": "object-temp-fahrenheit"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View file

@ -1,27 +0,0 @@
{
"displayName": "MLX90632 (Extended Mode)",
"description": "Non-contact far-infrared temperature sensor (extended range + lower accuracy)",
"vendor": "Adafruit",
"productURL": "https://www.adafruit.com/product/6403",
"documentationURL": "https://cdn-shop.adafruit.com/product-files/6403/MLX90632-Datasheet-Melexis.PDF",
"published": true,
"i2cAddresses": ["0x3A", "0x3B"],
"subcomponents": [
{
"displayName": "Ambient Temperature (°C)",
"sensorType": "ambient-temp"
},
{
"displayName": "Ambient Temperature (°F)",
"sensorType": "ambient-temp-fahrenheit"
},
{
"displayName": "Measured Object Temp (°C)",
"sensorType": "object-temp"
},
{
"displayName": "Measured Object Temp (°F)",
"sensorType": "object-temp-fahrenheit"
}
]
}

View file

@ -1,27 +0,0 @@
{
"displayName": "MLX90632",
"description": "Non-contact far-infrared temperature sensor (medical range + higher accuracy).",
"vendor": "Adafruit",
"productURL": "https://www.adafruit.com/product/6403",
"documentationURL": "https://cdn-shop.adafruit.com/product-files/6403/MLX90632-Datasheet-Melexis.PDF",
"published": true,
"i2cAddresses": ["0x3A", "0x3B"],
"subcomponents": [
{
"displayName": "Ambient Temperature (°C)",
"sensorType": "ambient-temp"
},
{
"displayName": "Ambient Temperature (°F)",
"sensorType": "ambient-temp-fahrenheit"
},
{
"displayName": "Measured Object Temp (°C)",
"sensorType": "object-temp"
},
{
"displayName": "Measured Object Temp (°F)",
"sensorType": "object-temp-fahrenheit"
}
]
}

View file

@ -29,13 +29,13 @@
"defaultPeriod": {
"description": "What period to the form should default to for this sensor.",
"type": "number",
"minimum": 1,
"minimum": 30,
"maximum": 86400
}
}
}
},
"required": [ "displayName", "vendor", "i2cAddresses", "subcomponents" ],
"required": [ "displayName", "vendor", "i2cAddresses"],
"additionalProperties": false,
"properties": {
"displayName": {
@ -81,6 +81,41 @@
"description": "List of sensors on this I2C component.",
"type": "array",
"items": { "$ref": "#/$defs/subcomponent" }
},
"isGps": {
"description": "If true, this component is a GPS module.",
"type": "boolean"
},
"gps": {
"type": "object",
"description": "Configuration for GPS devices.",
"required": [
"period"
],
"properties": {
"commands_pmtks": {
"type": "array",
"description": "List of PMTK commands (MediaTek) in string format",
"items": {
"type": "string"
}
},
"commands_ubxes": {
"type": "array",
"description": "List of UBX commands (U-Blox) in bytes format",
"items": {
"type": "string",
"contentEncoding": "base64"
}
},
"period": {
"type": "integer",
"description": "Desired period to poll the GPS module, in milliseconds",
"minimum": 0,
"maximum": 65535
}
},
"additionalProperties": false
}
}
}

View file

@ -1,10 +1,15 @@
{
"displayName": "VINDRIKTNING (PM1006)",
"vendor": "IKEA",
"deviceId": "pm1006",
"productURL": "https://www.ikea.com/us/en/p/vindriktning-air-quality-sensor-60515911/",
"documentationURL": "https://learn.adafruit.com/ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io",
"published": true,
"subcomponents": ["pm25-env"],
"baudRate": 9600,
"inverted": false
"deviceType": "pm25aqi",
"pm25aqi": {
"is_pm1006": true,
"period": 30000,
"sensor_types": ["pm25-env"]
}
}

View file

@ -1,10 +1,14 @@
{
"displayName": "pms5003",
"vendor": "PLANTOWER",
"deviceId": "pms5003",
"productURL": "https://www.adafruit.com/product/3686",
"documentationURL": "https://learn.adafruit.com/pm25-air-quality-sensor",
"published": true,
"subcomponents": ["pm10-std", "pm25-std", "pm100-std", "pm10-env", "pm25-env", "pm100-env"],
"baudRate": 9600,
"inverted": false
"deviceType": "pm25aqi",
"pm25aqi": {
"period": 30000,
"sensor_types": ["pm10-std", "pm25-std", "pm100-std", "pm10-env", "pm25-env", "pm100-env"]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View file

@ -4,9 +4,15 @@
"type": "object",
"$defs": {
"subcomponent": {
"type": ["string", "object"],
"type": [
"string",
"object"
],
"pattern": "^(unspecified|accelerometer|magnetic-field|orientation|gyroscope|light|pressure|proximity|gravity|acceleration|rotation|humidity|ambient-temp|object-temp|voltage|current|color|raw|pm10-std|pm25-std|pm100-std|pm10-env|pm25-env|pm100-env|co2|gas-resistance|altitude|lux|eco2|unitless-percent|ambient-temp-fahrenheit|object-temp-fahrenheit|voc-index|nox-index|tvoc)$",
"required": [ "displayName", "sensorType" ],
"required": [
"displayName",
"sensorType"
],
"additionalProperties": false,
"properties": {
"displayName": {
@ -22,20 +28,20 @@
"maxLength": 24
},
"sensorType": {
"description": "One of the supported I2C sensor type strings (found in README).",
"description": "One of the supported sensor-type strings (found in README).",
"type": "string",
"pattern": "^(unspecified|accelerometer|magnetic-field|orientation|gyroscope|light|pressure|proximity|gravity|acceleration|rotation|humidity|ambient-temp|object-temp|voltage|current|color|raw|pm10-std|pm25-std|pm100-std|pm10-env|pm25-env|pm100-env|co2|gas-resistance|altitude|lux|eco2|unitless-percent|ambient-temp-fahrenheit|object-temp-fahrenheit|voc-index|nox-index|tvoc)$"
},
"defaultPeriod": {
"description": "What period to the form should default to for this sensor.",
"type": "number",
"minimum": 30,
"maximum": 86400
}
}
}
},
"required": [ "displayName", "vendor", "subcomponents", "baudRate"],
"required": [
"displayName",
"vendor",
"deviceId",
"baudRate",
"deviceType"
],
"additionalProperties": false,
"properties": {
"displayName": {
@ -70,10 +76,23 @@
"minLength": 3,
"maxLength": 24
},
"subcomponents": {
"description": "List of sensor subcomponents comprising the primary UART component.",
"type": "array",
"items": { "$ref": "#/$defs/subcomponent" }
"pinTx": {
"description": "The desired UART TX pin",
"type": "string",
"minLength": 1,
"maxLength": 16
},
"pinRx": {
"description": "The desired UART RX pin",
"type": "string",
"minLength": 1,
"maxLength": 16
},
"portNumber": {
"description": "The desired UART bus port number",
"type": "number",
"minimum": 0,
"maximum": 3
},
"baudRate": {
"description": "The desired UART bus baud rate, in bps.",
@ -81,9 +100,166 @@
"minimum": 1200,
"maximum": 256000
},
"inverted": {
"description": "When True, this component will invert TX/RX signals on the UART bus.",
"format": {
"description": "The data, parity, and stop bits configuration for the serial port. Defaults to 8N1 (8 data bits, no parity, 1 stop bit).",
"type": "string",
"enum": [
"unspecified",
"8n1",
"5n1",
"6n1",
"7n1",
"5n2",
"6n2",
"7n2",
"8n2",
"5e1",
"6e1",
"7e1",
"8e1",
"5e2",
"6e2",
"7e2",
"8e2",
"5o1",
"6o1",
"7o1",
"8o1",
"5o2",
"6o2",
"7o2",
"8o2"
],
"default": "8n1"
},
"timeout": {
"description": "Maximum milliseconds to wait for serial data. Defaults to 1000 ms.",
"type": "number",
"minimum": 0,
"maximum": 65535
},
"use_sw_serial": {
"description": "If True, uses software serial instead of hardware serial. Defaults to False.",
"type": "boolean"
},
"invert_sw_serial": {
"description": "If True, inverts the UART signal on RX and TX pins. Defaults to False.",
"type": "boolean"
},
"deviceId": {
"description": "The unique identifier string for the UART device.",
"type": "string",
"minLength": 3,
"maxLength": 30
},
"deviceType": {
"description": "The data, parity, and stop bits configuration for the serial port. Defaults to 8N1 (8 data bits, no parity, 1 stop bit).",
"type": "string",
"enum": [
"unspecified",
"generic_input",
"generic_output",
"gps",
"pm25aqi",
"tmc22xx"
],
"default": "unspecified"
},
"pm25aqi": {
"type": "object",
"description": "Configuration for PM2.5 AQI sensors",
"required": [
"period",
"sensor_types"
],
"properties": {
"is_pm1006": {
"type": "boolean",
"description": "True if the device is a PM1006 AQ sensor",
"default": false
},
"period": {
"type": "integer",
"description": "The period to poll the device, in milliseconds",
"minimum": 0,
"maximum": 65535
},
"sensor_types": {
"type": "array",
"description": "SI Types for each sensor on the I2c device",
"items": {
"$ref": "#/$defs/subcomponent"
}
}
},
"additionalProperties": false
},
"generic_input": {
"type": "object",
"description": "Configuration for generic UART input devices.",
"required": [
"period",
"sensor_types"
],
"properties": {
"line_ending": {
"description": "The line ending format for incoming data.",
"type": "string",
"enum": [
"unspecified",
"lf",
"crlf",
"timeout_100ms",
"timeout_1000ms"
],
"default": "unspecified"
},
"period": {
"type": "integer",
"description": "The period to poll the device, in milliseconds",
"minimum": 0,
"maximum": 65535
},
"sensor_types": {
"type": "array",
"description": "SI Types for each sensor on the I2c device",
"items": {
"$ref": "#/$defs/subcomponent"
}
}
},
"additionalProperties": false
},
"gps": {
"type": "object",
"description": "Configuration for GPS devices.",
"required": [
"period"
],
"properties": {
"commands_pmtks": {
"type": "array",
"description": "List of PMTK commands (MediaTek) in string format",
"items": {
"type": "string"
}
},
"commands_ubxes": {
"type": "array",
"description": "List of UBX commands (U-Blox) in bytes format",
"items": {
"type": "string",
"contentEncoding": "base64"
}
},
"period": {
"type": "integer",
"description": "Desired period to poll the GPS module, in milliseconds",
"minimum": 0,
"maximum": 65535
}
},
"additionalProperties": false
}
}
}

View file

@ -0,0 +1,18 @@
{
"displayName": "Adafruit Ultimate GPS Breakout",
"vendor": "Adafruit",
"deviceId": "adaultimategps",
"productURL": "https://www.adafruit.com/product/5440",
"documentationURL": "https://learn.adafruit.com/adafruit-ultimate-gps/",
"description": "High-performance GPS module with 10Hz updates and external antenna support",
"published": true,
"baudRate": 9600,
"format": "8n1",
"timeout": 1000,
"use_sw_serial": false,
"invert_sw_serial": false,
"deviceType": "gps",
"gps": {
"period": 1000
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View file

@ -0,0 +1,14 @@
{
"displayName": "US-100 Distance Sensor",
"vendor": "e-Gizmo",
"deviceId": "us100",
"productURL": "https://www.adafruit.com/product/4019",
"documentationURL": "https://learn.adafruit.com/ultrasonic-sonar-distance-sensors",
"published": true,
"baudRate": 9600,
"deviceType": "generic_input",
"generic_input": {
"sensor_types": ["raw", "ambient-temp"],
"period": 30
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB