Danke euch.
Hier funktioniert es:
//Datenpunkt mit MQTT-Informationen im json-Format auslesen
json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.A4C1381BD71A").val);} catch(e) {return {};}})();
//json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Temperature", getAttr(json, 'tempc'),true);
setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Humidity", getAttr(json, 'hum'),true);
setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Battery", getAttr(json, 'batt'));
setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.RSSI", getAttr(json, 'rssi'));
setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Volt", getAttr(json, 'volt'));
//Log Ausgabe als return der Funktion
return "MQTT MI_A4C1381BD71A aktualisiert";
Aber hier leider nicht:
//Datenpunkt mit MQTT-Informationen im json-Format auslesen
json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})();
//json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie
setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'),true);
setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'),true);
setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt'));
setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi'));
//Log Ausgabe als return der Funktion
return "MQTT MI_3F59C86390D1 aktualisiert";
da kommt dann jeweils ein
{"ack":true}
EDIT: Manchmal kommt beim letzteren ein Wert, manchmal das "{"ack":true}"