• Cyber Weekend Special

    Erhalte 10% Rabatt auf deine in unserem WLANThermo Shop im Zeitraum vom 27.11. - 30.11.2020 bestellten Artikel, durch die Eingabe des Rabatt-Codes CYBER2020 im Checkout-Bereich.

    Cyber Weekend Special

MQTT für mini V1

Hmm unter der Haube schlummert doch, genau wie beim Mini V2 ein Raspberry Pi Zero. Also bin ich mal so vermessen zu sagen: Ja das geht.
Entweder integriert man es direkt in die Software, oder man schreibt z.B. ein PythonSkript, das parallel läuft und die Schnittstelle zwischen einem MQTT Broker (egal ob lokal auf dem Pi oder irgendwo anders) und der WlanThermo Software herstellt.

Ich vermute nur eher Out-Of-The-Box mit schöner Klick-Oberfläche gibts da jetzt spontan nix.

Gruß Benjamin
 

s.ochs

BOFH
Teammitglied
Seh ich wie Benjamin. Da in der WLANThermo Software vom Mini aktuell keine mqtt-Schnittstelle integriert ist, wäre die individuelle Lösung mit einem eigenen Skript zu arbeiten, was die Daten von der WT Software abgreift und selbst einen mqtt-Client aufbaut. Beim Pi lässt sich das, anders als beim ESP, ohne eine feste Einbindung in die WT-Software machen.

Als Alternative: wenn die Gegenstelle, also das System in dem der MQTT Broker sitzt, auch http-fähig ist, dann würde ich einfach die http-Schnittstelle vom Mini anzapfen, anstelle von mqtt.
 
@s.ochs Hmm ich würde das schon direkt auf dem Mini machen. So sitzt halt das MQTT verhalten selbst auf dem Mini und es ist ein abgeschlossenes Gerät. So rödelt da was auf dem System des Brokers und brückt da nochmal was hin. Das ist eine Aufsplittung des Minis auf zwei Systeme. Finde ich irgendwie unsauber. Ich würde die Funktion eher als eine Art Plugin auf dem Mini belassen.
 

s.ochs

BOFH
Teammitglied
So meinte ich das gar nicht. Mir ging es schon um ein MQTT-Skript was auf dem Pi der Mini läuft. Aber es muss ja nicht Teil eines WLANThermo Images sein, sondern kann als individuelles Skript mit auf dem Betriebssystem des Pi laufen.
@Kunstflieger hat nicht gesagt, wo er die Daten einbinden will. Eventuell läuft bei ihm ja eh ein Server, der mqtt und http nutzt. Dann wäre für ihn die schnellere Lösung die Einbindung über http.
 

Kunstflieger

New member
Hallo,
tut mir leid, dass ich so lange auf Rückmeldung warten lassen habe.
wo er die Daten einbinden will.
Ich habe einen festen Raspberry, den ich für verschiedene Services laufen habe. Hier läuft auch ein MQTT Broker (Mosquitto) und Node-RED. Ich wollte, den WT gerne über MQTT auf meinem Node-RED Dashboard sehen und evtl irgendwann auch die PID Einstellungen darüber steuern. Also sollte auf dem WT eine Publisher und eine Subscriber Client laufen.

Gruß
Kunstflieger
 

s.ochs

BOFH
Teammitglied
Node-Red kann ja auch http-Request. Also entweder imitierst du das Webinterface und nutzt die http-Schnittstelle vom Mini oder du musst dir selbst einen MQTT-Client im Mini anlegen, der die Daten direkt aus dem laufenden Skript rausließt und als MQTT-Schnittstelle zur Verfügung stellt. Ob Node-Red jetzt die Daten per http oder mqtt bekommt, macht keinen großen Unterschied, nicht bei der geringen Menge an Daten, die da über die Schnittstelle laufen.
 

Kunstflieger

New member
Dann werde ich mal schauen, dass ich die Ansteuerung über http mache. Dazu gibt es ja schon einige Themen. Vielen Dank für den Tipp!
 

s.ochs

BOFH
Teammitglied
Häng mal hinter die IP-Adresse von deinem Mini ein "/app.php"
Du bekommst dann eine Textausgabe in Form eines JSON-Objekts. Das kannst du per GET-Befehl auch in Node-Red machen. Du musst das JSON dann zerlegen, so kommst du an die Temperaturdaten.
 

Phantomias2006

Entwickler
Wird leider nicht funktionieren ohne dass du dir eine empfangstelle auf der Mini Programmierst... kennst du dich etwas in PHP aus?
 

Kunstflieger

New member
nein da kenne ich mich leider garnicht aus. Da muss ich mich leider erst mal nur mit dem lesen zufrieden geben.
Anbei seht ihr meinen ersten Test.
 

Anhänge

  • 2019-12-11 21_40_17-Node-RED Dashboard.png
    2019-12-11 21_40_17-Node-RED Dashboard.png
    25 KB · Aufrufe: 17

Phantomias2006

Entwickler
PHP:
<?php
// Files einbinden ------------------------------------------------------------------
// ACHTUNG! Pfad anpassen wenn dieses File nicht unter /config abgelegt wurde
include("../header.php");
require_once("../function.php");
$inipath = '../conf/WLANThermo.conf';
// Config-Files einlesen ------------------------------------------------------------
if (get_magic_quotes_runtime()) set_magic_quotes_runtime(0);
$ini = getConfig("../conf/WLANThermo.conf", ";");  // dabei ist ; das zeichen für einen kommentar.   
$sensor_ini = getConfig($inipath, ";");  // dabei ist ; das zeichen für einen kommentar.

//Auswertung der Übergebenen Parameter
if(isset($_POST['ch_name1'])) {$ini['ch_name']['ch_name1'] = $_POST['ch_name1'];}

// Schreiben der WLANThermo.conf ##################################################################################################
write_ini($inipath, $ini);

?>

Schau dir das mal an. Ist natürlich nicht getestet und nur mal schnell zusammen gewürfelt. Wenn du das Theoretisch unter var/www/config/ ablegst (Dateiname z.B. XYZ.php ACHTUNG - selbe rechte geben wie var/www/config/config.php) dann müsstest du mittels POST den Kanalnamen1 ändern können.
[automerge]1576097979[/automerge]
Du musst natürlich beim aufrufen der Datei eine Basic Auth verwenden wenn es unter var/www/config/ abgelegt ist. Wenn du es unter var/www/ ablegst dann brauchst du eine Auth musst aber die Pfadangaben anpassen und die API ist dann auch nicht abgesichert!
 
Oben Unten