init: docker file + openhab config files

This commit is contained in:
theBigBlase 2023-12-09 16:10:01 -05:00
parent 065e2b01e6
commit 246357858b
113 changed files with 4381 additions and 0 deletions

View file

@ -0,0 +1,5 @@
<html>
<h1>openHAB user provided static content</h1>
<p>Serve your own static html pages or resources from here. Files stored in the openHAB configuration subfolder <tt>html</tt> will be available through the HTTP server of openHAB, e.g. <a href="http://device-address:8080/static/image.png">http://device-address:8080/static/image.png</a>.</p>
<p>Resources for sitemap elements (image, video,...) can also be provided though this folder.</p>
</html>

View file

@ -0,0 +1,3 @@
Serve your own static html pages or resources from here.
Files stored in this folder will be available through the HTTP server of openHAB, e.g. "http://device-address:8080/static/image.png".
Resources for sitemap elements (image, video,...) can also be provided though this folder.

View file

@ -0,0 +1,6 @@
Your additional icons go here.
Icons can be provided as png (32x32) or preferably as svg files.
ClassicUI and BasicUI can be configured to accept svg (default) or png icons.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/items.html#icons

View file

@ -0,0 +1,38 @@
Group Room
Group SmartClothes
Group Sensors
Group:Number:AVG Luminance "average luminosity" (Sensors)
Group:Number:AVG Noise "average noise" (Sensors)
Group Actuators
Group Lights (Actuators)
Group Batteries
Contact room1 "room 1"
// Room fixed devices
Number rfidReader "RFID reader" (Sensors, Room) {channel="rfidReader:device:reader1"}
// smart clothes, mobile devices
Color stripColor "el-wire" <lightbulb> (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip1"}
Dimmer stripIntensity "el-wire" <lightbulb> (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip1"}
Color stripColor2 "el-wire" <lightbulb> (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip2"}
Dimmer stripIntensity2 "el-wire" <lightbulb> (Lights, SmartClothes) {channel="elwire:0210:ewbridge:strip2"}
Switch vibrationPatch "vibration patch" (Actuators, SmartClothes) {channel="vibrationPatch:device:vibration"}
Number luminance "luminance level" (Luminance, Sensors, SmartClothes) {channel=zwave:device:luxmeter:node2:sensor_luminance"}
Number luxmeterBattery "luxmeter battery level" <battery> (Batteries, SmartClothes) {channel="zwave:device:luxmeter:node2:battery-level"}
Number noise "noise level" (Noise, Sensors, SmartClothes) {channel="Channel=“zwave:device:noisemeter:node3:sensor_noise”"}
Number noiseSensorBattery "noise sensor battery level" <battery> (Batteries, SmartClothes) {channel="zwave:device:noisemeter:node3:battery-level"}
// optionnel
Number luminanceWristBand "luminance level" (Sensors, SmartClothes) {channel="zwave:device:wristband:node4:luminance"}
Number noiseWristBand "noise level" (Sensors, SmartClothes) {channel="zwave:device:wristband:node4:luminance"}
Contact gsrWristBand "galvanic skin response level" (Sensors, SmartClothes) {channel=“zwave:device:wristband:node4:galvanicSkinResponse"}
Switch vibrationWristBand "noise level" (Actuators, SmartClothes) {channel="zwave:device:wristband:node4:vibration"}

View file

@ -0,0 +1,5 @@
Your item definitions go here.
All items files have to have the ".items" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/items.html

View file

@ -0,0 +1,5 @@
Your persistence configuration goes here.
All persistence files have to have the ".persist" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/persistence.html

View file

@ -0,0 +1,175 @@
import org.eclipse.smarthome.model.script.ScriptServiceUtil
// import org.eclipse.smarthome.core.library.items.StringItem
import java.util.HashMap
import java.util.HashSet
val TAG_FileName = "IFT605SmartClothes.rules"
val smartClothesID = "12345678"
var Contact currentRoom
var MQTTBroker currentMQTTBroker
// managing context
var boolean goodConditions = true // of course, only one of good/bad conditions is required
var boolean badConditions = false
var badConditionsStartTime = 0 // in milliseconds
val URGE_TO_CHANGE_ROOM_TIME_TRIGGER = 300000 // 5 minutes
// managing people in the room
var people = new HashSet<String>()
var luminanceMeasures = new HashMap<String, Integer>()
var noiseMeasures = new HashMap<String, Integer>()
// j'entre dans une pièce
val iEnter = [ ContactItem room, String smartClothesID, MQTTBroker broker |
broker.sendCommand(CONNECT);
broker.sendCommand(SUBSCRIBE, "room/1/#");
broker.sendCommand(SUBSCRIBE, "smartclothes/#");
broker.sendCommand(SUBSCRIBE, "room/1/tag/+");
broker.sendCommand(SUBSCRIBE, "smartclothes/+/sensor/luminance");
broker.sendCommand(SUBSCRIBE, "smartclothes/+/sensor/noise");
// informer que l'on vient d'entrer dans la pièce
broker.sendCommand(PUBLISH, smartClothesID+"/status", "Online")
vibrationPatch.sendCommand(OFF)
]
// je sors de une pièce
val iQuit = [ ContactItem room, String smartClothesID, MQTTBroker broker |
broker.sendCommand(UNSUBSCRIBE, "room/1/#");
broker.sendCommand(UNSUBSCRIBE, "smartclothes/#");
broker.sendCommand(UNSUBSCRIBE, "room/1/tag/+");
broker.sendCommand(UNSUBSCRIBE, "smartclothes/+/sensor/luminance");
broker.sendCommand(UNSUBSCRIBE, "smartclothes/+/sensor/noise");
// informer que l'on vient d'entrer dans la pièce
broker.sendCommand(PUBLISH, smartClothesID+"/status", "Offline")
]
// le vêtement entre dans une pièce
val someoneEnterInRoom = [ String smartClothesID |
people.add(smartClothesID)
]
val someoneQuitRoom = [ String smartClothesID |
people.remove(smartClothesID)
noiseMeasures.remove(smartClothesID)
luminanceMeasures.remove(smartClothesID)
]
// fonctions utilitaires pour la gestion du contexte
// autre solutions pour calculer les moyennes, utiliser les HashMap luminanceMeasures et noiseMeasures
val Integer averageLuminance = [ | Luminance.state
]
val Integer averagenoise = [ | Noise.state
]
val boolean checkGoodConditions = [ Integer roomLuminance, Integer roomNoise |
return (LUMINOSITE_MIN < roomLuminance || roomLuminance < LUMINOSITE_MAX)
&& (NIVEAU_SONORE_MIN < roomNoise || roomNoise < NIVEAU_SONORE_MAX)
]
val reactToNewConditions = [ |
goodConditions = checkGoodConditions(averageLuminance(), averageNoise())
badConditions = !goodConditions
if (goodConditions) {
badConditionsStartTime = 0
vibrationPatch.sendCommand(OFF)
// rapprocher l'éclairage de la valeur optimale
if (Luminance.state < LUMOINOSITE_OPTIMALE) {
stripIntensity.sendCommand(INCREASE)
} else {
stripIntensity.sendCommand(DECREASE)
}
} else {
// Éviter de rester trop longtemps dans des conditions défavorables
vibrationPatch.sendCommand(ON)
if (badConditionsStartTime == 0){
badConditionsStartTime = now.getMillis();
}
if (now.getMillis() - badConditionsStartTime > URGE_TO_CHANGE_ROOM_TIME_TRIGGER) {
vibrationPatch.sendCommand(ON)
}
}
]
rule "Démarrage de openHAB"
when
System started
then
logInfo(TAG_FileName, "Rule : Démarrage de openHAB")
currentRoom = room1
currentMQTTBroker = room1MQTT
iEnter(currentRoom, smartClothesID, currentMQTTBroker)
end
// Diffuser les mesures de ses capteurs aux autres vêtements intelligents
rule "lecture d'une mesure de luminosité par le capteur du vêtement"
when
// Item luminance received update
Member of Luminance received update
then
var sensorName = triggeringItem.name
var value = triggeringItem.state
currentMQTTBroker.sendCommand(PUBLISH, "smartclothes/"+smartClothesID+"/sensor/luminance", value)
end
rule "lecture d'une mesure de bruit par le capteur du vêtement"
when
// Item noise received update
Member of Noise received update
then
var sensorName = triggeringItem.name
var value = triggeringItem.state
currentMQTTBroker.sendCommand(PUBLISH, "smartclothes/"+smartClothesID+"/sensor/noise", value)
end
// Gérer son contexte ambiant
rule "nouvelle mesure de bruit publiée par le courtier MQTT"
when currentMQTTBroker "smartclothes/+/sensor/noise" changed
then
noiseMeasures.put(extractID(triggeringItem.newState.topic), trigerringItem.newState.value)
reactToNewConditions()
end
rule "nouvelle mesure de bruit publiée par le courtier MQTT"
when currentMQTTBroker "smartclothes/+/sensor/luminance" changed
then
luminanceMeasures.put(extractID(triggeringItem.newState.topic), trigerringItem.newState.value)
reactToNewConditions()
end
// Tenir compte des arrivées et départs de personnes dans la salle
rule "arrivée d'une personne"
when
// si on n'utilise pas le mécanisme des dernières volontés de MQTT,
// il faut surveiller les éléments pertinents à la main
// currentMQTTBroker "room/+/tag" changed //lecture d'un tag RFID
// or currentMQTTBroker "smartclothes/+/sensor/luminance" changed // member of Luminance changed
// or currentMQTTBroker "smartclothes/+/sensor/noise" changed
currentMQTTBroker "+/status " changed to "Online" //lecture d'un tag RFID
then
String triggeringSmartClothesID = extractID(triggeringItem.newState.topic)
someoneEnterInRoom(triggeringSmartClothesID)
end
// Tenir compte des arrivées et départs de personnes dans la salle
rule "départ d'une personne"
when
currentMQTTBroker "+/status " changed to "Offline" //lecture d'un tag RFID
then
String triggeringSmartClothesID = extractID(triggeringItem.newState.topic)
someoneQuitRoom(triggeringSmartClothesID)
end
rule "Arrêt de openHAB"
when
System shuts down
then
logInfo(TAG_FileName, " Rule : Arrêt de openHAB")
// sauvegarder les états des items et le contexte
iQuit(currentRoom, smartClothesID, currentMQTTBroker)
end

View file

@ -0,0 +1,5 @@
Your rules go here.
All rule files have to have the ".rules" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/rules-dsl.html

View file

@ -0,0 +1,5 @@
Your scripts go here.
All script files have to have the ".script" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/rules-dsl.html#scripts

View file

@ -0,0 +1,36 @@
# Access Remote Add-on Repository
# Defines whether the remote openHAB add-on repository should be used for browsing and installing add-ons. (default is true)
#
#remote = true
# Some add-on services may provide add-ons where compatibility with the currently running system is not expected.
# Enabling this option will include these entries in the list of available add-ons.
#
#includeIncompatible = false
# The add-on configuration in the lists below is applied EVERY TIME openHAB is started.
# Add-ons installed using the UI that do not occur in the lists will be uninstalled each startup.
# When lists are commented again any add-ons in the list remain installed and are not removed.
# So if you want to uninstall all add-ons part of a list, first remove all add-ons from it, restart
# openHAB and then comment the list.
# A comma-separated list of automation services to install (e.g. "automation = groovyscripting")
#automation =
# A comma-separated list of bindings to install (e.g. "binding = knx,sonos,zwave")
#binding =
# A comma-separated list of miscellaneous services to install (e.g. "misc = openhabcloud")
#misc =
# A comma-separated list of persistence services to install (e.g. "persistence = jpa,rrd4j")
#persistence =
# A comma-separated list of transformation services to install (e.g. "transformation = jsonpath,map")
#transformation =
# A comma-separated list of UIs to install (e.g. "ui = basic,habpanel")
#ui =
# A comma-separated list of voice services to install (e.g. "voice = googletts,marytts")
#voice =

View file

@ -0,0 +1,23 @@
# Defines the UI theme.
#
#theme=default
# Defines whether UI renders icons for the widgets or not.
#
#enableIcons=true
# When enabled, changes the layout so that more widgets can fit on the screen.
#
#condensedLayout=false
# Displays all widget states in uppercase.
#
#capitalizeValues=false
# Play audio sent to the web audio sink.
#
#webAudio=false
# The sitemap to show if no parameter is passed.
#
#defaultSitemap=

View file

@ -0,0 +1,6 @@
Your service configurations will reside here.
All configuration files have to have the ".cfg" file extension.
Service configuration files are automatically created as soon as you install an add-on that can be configured.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/services.html

View file

@ -0,0 +1,10 @@
# configure specific rrd properties for given items in this file.
# please refer to the documentation available at
# https://www.openhab.org/addons/persistence/rrd4j/
#
# default_numeric and default_other are internally defined defnames and are used as
# defaults when no other defname applies
#<dsName>.def=[ABSOLUTE|COUNTER|DERIVE|GAUGE],<heartBeat>,[<minValue>|U],[<maxValue>|U],<sampleInterval>
#<dsName>.archives=[AVERAGE|MIN|MAX|LAST|FIRST|TOTAL],<xff>,<samplesPerBox>,<boxCount>
#<dsName>.items=<comma separated list of items for this dsName>

View file

@ -0,0 +1,277 @@
#################################### LOCALE ####################################
# The default language that should be used. If not specified, the system default locale is used.
# The ISO 639 alpha-2 or alpha-3 language code (if there is no alpha-2 one).
# Example: "en" (English), "de" (German), "ja" (Japanese), "kok" (Konkani)
#
#org.openhab.i18n:language=
# The region that should be used.
# ISO 3166 alpha-2 country code or UN M.49 numeric-3 area code.
# Example: "US" (United States), "DE" (Germany), "FR" (France), "029" (Caribbean)
#
#org.openhab.i18n:region=
# A time zone can be set from the user interface. The underlying system's time zone is the default.
#
#org.openhab.i18n:timezone=
# The location of this installation.
# Coordinates as <latitude>,<longitude>[<altitude>]
# Example: "52.5200066,13.4049540" (Berlin)
#
#org.openhab.i18n:location=
# The measurement system is used for unit conversion.
# 2 values are accepted:
# - SI: Metric
# - US: Imperial (US)
#
#org.openhab.i18n:measurementSystem=
################################# PERSISTENCE ##################################
# The persistence service to use if no other is specified.
#
#org.openhab.persistence:default=
#################################### AUDIO #####################################
# This parameter defines the default audio source to use (if not set, the first available one will be used.
#
#org.openhab.audio:defaultSource=
# This parameter defines the default audio sink to use (if not set, the first available one will be used.
#
#org.openhab.audio:defaultSink=
#################################### VOICE #####################################
# This parameter defines the default text-to-speech service to use (if not set, the first available one will be used.
#
#org.openhab.voice:defaultTTS=
# This parameter defines the default speech-to-text service to use (if not set, the first available one will be used.
#
#org.openhab.voice:defaultSTT=
# The default voice to use if no specific TTS service or voice is specified.
#
#org.openhab.voice:defaultVoice=
# The default human language interpreter to use if no other is specified.
#
#org.openhab.voice:defaultHLI=
# The default keyword spotting service to use if no other is specified.
#
#org.openhab.voice:defaultKS=
# The magic word to spot before initiating a dialog.
#
#org.openhab.voice:keyword=
# If provided, the item will be switched on during the period when the dialog processor has spotted the keyword and is listening for commands.
#
#org.openhab.voice:listeningItem=
# Listening Melody: A melody to be played to advertise the user the dialog processing is going to start.
# This is a spaced separated list of notes. Example: "A O:100 A':50"
# Leave empty to disable it.
#
#org.openhab.voice:listeningMelody=
# Enable TTS caching: true to allow TTS services to cache audio files on disk.
#
#org.openhab.voice:enableCacheTTS=true
# TTS Cache Size: the limit size of the TTS cache (in kB).
#
#org.openhab.voice:cacheSizeTTS=10240
################################### SITEMAP ####################################
# Defines how the members of a group are sorted in UI.
# 3 values are accepted:
# - NONE: No sorting
# - LABEL: Sorted by label
# - NAME: Sorted by name
#
#org.openhab.sitemap:groupMembersSorting=NONE
#################################### CHART #####################################
# Defines the default height in pixels for the chart to build.
#
#org.openhab.chart:defaultHeight=240
# Defines the default width in pixels for the chart to build.
#
#org.openhab.chart:defaultWidth=480
# Defines the scale to apply to the requested chart height (0.5 to divide by 2 for example).
#
#org.openhab.chart:scale=1
# Defines the maximum width in pixels for the chart to build.
#
#org.openhab.chart:maxWidth=
################################### NETWORK ####################################
# Primary address subnet (e.g. 192.168.1.0/24).
#
#org.openhab.network:primaryAddress=
# A broadcast address (e.g. 192.168.1.255).
#
#org.openhab.network:broadcastAddress=
# Use only one IP address per interface and family.
#
#org.openhab.network:useOnlyOneAddress=false
# Use IPv6 Addresses if available.
#
#org.openhab.network:useIPv6=true
################################## EPHEMERIS ###################################
# This parameter defines the default list of usual non workable days for the Ephemeris service.
# The value has to be surrounded by square brackets ('[' and ']') and optionally contain value delimiters - a comma ',' to be interpreted as a list of values.
# Example: [SATURDAY,SUNDAY]
#
#org.openhab.ephemeris:dayset-weekend=[SATURDAY,SUNDAY]
# See https://jollyday.sourceforge.net/data.html for help with the following parameters.
# This parameter defines the specific country to get the holidays for.
# Examples: Germany = "de", United States of America = "us"
#
#org.openhab.ephemeris:country=
# This parameter defines the specific region/state to get the holidays for.
# Examples: New York = "ny", Baden-Wuerttemberg = "bw"
#
#org.openhab.ephemeris:region=
# This parameter defines the specific city to get the holidays for.
# Examples: München = "mu"
#
#org.openhab.ephemeris:city=
################################# MISCELLANOUS #################################
# The karaf sshHost parameter configures the bind address for the ssh login to karaf.
# Default is 127.0.0.1 (localhost), so it is only possible to login from the local machine.
#
# Setting this to the address of another network interfaces will allow login from this network.
# Setting this to 0.0.0.0 will allow login from all network interfaces.
#
# !!! Security warning !!!
# Remember to change default login/password, if you allow external login.
# See https://www.openhab.org/docs/administration/console.html for details.
#
#org.apache.karaf.shell:sshHost = 0.0.0.0
# Cross-origin resource sharing (CORS) is a browser security feature that restricts cross-origin
# HTTP requests that are initiated from scripts running in the browser. Setting this option to 'true'
# will disable the browser cross-origin check. This is required if you want to use a web UI that is not
# hosted on the openHAB server domain.
#org.openhab.cors:enable=true
################################### REST API ###################################
# Allow the use of Basic authentication to access protected API resources, in addition to access tokens and API tokens
#
#org.openhab.restauth:allowBasicAuth=true
# When basic authentication is activated, credentials are put in a cache in order to speed up request
# authorization. The entries in the cache expire after a while in order to not keep credentials in memory indefinitely.
# This value defines the expiration time in hours. Set it to 0 for disabling the cache.
#
#org.openhab.restauth:cacheExpiration=6
# By default, operations requiring the "user" role are available when unauthenticated.
# Disabling this option will enforce authorization for these operations.
# Warning: This causes clients that do not support authentication to break.
#
#org.openhab.restauth:implicitUserRole=false
# Grant implicit user role to requests originating from these networks.
# Comma separated list of CIDR.
# This value is ignored if "org.openhab.restauth:implicitUserRole" is enabled.
#
#org.openhab.restauth:trustedNetworks=127.0.0.1/32, 192.168.1.1/24
############################### LANGUAGE SERVER ################################
# The port the language server listens to.
#
#org.openhab.lsp:port=5007
################################# JSON STORAGE #################################
# Sets the number of backup files to keep.
#
#org.openhab.storage.json:backup_files=5
# Sets the time to wait before writing changes to disk. This can reduce the number of writes when many changes are being introduced within a short period.
# The value is specified in milliseconds
#
#org.openhab.storage.json:write_delay=500
# Sets the maximum period the service will wait to write data to disk in the event that many changes are happening continually.
# The value is specified in milliseconds
#
#org.openhab.storage.json:max_defer_delay=30000
################################# MARKETPLACE ##################################
# If set to false no add-ons from the community marketplace will be shown. Already installed add-ons will still be available.
#
#org.openhab.marketplace:enable=true
# Include entries which have not been tagged as published. Warning: this may include entries that are not ready and might not work or harm your installation.
# Enable at your own risk, for testing purposes only.
#
#org.openhab.marketplace:showUnpublished=false
# Specify the API key to use on the community forum (for staff and curators - this allows for instance to see content which is not yet reviewed or otherwise hidden from the general public).
# Leave blank if you don't have one.
#
#org.openhab.marketplace:apiKey=
############################# JSON ADD-ON SERVICE ##############################
# Pipe (|) separated list of URLS that provide 3rd party add-on services via Json files.
# Warning: Bundles distributed over 3rd party add-on services may lack proper review and can potentially contain malicious code and thus harm your system.
#
#org.openhab.jsonaddonservice:urls=
# Include entries which have not been tagged as "stable". These add-ons should be used for testing purposes only and are not considered production-system ready.
#
#org.openhab.jsonaddonservice:showUnstable=false
#################################### INBOX #####################################
# If enabled, an Inbox result matching an existing thing is automatically ignored.
# If set to false, the Inbox may contain results although identical things already exist.
#
#org.openhab.inbox:autoIgnore=true
# If enabled, Inbox results are automatically approved, unless they were marked as ignored.
#
#org.openhab.inbox:autoApprove=false

View file

@ -0,0 +1,5 @@
Your sitemap definitions go here.
All sitemap files have to have the ".sitemap" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/ui/sitemaps.html

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,62 @@
/**
Vêtement intelligent
**/
Bridge elwire:bridge:ewbridge [ ipAddress="192.168.3.123" ] {
// gateway el-wire
Thing 0210 strip1 [stripId="1"] //référer par elwire:0210:ewbridge:strip1
Thing 0220 strip2 [stripId="2"] // référer par elwire:0220:ewbridge:strip2
}
//vibration patch
Thing vibrationPatch:device:vibration "vibration patch" @ "smart clothes"
// voir description à https://www.openhab.org/addons/bindings/zwave/doc/things.html
Bridge zwave:serial_zstick:8c582004 "ZWave Controller" [ port="/dev/ttyACM0", controller_softreset="false", controller_master="true", heal_enable="true", security_networkkey="???" ] {
// ampèremètres placés sur les interrupteurs du plafonnier
Thing luxMeter node2 "luxmeter " @ "smart clothes" [ node_id=2 ] {
Channels:
// sensors
Type number : luminance [ updateInterval=10 ]
Type number : battery-level [ updateInterval=10 ]
}
Thing noiseMeter node3 "noise meter" @ "smart clothes" [ node_id=3 ]
Channels:
// sensors
Type number : noise [ updateInterval=10 ]
Type number : battery-level [ updateInterval=10 ]
Thing wristband node4 "wristBand" @ "smart clothes" [ node_id=4 ] {
Channels:
// sensors
Type number : luminance [ updateInterval=10 ]
Type number : noise [ updateInterval=10 ]
Type string : accelerometer [ updateInterval=10 ]
Type number : speed [ updateInterval=10 ]
Type number : galvanicSkinResponse [ updateInterval=10 ]
// effectors
Type switch : vibration
Type switch : enable
}
}
/**
Pièce
**/
// https://www.smarthomeblog.net/mqtt-openhab/
// https://gist.github.com/davidgraeff/6c00d2ad5e4bc553f5f209118307d8fd
// https://community.openhab.org/t/solved-oh-2-4-mqtt-binding-generic-thing-statetopic-working-commandtopic-not-working/63619
Bridge mqtt:systemBroker:embedded-mqtt-broker [ host="127.0.0.1", secure=false ]
{
Thing mqtt:topic:room1MQTT {
Channels:
Type string : room1 "all MQTT room events" @ "room 1"[ stateTopic="room/1/#" ]
Type string : smartclothes "all MQTT smart clothes events" @ "room 1"[ stateTopic="smartclothes/#" ]
Type switch : tag "RFID MQTT event" @ "room 1" [ stateTopic="room/+/tag"]
Type string : noise "noise MQTT event" @ "room 1" [ stateTopic="smartclothes/+/sensor/noise" ]
Type string : luminance "luminosity MQTT event" @ "room 1" [ stateTopic="smartclothes/+/sensor/luminance" ]
}
}
Thing rfidReader:device:reader1 "rfidReader " @ "room 1"

View file

@ -0,0 +1,5 @@
Your thing definitions go here.
All thing files have to have the ".things" file extension and must follow a special syntax.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/things.html

View file

@ -0,0 +1,3 @@
CLOSED=zu
OPEN=offen
NULL=undefiniert

View file

@ -0,0 +1,4 @@
CLOSED=closed
OPEN=open
NULL=unknown

View file

@ -0,0 +1,5 @@
Transformations like map or jsonpath can utilize configuration files with data definitions.
These files have their specific file extensions and syntax definition.
Check out the openHAB documentation for more details:
https://www.openhab.org/docs/configuration/transformations.html