From 95d6a5f4ac349a7b244d927586e8d1a2a2a207fe Mon Sep 17 00:00:00 2001 From: He4eT Date: Tue, 1 Apr 2025 23:40:11 +0200 Subject: [PATCH] Sensors: Wind --- .../content-types/wind-sensor/schema.json | 35 +++++++++++ .../wind-sensor/controllers/wind-sensor.ts | 7 +++ src/api/wind-sensor/routes/wind-sensor.ts | 7 +++ src/api/wind-sensor/services/wind-sensor.ts | 7 +++ src/components/wind/direction.json | 21 +++++++ src/components/wind/elevation.json | 21 +++++++ src/components/wind/properties.json | 38 ++++++++++++ src/components/wind/speed.json | 23 +++++++ types/generated/components.d.ts | 60 +++++++++++++++++++ types/generated/contentTypes.d.ts | 35 +++++++++++ 10 files changed, 254 insertions(+) create mode 100644 src/api/wind-sensor/content-types/wind-sensor/schema.json create mode 100644 src/api/wind-sensor/controllers/wind-sensor.ts create mode 100644 src/api/wind-sensor/routes/wind-sensor.ts create mode 100644 src/api/wind-sensor/services/wind-sensor.ts create mode 100644 src/components/wind/direction.json create mode 100644 src/components/wind/elevation.json create mode 100644 src/components/wind/properties.json create mode 100644 src/components/wind/speed.json diff --git a/src/api/wind-sensor/content-types/wind-sensor/schema.json b/src/api/wind-sensor/content-types/wind-sensor/schema.json new file mode 100644 index 0000000..600444f --- /dev/null +++ b/src/api/wind-sensor/content-types/wind-sensor/schema.json @@ -0,0 +1,35 @@ +{ + "kind": "collectionType", + "collectionName": "wind_sensors", + "info": { + "singularName": "wind-sensor", + "pluralName": "wind-sensors", + "displayName": "Sensor: Wind", + "description": "" + }, + "options": { + "draftAndPublish": false + }, + "attributes": { + "location": { + "type": "string", + "required": true + }, + "name": { + "type": "string" + }, + "description": { + "type": "text" + }, + "lastchange": { + "type": "biginteger" + }, + "properties": { + "displayName": "Properties", + "type": "component", + "repeatable": false, + "component": "wind.properties", + "required": true + } + } +} diff --git a/src/api/wind-sensor/controllers/wind-sensor.ts b/src/api/wind-sensor/controllers/wind-sensor.ts new file mode 100644 index 0000000..606fc0c --- /dev/null +++ b/src/api/wind-sensor/controllers/wind-sensor.ts @@ -0,0 +1,7 @@ +/** + * wind-sensor controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::wind-sensor.wind-sensor'); diff --git a/src/api/wind-sensor/routes/wind-sensor.ts b/src/api/wind-sensor/routes/wind-sensor.ts new file mode 100644 index 0000000..1528d9b --- /dev/null +++ b/src/api/wind-sensor/routes/wind-sensor.ts @@ -0,0 +1,7 @@ +/** + * wind-sensor router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::wind-sensor.wind-sensor'); diff --git a/src/api/wind-sensor/services/wind-sensor.ts b/src/api/wind-sensor/services/wind-sensor.ts new file mode 100644 index 0000000..29104f6 --- /dev/null +++ b/src/api/wind-sensor/services/wind-sensor.ts @@ -0,0 +1,7 @@ +/** + * wind-sensor service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::wind-sensor.wind-sensor'); diff --git a/src/components/wind/direction.json b/src/components/wind/direction.json new file mode 100644 index 0000000..0381563 --- /dev/null +++ b/src/components/wind/direction.json @@ -0,0 +1,21 @@ +{ + "collectionName": "components_wind_directions", + "info": { + "displayName": "Direction", + "icon": "feather" + }, + "options": {}, + "attributes": { + "value": { + "type": "decimal", + "required": true + }, + "unit": { + "type": "enumeration", + "enum": [ + "Degree" + ], + "required": true + } + } +} diff --git a/src/components/wind/elevation.json b/src/components/wind/elevation.json new file mode 100644 index 0000000..19ef78d --- /dev/null +++ b/src/components/wind/elevation.json @@ -0,0 +1,21 @@ +{ + "collectionName": "components_wind_elevations", + "info": { + "displayName": "Elevation", + "icon": "feather" + }, + "options": {}, + "attributes": { + "value": { + "type": "decimal", + "required": true + }, + "unit": { + "type": "enumeration", + "enum": [ + "m" + ], + "required": true + } + } +} diff --git a/src/components/wind/properties.json b/src/components/wind/properties.json new file mode 100644 index 0000000..13e18c6 --- /dev/null +++ b/src/components/wind/properties.json @@ -0,0 +1,38 @@ +{ + "collectionName": "components_wind_properties", + "info": { + "displayName": "Properties", + "icon": "feather", + "description": "" + }, + "options": {}, + "attributes": { + "speed": { + "displayName": "Speed", + "type": "component", + "repeatable": false, + "component": "wind.speed", + "required": true + }, + "gust": { + "type": "component", + "repeatable": false, + "component": "wind.speed", + "required": true + }, + "direction": { + "displayName": "Direction", + "type": "component", + "repeatable": false, + "component": "wind.direction", + "required": true + }, + "elevation": { + "displayName": "Elevation", + "type": "component", + "repeatable": false, + "component": "wind.elevation", + "required": true + } + } +} diff --git a/src/components/wind/speed.json b/src/components/wind/speed.json new file mode 100644 index 0000000..3356b8e --- /dev/null +++ b/src/components/wind/speed.json @@ -0,0 +1,23 @@ +{ + "collectionName": "components_wind_speeds", + "info": { + "displayName": "Speed", + "icon": "cursor" + }, + "options": {}, + "attributes": { + "value": { + "type": "decimal", + "required": true + }, + "unit": { + "type": "enumeration", + "enum": [ + "m/s", + "km/h", + "kn" + ], + "required": true + } + } +} diff --git a/types/generated/components.d.ts b/types/generated/components.d.ts index a06c183..8ed7058 100644 --- a/types/generated/components.d.ts +++ b/types/generated/components.d.ts @@ -199,6 +199,62 @@ export interface StateStateIcon extends Struct.ComponentSchema { }; } +export interface WindDirection extends Struct.ComponentSchema { + collectionName: 'components_wind_directions'; + info: { + displayName: 'Direction'; + icon: 'feather'; + }; + attributes: { + unit: Schema.Attribute.Enumeration<['Degree']> & Schema.Attribute.Required; + value: Schema.Attribute.Decimal & Schema.Attribute.Required; + }; +} + +export interface WindElevation extends Struct.ComponentSchema { + collectionName: 'components_wind_elevations'; + info: { + displayName: 'Elevation'; + icon: 'feather'; + }; + attributes: { + unit: Schema.Attribute.Enumeration<['m']> & Schema.Attribute.Required; + value: Schema.Attribute.Decimal & Schema.Attribute.Required; + }; +} + +export interface WindProperties extends Struct.ComponentSchema { + collectionName: 'components_wind_properties'; + info: { + description: ''; + displayName: 'Properties'; + icon: 'feather'; + }; + attributes: { + direction: Schema.Attribute.Component<'wind.direction', false> & + Schema.Attribute.Required; + elevation: Schema.Attribute.Component<'wind.elevation', false> & + Schema.Attribute.Required; + gust: Schema.Attribute.Component<'wind.speed', false> & + Schema.Attribute.Required; + speed: Schema.Attribute.Component<'wind.speed', false> & + Schema.Attribute.Required; + }; +} + +export interface WindSpeed extends Struct.ComponentSchema { + collectionName: 'components_wind_speeds'; + info: { + displayName: 'Speed'; + icon: 'cursor'; + }; + attributes: { + unit: Schema.Attribute.Enumeration<['m/s', 'km/h', 'kn']> & + Schema.Attribute.Required; + value: Schema.Attribute.Decimal & Schema.Attribute.Required; + }; +} + declare module '@strapi/strapi' { export module Public { export interface ComponentSchemas { @@ -215,6 +271,10 @@ declare module '@strapi/strapi' { 'location.area': LocationArea; 'membership.plans': MembershipPlans; 'state.state-icon': StateStateIcon; + 'wind.direction': WindDirection; + 'wind.elevation': WindElevation; + 'wind.properties': WindProperties; + 'wind.speed': WindSpeed; } } } diff --git a/types/generated/contentTypes.d.ts b/types/generated/contentTypes.d.ts index bcdd9ba..72caadc 100644 --- a/types/generated/contentTypes.d.ts +++ b/types/generated/contentTypes.d.ts @@ -798,6 +798,40 @@ export interface ApiTemperatureSensorTemperatureSensor }; } +export interface ApiWindSensorWindSensor extends Struct.CollectionTypeSchema { + collectionName: 'wind_sensors'; + info: { + description: ''; + displayName: 'Sensor: Wind'; + pluralName: 'wind-sensors'; + singularName: 'wind-sensor'; + }; + options: { + draftAndPublish: false; + }; + attributes: { + createdAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + description: Schema.Attribute.Text; + lastchange: Schema.Attribute.BigInteger; + locale: Schema.Attribute.String & Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::wind-sensor.wind-sensor' + > & + Schema.Attribute.Private; + location: Schema.Attribute.String & Schema.Attribute.Required; + name: Schema.Attribute.String; + properties: Schema.Attribute.Component<'wind.properties', false> & + Schema.Attribute.Required; + publishedAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + }; +} + export interface PluginContentReleasesRelease extends Struct.CollectionTypeSchema { collectionName: 'strapi_releases'; @@ -1319,6 +1353,7 @@ declare module '@strapi/strapi' { 'api::radiation-sensor.radiation-sensor': ApiRadiationSensorRadiationSensor; 'api::state.state': ApiStateState; 'api::temperature-sensor.temperature-sensor': ApiTemperatureSensorTemperatureSensor; + 'api::wind-sensor.wind-sensor': ApiWindSensorWindSensor; 'plugin::content-releases.release': PluginContentReleasesRelease; 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; 'plugin::i18n.locale': PluginI18NLocale;