Für die, bei denen IoBroker und der Maverick-Kram auf einem Pi laufen, die können die Zeile
/home/pi/BBQ-Pi/bbq2.py &
auskommentieren
#/home/pi/BBQ-Pi/bbq2.py &
und die Daten, die von der maverick.py empfangen werden, mit Hilfe des Javascript Adapters auswerten.
Hier ein Denkanstoß, wie das klappen könnte:
Es muss im JavaScript Adapter "Erlaube das Kommando exec" aktiviert werden.
Dann ein Scrip erstellen (Javascript! Kein Blockly oder TypeScript) und einen Namen vergeben.
var interval = 2; //Interval der Logabfrage in Minuten
var timeout = 5; //Timeout in Minuten, ab wann wir die Werte als ungültig erklären wollen (Muss ausprobiert werden)
var validStateName = "BBQ-Pi.SensorValid";
var sensor1StateName = "BBQ-Pi.Sensor_1";
var sensor2StateName = "BBQ-Pi.Sensor_2";
//hier werden Datenpunkte angelegt
createState(sensor1StateName, 0, {
name: 'Fühler 1',
desc: 'Temperatur von Fühler 1',
type: 'number',
read: true,
write: true,
});
createState(sensor2StateName, 0, {
name: 'Fühler 2',
desc: 'Temperatur von Fühler 2',
type: 'number',
read: true,
write: true,
});
createState(validStateName, false, {
name: 'Werte valide',
desc: 'Sind die Werte noch aktuell?',
type: 'boolean',
read: true,
write: true,
});
//Lese die logdatei alle 'interval' Minuten
schedule("*/" + interval + " * * * *", function () {
//lesen der logdatei
exec('cat /tmp/maverickpy.log', function (error, stdout, stderr) {
//console.log('stdout: ' + stdout);
//konvertieren zu JSON
var result = JSON.parse(stdout);
//Sensor 1 abfragen
var t1 = result["temperature_1"];
//Sensor 2 abfragen
var t2 = result["temperature_2"];
//Letzten Zeitstempel abfragen und in JavaScript Zeitstempel umwandeln
var date_t = new Date(result["time"] * 1000);
var date_now = Date.now();
//Differenz berechnen
var age_t = new Date(date_now - (result["time"] * 1000));
//Schreibe Sensor Werte in die Datenpunkte
setState(sensor1StateName, t1);
setState(sensor2StateName, t2);
if (age_t.getMinutes() > timeout) {
//Werte sind zu alt
setState(validStateName, false);
} else {
//Werte sind okay
setState(validStateName, true);
}
});
});
Wie bereits erwähnt, dies ist nur eine Idee!
Das Script maverick.py wertet die Temperaturen manchmal nicht richtig aus, daher kann ich nicht sagen, wie mein oben genanntes Bespiel funktioniert oder ob es dann evtl. Fehler hagelt.
Viel Spaß!!!