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
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.