Meshcom kann auch smart….ohne Internet…
Die Idee:
Mit Meshcom einen smarten Verbraucher im Haus aus der Ferne schalten (Lampe, Steckdose etc.) und auch automatisieren mittels Javascript oder Blockly über eine Hausautomatision wie IoBroker oder HA.

Beispiel; Textnachricht „Licht an“ schaltet ein Licht, oder „falls Temp unter 4 Grad, dann schalte Heizung ein“
Testumgebung: ein Tbeam und ein Tlora Modul mit Meshcom 4.35p geflasht und ein laufendes Smarthome, in meinem Fall einen IoBroker.
Installation:
Das Tlora mittels USB Datenkabel direkt an den IoBroker-Rechner (bei mir Raspberry mit PI OS) anschliessen.
Wir schauen über die Konsole nach ob das Lora modul gefunden wird.
ls /dev/ttyUSB*
Das Modul sollte gefunden werden. Das nutzen wir dann im Script.
Das Modul schreibt bei Nachrichtenerhalt neue Daten in einen Datenpunkt den das Script abfragt
Nachricht empfangen
↓
Text durchsuchen
↓
wenn „#LICHT EIN“
↓
Zigbee Lampe einschalten

Ein kleines Script reicht schon aus , wie z.B.
/*******************************************************
* MeshCom -> ioBroker Beispiel
*
* Schaltet:
* „Licht an“ -> Zigbee Lampe EIN
* „Licht aus“ -> Zigbee Lampe AUS
*
* Zusätzlich:
* Klimaanlage EIN wenn Raumtemperatur > 25°C
* Klimaanlage AUS wenn Raumtemperatur < 24°C
*******************************************************/
// ======== Einstellungen =========
// Datenpunkt deiner Zigbee-Lampe
const LAMP = „zigbee.0.00158d000123456.state“;
// Datenpunkt der Klimaanlage
const AC = „broadlink2.0.Klimaanlage.power“;
// Raumtemperatur
const TEMP = „mqtt.0.Sensoren.Wohnzimmer.Temperatur“;
// Einschalttemperatur
const AC_ON = 25;
// Ausschalttemperatur (Hysterese)
const AC_OFF = 24;
//======================================================
// Diese Funktion wird später vom USB-Parser aufgerufen
//======================================================
function processMeshMessage(text) {
log(„MeshCom: “ + text);
text = text.toLowerCase();
if (text.includes(„licht an“)) {
setState(LAMP, true);
log(„Lampe eingeschaltet“);
}
if (text.includes(„licht aus“)) {
setState(LAMP, false);
log(„Lampe ausgeschaltet“);
}
}
//======================================================
// Temperatur überwachen
//======================================================
on({id: TEMP, change: „ne“}, function(obj) {
let t = obj.state.val;
log(„Temperatur: “ + t + “ °C“);
if (t >= AC_ON) {
setState(AC, true);
log(„Klimaanlage EIN“);
}
if (t <= AC_OFF) {
setState(AC, false);
log(„Klimaanlage AUS“);
}
});
//======================================================
// Test
//======================================================
// Diese Zeilen später entfernen.
// Damit kannst du testen.
processMeshMessage(„Hallo“);
processMeshMessage(„Licht an“);
processMeshMessage(„Licht aus“);
Wie der USB-Teil später aussieht
Sobald wir den seriellen Datenstrom deines TTGO kennen, wird nur dieser Teil ergänzt
const { SerialPort } = require(’serialport‘);
const port = new SerialPort({
path: ‚/dev/ttyUSB0‘,
baudRate: 115200
});
port.on(‚data‘, function(data){
processMeshMessage(data.toString());
});
Als Sicherheit frage ich auch noch das Call ab, damit niemand sonst schalten kann (falls „DO8AIL-12 : Licht an, dann schalte…“
In meinem Fall habe ich ein Blockyscript erstellt und schalte nun Licht, Klima, Hofbeleuchtung, Gartenpumpe und Alarmanlage damit.
73 euer Infofrog 