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

 

 

 

Von do8ail

DARC OV H05

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close