1. Startseite
  2. Alle Themen
  3. Software
  4. Wie genau funktioniert die Einbindung in FHEM?

Wie genau funktioniert die Einbindung in FHEM?

Der air-Q kann auf zwei verschiedene Wege in FHEM eingebunden werden: Entweder man nutzt eine Konfigurationsdatei, um die Messdaten an den in FHEM integrierten MQTT-Server zu senden (falls dieser aktiviert wurde) oder man ruft die Daten mithilfe eines php-Skripts ab und entschlüsselt diese nachfolgend. Beide Möglichkeiten werden hier im folgenden beschrieben, sodass jeder der bereits FHEM als Smarthome-System nutzt dies kinderleicht durchführen kann.

Daten per PHP-Skript abrufen (kein MQTT nötig)

  • legen Sie in einem beliebigen Ordner die Datei getdata.php an
  • Mit notepad++ oder einem ähnlichen Programm (z.B. VSCode) die Datei wie folgt füllen und Zeile 2 und 3 entsprechend Ihren Einstellungen am air-Q anpassen:
<?php
$password = "Ihr Gerätekennwort"; // config: set your air-Q password here
$airq = "http://IP-Adresse des air-Qs/data";  // config: use your own ip-adress

header('Access-Control-Allow-Origin: *'); 

function decrypt($msgb64,$password)
{
    $airqpass = $password;
	if (strlen($airqpass) < 32) {
		for ($i = strlen($airqpass); $i < 32; $i++) {
			$airqpass = $airqpass . '0';
		}
	} else {
		if (strlen($airqpass) > 32) {
			$airqpass = substr($airqpass,0,32);
		}
	}

	$key = utf8_encode ($airqpass);
//	$cyphertext = base64_decode ($msgb64);
//	But with verly long messages there could be some problems in base64_decode
	$decoded = "";
	for ($i=0; $i < ceil(strlen($msgb64)/256); $i++)
	   $decoded = $decoded . base64_decode(substr($msgb64,$i*256,256));
	$cyphertext = $decoded;
	$iv = substr($cyphertext,0,16);
	$cyphertext = substr($cyphertext,16,strlen($cyphertext));
	$decrypted = openssl_decrypt($cyphertext, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
	return utf8_encode($decrypted);
}

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $airq); 
$output = curl_exec($ch);
header('Content-Type: application/json');
echo decrypt(json_decode($output, true)["content"],$password);

?>
  • Dieses PHP-Skript kann nun innerhalb von FHEM mithilfe der Funktion HTTPMOD aufgerufen werden:
define airq_01_http HTTPMOD http://127.0.0.1/airq/getdata 300
attr airq_01_http enforceGoodReadingNames 1
attr airq_01_http extractAllJSON 2

Das funktioniert nur mit der IP 127.0.0.1, wenn FHEM und das PHP-Skript sich auf demselben Server befinden.

Achtung: Wenn der Fehler Error: Call to undefined function curl_init() auftritt, kann es sein, dass PHP und PHP-Curl nachinstalliert werden müssen:
sudo apt-get install curl
sudo apt-get install phpX-curl

Senden der Daten an den integrierten MQTT-Server von FHEM

  • Legen Sie auf Ihrem PC die Datei “userconfig.json” an und befüllen Sie diese mithilfe eines Editors (z.B. notepad++ oder VSCode) wie folgt:
{
  "mqtt": {
    "device_id": "Ihre_selbsterdachte_Geraetenummer",
    "broker_URL": "192.168.x.y",
    "user": "Ihr_Nutzername",
    "password": "Ihr_Passwort",
    "port": 1883,
    "topic": "Ihr_Topic",
    "qos": 1,
    "keepalive": 10000,
    "averages": true,
    "delay": 120,
    "retain": false,
    "ssl": false
  }
}
  • Danach können Sie Ihre persönlichen Konfigurationseinstellungen in Zeile 3 bis 14 eintragen und die Datei in das root-Verzeichnis der SD-Karte Ihres air-Qs kopieren/verschieben.

Hier finden Sie eine Anleitung und Einführung in den MQTT-Service innerhalb von FHEM: https://wiki.fhem.de/wiki/MQTT

Beispielkonfigurationsdateien mit aktiviertem SSL sind auf Anfrage erhältlich

War dieser Artikel hilfreich?

Verwandte Artikel

Sie benötigen Hilfe?
Sie können die gesuchte Antwort nicht finden? Kontaktieren Sie uns gern!
KONTAKT