When is it appropriate to use properties and when is it appropriate to use actions? See w3c/wot#247
Me explaining why Things shouldnāt haveĀ āActionsā andĀ āPropertiesā, but instead justĀ āAttributesā (as we do in IOTDB)

seen from France

seen from T1
seen from China

seen from Vietnam
seen from China
seen from Dominican Republic
seen from United States
seen from China

seen from United States

seen from Türkiye
seen from Germany

seen from United States

seen from United States

seen from Belarus
seen from United States

seen from Sri Lanka
seen from United States

seen from United States

seen from Ukraine
seen from Bulgaria
When is it appropriate to use properties and when is it appropriate to use actions? See w3c/wot#247
Me explaining why Things shouldnāt haveĀ āActionsā andĀ āPropertiesā, but instead justĀ āAttributesā (as we do in IOTDB)

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
A Sensor can hold or report a measurement or a bag of measurements.
Iāve brought forward the following proposal to Schema.org for classes related to the IoT:
Thing > Product > Sentroller
A sensor, controller or actuator or combination thereof. Multiple attributes may be sensed or actuated.
Properties from Sentroller attributes: Attribute: sensing and actuating attribute available to this Sentroller.
Thing > Intangible > StructuredValue > PropertyValue > Attribute A single logical sensor or actuator or combination thereof.
Properties from Attribute isSensor: Boolean: is a value from a sensor isActuator: Boolean: affects a change in an actuator purpose: URL: define the semantic purpose of the Attribute (cf here)
Someone is proposing at IETF to do something very similar to IOTDBās iot-purpose vocabulary, sent to schema.org here. Time to get typing again.
IOTDB can now mute logging
Just do the following:
const iotdb = require("iotdb") const _ = iotdb._; _.logger.mute({ name: "iotdb-upnp" });
You can also mute a particular file's messages (confusingly called module, sorry):
_.logger.mute({ name: "iotdb-upnp", method: "upnp/upnp-device" })
This:
{ Ā Ā "on": true, Ā Ā "temperature": "24" Ā Ā "mode": 8, Ā Ā "fan": 2, Ā Ā "timer": false, Ā Ā "timer_value": "0", Ā Ā "unitF": false, }
Is exactly what IOTDB solves: we can make a Semantic model of everything in this packet.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch ⢠No registration required ⢠HD streaming
FIWARE Data Models Documentation
These are a number of data models for Smart Cities data, including things likeĀ Parking, WeatherStation, AirQuality Station, Street Lighting, Weather, Waste Management
IOTDB 'use'
IOTDB is designed to be a stand-alone package that you can build IoT projects from. HomeāStar extends IOTDB by adding a management interface and web interface.
However, sometimes it's easier to deploy IOTDB projects without installing HomeāStar. How then to load modules into IOTDB?
Let's say you want to use the WeMo module. Normally with HomeāStar you can just do:
const iotdb = require('iotdb') const hues = iotdb.connect('WeMoSocket')
However, without HomeāStar setting up things this won't automagically work.
To fix this we've introduced use:
const iotdb = require('iotdb') iotdb.use('homestar-wemo') const hues = iotdb.connect('WeMoSocket')
You'll have to $ npm install homestar-wemo but there's no need in this scenario for HomeāStar to set anything up.
Changes to IOTDB Logging
IOTDB currently use bunyan to handle all of its logging. This is all buried deep within IOTDB so you don't have to worry it.
When our modules want to log, we do something like
const logger = iotdb.logger({ ⦠});
which does all the Bunyan work behind the scenes.
Unfortunately, these leaves us with several problems:
it's really chatty
some people and packages prefer winston
The latest version of IOTDB has solved this.
To turn off all logging (except fatal errors)
const iotdb = require('iotdb') const _ = iotdb._; _.logger.silent()
To selectively shut down logging levels
_.logger.levels({ debug: true, info: true, trace: true, warn: true, error: true, fatal: true, });
To replace the logger altogether, make a function that looks like this:
_.logger.make = function(initd) { return bunyan.createLogger(initd); };
This function is lazy called so as long as you get to it before any logging happens, you should be good.
This has been added in IOTDB version 0.13.8. You can see the logging source code here.