Das ist die Implementierung
init message device 1
{
'message': 'init',
'protocol': 'json',
'group': 8,
'name': 'Bad Temperatur Luftfeuchtigkeit',
'sensors': [
{ 'sensortype': 1, 'usage': 1, 'group': 8, 'hardwarename': 'temperature', 'min': 0, 'max': 50, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 2, 'usage': 1, 'group': 8, 'hardwarename': 'humidity', 'min': 0, 'max': 100, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 4, 'usage': 1, 'group': 8, 'hardwarename': 'voltage', 'min': 0, 'max': 6, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 32, 'usage': 1, 'group': 8, 'hardwarename': 'battery', 'min': 0, 'max': 100, 'resolution': 1, 'updateinterval': 60 }
]
}
init message device 2:
{
'message': 'init',
'protocol': 'json',
'group': 8,
'name': 'Küche Temperatur Luftfeuchtigkeit',
'sensors': [
{ 'sensortype': 1, 'usage': 1, 'group': 8, 'hardwarename': 'temperature', 'min': 0, 'max': 50, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 2, 'usage': 1, 'group': 8, 'hardwarename': 'humidity', 'min': 0, 'max': 100, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 4, 'usage': 1, 'group': 8, 'hardwarename': 'voltage', 'min': 0, 'max': 6, 'resolution': 0.01, 'updateinterval': 60 },
{ 'sensortype': 32, 'usage': 1, 'group': 8, 'hardwarename': 'battery', 'min': 0, 'max': 100, 'resolution': 1, 'updateinterval': 60 }
]
}
device 1 implementierng:
function updateDevice() {
var accesstoken = '......'
var urlhomeAssistatnsApi = '!https://homeassistant.renner.io/api/'
var url = string(urlhomeAssistatnsApi + 'states')
var req = {
"url": url,
"method": "GET",
"data": {},
"headers": {}
}
req.headers['Authorization'] = string('Bearer ' + accesstoken)
req.headers['Content-Type'] = 'application/json'
var data = json(httprequest(req))
var prefixLen = 7
var sensor = "bad_temperatur_luftfeuchtigkeit"
var strLen = 31
foreach data as entity {
if (substr(entity.entity_id, prefixLen, strLen) == sensor && substr(entity.entity_id, 0, prefixLen - 1) == "sensor") {
try {
var deviceClass = entity.attributes.device_class
var sensorValue = entity.state
var sensorUom = entity.attributes.unit_of_measurement
log(5, "entity: %s", entity)
log(5, "%s: %s %s", deviceClass, sensorValue, sensorUom)
if (deviceClass == 'temperature') {
message({ 'message': 'sensor', 'index': 0, 'value': sensorValue })
}
if (deviceClass == 'humidity') {
message({ 'message': 'sensor', 'index': 1, 'value': sensorValue })
}
if (deviceClass == 'voltage') {
message({ 'message': 'sensor', 'index': 2, 'value': sensorValue })
}
if (deviceClass == 'battery') {
message({ 'message': 'sensor', 'index': 3, 'value': sensorValue })
}
} catch as e {
// do nothing
//log(4, "Error during request processing: %s", e)
}
}
}
}
// run script every 60 sec
on(every(60)) {
updateDevice()
}
return true
device 2 implementierng:
function updateDevice() {
var accesstoken = '....'
var urlhomeAssistatnsApi = '!https://homeassistant.renner.io/api/'
var url = string(urlhomeAssistatnsApi + 'states')
var req = {
"url": url,
"method": "GET",
"data": {},
"headers": {}
}
req.headers['Authorization'] = string('Bearer ' + accesstoken)
req.headers['Content-Type'] = 'application/json'
var data = json(httprequest(req))
var prefixLen = 7
var sensor = "kuche_temperatur_luftfeuchtigkeit"
var strLen = 33
foreach data as entity {
if (substr(entity.entity_id, prefixLen, strLen) == sensor && substr(entity.entity_id, 0, prefixLen - 1) == "sensor") {
try {
var deviceClass = entity.attributes.device_class
var sensorValue = entity.state
var sensorUom = entity.attributes.unit_of_measurement
log(5, "%s: %s %s", deviceClass, sensorValue, sensorUom)
if (deviceClass == 'temperature') {
message({ 'message': 'sensor', 'index': 0, 'value': sensorValue })
}
if (deviceClass == 'humidity') {
message({ 'message': 'sensor', 'index': 1, 'value': sensorValue })
}
if (deviceClass == 'voltage') {
message({ 'message': 'sensor', 'index': 2, 'value': sensorValue })
}
if (deviceClass == 'battery') {
message({ 'message': 'sensor', 'index': 3, 'value': sensorValue })
}
} catch as e {
// do nothing
//log(4, "Error during request processing: %s", e)
}
}
}
}
// run script every 60 sec
on(every(60)) {
updateDevice()
}
return true